@@ -452,11 +452,11 @@
452 452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
453 453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
454 454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
455 455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION "3.37.0"
456 456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION_NUMBER 3037000
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2021-10-06 10:36:56 566e6974892ebd3d3de8d77b24655257a5efe14434c553e1a25fc680b201b336"
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2021-10-21 20:08:00 559ba38b8a0f7795d781838ec78969874fd678f749b26cd49cf6112afc838732"
458 458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
459 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
460 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
461 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
462 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -843,11 +843,10 @@
843 843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8))
844 844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8))
845 845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8))
846 846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CANTOPEN_DIRTYWAL (SQLITE_CANTOPEN | (5<<8)) /* Not Used */
847 847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CANTOPEN_SYMLINK (SQLITE_CANTOPEN | (6<<8))
848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_CANTOPEN_EXISTS (SQLITE_CANTOPEN | (7<<8))
849 848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8))
850 849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8))
851 850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CORRUPT_INDEX (SQLITE_CORRUPT | (3<<8))
852 851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
853 852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
@@ -879,10 +878,23 @@
879 878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Flags For File Open Operations
880 879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
881 880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These bit values are intended for use in the
882 881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 3rd parameter to the [sqlite3_open_v2()] interface and
883 882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the 4th parameter to the [sqlite3_vfs.xOpen] method.
883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Only those flags marked as "Ok for sqlite3_open_v2()" may be
885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** used as the third argument to the [sqlite3_open_v2()] interface.
886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The other flags have historically been ignored by sqlite3_open_v2(),
887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** though future versions of SQLite might change so that an error is
888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** raised if any of the disallowed bits are passed into sqlite3_open_v2().
889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Applications should not depend on the historical behavior.
890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [sqlite3_open_v2()] does *not* cause the underlying database file
893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to be opened using O_EXCL. Passing SQLITE_OPEN_EXCLUSIVE into
894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** [sqlite3_open_v2()] has historically be a no-op and might become an
895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** error in future versions of SQLite.
884 896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
885 897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */
886 898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */
887 899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OPEN_CREATE 0x00000004 /* Ok for sqlite3_open_v2() */
888 900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_OPEN_DELETEONCLOSE 0x00000008 /* VFS only */
@@ -3723,22 +3735,24 @@
3723 3735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the default shared cache setting provided by
3724 3736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_enable_shared_cache()].)^
3725 3737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3726 3738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [[OPEN_NOFOLLOW]] ^(<dt>[SQLITE_OPEN_NOFOLLOW]</dt>
3727 3739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <dd>The database filename is not allowed to be a symbolic link</dd>
3728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
3729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** [[OPEN_EXCLUSIVE]] ^(<dt>[SQLITE_OPEN_EXCLUSIVE]</dt>
3730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <dd>This flag causes the open to fail if the database file already
3731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** exists. The open will only be success if this flag is used in combination
3732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** with the SQLITE_OPEN_CREATE and SQLITE_OPEN_READWRITE flags and if
3733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the file does not previously exist.</dd>
3734 3740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </dl>)^
3735 3741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3736 3742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the 3rd parameter to sqlite3_open_v2() is not one of the
3737 3743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** required combinations shown above optionally combined with other
3738 3744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [SQLITE_OPEN_READONLY | SQLITE_OPEN_* bits]
3739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** then the behavior is undefined.
3745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then the behavior is undefined. Historic versions of SQLite
3746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** have silently ignored surplus bits in the flags parameter to
3747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3_open_v2(), however that behavior might not be carried through
3748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** into future versions of SQLite and so applications should not rely
3749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** upon it. Note in particular that the SQLITE_OPEN_EXCLUSIVE flag is a no-op
3750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for sqlite3_open_v2(). The SQLITE_OPEN_EXCLUSIVE does *not* cause
3751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the open to fail if the database already exists. The SQLITE_OPEN_EXCLUSIVE
3752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** flag is intended for use by the [sqlite3_vfs|VFS interface] only, and not
3753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** by sqlite3_open_v2().
3740 3754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3741 3755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The fourth parameter to sqlite3_open_v2() is the name of the
3742 3756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_vfs] object that defines the operating system interface that
3743 3757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the new database connection should use. ^If the fourth parameter is
3744 3758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a NULL pointer then the default [sqlite3_vfs] object is used.
@@ -13162,13 +13176,15 @@
13162 13176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is significant and used at least once. On switch statements
13163 13177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** where multiple cases go to the same block of code, testcase()
13164 13178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** can insure that all cases are evaluated.
13165 13179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
13166 13180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
13167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_COVERAGE_TEST
13168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3Coverage(int);
13169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define testcase(X) if( X ){ sqlite3Coverage(__LINE__); }
13181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_DEBUG)
13182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ifndef SQLITE_AMALGAMATION
13183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ extern unsigned int sqlite3CoverageCounter;
13184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # endif
13185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define testcase(X) if( X ){ sqlite3CoverageCounter += (unsigned)__LINE__; }
13170 13186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
13171 13187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define testcase(X)
13172 13188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
13173 13189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13174 13190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -13228,30 +13244,10 @@
13228 13244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
13229 13245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define ALWAYS(X) (X)
13230 13246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define NEVER(X) (X)
13231 13247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
13232 13248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
13234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The harmless(X) macro indicates that expression X is usually false
13235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** but can be true without causing any problems, but we don't know of
13236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** any way to cause X to be true.
13237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
13238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** In debugging and testing builds, this macro will abort if X is ever
13239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** true. In this way, developers are alerted to a possible test case
13240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** that causes X to be true. If a harmless macro ever fails, that is
13241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** an opportunity to change the macro into a testcase() and add a new
13242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** test case to the test suite.
13243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
13244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** For normal production builds, harmless(X) is a no-op, since it does
13245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** not matter whether expression X is true or false.
13246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
13247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_DEBUG
13248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define harmless(X) assert(!(X));
13249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
13250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define harmless(X)
13251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
13252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
13253 13249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
13254 13250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Some conditionals are optimizations only. In other words, if the
13255 13251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** conditionals are replaced with a constant 1 (true) or 0 (false) then
13256 13252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the correct answer is still obtained, though perhaps not as quickly.
13257 13253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -13430,11 +13426,11 @@
13430 13426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #define sqliteHashKeysize(E) ((E)->nKey) // NOT USED */
13431 13427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13432 13428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
13433 13429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Number of entries in a hash table
13434 13430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
13435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* #define sqliteHashCount(H) ((H)->count) // NOT USED */
13431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define sqliteHashCount(H) ((H)->count)
13436 13432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13437 13433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_HASH_H */
13438 13434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13439 13435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of hash.h ************************************************/
13440 13436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in sqliteInt.h ******************/
@@ -16428,14 +16424,14 @@
16428 16424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVdbeExec; /* Number of nested calls to VdbeExec() */
16429 16425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVDestroy; /* Number of active OP_VDestroy operations */
16430 16426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nExtension; /* Number of loaded extensions */
16431 16427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void **aExtension; /* Array of shared library handles */
16432 16428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
16433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void (*xLegacy)(void*,const char*); /* Legacy trace function */
16434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int (*xV2)(u32,void*,void*,void*); /* V2 Trace function */
16429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void (*xLegacy)(void*,const char*); /* mTrace==SQLITE_TRACE_LEGACY */
16430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int (*xV2)(u32,void*,void*,void*); /* All other mTrace values */
16435 16431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} trace;
16436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void *pTraceArg; /* Argument to the trace function */
16432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *pTraceArg; /* Argument to the trace function */
16437 16433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_DEPRECATED
16438 16434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void (*xProfile)(void*,const char*,u64); /* Profiling function */
16439 16435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pProfileArg; /* Argument to profile function */
16440 16436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
16441 16437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pCommitArg; /* Argument to xCommitCallback() */
@@ -16667,11 +16663,11 @@
16667 16663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void (*xInverse)(sqlite3_context*,int,sqlite3_value**); /* inverse agg-step */
16668 16664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName; /* SQL name of the function. */
16669 16665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
16670 16666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FuncDef *pHash; /* Next with a different name but the same hash */
16671 16667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FuncDestructor *pDestructor; /* Reference counted destructor function */
16672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- } u;
16668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } u; /* pHash if SQLITE_FUNC_BUILTIN, pDestructor otherwise */
16673 16669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
16674 16670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16675 16671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
16676 16672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This structure encapsulates a user-function destructor callback (as
16677 16673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** configured using create_function_v2()) and a reference counter. When
@@ -16728,10 +16724,11 @@
16728 16724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FUNC_INTERNAL 0x00040000 /* For use by NestedParse() only */
16729 16725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FUNC_DIRECT 0x00080000 /* Not for use in TRIGGERs or VIEWs */
16730 16726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FUNC_SUBTYPE 0x00100000 /* Result likely to have sub-type */
16731 16727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FUNC_UNSAFE 0x00200000 /* Function has side effects */
16732 16728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FUNC_INLINE 0x00400000 /* Functions implemented in-line */
16729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_FUNC_BUILTIN 0x00800000 /* This is a built-in function */
16733 16730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FUNC_ANYORDER 0x08000000 /* count/min/max aggregate */
16734 16731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16735 16732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Identifier numbers for each in-line function */
16736 16733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define INLINEFUNC_coalesce 0
16737 16734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define INLINEFUNC_implies_nonnull_row 1
@@ -16806,48 +16803,55 @@
16806 16803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** available as the function user-data (sqlite3_user_data()). The
16807 16804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** FuncDef.flags variable is set to the value passed as the flags
16808 16805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parameter.
16809 16806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
16810 16807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define FUNCTION(zName, nArg, iArg, bNC, xFunc) \
16811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
16808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|\
16809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
16812 16810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
16813 16811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define VFUNCTION(zName, nArg, iArg, bNC, xFunc) \
16814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
16812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
16815 16813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
16816 16814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SFUNCTION(zName, nArg, iArg, bNC, xFunc) \
16817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_UTF8|SQLITE_DIRECTONLY|SQLITE_FUNC_UNSAFE, \
16815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_DIRECTONLY|SQLITE_FUNC_UNSAFE, \
16818 16816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
16819 16817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define MFUNCTION(zName, nArg, xPtr, xFunc) \
16820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8, \
16818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_CONSTANT|SQLITE_UTF8, \
16821 16819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xPtr, 0, xFunc, 0, 0, 0, #zName, {0} }
16822 16820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define INLINE_FUNC(zName, nArg, iArg, mFlags) \
16823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_UTF8|SQLITE_FUNC_INLINE|SQLITE_FUNC_CONSTANT|(mFlags), \
16821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|\
16822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_UTF8|SQLITE_FUNC_INLINE|SQLITE_FUNC_CONSTANT|(mFlags), \
16824 16823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_INT_TO_PTR(iArg), 0, noopFunc, 0, 0, 0, #zName, {0} }
16825 16824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TEST_FUNC(zName, nArg, iArg, mFlags) \
16826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_UTF8|SQLITE_FUNC_INTERNAL|SQLITE_FUNC_TEST| \
16825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|\
16826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_UTF8|SQLITE_FUNC_INTERNAL|SQLITE_FUNC_TEST| \
16827 16827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_FUNC_INLINE|SQLITE_FUNC_CONSTANT|(mFlags), \
16828 16828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_INT_TO_PTR(iArg), 0, noopFunc, 0, 0, 0, #zName, {0} }
16829 16829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define DFUNCTION(zName, nArg, iArg, bNC, xFunc) \
16830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8, \
16830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_SLOCHNG|SQLITE_UTF8, \
16831 16831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, 0, xFunc, 0, 0, 0, #zName, {0} }
16832 16832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PURE_DATE(zName, nArg, iArg, bNC, xFunc) \
16833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \
16833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|\
16834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \
16834 16835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void*)&sqlite3Config, 0, xFunc, 0, 0, 0, #zName, {0} }
16835 16836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define FUNCTION2(zName, nArg, iArg, bNC, xFunc, extraFlags) \
16836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg,SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\
16837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|\
16838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\
16837 16839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
16838 16840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \
16839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
16841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|\
16842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
16840 16843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pArg, 0, xFunc, 0, 0, 0, #zName, }
16841 16844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define LIKEFUNC(zName, nArg, arg, flags) \
16842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \
16845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \
16843 16846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void *)arg, 0, likeFunc, 0, 0, 0, #zName, {0} }
16844 16847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WAGGREGATE(zName, nArg, arg, nc, xStep, xFinal, xValue, xInverse, f) \
16845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|f, \
16848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|f, \
16846 16849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,xValue,xInverse,#zName, {0}}
16847 16850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define INTERNAL_FUNCTION(zName, nArg, xFunc) \
16848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {nArg, SQLITE_FUNC_INTERNAL|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \
16851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {nArg, SQLITE_FUNC_BUILTIN|\
16852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_FUNC_INTERNAL|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \
16849 16853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, 0, xFunc, 0, 0, 0, #zName, {0} }
16850 16854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16851 16855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
16852 16856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
16853 16857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** All current savepoints are stored in a linked list starting at
@@ -17566,14 +17570,14 @@
17566 17570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** code representing the ">=" operator. This same integer code is reused
17567 17571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to represent the greater-than-or-equal-to operator in the expression
17568 17572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tree.
17569 17573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
17570 17574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the expression is an SQL literal (TK_INTEGER, TK_FLOAT, TK_BLOB,
17571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or TK_STRING), then Expr.token contains the text of the SQL literal. If
17572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the expression is a variable (TK_VARIABLE), then Expr.token contains the
17575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or TK_STRING), then Expr.u.zToken contains the text of the SQL literal. If
17576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the expression is a variable (TK_VARIABLE), then Expr.u.zToken contains the
17573 17577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** variable name. Finally, if the expression is an SQL function (TK_FUNCTION),
17574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** then Expr.token contains the name of the function.
17578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then Expr.u.zToken contains the name of the function.
17575 17579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
17576 17580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Expr.pRight and Expr.pLeft are the left and right subexpressions of a
17577 17581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** binary operator. Either or both may be NULL.
17578 17582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
17579 17583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Expr.x.pList is a list of arguments if the expression is an SQL function,
@@ -17609,11 +17613,11 @@
17609 17613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
17610 17614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Expr objects can use a lot of memory space in database schema. To
17611 17615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** help reduce memory requirements, sometimes an Expr object will be
17612 17616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** truncated. And to reduce the number of memory allocations, sometimes
17613 17617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** two or more Expr objects will be stored in a single memory allocation,
17614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** together with Expr.zToken strings.
17618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** together with Expr.u.zToken strings.
17615 17619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
17616 17620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the EP_Reduced and EP_TokenOnly flags are set when
17617 17621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an Expr object is truncated. When EP_Reduced is set, then all
17618 17622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the child Expr objects in the Expr.pLeft and Expr.pRight subtrees
17619 17623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are contained within the same memory allocation. Note, however, that
@@ -17678,12 +17682,11 @@
17678 17682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regReturn; /* Register used to hold return address */
17679 17683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} sub;
17680 17684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} y;
17681 17685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
17682 17686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
17684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The following are the meanings of bits in the Expr.flags field.
17687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The following are the meanings of bits in the Expr.flags field.
17685 17688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Value restrictions:
17686 17689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
17687 17690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** EP_Agg == NC_HasAgg == SF_HasAgg
17688 17691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** EP_Win == NC_HasWin
17689 17692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -17718,27 +17721,35 @@
17718 17721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_IsTrue 0x10000000 /* Always has boolean value of TRUE */
17719 17722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_IsFalse 0x20000000 /* Always has boolean value of FALSE */
17720 17723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_FromDDL 0x40000000 /* Originates from sqlite_schema */
17721 17724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 0x80000000 // Available */
17722 17725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
17724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The EP_Propagate mask is a set of properties that automatically propagate
17726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The EP_Propagate mask is a set of properties that automatically propagate
17725 17727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** upwards into parent nodes.
17726 17728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
17727 17729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Propagate (EP_Collate|EP_Subquery|EP_HasFunc)
17728 17730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
17730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** These macros can be used to test, set, or clear bits in the
17731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Macros can be used to test, set, or clear bits in the
17731 17732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Expr.flags field.
17732 17733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
17733 17734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define ExprHasProperty(E,P) (((E)->flags&(P))!=0)
17734 17735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define ExprHasAllProperty(E,P) (((E)->flags&(P))==(P))
17735 17736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define ExprSetProperty(E,P) (E)->flags|=(P)
17736 17737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define ExprClearProperty(E,P) (E)->flags&=~(P)
17737 17738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define ExprAlwaysTrue(E) (((E)->flags&(EP_FromJoin|EP_IsTrue))==EP_IsTrue)
17738 17739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define ExprAlwaysFalse(E) (((E)->flags&(EP_FromJoin|EP_IsFalse))==EP_IsFalse)
17739 17740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Macros used to ensure that the correct members of unions are accessed
17742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in Expr.
17743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
17744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ExprUseUToken(E) (((E)->flags&EP_IntValue)==0)
17745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ExprUseUValue(E) (((E)->flags&EP_IntValue)!=0)
17746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ExprUseXList(E) (((E)->flags&EP_xIsSelect)==0)
17747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ExprUseXSelect(E) (((E)->flags&EP_xIsSelect)!=0)
17748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ExprUseYTab(E) (((E)->flags&(EP_WinFunc|EP_Subrtn))==0)
17749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ExprUseYWin(E) (((E)->flags&EP_WinFunc)!=0)
17750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define ExprUseYSub(E) (((E)->flags&EP_Subrtn)!=0)
17740 17751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17741 17752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Flags for use with Expr.vvaFlags
17742 17753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
17743 17754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_NoReduce 0x01 /* Cannot EXPRDUP_REDUCE this Expr */
17744 17755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define EP_Immutable 0x02 /* Do not change this Expr node */
@@ -17817,15 +17828,16 @@
17817 17828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned done :1; /* A flag to indicate when processing is finished */
17818 17829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned reusable :1; /* Constant expression is reusable */
17819 17830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bSorterRef :1; /* Defer evaluation until after sorting */
17820 17831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned bNulls: 1; /* True if explicit "NULLS FIRST/LAST" */
17821 17832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
17822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- struct {
17833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ struct { /* Used by any ExprList other than Parse.pConsExpr */
17823 17834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 iOrderByCol; /* For ORDER BY, column number in result set */
17824 17835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 iAlias; /* Index into Parse.aAlias[] for zName */
17825 17836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} x;
17826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iConstExprReg; /* Register in which Expr value is cached */
17837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iConstExprReg; /* Register in which Expr value is cached. Used only
17838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** by Parse.pConstExpr */
17827 17839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} u;
17828 17840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} a[1]; /* One slot for each expression in the list */
17829 17841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
17830 17842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17831 17843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -17859,10 +17871,17 @@
17859 17871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
17860 17872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17861 17873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
17862 17874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The SrcItem object represents a single term in the FROM clause of a query.
17863 17875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The SrcList object is mostly an array of SrcItems.
17876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
17877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Union member validity:
17878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
17879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** u1.zIndexedBy fg.isIndexedBy && !fg.isTabFunc
17880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** u1.pFuncArg fg.isTabFunc && !fg.isIndexedBy
17881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** u2.pIBIndex fg.isIndexedBy && !fg.isCte
17882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** u2.pCteUse fg.isCte && !fg.isIndexedBy
17864 17883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
17865 17884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct SrcItem {
17866 17885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Schema *pSchema; /* Schema to which this item is fixed */
17867 17886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zDatabase; /* Name of database holding this table */
17868 17887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zName; /* Name of the table */
@@ -18453,10 +18472,12 @@
18453 18472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_ALTERTABLE
18454 18473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RenameToken *pRename; /* Tokens subject to renaming by ALTER TABLE */
18455 18474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
18456 18475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
18457 18476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
18477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Allowed values for Parse.eParseMode
18478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
18458 18479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PARSE_MODE_NORMAL 0
18459 18480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PARSE_MODE_DECLARE_VTAB 1
18460 18481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PARSE_MODE_RENAME 2
18461 18482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define PARSE_MODE_UNMAP 3
18462 18483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -20109,12 +20130,12 @@
20109 20130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** All of this is no-op for a production build. It only comes into
20110 20131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** play when the SQLITE_MEMDEBUG compile-time option is used.
20111 20132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
20112 20133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_MEMDEBUG
20113 20134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3MemdebugSetType(void*,u8);
20114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3MemdebugHasType(void*,u8);
20115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3MemdebugNoType(void*,u8);
20135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3MemdebugHasType(const void*,u8);
20136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3MemdebugNoType(const void*,u8);
20116 20137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
20117 20138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define sqlite3MemdebugSetType(X,Y) /* no-op */
20118 20139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define sqlite3MemdebugHasType(X,Y) 1
20119 20140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define sqlite3MemdebugNoType(X,Y) 1
20120 20141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -21433,10 +21454,16 @@
21433 21454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database connections. After initialization, this table is
21434 21455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** read-only.
21435 21456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
21436 21457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE FuncDefHash sqlite3BuiltinFunctions;
21437 21458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
21459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
21460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Counter used for coverage testing. Does not come into play for
21461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** release builds.
21462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
21463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE unsigned int sqlite3CoverageCounter;
21464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
21438 21465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef VDBE_PROFILE
21439 21466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
21440 21467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The following performance counter can be used in place of
21441 21468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3Hwtime() for profiling. This is a no-op on standard builds.
21442 21469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -24817,11 +24844,11 @@
24817 24844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Given an allocation, find the MemBlockHdr for that allocation.
24818 24845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
24819 24846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine checks the guards at either end of the allocation and
24820 24847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if they are incorrect it asserts.
24821 24848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
24822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static struct MemBlockHdr *sqlite3MemsysGetHeader(void *pAllocation){
24849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static struct MemBlockHdr *sqlite3MemsysGetHeader(const void *pAllocation){
24823 24850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct MemBlockHdr *p;
24824 24851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *pInt;
24825 24852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 *pU8;
24826 24853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nReserve;
24827 24854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -25064,11 +25091,11 @@
25064 25091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is designed for use within an assert() statement, to
25065 25092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** verify the type of an allocation. For example:
25066 25093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
25067 25094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
25068 25095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
25069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3MemdebugHasType(void *p, u8 eType){
25096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3MemdebugHasType(const void *p, u8 eType){
25070 25097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = 1;
25071 25098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p && sqlite3GlobalConfig.m.xFree==sqlite3MemFree ){
25072 25099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct MemBlockHdr *pHdr;
25073 25100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pHdr = sqlite3MemsysGetHeader(p);
25074 25101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pHdr->iForeGuard==FOREGUARD ); /* Allocation is valid */
@@ -25086,11 +25113,11 @@
25086 25113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine is designed for use within an assert() statement, to
25087 25114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** verify the type of an allocation. For example:
25088 25115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
25089 25116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** assert( sqlite3MemdebugNoType(p, MEMTYPE_LOOKASIDE) );
25090 25117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
25091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE int sqlite3MemdebugNoType(void *p, u8 eType){
25118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE int sqlite3MemdebugNoType(const void *p, u8 eType){
25092 25119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = 1;
25093 25120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p && sqlite3GlobalConfig.m.xFree==sqlite3MemFree ){
25094 25121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct MemBlockHdr *pHdr;
25095 25122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pHdr = sqlite3MemsysGetHeader(p);
25096 25123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pHdr->iForeGuard==FOREGUARD ); /* Allocation is valid */
@@ -30551,10 +30578,11 @@
30551 30578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOp2[0] = 0;
30552 30579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30553 30580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "COLUMN(%d)%s%s",
30554 30581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn, zFlgs, zOp2);
30555 30582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
30583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
30556 30584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "{%d:%d} pTab=%p%s",
30557 30585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable, pExpr->iColumn,
30558 30586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.pTab, zFlgs);
30559 30587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30560 30588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_FixedCol) ){
@@ -30570,15 +30598,17 @@
30570 30598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30571 30599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30572 30600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30573 30601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_FLOATING_POINT
30574 30602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_FLOAT: {
30603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30575 30604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView,"%s", pExpr->u.zToken);
30576 30605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30577 30606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30578 30607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
30579 30608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_STRING: {
30609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30580 30610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView,"%Q", pExpr->u.zToken);
30581 30611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30582 30612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30583 30613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_NULL: {
30584 30614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView,"NULL");
@@ -30589,30 +30619,34 @@
30589 30619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprTruthValue(pExpr) ? "TRUE" : "FALSE", zFlgs);
30590 30620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30591 30621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30592 30622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_BLOB_LITERAL
30593 30623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BLOB: {
30624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30594 30625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView,"%s", pExpr->u.zToken);
30595 30626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30596 30627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30597 30628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
30598 30629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_VARIABLE: {
30630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30599 30631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView,"VARIABLE(%s,%d)",
30600 30632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->u.zToken, pExpr->iColumn);
30601 30633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30602 30634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30603 30635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_REGISTER: {
30604 30636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView,"REGISTER(%d)", pExpr->iTable);
30605 30637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30606 30638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30607 30639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ID: {
30640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30608 30641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView,"ID \"%w\"", pExpr->u.zToken);
30609 30642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30610 30643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30611 30644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_CAST
30612 30645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_CAST: {
30613 30646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Expressions of the form: CAST(pLeft AS token) */
30647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30614 30648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView,"CAST %Q", pExpr->u.zToken);
30615 30649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
30616 30650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30617 30651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30618 30652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_CAST */
@@ -30658,10 +30692,11 @@
30658 30692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zUniOp = azOp[x];
30659 30693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30660 30694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30661 30695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
30662 30696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SPAN: {
30697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30663 30698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "SPAN %Q", pExpr->u.zToken);
30664 30699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
30665 30700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30666 30701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30667 30702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -30669,10 +30704,11 @@
30669 30704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* COLLATE operators without the EP_Collate flag are intended to
30670 30705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** emulate collation associated with a table column. These show
30671 30706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** up in the treeview output as "SOFT-COLLATE". Explicit COLLATE
30672 30707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** operators that appear in the original SQL always have the
30673 30708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** EP_Collate bit set and appear in treeview output as just "COLLATE" */
30709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30674 30710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "%sCOLLATE %Q%s",
30675 30711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
!ExprHasProperty(pExpr, EP_Collate) ? "SOFT-" : "",
30676 30712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->u.zToken, zFlgs);
30677 30713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
30678 30714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -30684,17 +30720,19 @@
30684 30720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Window *pWin;
30685 30721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_TokenOnly) ){
30686 30722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFarg = 0;
30687 30723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWin = 0;
30688 30724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
30725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
30689 30726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFarg = pExpr->x.pList;
30690 30727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
30691 30728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWin = ExprHasProperty(pExpr, EP_WinFunc) ? pExpr->y.pWin : 0;
30692 30729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
30693 30730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWin = 0;
30694 30731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
30695 30732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30696 30734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_AGG_FUNCTION ){
30697 30735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "AGG_FUNCTION%d %Q%s agg=%d[%d]/%p",
30698 30736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op2, pExpr->u.zToken, zFlgs,
30699 30737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pAggInfo ? pExpr->pAggInfo->selId : 0,
30700 30738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iAgg, pExpr->pAggInfo);
@@ -30722,23 +30760,25 @@
30722 30760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
30723 30761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30724 30762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30725 30763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SUBQUERY
30726 30764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_EXISTS: {
30765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr) );
30727 30766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "EXISTS-expr flags=0x%x", pExpr->flags);
30728 30767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewSelect(pView, pExpr->x.pSelect, 0);
30729 30768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30730 30769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30731 30770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SELECT: {
30771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr) );
30732 30772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "subquery-expr flags=0x%x", pExpr->flags);
30733 30773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewSelect(pView, pExpr->x.pSelect, 0);
30734 30774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30735 30775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30736 30776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IN: {
30737 30777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "IN flags=0x%x", pExpr->flags);
30738 30778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(pView, pExpr->pLeft, 1);
30739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
30779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
30740 30780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewSelect(pView, pExpr->x.pSelect, 0);
30741 30781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
30742 30782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExprList(pView, pExpr->x.pList, 0, 0);
30743 30783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30744 30784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -30755,13 +30795,16 @@
30755 30795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** X is stored in pExpr->pLeft.
30756 30796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Y is stored in pExpr->pList->a[0].pExpr.
30757 30797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Z is stored in pExpr->pList->a[1].pExpr.
30758 30798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
30759 30799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BETWEEN: {
30760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *pX = pExpr->pLeft;
30761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *pY = pExpr->x.pList->a[0].pExpr;
30762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *pZ = pExpr->x.pList->a[1].pExpr;
30800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const Expr *pX, *pY, *pZ;
30801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pX = pExpr->pLeft;
30802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
30803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->x.pList->nExpr==2 );
30804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pY = pExpr->x.pList->a[0].pExpr;
30805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pZ = pExpr->x.pList->a[1].pExpr;
30763 30806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "BETWEEN");
30764 30807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(pView, pX, 1);
30765 30808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(pView, pY, 1);
30766 30809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(pView, pZ, 0);
30767 30810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -30779,10 +30822,11 @@
30779 30822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30780 30823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30781 30824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_CASE: {
30782 30825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "CASE");
30783 30826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(pView, pExpr->pLeft, 1);
30827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
30784 30828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExprList(pView, pExpr->x.pList, 0, 0);
30785 30829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30786 30830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30787 30831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_TRIGGER
30788 30832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_RAISE: {
@@ -30791,10 +30835,11 @@
30791 30835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OE_Rollback: zType = "rollback"; break;
30792 30836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OE_Abort: zType = "abort"; break;
30793 30837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OE_Fail: zType = "fail"; break;
30794 30838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OE_Ignore: zType = "ignore"; break;
30795 30839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
30796 30841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "RAISE %s(%Q)", zType, pExpr->u.zToken);
30797 30842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30798 30843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30799 30844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
30800 30845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_MATCH: {
@@ -30803,18 +30848,20 @@
30803 30848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewExpr(pView, pExpr->pRight, 0);
30804 30849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30805 30850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30806 30851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_VECTOR: {
30807 30852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z = sqlite3_mprintf("VECTOR%s",zFlgs);
30853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
30808 30854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewBareExprList(pView, pExpr->x.pList, z);
30809 30855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(z);
30810 30856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30811 30857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30812 30858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SELECT_COLUMN: {
30813 30859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "SELECT-COLUMN %d of [0..%d]%s",
30814 30860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn, pExpr->iTable-1,
30815 30861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pRight==pExpr->pLeft ? " (SELECT-owner)" : "");
30862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr->pLeft) );
30816 30863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewSelect(pView, pExpr->pLeft->x.pSelect, 0);
30817 30864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30818 30865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30819 30866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IF_NULL_ROW: {
30820 30867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TreeViewLine(pView, "IF-NULL-ROW %d", pExpr->iTable);
@@ -31887,20 +31934,10 @@
31887 31934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include <stdarg.h> */
31888 31935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_FLOATING_POINT
31889 31936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <math.h>
31890 31937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
31891 31938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
31893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Routine needed to support the testcase() macro.
31894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
31895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_COVERAGE_TEST
31896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_PRIVATE void sqlite3Coverage(int x){
31897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static unsigned dummy = 0;
31898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dummy += (unsigned)x;
31899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
31900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
31901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
31902 31939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
31903 31940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Calls to sqlite3FaultSim() are used to simulate a failure during testing,
31904 31941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or to bypass normal error detection during testing in order to let
31905 31942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** execute proceed futher downstream.
31906 31943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -32143,10 +32180,11 @@
32143 32180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32144 32181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32145 32182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z[j] = 0;
32146 32183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32147 32184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3DequoteExpr(Expr *p){
32185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(p, EP_IntValue) );
32148 32186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3Isquote(p->u.zToken[0]) );
32149 32187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags |= p->u.zToken[0]=='"' ? EP_Quoted|EP_DblQuoted : EP_Quoted;
32150 32188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Dequote(p->u.zToken);
32151 32189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
32152 32190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -40270,12 +40308,10 @@
40270 40308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fd<0 ){
40271 40309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isNewJrnl && errno==EACCES && osAccess(zName, F_OK) ){
40272 40310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If unable to create a journal because the directory is not
40273 40311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** writable, change the error code to indicate that. */
40274 40312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_READONLY_DIRECTORY;
40275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( errno==EEXIST ){
40276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_CANTOPEN_EXISTS;
40277 40313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( errno!=EISDIR && isReadWrite ){
40278 40314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Failed to open the file for read/write access. Try read-only. */
40279 40315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags &= ~(SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE);
40280 40316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
openFlags &= ~(O_RDWR|O_CREAT);
40281 40317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags |= SQLITE_OPEN_READONLY;
@@ -59613,11 +59649,11 @@
59613 59649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
59614 59650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPg->flags &= ~PGHDR_NEED_SYNC;
59615 59651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPgOld = sqlite3PagerLookup(pPager, pgno);
59616 59652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !pPgOld || pPgOld->nRef==1 || CORRUPT_DB );
59617 59653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPgOld ){
59618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pPgOld->nRef>1 ){
59654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(pPgOld->nRef>1) ){
59619 59655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3PagerUnrefNotNull(pPgOld);
59620 59656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
59621 59657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
59622 59658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPg->flags |= (pPgOld->flags&PGHDR_NEED_SYNC);
59623 59659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPager->tempFile ){
@@ -64637,11 +64673,10 @@
64637 64673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Access to all fields of this structure is controlled by the mutex
64638 64674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** stored in MemPage.pBt->mutex.
64639 64675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
64640 64676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct MemPage {
64641 64677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 isInit; /* True if previously initialized. MUST BE FIRST! */
64642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 bBusy; /* Prevent endless loops on corrupt database files */
64643 64678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 intKey; /* True if table b-trees. False for index b-trees */
64644 64679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 intKeyLeaf; /* True if the leaf of an intKey table */
64645 64680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Pgno pgno; /* Page number for this page */
64646 64681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Only the first 8 bytes (above) are zeroed by pager.c when a new page
64647 64682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is allocated. All fields that follow must be initialized before use */
@@ -70227,11 +70262,13 @@
70227 70262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
70228 70263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70229 70264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage );
70230 70265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( eOp==0 || eOp==1 );
70231 70266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->eState==CURSOR_VALID );
70232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pCur->ix<pPage->nCell );
70267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur->ix>=pPage->nCell ){
70268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
70269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70233 70270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cursorHoldsMutex(pCur) );
70234 70271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70235 70272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
getCellInfo(pCur);
70236 70273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aPayload = pCur->info.pPayload;
70237 70274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( offset+amt <= pCur->info.nPayload );
@@ -70414,11 +70451,10 @@
70414 70451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70415 70452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3BtreePayload(BtCursor *pCur, u32 offset, u32 amt, void *pBuf){
70416 70453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cursorHoldsMutex(pCur) );
70417 70454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->eState==CURSOR_VALID );
70418 70455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->iPage>=0 && pCur->pPage );
70419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pCur->ix<pCur->pPage->nCell );
70420 70456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return accessPayload(pCur, offset, amt, (unsigned char*)pBuf, 0);
70421 70457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70422 70458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70423 70459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
70424 70460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This variant of sqlite3BtreePayload() works even if the cursor has not
@@ -70476,11 +70512,11 @@
70476 70512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int amt;
70477 70513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur!=0 && pCur->iPage>=0 && pCur->pPage);
70478 70514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->eState==CURSOR_VALID );
70479 70515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
70480 70516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cursorOwnsBtShared(pCur) );
70481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pCur->ix<pCur->pPage->nCell );
70517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pCur->ix<pCur->pPage->nCell || CORRUPT_DB );
70482 70518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->info.nSize>0 );
70483 70519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->info.pPayload>pCur->pPage->aData || CORRUPT_DB );
70484 70520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->info.pPayload<pCur->pPage->aDataEnd ||CORRUPT_DB);
70485 70521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
amt = pCur->info.nLocal;
70486 70522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( amt>(int)(pCur->pPage->aDataEnd - pCur->info.pPayload) ){
@@ -71262,20 +71298,10 @@
71262 71298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** module cov1/btree78.test testcase 220 (2018-06-08) for an
71263 71299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** example. */
71264 71300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
71265 71301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71266 71302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If the database file is corrupt, it is possible for the value of idx
71268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to be invalid here. This can only occur if a second cursor modifies
71269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the page while cursor pCur is holding a reference to it. Which can
71270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** only happen if the database is corrupt in such a way as to link the
71271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** page into more than one b-tree structure.
71272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
71273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Update 2019-12-23: appears to long longer be possible after the
71274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** addition of anotherValidCursor() condition on balance_deeper(). */
71275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- harmless( idx>pPage->nCell );
71276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
71277 71303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( idx>=pPage->nCell ){
71278 71304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pPage->leaf ){
71279 71305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = moveToChild(pCur, get4byte(&pPage->aData[pPage->hdrOffset+8]));
71280 71306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
71281 71307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return moveToLeftmost(pCur);
@@ -71759,11 +71785,11 @@
71759 71785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71760 71786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pBt->mutex) );
71761 71787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( CORRUPT_DB || iPage>1 );
71762 71788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !pMemPage || pMemPage->pgno==iPage );
71763 71789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iPage<2 || iPage>pBt->nPage ){
71790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(iPage<2) || iPage>pBt->nPage ){
71765 71791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
71766 71792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
71767 71793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pMemPage ){
71768 71794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage = pMemPage;
71769 71795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3PagerRef(pPage->pDbPage);
@@ -74360,11 +74386,14 @@
74360 74386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( szNew==pPage->xCellSize(pPage, newCell) );
74361 74387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( szNew <= MX_CELL_SIZE(pBt) );
74362 74388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idx = pCur->ix;
74363 74389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( loc==0 ){
74364 74390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CellInfo info;
74365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( idx<pPage->nCell );
74391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( idx>=0 );
74392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( idx>=pPage->nCell ){
74393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_BKPT;
74394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
74366 74395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3PagerWrite(pPage->pDbPage);
74367 74396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
74368 74397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_insert;
74369 74398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74370 74399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
oldCell = findCell(pPage, idx);
@@ -74946,15 +74975,16 @@
74946 74975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pgno>btreePagecount(pBt) ){
74947 74976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
74948 74977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74949 74978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = getAndInitPage(pBt, pgno, &pPage, 0, 0);
74950 74979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
74951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pPage->bBusy ){
74980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pBt->openFlags & BTREE_SINGLE)==0
74981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && sqlite3PagerPageRefcount(pPage->pDbPage)!=1
74982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
74952 74983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_CORRUPT_BKPT;
74953 74984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto cleardatabasepage_out;
74954 74985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPage->bBusy = 1;
74956 74986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hdr = pPage->hdrOffset;
74957 74987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pPage->nCell; i++){
74958 74988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCell = findCell(pPage, i);
74959 74989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pPage->leaf ){
74960 74990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = clearDatabasePage(pBt, get4byte(pCell), 1, pnChange);
@@ -74977,11 +75007,10 @@
74977 75007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( (rc = sqlite3PagerWrite(pPage->pDbPage))==0 ){
74978 75008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zeroPage(pPage, pPage->aData[hdr] | PTF_LEAF);
74979 75009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74980 75010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
74981 75011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cleardatabasepage_out:
74982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pPage->bBusy = 0;
74983 75012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
releasePage(pPage);
74984 75013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
74985 75014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
74986 75015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
74987 75016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -75056,14 +75085,14 @@
75056 75085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iTable>=2 );
75057 75086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iTable>btreePagecount(pBt) ){
75058 75087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_CORRUPT_BKPT;
75059 75088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75060 75089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = btreeGetPage(pBt, (Pgno)iTable, &pPage, 0);
75062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc ) return rc;
75063 75090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeClearTable(p, iTable, 0);
75064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc ){
75091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc ) return rc;
75092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = btreeGetPage(pBt, (Pgno)iTable, &pPage, 0);
75093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(rc) ){
75065 75094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
releasePage(pPage);
75066 75095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
75067 75096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
75068 75097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
75069 75098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*piMoved = 0;
@@ -78434,12 +78463,14 @@
78434 78463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pList = 0; /* Function arguments */
78435 78464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; /* Iterator variable */
78436 78465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78437 78466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCtx!=0 );
78438 78467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (p->flags & EP_TokenOnly)==0 );
78468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(p) );
78439 78469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pList = p->x.pList;
78440 78470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pList ) nVal = pList->nExpr;
78471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(p, EP_IntValue) );
78441 78472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFunc = sqlite3FindFunction(db, p->u.zToken, nVal, enc, 0);
78442 78473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pFunc );
78443 78474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pFunc->funcFlags & (SQLITE_FUNC_CONSTANT|SQLITE_FUNC_SLOCHNG))==0
78444 78475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL)
78445 78476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
@@ -78539,11 +78570,13 @@
78539 78570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** check ensures that an EP_TokenOnly expression is never passed down
78540 78571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** into valueFromFunction(). */
78541 78572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pExpr->flags & EP_TokenOnly)==0 || pCtx==0 );
78542 78573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78543 78574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_CAST ){
78544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 aff = sqlite3AffinityType(pExpr->u.zToken,0);
78575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 aff;
78576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
78577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aff = sqlite3AffinityType(pExpr->u.zToken,0);
78545 78578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = valueFromExpr(db, pExpr->pLeft, enc, aff, ppVal, pCtx);
78546 78579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( rc!=SQLITE_OK );
78547 78580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *ppVal ){
78548 78581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemCast(*ppVal, aff, SQLITE_UTF8);
78549 78582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ValueApplyAffinity(*ppVal, affinity, SQLITE_UTF8);
@@ -78612,10 +78645,11 @@
78612 78645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetNull(pVal);
78613 78646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78614 78647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_BLOB_LITERAL
78615 78648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else if( op==TK_BLOB ){
78616 78649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVal;
78650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
78617 78651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->u.zToken[0]=='x' || pExpr->u.zToken[0]=='X' );
78618 78652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->u.zToken[1]=='\'' );
78619 78653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVal = valueNew(db, pCtx);
78620 78654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pVal ) goto no_mem;
78621 78655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zVal = &pExpr->u.zToken[2];
@@ -78629,10 +78663,11 @@
78629 78663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else if( op==TK_FUNCTION && pCtx!=0 ){
78630 78664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = valueFromFunction(db, pExpr, enc, affinity, &pVal, pCtx);
78631 78665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78632 78666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
78633 78667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else if( op==TK_TRUEFALSE ){
78668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
78634 78669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVal = valueNew(db, pCtx);
78635 78670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pVal ){
78636 78671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVal->flags = MEM_Int;
78637 78672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVal->u.i = pExpr->u.zToken[4]==0;
78638 78673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -80501,10 +80536,11 @@
80501 80536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80502 80537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void displayP4Expr(StrAccum *p, Expr *pExpr){
80503 80538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zOp = 0;
80504 80539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( pExpr->op ){
80505 80540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_STRING:
80541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
80506 80542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(p, "%Q", pExpr->u.zToken);
80507 80543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
80508 80544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_INTEGER:
80509 80545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(p, "%d", pExpr->u.iValue);
80510 80546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -80847,12 +80883,12 @@
80847 80883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with no indexes using a single prepared INSERT statement, bind()
80848 80884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and reset(). Inserts are grouped into a transaction.
80849 80885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80850 80886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->flags & MEM_Agg );
80851 80887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( p->flags & MEM_Dyn );
80852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( p->xDel==sqlite3VdbeFrameMemDel );
80853 80888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->flags&(MEM_Agg|MEM_Dyn) ){
80889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( (p->flags & MEM_Dyn)!=0 && p->xDel==sqlite3VdbeFrameMemDel );
80854 80890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemRelease(p);
80855 80891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->szMalloc ){
80856 80892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFreeNN(db, p->zMalloc);
80857 80893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->szMalloc = 0;
80858 80894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -84553,12 +84589,12 @@
84553 84589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/**************************** sqlite3_result_ *******************************
84554 84590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The following routines are used by user-defined functions to specify
84555 84591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the function result.
84556 84592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
84557 84593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The setStrOrError() function calls sqlite3VdbeMemSetStr() to store the
84558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** result as a string or blob but if the string or blob is too large, it
84559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** then sets the error code to SQLITE_TOOBIG
84594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** result as a string or blob. Appropriate errors are set if the string/blob
84595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is too big or if an OOM occurs.
84560 84596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
84561 84597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The invokeValueDestructor(P,X) routine invokes destructor function X()
84562 84598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on value P is not going to be used and need to be destroyed.
84563 84599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
84564 84600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void setResultStrOrError(
@@ -84566,12 +84602,20 @@
84566 84602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z, /* String pointer */
84567 84603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n, /* Bytes in string, or negative */
84568 84604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 enc, /* Encoding of z. 0 for BLOBs */
84569 84605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void (*xDel)(void*) /* Destructor function */
84570 84606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
84571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3VdbeMemSetStr(pCtx->pOut, z, n, enc, xDel)==SQLITE_TOOBIG ){
84572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_error_toobig(pCtx);
84607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = sqlite3VdbeMemSetStr(pCtx->pOut, z, n, enc, xDel);
84608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc ){
84609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_TOOBIG ){
84610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error_toobig(pCtx);
84611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
84612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The only errors possible from sqlite3VdbeMemSetStr are
84613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLITE_TOOBIG and SQLITE_NOMEM */
84614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( rc==SQLITE_NOMEM );
84615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error_nomem(pCtx);
84616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
84573 84617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84574 84618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84575 84619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int invokeValueDestructor(
84576 84620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const void *p, /* Value to destroy */
84577 84621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void (*xDel)(void*), /* The destructor */
@@ -90536,11 +90580,11 @@
90536 90580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( aMem[pOp->p3].flags & MEM_Null );
90537 90581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aMem[pOp->p3].n = 0;
90538 90582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aMem[pOp->p3].z = "";
90539 90583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90540 90584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx = p->apCsr[pOp->p1];
90541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pCx && !pCx->hasBeenDuped ){
90585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCx && !pCx->hasBeenDuped && ALWAYS(pOp->p2<=pCx->nField) ){
90542 90586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the ephermeral table is already open and has no duplicates from
90543 90587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** OP_OpenDup, then erase all existing content so that the table is
90544 90588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** empty again, rather than creating a new table. */
90545 90589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCx->isEphemeral );
90546 90590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCx->seqCount = 0;
@@ -95092,11 +95136,11 @@
95092 95136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check that the column is not part of an FK child key definition. It
95093 95137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is not necessary to check if it is part of a parent key, as parent
95094 95138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** key columns must be indexed. The check below will pick up this
95095 95139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** case. */
95096 95140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *pFKey;
95097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
95141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
95098 95142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
95099 95143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j;
95100 95144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<pFKey->nCol; j++){
95101 95145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFKey->aCol[j].iFrom==iCol ){
95102 95146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFault = "foreign key";
@@ -99101,11 +99145,11 @@
99101 99145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->pLeft && walkExpr(pWalker, pExpr->pLeft) ) return WRC_Abort;
99102 99146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->pRight ){
99103 99147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_WinFunc) );
99104 99148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->pRight;
99105 99149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
99106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( ExprHasProperty(pExpr, EP_xIsSelect) ){
99150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( ExprUseXSelect(pExpr) ){
99107 99151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_WinFunc) );
99108 99152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3WalkSelect(pWalker, pExpr->x.pSelect) ) return WRC_Abort;
99109 99153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
99110 99154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->x.pList ){
99111 99155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3WalkExprList(pWalker, pExpr->x.pList) ) return WRC_Abort;
@@ -99373,10 +99417,11 @@
99373 99417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pDup);
99374 99418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDup = 0;
99375 99419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
99376 99420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
incrAggFunctionDepth(pDup, nSubquery);
99377 99421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_COLLATE ){
99422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
99378 99423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDup = sqlite3ExprAddCollateString(pParse, pDup, pExpr->u.zToken);
99379 99424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99380 99425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
99381 99426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Before calling sqlite3ExprDelete(), set the EP_Static flag. This
99382 99427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** prevents ExprDelete() from deleting the Expr structure itself,
@@ -99476,10 +99521,11 @@
99476 99521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE Bitmask sqlite3ExprColUsed(Expr *pExpr){
99477 99522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n;
99478 99523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pExTab;
99479 99524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
99480 99525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pExpr->iColumn;
99526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
99481 99527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExTab = pExpr->y.pTab;
99482 99528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExTab!=0 );
99483 99529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pExTab->tabFlags & TF_HasGenerated)!=0
99484 99530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pExTab->aCol[n].colFlags & COLFLAG_GENERATED)!=0
99485 99531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
@@ -99613,10 +99659,11 @@
99613 99659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTabName = pItem->zAlias ? pItem->zAlias : pTab->zName;
99614 99660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zTabName!=0 );
99615 99661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3StrICmp(zTabName, zTab)!=0 ){
99616 99662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
99617 99663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
99618 99665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IN_RENAME_OBJECT && pItem->zAlias ){
99619 99666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RenameTokenRemap(pParse, 0, (void*)&pExpr->y.pTab);
99620 99667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99621 99668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99622 99669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hCol = sqlite3StrIHash(zCol);
@@ -99644,10 +99691,11 @@
99644 99691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMatch = pItem;
99645 99692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99646 99693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99647 99694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pMatch ){
99648 99695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pMatch->iCursor;
99696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
99649 99697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.pTab = pMatch->pTab;
99650 99698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* RIGHT JOIN not (yet) supported */
99651 99699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pMatch->fg.jointype & JT_RIGHT)==0 );
99652 99700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pMatch->fg.jointype & JT_LEFT)!=0 ){
99653 99701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pExpr, EP_CanBeNull);
@@ -99717,10 +99765,11 @@
99717 99765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt++;
99718 99766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMatch = 0;
99719 99767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_UPSERT
99720 99768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->iTable==EXCLUDED_TABLE_NUMBER ){
99721 99769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iCol==(-1) );
99770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
99722 99771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IN_RENAME_OBJECT ){
99723 99772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn = iCol;
99724 99773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.pTab = pTab;
99725 99774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eNewExprOp = TK_COLUMN;
99726 99775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -99729,10 +99778,11 @@
99729 99778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eNewExprOp = TK_REGISTER;
99730 99779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99731 99780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
99732 99781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_UPSERT */
99733 99782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
99783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
99734 99784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.pTab = pTab;
99735 99785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->bReturning ){
99736 99786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eNewExprOp = TK_REGISTER;
99737 99787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pNC->uNC.iBaseReg + (pTab->nCol+1)*pExpr->iTable +
99738 99788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableColumnToStorage(pTab, iCol) + 1;
@@ -99803,12 +99853,12 @@
99803 99853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pEList->a[j].eEName==ENAME_NAME
99804 99854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3_stricmp(zAs, zCol)==0
99805 99855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
99806 99856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pOrig;
99807 99857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->pLeft==0 && pExpr->pRight==0 );
99808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pExpr->x.pList==0 );
99809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pExpr->x.pSelect==0 );
99858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr)==0 || pExpr->x.pList==0 );
99859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr)==0 || pExpr->x.pSelect==0 );
99810 99860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrig = pEList->a[j].pExpr;
99811 99861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pNC->ncFlags&NC_AllowAgg)==0 && ExprHasProperty(pOrig, EP_Agg) ){
99812 99862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "misuse of aliased aggregate %s", zAs);
99813 99863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Abort;
99814 99864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -99876,11 +99926,11 @@
99876 99926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"double-quoted string literal: \"%w\"", zCol);
99877 99927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_NORMALIZE
99878 99928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddDblquoteStr(db, pParse->pVdbe, zCol);
99879 99929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
99880 99930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_STRING;
99881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pExpr->y.pTab = 0;
99931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&pExpr->y, 0, sizeof(pExpr->y));
99882 99932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
99883 99933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99884 99934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprIdToTrueFalse(pExpr) ){
99885 99935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
99886 99936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -99962,11 +100012,13 @@
99962 100012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
99963 100013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE Expr *sqlite3CreateColumnExpr(sqlite3 *db, SrcList *pSrc, int iSrc, int iCol){
99964 100014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *p = sqlite3ExprAlloc(db, TK_COLUMN, 0, 0);
99965 100015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
99966 100016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem = &pSrc->a[iSrc];
99967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Table *pTab = p->y.pTab = pItem->pTab;
100017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab;
100018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(p) );
100019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab = p->y.pTab = pItem->pTab;
99968 100020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iTable = pItem->iCursor;
99969 100021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->y.pTab->iPKey==iCol ){
99970 100022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iColumn = -1;
99971 100023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
99972 100024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iColumn = (ynVar)iCol;
@@ -100029,10 +100081,11 @@
100029 100081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value between 1.0 and 0.0.
100030 100082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
100031 100083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int exprProbability(Expr *p){
100032 100084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double r = -1.0;
100033 100085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->op!=TK_FLOAT ) return -1;
100086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(p, EP_IntValue) );
100034 100087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3AtoF(p->u.zToken, &r, sqlite3Strlen30(p->u.zToken), SQLITE_UTF8);
100035 100088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( r>=0.0 );
100036 100089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( r>1.0 ) return -1;
100037 100090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (int)(r*134217728.0);
100038 100091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -100077,10 +100130,11 @@
100077 100130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrcList = pNC->pSrcList;
100078 100131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem;
100079 100132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSrcList && pSrcList->nSrc>=1 );
100080 100133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem = pSrcList->a;
100081 100134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_COLUMN;
100135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
100082 100136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.pTab = pItem->pTab;
100083 100137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pItem->iCursor;
100084 100138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn--;
100085 100139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->affExpr = SQLITE_AFF_INTEGER;
100086 100140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -100109,10 +100163,11 @@
100109 100163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
anRef[i] = p->nRef;
100110 100164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100111 100165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkExpr(pWalker, pExpr->pLeft);
100112 100166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==sqlite3ExprCanBeNull(pExpr->pLeft) && !IN_RENAME_OBJECT ){
100113 100167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( ExprHasProperty(pExpr, EP_FromJoin) );
100168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
100114 100169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_NOTNULL ){
100115 100170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->u.zToken = "true";
100116 100171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pExpr, EP_IsTrue);
100117 100172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
100118 100173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->u.zToken = "false";
@@ -100144,10 +100199,11 @@
100144 100199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRight;
100145 100200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100146 100201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_ID ){
100147 100202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDb = 0;
100148 100203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTable = 0;
100204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
100149 100205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zColumn = pExpr->u.zToken;
100150 100206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
100151 100207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLeft = pExpr->pLeft;
100152 100208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IdxExpr );
100153 100209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_GenCol );
@@ -100156,16 +100212,19 @@
100156 100212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRight = pExpr->pRight;
100157 100213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRight->op==TK_ID ){
100158 100214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDb = 0;
100159 100215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
100160 100216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRight->op==TK_DOT );
100217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pRight, EP_IntValue) );
100161 100218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDb = pLeft->u.zToken;
100162 100219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeft = pRight->pLeft;
100163 100220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRight = pRight->pRight;
100164 100221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseUToken(pLeft) && ExprUseUToken(pRight) );
100165 100223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTable = pLeft->u.zToken;
100166 100224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zColumn = pRight->u.zToken;
100225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
100167 100226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IN_RENAME_OBJECT ){
100168 100227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RenameTokenRemap(pParse, (void*)pExpr, (void*)pRight);
100169 100228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RenameTokenRemap(pParse, (void*)&pExpr->y.pTab, (void*)pLeft);
100170 100229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100171 100230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -100186,11 +100245,11 @@
100186 100245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 enc = ENC(pParse->db); /* The database encoding */
100187 100246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int savedAllowFlags = (pNC->ncFlags & (NC_AllowAgg | NC_AllowWin));
100188 100247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
100189 100248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Window *pWin = (IsWindowFunc(pExpr) ? pExpr->y.pWin : 0);
100190 100249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
100191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
100250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_xIsSelect|EP_IntValue) );
100192 100251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zId = pExpr->u.zToken;
100193 100252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nId = sqlite3Strlen30(zId);
100194 100253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDef = sqlite3FindFunction(pParse->db, zId, n, enc, 0);
100195 100254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pDef==0 ){
100196 100255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDef = sqlite3FindFunction(pParse->db, zId, -2, enc, 0);
@@ -100350,11 +100409,11 @@
100350 100409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkExprList(pWalker, pList);
100351 100410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( is_agg ){
100352 100411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
100353 100412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWin ){
100354 100413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pSel = pNC->pWinSelect;
100355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pWin==pExpr->y.pWin );
100414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pWin==0 || (ExprUseYWin(pExpr) && pWin==pExpr->y.pWin) );
100356 100415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IN_RENAME_OBJECT==0 ){
100357 100416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WindowUpdate(pParse, pSel ? pSel->pWinDefn : 0, pWin, pDef);
100358 100417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->db->mallocFailed ) break;
100359 100418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100360 100419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkExprList(pWalker, pWin->pPartition);
@@ -100399,11 +100458,11 @@
100399 100458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_SELECT:
100400 100459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_EXISTS: testcase( pExpr->op==TK_EXISTS );
100401 100460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
100402 100461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IN: {
100403 100462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_IN );
100404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
100463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
100405 100464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nRef = pNC->nRef;
100406 100465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IsCheck );
100407 100466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_PartIdx );
100408 100467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IdxExpr );
100409 100468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_GenCol );
@@ -100456,10 +100515,11 @@
100456 100515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nLeft, nRight;
100457 100516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->db->mallocFailed ) break;
100458 100517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->pLeft!=0 );
100459 100518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nLeft = sqlite3ExprVectorSize(pExpr->pLeft);
100460 100519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_BETWEEN ){
100520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
100461 100521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nRight = sqlite3ExprVectorSize(pExpr->x.pList->a[0].pExpr);
100462 100522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nRight==nLeft ){
100463 100523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nRight = sqlite3ExprVectorSize(pExpr->x.pList->a[1].pExpr);
100464 100524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100465 100525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -100504,11 +100564,13 @@
100504 100564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; /* Loop counter */
100505 100565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100506 100566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(pParse);
100507 100567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
100508 100568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pE->op==TK_ID ){
100509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zCol = pE->u.zToken;
100569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zCol;
100570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pE, EP_IntValue) );
100571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCol = pE->u.zToken;
100510 100572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pEList->nExpr; i++){
100511 100573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pEList->a[i].eEName==ENAME_NAME
100512 100574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3_stricmp(pEList->a[i].zEName, zCol)==0
100513 100575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
100514 100576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return i+1;
@@ -101369,15 +101431,18 @@
101369 101431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->pLeft;
101370 101432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr!=0 );
101371 101433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101372 101434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = pExpr->op;
101373 101435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_REGISTER ) op = pExpr->op2;
101374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (op==TK_COLUMN || op==TK_AGG_COLUMN) && pExpr->y.pTab ){
101375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return sqlite3TableColumnAffinity(pExpr->y.pTab, pExpr->iColumn);
101436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==TK_COLUMN || op==TK_AGG_COLUMN ){
101437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
101438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->y.pTab ){
101439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sqlite3TableColumnAffinity(pExpr->y.pTab, pExpr->iColumn);
101440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
101376 101441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101377 101442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_SELECT ){
101378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pExpr->flags&EP_xIsSelect );
101443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr) );
101379 101444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->x.pSelect!=0 );
101380 101445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->x.pSelect->pEList!=0 );
101381 101446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->x.pSelect->pEList->a[0].pExpr!=0 );
101382 101447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ExprAffinity(pExpr->x.pSelect->pEList->a[0].pExpr);
101383 101448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -101386,18 +101451,19 @@
101386 101451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_IntValue) );
101387 101452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3AffinityType(pExpr->u.zToken, 0);
101388 101453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101389 101454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
101390 101455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_SELECT_COLUMN ){
101391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pExpr->pLeft->flags&EP_xIsSelect );
101456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pExpr->pLeft!=0 && ExprUseXSelect(pExpr->pLeft) );
101392 101457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->iColumn < pExpr->iTable );
101393 101458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->iTable==pExpr->pLeft->x.pSelect->pEList->nExpr );
101394 101459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ExprAffinity(
101395 101460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pLeft->x.pSelect->pEList->a[pExpr->iColumn].pExpr
101396 101461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
101397 101462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101398 101463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_VECTOR ){
101464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
101399 101465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ExprAffinity(pExpr->x.pList->a[0].pExpr);
101400 101466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101401 101467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr->affExpr;
101402 101468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101403 101469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -101453,11 +101519,11 @@
101453 101519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expression.
101454 101520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
101455 101521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE Expr *sqlite3ExprSkipCollateAndLikely(Expr *pExpr){
101456 101522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( pExpr && ExprHasProperty(pExpr, EP_Skip|EP_Unlikely) ){
101457 101523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_Unlikely) ){
101458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
101524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
101459 101525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->x.pList->nExpr>0 );
101460 101526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_FUNCTION );
101461 101527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->x.pList->a[0].pExpr;
101462 101528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
101463 101529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_COLLATE );
@@ -101486,45 +101552,46 @@
101486 101552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CollSeq *pColl = 0;
101487 101553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const Expr *p = pExpr;
101488 101554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( p ){
101489 101555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int op = p->op;
101490 101556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_REGISTER ) op = p->op2;
101491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_TRIGGER)
101492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && p->y.pTab!=0
101493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
101494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* op==TK_REGISTER && p->y.pTab!=0 happens when pExpr was originally
101495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** a TK_COLUMN but was previously evaluated and cached in a register */
101496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int j = p->iColumn;
101497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( j>=0 ){
101498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zColl = sqlite3ColumnColl(&p->y.pTab->aCol[j]);
101499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pColl = sqlite3FindCollSeq(db, ENC(db), zColl, 0);
101500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
101501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
101557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_TRIGGER ){
101558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(p) );
101559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->y.pTab!=0 ){
101560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* op==TK_REGISTER && p->y.pTab!=0 happens when pExpr was originally
101561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a TK_COLUMN but was previously evaluated and cached in a register */
101562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int j = p->iColumn;
101563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( j>=0 ){
101564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zColl = sqlite3ColumnColl(&p->y.pTab->aCol[j]);
101565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pColl = sqlite3FindCollSeq(db, ENC(db), zColl, 0);
101566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
101567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
101568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
101502 101569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101503 101570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_CAST || op==TK_UPLUS ){
101504 101571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->pLeft;
101505 101572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
101506 101573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101507 101574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_VECTOR ){
101575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(p) );
101508 101576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->x.pList->a[0].pExpr;
101509 101577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
101510 101578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101511 101579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_COLLATE ){
101580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(p, EP_IntValue) );
101512 101581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColl = sqlite3GetCollSeq(pParse, ENC(db), 0, p->u.zToken);
101513 101582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
101514 101583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101515 101584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->flags & EP_Collate ){
101516 101585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pLeft && (p->pLeft->flags & EP_Collate)!=0 ){
101517 101586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->pLeft;
101518 101587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
101519 101588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pNext = p->pRight;
101520 101589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The Expr.x union is never used at the same time as Expr.pRight */
101590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(p) );
101521 101591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->x.pList==0 || p->pRight==0 );
101522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->x.pList!=0
101523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && !db->mallocFailed
101524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && ALWAYS(!ExprHasProperty(p, EP_xIsSelect))
101525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
101592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->x.pList!=0 && !db->mallocFailed ){
101526 101593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
101527 101594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; ALWAYS(i<p->x.pList->nExpr); i++){
101528 101595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(p->x.pList->a[i].pExpr, EP_Collate) ){
101529 101596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNext = p->x.pList->a[i].pExpr;
101530 101597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -101603,11 +101670,11 @@
101603 101670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op==TK_NE || pExpr->op==TK_IS || pExpr->op==TK_ISNOT );
101604 101671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->pLeft );
101605 101672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff = sqlite3ExprAffinity(pExpr->pLeft);
101606 101673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->pRight ){
101607 101674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff = sqlite3CompareAffinity(pExpr->pRight, aff);
101608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( ExprHasProperty(pExpr, EP_xIsSelect) ){
101675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( ExprUseXSelect(pExpr) ){
101609 101676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff = sqlite3CompareAffinity(pExpr->x.pSelect->pEList->a[0].pExpr, aff);
101610 101677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( aff==0 ){
101611 101678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff = SQLITE_AFF_BLOB;
101612 101679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101613 101680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return aff;
@@ -101743,12 +101810,14 @@
101743 101810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
101744 101811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprVectorSize(const Expr *pExpr){
101745 101812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 op = pExpr->op;
101746 101813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_REGISTER ) op = pExpr->op2;
101747 101814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_VECTOR ){
101815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
101748 101816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr->x.pList->nExpr;
101749 101817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( op==TK_SELECT ){
101818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr) );
101750 101819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr->x.pSelect->pEList->nExpr;
101751 101820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
101752 101821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
101753 101822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101754 101823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -101771,12 +101840,14 @@
101771 101840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE Expr *sqlite3VectorFieldSubexpr(Expr *pVector, int i){
101772 101841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( i<sqlite3ExprVectorSize(pVector) || pVector->op==TK_ERROR );
101773 101842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprIsVector(pVector) ){
101774 101843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pVector->op2==0 || pVector->op==TK_REGISTER );
101775 101844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pVector->op==TK_SELECT || pVector->op2==TK_SELECT ){
101845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pVector) );
101776 101846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pVector->x.pSelect->pEList->a[i].pExpr;
101777 101847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
101848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pVector) );
101778 101849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pVector->x.pList->a[i].pExpr;
101779 101850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101780 101851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101781 101852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pVector;
101782 101853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -101808,11 +101879,11 @@
101808 101879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iField, /* Which column of the vector to return */
101809 101880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nField /* Total number of columns in the vector */
101810 101881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
101811 101882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRet;
101812 101883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pVector->op==TK_SELECT ){
101813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pVector->flags & EP_xIsSelect );
101884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pVector) );
101814 101885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The TK_SELECT_COLUMN Expr node:
101815 101886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
101816 101887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pLeft: pVector containing TK_SELECT. Not deleted.
101817 101888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pRight: not used. But recursively deleted.
101818 101889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** iColumn: Index of a column in pVector
@@ -101833,11 +101904,13 @@
101833 101904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->iColumn = iField;
101834 101905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->pLeft = pVector;
101835 101906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101836 101907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
101837 101908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pVector->op==TK_VECTOR ){
101838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr **ppVector = &pVector->x.pList->a[iField].pExpr;
101909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr **ppVector;
101910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pVector) );
101911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ppVector = &pVector->x.pList->a[iField].pExpr;
101839 101912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVector = *ppVector;
101840 101913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IN_RENAME_OBJECT ){
101841 101914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This must be a vector UPDATE inside a trigger */
101842 101915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppVector = 0;
101843 101916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pVector;
@@ -101897,14 +101970,16 @@
101897 101970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_REGISTER ){
101898 101971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppExpr = sqlite3VectorFieldSubexpr(pVector, iField);
101899 101972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pVector->iTable+iField;
101900 101973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101901 101974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_SELECT ){
101975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pVector) );
101902 101976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppExpr = pVector->x.pSelect->pEList->a[iField].pExpr;
101903 101977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return regSelect+iField;
101904 101978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101905 101979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_VECTOR ){
101980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pVector) );
101906 101981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppExpr = pVector->x.pList->a[iField].pExpr;
101907 101982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ExprCodeTemp(pParse, *ppExpr, pRegFree);
101908 101983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
101909 101984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
101910 101985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -102075,11 +102150,11 @@
102075 102150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102076 102151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void exprSetHeight(Expr *p){
102077 102152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nHeight = 0;
102078 102153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfExpr(p->pLeft, &nHeight);
102079 102154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfExpr(p->pRight, &nHeight);
102080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(p, EP_xIsSelect) ){
102155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(p) ){
102081 102156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfSelect(p->x.pSelect, &nHeight);
102082 102157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->x.pList ){
102083 102158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
heightOfExprList(p->x.pList, &nHeight);
102084 102159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
102085 102160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -102114,11 +102189,11 @@
102114 102189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Propagate all EP_Propagate flags from the Expr.x.pList into
102115 102190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Expr.flags.
102116 102191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102117 102192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p){
102118 102193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nErr ) return;
102119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p && p->x.pList && !ExprHasProperty(p, EP_xIsSelect) ){
102194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p && ExprUseXList(p) && p->x.pList ){
102120 102195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
102121 102196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102122 102197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102123 102198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define exprSetHeight(y)
102124 102199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_MAX_EXPR_DEPTH>0 */
@@ -102298,17 +102373,24 @@
102298 102373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pRet = 0;
102299 102374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nElem>1 );
102300 102375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pEList->nExpr; ii++){
102301 102376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pSel;
102302 102377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pEList->a[ii].pExpr;
102303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nExprElem = (pExpr->op==TK_VECTOR ? pExpr->x.pList->nExpr : 1);
102378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nExprElem;
102379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op==TK_VECTOR ){
102380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
102381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nExprElem = pExpr->x.pList->nExpr;
102382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
102383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nExprElem = 1;
102384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
102304 102385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nExprElem!=nElem ){
102305 102386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "IN(...) element has %d term%s - expected %d",
102306 102387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExprElem, nExprElem>1?"s":"", nElem
102307 102388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
102308 102389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
102309 102390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
102310 102392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSel = sqlite3SelectNew(pParse, pExpr->x.pList, 0, 0, 0, 0, 0, SF_Values,0);
102311 102393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->x.pList = 0;
102312 102394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSel ){
102313 102395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet ){
102314 102396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSel->op = TK_ALL;
@@ -102374,11 +102456,11 @@
102374 102456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
102375 102457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "too many arguments on function %T", pToken);
102376 102458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102377 102459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->x.pList = pList;
102378 102460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pNew, EP_HasFunc);
102379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pNew, EP_xIsSelect) );
102461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pNew) );
102380 102462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprSetHeightAndFlags(pParse, pNew);
102381 102463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eDistinct==SF_Distinct ) ExprSetProperty(pNew, EP_Distinct);
102382 102464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pNew;
102383 102465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102384 102466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -102500,31 +102582,30 @@
102500 102582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
102501 102583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Recursively delete an expression tree.
102502 102584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
102503 102585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static SQLITE_NOINLINE void sqlite3ExprDeleteNN(sqlite3 *db, Expr *p){
102504 102586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p!=0 );
102505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Sanity check: Assert that the IntValue is non-negative if it exists */
102506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(p, EP_IntValue) || p->u.iValue>=0 );
102507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
102508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(p, EP_WinFunc) || p->y.pWin!=0 || db->mallocFailed );
102509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->op!=TK_FUNCTION || ExprHasProperty(p, EP_TokenOnly|EP_Reduced)
102510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || p->y.pWin==0 || ExprHasProperty(p, EP_WinFunc) );
102587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprUseUValue(p) || p->u.iValue>=0 );
102588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprUseYWin(p) || !ExprUseYSub(p) );
102589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprUseYWin(p) || p->y.pWin!=0 || db->mallocFailed );
102590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->op!=TK_FUNCTION || !ExprUseYSub(p) );
102511 102591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
102512 102592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(p, EP_Leaf) && !ExprHasProperty(p, EP_TokenOnly) ){
102513 102593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pLeft==0 );
102514 102594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pRight==0 );
102515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->x.pSelect==0 );
102595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprUseXSelect(p) || p->x.pSelect==0 );
102596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprUseXList(p) || p->x.pList==0 );
102516 102597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102517 102598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
102518 102599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !ExprHasProperty(p, (EP_TokenOnly|EP_Leaf)) ){
102519 102600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The Expr.x union is never used at the same time as Expr.pRight */
102520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->x.pList==0 || p->pRight==0 );
102601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (ExprUseXList(p) && p->x.pList==0) || p->pRight==0 );
102521 102602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pLeft && p->op!=TK_SELECT_COLUMN ) sqlite3ExprDeleteNN(db, p->pLeft);
102522 102603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pRight ){
102523 102604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(p, EP_WinFunc) );
102524 102605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDeleteNN(db, p->pRight);
102525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( ExprHasProperty(p, EP_xIsSelect) ){
102606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( ExprUseXSelect(p) ){
102526 102607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(p, EP_WinFunc) );
102527 102608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SelectDelete(db, p->x.pSelect);
102528 102609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
102529 102610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, p->x.pList);
102530 102611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
@@ -102532,11 +102613,14 @@
102532 102613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WindowDelete(db, p->y.pWin);
102533 102614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102534 102615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
102535 102616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102536 102617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(p, EP_MemToken) ) sqlite3DbFree(db, p->u.zToken);
102618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(p, EP_MemToken) ){
102619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(p, EP_IntValue) );
102620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbFree(db, p->u.zToken);
102621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
102538 102622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !ExprHasProperty(p, EP_Static) ){
102539 102623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFreeNN(db, p);
102540 102624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102541 102625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102542 102626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3 *db, Expr *p){
@@ -102748,11 +102832,11 @@
102748 102832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(zToken, p->u.zToken, nToken);
102749 102833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102750 102834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
102751 102835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==((p->flags|pNew->flags) & (EP_TokenOnly|EP_Leaf)) ){
102752 102836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Fill in the pNew->x.pSelect or pNew->x.pList member. */
102753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(p, EP_xIsSelect) ){
102837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(p) ){
102754 102838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->x.pSelect = sqlite3SelectDup(db, p->x.pSelect, dupFlags);
102755 102839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
102756 102840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->x.pList = sqlite3ExprListDup(db, p->x.pList, dupFlags);
102757 102841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
102758 102842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -103375,11 +103459,11 @@
103375 103459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the conversion happened, and zero if the expression is unaltered.
103376 103460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
103377 103461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprIdToTrueFalse(Expr *pExpr){
103378 103462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 v;
103379 103463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_ID || pExpr->op==TK_STRING );
103380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !ExprHasProperty(pExpr, EP_Quoted)
103464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !ExprHasProperty(pExpr, EP_Quoted|EP_IntValue)
103381 103465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (v = sqlite3IsTrueOrFalse(pExpr->u.zToken))!=0
103382 103466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
103383 103467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_TRUEFALSE;
103384 103468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pExpr, v);
103385 103469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
@@ -103392,10 +103476,11 @@
103392 103476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and 0 if it is FALSE.
103393 103477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
103394 103478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprTruthValue(const Expr *pExpr){
103395 103479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = sqlite3ExprSkipCollate((Expr*)pExpr);
103396 103480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_TRUEFALSE );
103481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
103397 103482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3StrICmp(pExpr->u.zToken,"true")==0
103398 103483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| sqlite3StrICmp(pExpr->u.zToken,"false")==0 );
103399 103484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr->u.zToken[4]==0;
103400 103485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103401 103486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -103596,11 +103681,11 @@
103596 103681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103597 103682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103598 103683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103599 103684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
103600 103685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check if pExpr is a sub-select. If so, consider it variable. */
103601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
103686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
103602 103687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWalker->eCode = 0;
103603 103688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Abort;
103604 103689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
103605 103690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
103606 103691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return exprNodeIsConstant(pWalker, pExpr);
@@ -103746,10 +103831,11 @@
103746 103831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_STRING:
103747 103832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_FLOAT:
103748 103833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BLOB:
103749 103834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
103750 103835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_COLUMN:
103836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(p) );
103751 103837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return ExprHasProperty(p, EP_CanBeNull) ||
103752 103838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->y.pTab==0 || /* Reference to column of index on expression */
103753 103839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(p->iColumn>=0
103754 103840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& ALWAYS(p->y.pTab->aCol!=0) /* Defense against OOM problems */
103755 103841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& p->y.pTab->aCol[p->iColumn].notNull==0);
@@ -103823,11 +103909,11 @@
103823 103909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *p;
103824 103910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcList *pSrc;
103825 103911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pEList;
103826 103912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
103827 103913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
103828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !ExprHasProperty(pX, EP_xIsSelect) ) return 0; /* Not a subquery */
103914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !ExprUseXSelect(pX) ) return 0; /* Not a subquery */
103829 103915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pX, EP_VarSelect) ) return 0; /* Correlated subq */
103830 103916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = pX->x.pSelect;
103831 103917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pPrior ) return 0; /* Not a compound SELECT */
103832 103918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->selFlags & (SF_Distinct|SF_Aggregate) ){
103833 103919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( (p->selFlags & (SF_Distinct|SF_Aggregate))==SF_Distinct );
@@ -103994,11 +104080,11 @@
103994 104080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the RHS of this IN(...) operator is a SELECT, and if it matters
103995 104081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** whether or not the SELECT result contains NULL values, check whether
103996 104082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or not NULL is actually possible (it may not be, for example, due
103997 104083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to NOT NULL constraints in the schema). If no NULL values are possible,
103998 104084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** set prRhsHasNull to 0 before continuing. */
103999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( prRhsHasNull && (pX->flags & EP_xIsSelect) ){
104085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( prRhsHasNull && ExprUseXSelect(pX) ){
104000 104086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
104001 104087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pEList = pX->x.pSelect->pEList;
104002 104088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pEList->nExpr; i++){
104003 104089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprCanBeNull(pEList->a[i].pExpr) ) break;
104004 104090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -104150,11 +104236,11 @@
104150 104236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then it is not worth creating an ephemeral table to evaluate
104151 104237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the IN operator so return IN_INDEX_NOOP.
104152 104238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104153 104239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eType==0
104154 104240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (inFlags & IN_INDEX_NOOP_OK)
104155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && !ExprHasProperty(pX, EP_xIsSelect)
104241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ExprUseXList(pX)
104156 104242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (!sqlite3InRhsIsConstant(pX) || pX->x.pList->nExpr<=2)
104157 104243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
104158 104244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eType = IN_INDEX_NOOP;
104159 104245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104160 104246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -104198,11 +104284,11 @@
104198 104284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** string is eventually freed using sqlite3DbFree().
104199 104285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104200 104286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static char *exprINAffinity(Parse *pParse, const Expr *pExpr){
104201 104287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLeft = pExpr->pLeft;
104202 104288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVal = sqlite3ExprVectorSize(pLeft);
104203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Select *pSelect = (pExpr->flags & EP_xIsSelect) ? pExpr->x.pSelect : 0;
104289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Select *pSelect = ExprUseXSelect(pExpr) ? pExpr->x.pSelect : 0;
104204 104290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zRet;
104205 104291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104206 104292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_IN );
104207 104293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRet = sqlite3DbMallocRaw(pParse->db, nVal+1);
104208 104294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRet ){
@@ -104248,11 +104334,11 @@
104248 104334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
104249 104335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "row value misused"
104250 104336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104251 104337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VectorErrorMsg(Parse *pParse, Expr *pExpr){
104252 104338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SUBQUERY
104253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->flags & EP_xIsSelect ){
104339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
104254 104340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SubselectError(pParse, pExpr->x.pSelect->pEList->nExpr, 1);
104255 104341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
104256 104342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
104257 104343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
104258 104344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "row value misused");
@@ -104312,22 +104398,24 @@
104312 104398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If this routine has already been coded, but the previous code
104313 104399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** might not have been invoked yet, so invoke it now as a subroutine.
104314 104400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104315 104401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_Subrtn) ){
104316 104402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v);
104317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
104403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
104318 104404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExplainQueryPlan((pParse, 0, "REUSE LIST SUBQUERY %d",
104319 104405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->x.pSelect->selId));
104320 104406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYSub(pExpr) );
104321 104408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, pExpr->y.sub.regReturn,
104322 104409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.sub.iAddr);
104323 104410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_OpenDup, iTab, pExpr->iTable);
104324 104411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrOnce);
104325 104412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
104326 104413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104327 104414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104328 104415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Begin coding the subroutine */
104416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprUseYWin(pExpr) );
104329 104417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pExpr, EP_Subrtn);
104330 104418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) );
104331 104419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.sub.regReturn = ++pParse->nMem;
104332 104420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.sub.iAddr =
104333 104421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, pExpr->y.sub.regReturn) + 1;
@@ -104344,19 +104432,19 @@
104344 104432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** RHS of the IN operator.
104345 104433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104346 104434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = iTab;
104347 104435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pExpr->iTable, nVal);
104348 104436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
104349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
104437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
104350 104438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "Result of SELECT %u", pExpr->x.pSelect->selId));
104351 104439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
104352 104440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "RHS of IN operator"));
104353 104441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104354 104442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
104355 104443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pKeyInfo = sqlite3KeyInfoAlloc(pParse->db, nVal, 1);
104356 104444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
104445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
104358 104446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Case 1: expr IN (SELECT ...)
104359 104447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
104360 104448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate code to write the results of the select into the temporary
104361 104449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table allocated and opened above.
104362 104450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -104450,10 +104538,11 @@
104450 104538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP4(v, addr, (void *)pKeyInfo, P4_KEYINFO);
104451 104539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104452 104540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrOnce ){
104453 104541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrOnce);
104454 104542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Subroutine return */
104543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYSub(pExpr) );
104455 104544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, pExpr->y.sub.regReturn);
104456 104545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, pExpr->y.sub.iAddr-1, sqlite3VdbeCurrentAddr(v)-1);
104457 104546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ClearTempRegCache(pParse);
104458 104547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104459 104548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -104486,23 +104575,26 @@
104486 104575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( v!=0 );
104487 104576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nErr ) return 0;
104488 104577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_EXISTS );
104489 104578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_SELECT );
104490 104579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_EXISTS || pExpr->op==TK_SELECT );
104491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( ExprHasProperty(pExpr, EP_xIsSelect) );
104580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr) );
104492 104581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSel = pExpr->x.pSelect;
104493 104582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104494 104583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If this routine has already been coded, then invoke it as a
104495 104584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** subroutine. */
104496 104585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_Subrtn) ){
104497 104586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExplainQueryPlan((pParse, 0, "REUSE SUBQUERY %d", pSel->selId));
104587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYSub(pExpr) );
104498 104588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Gosub, pExpr->y.sub.regReturn,
104499 104589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.sub.iAddr);
104500 104590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr->iTable;
104501 104591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104502 104592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104503 104593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Begin coding the subroutine */
104594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprUseYWin(pExpr) );
104595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_Reduced|EP_TokenOnly) );
104504 104596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pExpr, EP_Subrtn);
104505 104597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.sub.regReturn = ++pParse->nMem;
104506 104598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.sub.iAddr =
104507 104599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, pExpr->y.sub.regReturn) + 1;
104508 104600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "return address"));
@@ -104578,10 +104670,11 @@
104578 104670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrOnce ){
104579 104671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrOnce);
104580 104672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104581 104673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104582 104674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Subroutine return */
104675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYSub(pExpr) );
104583 104676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_Return, pExpr->y.sub.regReturn);
104584 104677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeChangeP1(v, pExpr->y.sub.iAddr-1, sqlite3VdbeCurrentAddr(v)-1);
104585 104678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ClearTempRegCache(pParse);
104586 104679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rReg;
104587 104680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -104594,11 +104687,11 @@
104594 104687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** columns as the vector on the LHS. Or, if the RHS of the IN() is not
104595 104688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a sub-query, that the LHS is a vector of size 1.
104596 104689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104597 104690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3ExprCheckIN(Parse *pParse, Expr *pIn){
104598 104691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nVector = sqlite3ExprVectorSize(pIn->pLeft);
104599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pIn->flags & EP_xIsSelect)!=0 && !pParse->db->mallocFailed ){
104692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pIn) && !pParse->db->mallocFailed ){
104600 104693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nVector!=pIn->x.pSelect->pEList->nExpr ){
104601 104694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SubselectError(pParse, pIn->x.pSelect->pEList->nExpr, nVector);
104602 104695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
104603 104696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104604 104697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( nVector!=1 ){
@@ -104728,17 +104821,19 @@
104728 104821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sequence of comparisons.
104729 104822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
104730 104823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is step (1) in the in-operator.md optimized algorithm.
104731 104824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
104732 104825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eType==IN_INDEX_NOOP ){
104733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pList = pExpr->x.pList;
104734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CollSeq *pColl = sqlite3ExprCollSeq(pParse, pExpr->pLeft);
104826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pList;
104827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CollSeq *pColl;
104735 104828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int labelOk = sqlite3VdbeMakeLabel(pParse);
104736 104829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r2, regToFree;
104737 104830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regCkNull = 0;
104738 104831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii;
104739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
104832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
104833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pList = pExpr->x.pList;
104834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pColl = sqlite3ExprCollSeq(pParse, pExpr->pLeft);
104740 104835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( destIfNull!=destIfFalse ){
104741 104836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regCkNull = sqlite3GetTempReg(pParse);
104742 104837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_BitAnd, rLhs, rLhs, regCkNull);
104743 104838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
104744 104839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pList->nExpr; ii++){
@@ -105120,10 +105215,11 @@
105120 105215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
105121 105216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
105122 105217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
105123 105218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iResult = pParse->nMem+1;
105124 105219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem += nResult;
105220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(p) );
105125 105221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nResult; i++){
105126 105222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeFactorable(pParse, p->x.pList->a[i].pExpr, i+iResult);
105127 105223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105128 105224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105129 105225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -105318,10 +105414,11 @@
105318 105414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** datatype by applying the Affinity of the table column to the
105319 105415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** constant.
105320 105416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
105321 105417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int aff;
105322 105418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft,target);
105419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
105323 105420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->y.pTab ){
105324 105421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff = sqlite3TableColumnAffinity(pExpr->y.pTab, pExpr->iColumn);
105325 105422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
105326 105423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff = pExpr->affExpr;
105327 105424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -105341,13 +105438,15 @@
105341 105438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The row is unpacked into registers beginning at
105342 105439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 0-(pParse->iSelfTab). The rowid (if any) is in a register
105343 105440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** immediately prior to the first column.
105344 105441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
105345 105442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Column *pCol;
105346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Table *pTab = pExpr->y.pTab;
105443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab;
105347 105444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iSrc;
105348 105445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol = pExpr->iColumn;
105446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
105447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab = pExpr->y.pTab;
105349 105448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab!=0 );
105350 105449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iCol>=XN_ROWID );
105351 105450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iCol<pTab->nCol );
105352 105451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCol<0 ){
105353 105452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return -1-pParse->iSelfTab;
@@ -105381,10 +105480,11 @@
105381 105480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Coding an expression that is part of an index where column names
105382 105481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the index refer to the table to which the index belongs */
105383 105482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTab = pParse->iSelfTab - 1;
105384 105483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105385 105484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
105386 105486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iReg = sqlite3ExprCodeGetColumn(pParse, pExpr->y.pTab,
105387 105487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn, iTab, target,
105388 105488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op2);
105389 105489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->y.pTab==0 && pExpr->affExpr==SQLITE_AFF_REAL ){
105390 105490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_RealAffinity, iReg);
@@ -105458,10 +105558,11 @@
105458 105558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft, target);
105459 105559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( inReg!=target ){
105460 105560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_SCopy, inReg, target);
105461 105561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
inReg = target;
105462 105562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
105463 105564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Cast, target,
105464 105565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3AffinityType(pExpr->u.zToken, 0));
105465 105566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return inReg;
105466 105567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105467 105568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_OMIT_CAST */
@@ -105625,12 +105726,12 @@
105625 105726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ConstFactorOk(pParse) && sqlite3ExprIsConstantNotJoin(pExpr) ){
105626 105727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* SQL functions can be expensive. So try to avoid running them
105627 105728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** multiple times if we know they always give the same result */
105628 105729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3ExprCodeRunJustOnce(pParse, pExpr, -1);
105629 105730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
105631 105731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_TokenOnly) );
105732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
105632 105733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFarg = pExpr->x.pList;
105633 105734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nFarg = pFarg ? pFarg->nExpr : 0;
105634 105735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_IntValue) );
105635 105736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zId = pExpr->u.zToken;
105636 105737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDef = sqlite3FindFunction(db, zId, nFarg, enc, 0);
@@ -105745,11 +105846,14 @@
105745 105846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCol;
105746 105847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( op==TK_EXISTS );
105747 105848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( op==TK_SELECT );
105748 105849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->db->mallocFailed ){
105749 105850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
105750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){
105851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( op==TK_SELECT
105852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS( ExprUseXSelect(pExpr) )
105853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1
105854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
105751 105855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SubselectError(pParse, nCol, 1);
105752 105856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
105753 105857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3CodeSubselect(pParse, pExpr);
105754 105858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
105755 105859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -105827,13 +105931,18 @@
105827 105931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
105828 105932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** p1==0 -> old.rowid p1==3 -> new.rowid
105829 105933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** p1==1 -> old.a p1==4 -> new.a
105830 105934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** p1==2 -> old.b p1==5 -> new.b
105831 105935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
105832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Table *pTab = pExpr->y.pTab;
105833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iCol = pExpr->iColumn;
105834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int p1 = pExpr->iTable * (pTab->nCol+1) + 1
105936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab;
105937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iCol;
105938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int p1;
105939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
105940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
105941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab = pExpr->y.pTab;
105942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iCol = pExpr->iColumn;
105943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p1 = pExpr->iTable * (pTab->nCol+1) + 1
105835 105944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3TableColumnToStorage(pTab, iCol);
105836 105945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
105837 105946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->iTable==0 || pExpr->iTable==1 );
105838 105947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iCol>=-1 && iCol<pTab->nCol );
105839 105948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab->iPKey<0 || iCol!=pTab->iPKey );
@@ -105917,11 +106026,11 @@
105917 106026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pX; /* The X expression */
105918 106027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pTest = 0; /* X==Ei (form A) or just Ei (form B) */
105919 106028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pDel = 0;
105920 106029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
105921 106030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
105922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) && pExpr->x.pList );
106031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) && pExpr->x.pList!=0 );
105923 106032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(pExpr->x.pList->nExpr > 0);
105924 106033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pEList = pExpr->x.pList;
105925 106034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aListelem = pEList->a;
105926 106035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExpr = pEList->nExpr;
105927 106036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
endLabel = sqlite3VdbeMakeLabel(pParse);
@@ -106262,11 +106371,11 @@
106262 106371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106263 106372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&compLeft, 0, sizeof(Expr));
106264 106373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&compRight, 0, sizeof(Expr));
106265 106374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&exprAnd, 0, sizeof(Expr));
106266 106375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
106376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
106268 106377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDel = sqlite3ExprDup(db, pExpr->pLeft, 0);
106269 106378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed==0 ){
106270 106379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprAnd.op = TK_AND;
106271 106380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprAnd.pLeft = &compLeft;
106272 106381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprAnd.pRight = &compRight;
@@ -106737,11 +106846,16 @@
106737 106846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pB->op==TK_COLLATE && sqlite3ExprCompare(pParse, pA,pB->pLeft,iTab)<2 ){
106738 106847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
106739 106848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106740 106849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 2;
106741 106850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pA->op!=TK_COLUMN && pA->op!=TK_AGG_COLUMN && pA->u.zToken ){
106851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pA->op!=TK_COLUMN
106852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pA->op!=TK_AGG_COLUMN
106853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS(!ExprHasProperty(pA, EP_IntValue))
106854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pA->u.zToken
106855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
106856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pB, EP_IntValue) );
106743 106857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pA->op==TK_FUNCTION || pA->op==TK_AGG_FUNCTION ){
106744 106858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3StrICmp(pA->u.zToken,pB->u.zToken)!=0 ) return 2;
106745 106859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
106746 106860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pA->op==pB->op );
106747 106861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pA,EP_WinFunc)!=ExprHasProperty(pB,EP_WinFunc) ){
@@ -106844,16 +106958,17 @@
106844 106958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pNN->op!=TK_NULL;
106845 106959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106846 106960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( p->op ){
106847 106961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_IN: {
106848 106962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( seenNot && ExprHasProperty(p, EP_xIsSelect) ) return 0;
106849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( ExprHasProperty(p,EP_xIsSelect)
106850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || (p->x.pList!=0 && p->x.pList->nExpr>0) );
106963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(p) || (p->x.pList!=0 && p->x.pList->nExpr>0) );
106851 106964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1);
106852 106965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106853 106966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_BETWEEN: {
106854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pList = p->x.pList;
106967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pList;
106968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(p) );
106969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pList = p->x.pList;
106855 106970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pList!=0 );
106856 106971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pList->nExpr==2 );
106857 106972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( seenNot ) return 0;
106858 106973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( exprImpliesNotNull(pParse, pList->a[0].pExpr, pNN, iTab, 1)
106859 106974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| exprImpliesNotNull(pParse, pList->a[1].pExpr, pNN, iTab, 1)
@@ -107026,14 +107141,18 @@
107026 107141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_LE );
107027 107142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_GT );
107028 107143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pExpr->op==TK_GE );
107029 107144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The y.pTab=0 assignment in wherecode.c always happens after the
107030 107145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** impliesNotNullRow() test */
107031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pLeft->op==TK_COLUMN && pLeft->y.pTab!=0
107032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && IsVirtual(pLeft->y.pTab))
107033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || (pRight->op==TK_COLUMN && pRight->y.pTab!=0
107034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && IsVirtual(pRight->y.pTab))
107146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pLeft->op!=TK_COLUMN || ExprUseYTab(pLeft) );
107147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRight->op!=TK_COLUMN || ExprUseYTab(pRight) );
107148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pLeft->op==TK_COLUMN
107149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pLeft->y.pTab!=0
107150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && IsVirtual(pLeft->y.pTab))
107151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (pRight->op==TK_COLUMN
107152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pRight->y.pTab!=0
107153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && IsVirtual(pRight->y.pTab))
107035 107154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
107036 107155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
107037 107156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107038 107157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* no break */ deliberate_fall_through
107039 107158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -107213,10 +107332,11 @@
107213 107332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
w.u.pSrcCount = &cnt;
107214 107333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt.pSrc = pSrcList;
107215 107334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt.iSrcInner = (pSrcList&&pSrcList->nSrc)?pSrcList->a[0].iCursor:0x7FFFFFFF;
107216 107335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt.nThis = 0;
107217 107336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt.nOther = 0;
107337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
107218 107338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkExprList(&w, pExpr->x.pList);
107219 107339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
107220 107340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_WinFunc) ){
107221 107341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkExpr(&w, pExpr->y.pWin->pFilter);
107222 107342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -107354,10 +107474,11 @@
107354 107474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107355 107475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (k>=pAggInfo->nColumn)
107356 107476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (k = addAggInfoColumn(pParse->db, pAggInfo))>=0
107357 107477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
107358 107478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol = &pAggInfo->aCol[k];
107479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
107359 107480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->pTab = pExpr->y.pTab;
107360 107481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iTable = pExpr->iTable;
107361 107482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iColumn = pExpr->iColumn;
107362 107483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iMem = ++pParse->nMem;
107363 107484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->iSorterColumn = -1;
@@ -107417,11 +107538,11 @@
107417 107538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i>=0 ){
107418 107539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
107419 107540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem = &pAggInfo->aFunc[i];
107420 107541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->pFExpr = pExpr;
107421 107542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->iMem = ++pParse->nMem;
107422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pExpr, EP_IntValue) );
107543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseUToken(pExpr) );
107423 107544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->pFunc = sqlite3FindFunction(pParse->db,
107424 107545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->u.zToken,
107425 107546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->x.pList ? pExpr->x.pList->nExpr : 0, enc, 0);
107426 107547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->flags & EP_Distinct ){
107427 107548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->iDistinct = pParse->nTab++;
@@ -107939,10 +108060,11 @@
107939 108060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
107940 108061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pDflt==0 || pDflt->op==TK_SPAN );
107941 108062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pDflt && pDflt->pLeft->op==TK_NULL ){
107942 108063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDflt = 0;
107943 108064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
108065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pNew) );
107944 108066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (db->flags&SQLITE_ForeignKeys) && pNew->u.tab.pFKey && pDflt ){
107945 108067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorIfNotEmpty(pParse, zDb, zTab,
107946 108068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Cannot add a REFERENCES column with non-NULL default value");
107947 108069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107948 108070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->notNull && !pDflt ){
@@ -107981,11 +108103,12 @@
107981 108103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( zEnd>zCol && (*zEnd==';' || sqlite3Isspace(*zEnd)) ){
107982 108104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*zEnd-- = '\0';
107983 108105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107984 108106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* substr() operations on characters, but addColOffset is in bytes. So we
107985 108107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** have to use printf() to translate between these units: */
107986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
108108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
108109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pNew) );
107987 108110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3NestedParse(pParse,
107988 108111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
107989 108112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"sql = printf('%%.%ds, ',sql) || %Q"
107990 108113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" || substr(sql,1+length(printf('%%.%ds',sql))) "
107991 108114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"WHERE type = 'table' AND name = %Q",
@@ -108075,10 +108198,11 @@
108075 108198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( SQLITE_OK!=isAlterableTable(pParse, pTab) ){
108076 108199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto exit_begin_add_column;
108077 108200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
108078 108201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
108079 108202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MayAbort(pParse);
108203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
108080 108204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTab->u.tab.addColOffset>0 );
108081 108205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
108082 108206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
108083 108207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Put a copy of the Table struct in Parse.pNewTable for the
108084 108208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3AddColumn() function and friends to modify. But modify
@@ -108105,11 +108229,11 @@
108105 108229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pNew->nCol; i++){
108106 108230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Column *pCol = &pNew->aCol[i];
108107 108231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->zCnName = sqlite3DbStrDup(db, pCol->zCnName);
108108 108232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->hName = sqlite3StrIHash(pCol->zCnName);
108109 108233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
108110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pNew) );
108234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pNew) );
108111 108235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.tab.pDfltList = sqlite3ExprListDup(db, pTab->u.tab.pDfltList, 0);
108112 108236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->pSchema = db->aDb[iDb].pSchema;
108113 108237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.tab.addColOffset = pTab->u.tab.addColOffset;
108114 108238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->nTabRef = 1;
108115 108239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -108374,11 +108498,13 @@
108374 108498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Walker callback used by sqlite3RenameExprUnmap().
108375 108499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
108376 108500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int renameUnmapExprCb(Walker *pWalker, Expr *pExpr){
108377 108501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse = pWalker->pParse;
108378 108502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RenameTokenRemap(pParse, 0, (const void*)pExpr);
108379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3RenameTokenRemap(pParse, 0, (const void*)&pExpr->y.pTab);
108503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseYTab(pExpr) ){
108504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3RenameTokenRemap(pParse, 0, (const void*)&pExpr->y.pTab);
108505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
108380 108506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
108381 108507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
108382 108508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
108383 108509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
108384 108510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Iterate through the Select objects that are part of WITH clauses attached
@@ -108436,11 +108562,13 @@
108436 108562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
108437 108563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int renameUnmapSelectCb(Walker *pWalker, Select *p){
108438 108564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse = pWalker->pParse;
108439 108565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
108440 108566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nErr ) return WRC_Abort;
108441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(p->selFlags & (SF_View|SF_CopyCte)) ){
108567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( p->selFlags & SF_View );
108568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( p->selFlags & SF_CopyCte );
108569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->selFlags & (SF_View|SF_CopyCte) ){
108442 108570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
108443 108571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
108444 108572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(p->pEList) ){
108445 108573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pList = p->pEList;
108446 108574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pList->nExpr; i++){
@@ -108573,10 +108701,11 @@
108573 108701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pWalker->pParse->pTriggerTab==p->pTab
108574 108702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
108575 108703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
renameTokenFind(pWalker->pParse, p, (void*)pExpr);
108576 108704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pExpr->op==TK_COLUMN
108577 108705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pExpr->iColumn==p->iCol
108706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS(ExprUseYTab(pExpr))
108578 108707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& p->pTab==pExpr->y.pTab
108579 108708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
108580 108709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
renameTokenFind(pWalker->pParse, p, (void*)pExpr);
108581 108710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
108582 108711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
@@ -109103,11 +109232,11 @@
109103 109232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkExpr(&sWalker, pExpr);
109104 109233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109105 109234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
109106 109235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109107 109236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
109108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(sParse.pNewTable) );
109237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(sParse.pNewTable) );
109109 109238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pFKey=sParse.pNewTable->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
109110 109239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pFKey->nCol; i++){
109111 109240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bFKOnly==0 && pFKey->aCol[i].iFrom==iCol ){
109112 109241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
renameTokenFind(&sParse, &sCtx, (void*)&pFKey->aCol[i]);
109113 109242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -109175,11 +109304,14 @@
109175 109304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
109176 109305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Walker expression callback used by "RENAME TABLE".
109177 109306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
109178 109307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int renameTableExprCb(Walker *pWalker, Expr *pExpr){
109179 109308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RenameCtx *p = pWalker->u.pRename;
109180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->op==TK_COLUMN && p->pTab==pExpr->y.pTab ){
109309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op==TK_COLUMN
109310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS(ExprUseYTab(pExpr))
109311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && p->pTab==pExpr->y.pTab
109312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
109181 109313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
renameTokenFind(pWalker->pParse, p, (void*)&pExpr->y.pTab);
109182 109314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109183 109315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
109184 109316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109185 109317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -109293,11 +109425,11 @@
109293 109425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_FOREIGN_KEY
109294 109426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (isLegacy==0 || (db->flags & SQLITE_ForeignKeys))
109295 109427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !IsVirtual(pTab)
109296 109428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
109297 109429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *pFKey;
109298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
109430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
109299 109431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
109300 109432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3_stricmp(pFKey->zTo, zOld)==0 ){
109301 109433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
renameTokenFind(&sParse, &sCtx, (void*)pFKey->zTo);
109302 109434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109303 109435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -109614,11 +109746,11 @@
109614 109746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCol<pTab->nCol-1 ){
109615 109747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RenameToken *pEnd;
109616 109748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pEnd = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol+1].zCnName);
109617 109749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zEnd = (const char*)pEnd->t.z;
109618 109750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
109619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
109751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
109620 109752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zEnd = (const char*)&zSql[pTab->u.tab.addColOffset];
109621 109753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( ALWAYS(pCol->t.z[0]!=0) && pCol->t.z[0]!=',' ) pCol->t.z--;
109622 109754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
109623 109755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
109624 109756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zNew = sqlite3MPrintf(db, "%.*s%s", pCol->t.z-zSql, zSql, zEnd);
@@ -110789,11 +110921,11 @@
110789 110921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = MAX(pParse->nMem, iMem);
110790 110922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = sqlite3GetVdbe(pParse);
110791 110923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( v==0 || NEVER(pTab==0) ){
110792 110924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
110793 110925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTab->tnum==0 ){
110926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !IsOrdinaryTable(pTab) ){
110795 110927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do not gather statistics on views or virtual tables */
110796 110928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
110797 110929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110798 110930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3_strlike("sqlite\\_%", pTab->zName, '\\')==0 ){
110799 110931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do not gather statistics on system tables */
@@ -112083,10 +112215,11 @@
112083 112215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112084 112216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_AUTHORIZATION
112085 112217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAuthArg ){
112086 112218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zAuthArg;
112087 112219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAuthArg->op==TK_STRING ){
112220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pAuthArg, EP_IntValue) );
112088 112221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zAuthArg = pAuthArg->u.zToken;
112089 112222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
112090 112223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zAuthArg = 0;
112091 112224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112092 112225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3AuthCheck(pParse, type, zAuthArg, 0, 0);
@@ -112767,21 +112900,25 @@
112767 112900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Returning *pReturning = pParse->u1.pReturning;
112768 112901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrRewind;
112769 112902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
112770 112903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int reg;
112771 112904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrRewind =
112773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp1(v, OP_Rewind, pReturning->iRetCur);
112774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeCoverage(v);
112775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- reg = pReturning->iRetReg;
112776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<pReturning->nRetCol; i++){
112777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Column, pReturning->iRetCur, i, reg+i);
112778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
112779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_ResultRow, reg, i);
112780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Next, pReturning->iRetCur, addrRewind+1);
112781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeCoverage(v);
112782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, addrRewind);
112905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pReturning->nRetCol==0 ){
112906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB );
112907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
112908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrRewind =
112909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp1(v, OP_Rewind, pReturning->iRetCur);
112910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
112911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ reg = pReturning->iRetReg;
112912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<pReturning->nRetCol; i++){
112913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Column, pReturning->iRetCur, i, reg+i);
112914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_ResultRow, reg, i);
112916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Next, pReturning->iRetCur, addrRewind+1);
112917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
112918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrRewind);
112919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112783 112920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112784 112921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp0(v, OP_Halt);
112785 112922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112786 112923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if SQLITE_USER_AUTHENTICATION
112787 112924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nTableLock>0 && db->init.busy==0 ){
@@ -112858,11 +112995,15 @@
112858 112995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112859 112996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112860 112997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112861 112998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->bReturning ){
112862 112999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Returning *pRet = pParse->u1.pReturning;
112863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol);
113000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRet->nRetCol==0 ){
113001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( CORRUPT_DB );
113002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
113003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol);
113004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112864 113005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
112865 113006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112866 113007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Finally, jump back to the beginning of the executable code. */
112867 113008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeGoto(v, 1);
112868 113009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -113280,11 +113421,11 @@
113280 113421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab, /* The table containing the column */
113281 113422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Column *pCol, /* The column to receive the new DEFAULT expression */
113282 113423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr /* The new default expression */
113283 113424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
113284 113425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pList;
113285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
113426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
113286 113427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pList = pTab->u.tab.pDfltList;
113287 113428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->iDflt==0
113288 113429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| NEVER(pList==0)
113289 113430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| NEVER(pList->nExpr<pCol->iDflt)
113290 113431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
@@ -113301,11 +113442,11 @@
113301 113442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the DEFAULT clause or the AS clause of a generated column.
113302 113443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return NULL if the column has no associated expression.
113303 113444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
113304 113445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE Expr *sqlite3ColumnExpr(Table *pTab, Column *pCol){
113305 113446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->iDflt==0 ) return 0;
113306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(IsVirtual(pTab)) ) return 0;
113447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(!IsOrdinaryTable(pTab)) ) return 0;
113307 113448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pTab->u.tab.pDfltList==0) ) return 0;
113308 113449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pTab->u.tab.pDfltList->nExpr<pCol->iDflt) ) return 0;
113309 113450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pTab->u.tab.pDfltList->a[pCol->iDflt-1].pExpr;
113310 113451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113311 113452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -113360,17 +113501,17 @@
113360 113501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pTable->nCol; i++, pCol++){
113361 113502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCol->zCnName==0 || pCol->hName==sqlite3StrIHash(pCol->zCnName) );
113362 113503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pCol->zCnName);
113363 113504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113364 113505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pTable->aCol);
113365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !IsVirtual(pTable) ){
113506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( IsOrdinaryTable(pTable) ){
113366 113507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pTable->u.tab.pDfltList);
113367 113508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113368 113509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db==0 || db->pnBytesFreed==0 ){
113369 113510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTable->aCol = 0;
113370 113511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTable->nCol = 0;
113371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !IsVirtual(pTable) ){
113512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( IsOrdinaryTable(pTable) ){
113372 113513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTable->u.tab.pDfltList = 0;
113373 113514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113374 113515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113375 113516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
113376 113517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -114433,11 +114574,13 @@
114433 114574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nTerm; i++){
114434 114575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pCExpr = sqlite3ExprSkipCollate(pList->a[i].pExpr);
114435 114576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCExpr!=0 );
114436 114577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StringToId(pCExpr);
114437 114578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCExpr->op==TK_ID ){
114438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zCName = pCExpr->u.zToken;
114579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zCName;
114580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pCExpr, EP_IntValue) );
114581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCName = pCExpr->u.zToken;
114439 114582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iCol=0; iCol<pTab->nCol; iCol++){
114440 114583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3StrICmp(zCName, pTab->aCol[iCol].zCnName)==0 ){
114441 114584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol = &pTab->aCol[iCol];
114442 114585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
makeColumnPartOfPrimaryKey(pParse, pCol);
114443 114586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -114805,11 +114948,10 @@
114805 114948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is used to determine if the column number x appears in any of the
114806 114949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** first nCol entries of an index.
114807 114950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
114808 114951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int hasColumn(const i16 *aiCol, int nCol, int x){
114809 114952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( nCol-- > 0 ){
114810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( aiCol[0]>=0 );
114811 114953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( x==*(aiCol++) ){
114812 114954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
114813 114955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114814 114956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114815 114957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
@@ -115181,11 +115323,11 @@
115181 115323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
115182 115324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the root page number is 1, that means this is the sqlite_schema
115183 115325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table itself. So mark it read-only.
115184 115326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
115185 115327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->init.busy ){
115186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pSelect ){
115328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pSelect || (!IsOrdinaryTable(p) && db->init.newTnum) ){
115187 115329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "");
115188 115330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
115189 115331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115190 115332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->tnum = db->init.newTnum;
115191 115333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->tnum==1 ) p->tabFlags |= TF_Readonly;
@@ -116146,10 +116288,11 @@
116146 116288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFKey = sqlite3DbMallocZero(db, nByte );
116147 116289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFKey==0 ){
116148 116290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto fk_end;
116149 116291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116150 116292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFKey->pFrom = p;
116293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(p) );
116151 116294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFKey->pNextFrom = p->u.tab.pFKey;
116152 116295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = (char*)&pFKey->aCol[nCol];
116153 116296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFKey->zTo = z;
116154 116297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IN_RENAME_OBJECT ){
116155 116298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RenameTokenMap(pParse, (void*)z, pTo);
@@ -116211,11 +116354,11 @@
116211 116354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNextTo->pPrevTo = pFKey;
116212 116355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116213 116356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
116214 116357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Link the foreign key to the table as the last step.
116215 116358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
116216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(p) );
116359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(p) );
116217 116360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->u.tab.pFKey = pFKey;
116218 116361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFKey = 0;
116219 116362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
116220 116363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fk_end:
116221 116364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pFKey);
@@ -116234,11 +116377,11 @@
116234 116377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3DeferForeignKey(Parse *pParse, int isDeferred){
116235 116378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_FOREIGN_KEY
116236 116379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
116237 116380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *pFKey;
116238 116381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTab = pParse->pNewTable)==0 ) return;
116239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(IsVirtual(pTab)) ) return;
116382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(!IsOrdinaryTable(pTab)) ) return;
116240 116383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pFKey = pTab->u.tab.pFKey)==0 ) return;
116241 116384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( isDeferred==0 || isDeferred==1 ); /* EV: R-30323-21917 */
116242 116385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFKey->isDeferred = (u8)isDeferred;
116243 116386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
116244 116387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -116636,10 +116779,11 @@
116636 116779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
116637 116780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pList->nExpr; i++){
116638 116781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pList->a[i].pExpr;
116639 116782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr!=0 );
116640 116783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_COLLATE ){
116784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
116641 116785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExtra += (1 + sqlite3Strlen30(pExpr->u.zToken));
116642 116786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116643 116787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116644 116788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
116645 116789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -116731,10 +116875,11 @@
116731 116875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIndex->aiColumn[i] = (i16)j;
116732 116876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
116733 116877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zColl = 0;
116734 116878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pListItem->pExpr->op==TK_COLLATE ){
116735 116879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nColl;
116880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pListItem->pExpr, EP_IntValue) );
116736 116881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zColl = pListItem->pExpr->u.zToken;
116737 116882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nColl = sqlite3Strlen30(zColl) + 1;
116738 116883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nExtra>=nColl );
116739 116884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(zExtra, zColl, nColl);
116740 116885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zColl = zExtra;
@@ -117519,10 +117664,11 @@
117519 117664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** construct "indexed_opt" for details. */
117520 117665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->fg.notIndexed = 1;
117521 117666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
117522 117667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->u1.zIndexedBy = sqlite3NameFromToken(pParse->db, pIndexedBy);
117523 117668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pItem->fg.isIndexedBy = 1;
117669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pItem->fg.isCte==0 ); /* No collision on union u2 */
117524 117670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117525 117671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117526 117672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
117527 117673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
117528 117674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -118499,10 +118645,11 @@
118499 118645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int h, /* Hash of the name */
118500 118646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFunc /* Name of function */
118501 118647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
118502 118648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FuncDef *p;
118503 118649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(p=sqlite3BuiltinFunctions.a[h]; p; p=p->u.pHash){
118650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->funcFlags & SQLITE_FUNC_BUILTIN );
118504 118651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3StrICmp(p->zName, zFunc)==0 ){
118505 118652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p;
118506 118653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
118507 118654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
118508 118655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
@@ -118520,10 +118667,11 @@
118520 118667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FuncDef *pOther;
118521 118668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName = aDef[i].zName;
118522 118669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nName = sqlite3Strlen30(zName);
118523 118670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int h = SQLITE_FUNC_HASH(zName[0], nName);
118524 118671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zName[0]>='a' && zName[0]<='z' );
118672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aDef[i].funcFlags & SQLITE_FUNC_BUILTIN );
118525 118673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOther = sqlite3FunctionSearch(h, zName);
118526 118674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOther ){
118527 118675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOther!=&aDef[i] && pOther->pNext!=&aDef[i] );
118528 118676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aDef[i].pNext = pOther->pNext;
118529 118677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOther->pNext = &aDef[i];
@@ -118911,10 +119059,11 @@
118911 119059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and the SELECT subtree. */
118912 119060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->a[0].pTab = 0;
118913 119061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSelectSrc = sqlite3SrcListDup(db, pSrc, 0);
118914 119062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->a[0].pTab = pTab;
118915 119063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSrc->a[0].fg.isIndexedBy ){
119064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pSrc->a[0].fg.isCte==0 );
118916 119065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->a[0].u2.pIBIndex = 0;
118917 119066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->a[0].fg.isIndexedBy = 0;
118918 119067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pSrc->a[0].u1.zIndexedBy);
118919 119068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pSrc->a[0].fg.isCte ){
118920 119069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrc->a[0].u2.pCteUse->nUse++;
@@ -121495,11 +121644,15 @@
121495 121644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
121496 121645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGCC = (GroupConcatCtx*)sqlite3_aggregate_context(context, sizeof(*pGCC));
121497 121646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pGCC is always non-NULL since groupConcatStep() will have always
121498 121647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** run frist to initialize it */
121499 121648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ALWAYS(pGCC) ){
121500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nVS = sqlite3_value_bytes(argv[0]);
121649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nVS;
121650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Must call sqlite3_value_text() to convert the argument into text prior
121651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to invoking sqlite3_value_bytes(), in case the text encoding is UTF16 */
121652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)sqlite3_value_text(argv[0]);
121653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nVS = sqlite3_value_bytes(argv[0]);
121501 121654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pGCC->nAccum -= 1;
121502 121655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pGCC->pnSepLengths!=0 ){
121503 121656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(pGCC->nAccum >= 0);
121504 121657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pGCC->nAccum>0 ){
121505 121658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nVS += *pGCC->pnSepLengths;
@@ -121610,15 +121763,16 @@
121610 121763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3IsLikeFunction(sqlite3 *db, Expr *pExpr, int *pIsNocase, char *aWc){
121611 121764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FuncDef *pDef;
121612 121765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nExpr;
121613 121766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr!=0 );
121614 121767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->op==TK_FUNCTION );
121768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
121615 121769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pExpr->x.pList ){
121616 121770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
121617 121771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
121618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
121619 121772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nExpr = pExpr->x.pList->nExpr;
121773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
121620 121774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDef = sqlite3FindFunction(db, pExpr->u.zToken, nExpr, SQLITE_UTF8, 0);
121621 121775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
121622 121776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pDef==0 ) return 0;
121623 121777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
121624 121778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pDef==0) || (pDef->funcFlags & SQLITE_FUNC_LIKE)==0 ){
@@ -121638,10 +121792,11 @@
121638 121792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aWc[3] = 0;
121639 121793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
121640 121794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pEscape = pExpr->x.pList->a[2].pExpr;
121641 121795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zEscape;
121642 121796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pEscape->op!=TK_STRING ) return 0;
121797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pEscape, EP_IntValue) );
121643 121798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zEscape = pEscape->u.zToken;
121644 121799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zEscape[0]==0 || zEscape[1]!=0 ) return 0;
121645 121800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zEscape[0]==aWc[0] ) return 0;
121646 121801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zEscape[0]==aWc[1] ) return 0;
121647 121802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aWc[3] = zEscape[0];
@@ -122019,10 +122174,11 @@
122019 122174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<SQLITE_FUNC_HASH_SZ; i++){
122020 122175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("FUNC-HASH %02d:", i);
122021 122176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(p=sqlite3BuiltinFunctions.a[i]; p; p=p->u.pHash){
122022 122177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n = sqlite3Strlen30(p->zName);
122023 122178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int h = p->zName[0] + n;
122179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->funcFlags & SQLITE_FUNC_BUILTIN );
122024 122180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf(" %s(%d)", p->zName, h);
122025 122181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
122026 122182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("\n");
122027 122183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
122028 122184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -122541,10 +122697,11 @@
122541 122697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCursor, /* The open cursor on the table */
122542 122698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i16 iCol /* The column that is wanted */
122543 122699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
122544 122700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = sqlite3Expr(db, TK_COLUMN, 0);
122545 122701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr ){
122702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
122546 122703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.pTab = pTab;
122547 122704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = iCursor;
122548 122705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn = iCol;
122549 122706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
122550 122707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pExpr;
@@ -122751,17 +122908,16 @@
122751 122908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the table from the database. Triggers are disabled while running this
122752 122909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** DELETE, but foreign key actions are not.
122753 122910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
122754 122911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3FkDropTable(Parse *pParse, SrcList *pName, Table *pTab){
122755 122912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
122756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (db->flags&SQLITE_ForeignKeys) && !IsVirtual(pTab) ){
122913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (db->flags&SQLITE_ForeignKeys) && IsOrdinaryTable(pTab) ){
122757 122914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iSkip = 0;
122758 122915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = sqlite3GetVdbe(pParse);
122759 122916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
122760 122917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( v ); /* VDBE has already been allocated */
122761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsView(pTab) ); /* Not a view */
122762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
122918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
122763 122919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3FkReferences(pTab)==0 ){
122764 122920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Search for a deferred foreign key constraint for which this table
122765 122921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is the child table. If one cannot be found, return without
122766 122922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** generating any VDBE code. If one can be found, then jump over
122767 122923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the entire DELETE if there are no outstanding deferred constraints
@@ -122921,17 +123077,17 @@
122921 123077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Exactly one of regOld and regNew should be non-zero. */
122922 123078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (regOld==0)!=(regNew==0) );
122923 123079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
122924 123080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If foreign-keys are disabled, this function is a no-op. */
122925 123081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (db->flags&SQLITE_ForeignKeys)==0 ) return;
123082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !IsOrdinaryTable(pTab) ) return;
122926 123083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
122927 123084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
122928 123085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDb = db->aDb[iDb].zDbSName;
122929 123086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
122930 123087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Loop through all the foreign key constraints for which pTab is the
122931 123088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** child table (the table that the foreign key definition is part of). */
122932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
122933 123089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
122934 123090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTo; /* Parent table of foreign key pFKey */
122935 123091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx = 0; /* Index on key columns in pTo */
122936 123092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *aiFree = 0;
122937 123093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *aiCol;
@@ -123110,14 +123266,13 @@
123110 123266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE u32 sqlite3FkOldmask(
123111 123267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse, /* Parse context */
123112 123268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab /* Table being modified */
123113 123269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
123114 123270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 mask = 0;
123115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pParse->db->flags&SQLITE_ForeignKeys ){
123271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->db->flags&SQLITE_ForeignKeys && IsOrdinaryTable(pTab) ){
123116 123272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *p;
123117 123273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
123118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
123119 123274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
123120 123275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<p->nCol; i++) mask |= COLUMN_MASK(p->aCol[i].iFrom);
123121 123276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
123122 123277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(p=sqlite3FkReferences(pTab); p; p=p->pNextTo){
123123 123278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx = 0;
@@ -123164,11 +123319,11 @@
123164 123319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *aChange, /* Non-NULL for UPDATE operations */
123165 123320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int chngRowid /* True for UPDATE that affects rowid */
123166 123321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
123167 123322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eRet = 1; /* Value to return if bHaveFK is true */
123168 123323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bHaveFK = 0; /* If FK processing is required */
123169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pParse->db->flags&SQLITE_ForeignKeys && !IsVirtual(pTab) ){
123324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParse->db->flags&SQLITE_ForeignKeys && IsOrdinaryTable(pTab) ){
123170 123325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !aChange ){
123171 123326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A DELETE operation. Foreign key processing is required if the
123172 123327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table in question is either the child or parent table for any
123173 123328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** foreign key constraint. */
123174 123329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bHaveFK = (sqlite3FkReferences(pTab) || pTab->u.tab.pFKey);
@@ -123452,11 +123607,11 @@
123452 123607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
123453 123608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3FkDelete(sqlite3 *db, Table *pTab){
123454 123609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *pFKey; /* Iterator variable */
123455 123610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *pNext; /* Copy of pFKey->pNextFrom */
123456 123611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
123457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
123612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
123458 123613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pNext){
123459 123614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
123460 123615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
123461 123616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Remove the FK from the fkeyHash hash table. */
123462 123617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db || db->pnBytesFreed==0 ){
@@ -125711,10 +125866,11 @@
125711 125866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (5) No FK constraint counters need to be updated if a conflict occurs.
125712 125867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
125713 125868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is not possible for ENABLE_PREUPDATE_HOOK builds, as the row
125714 125869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** must be explicitly deleted in order to ensure any pre-update hook
125715 125870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is invoked. */
125871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
125716 125872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_ENABLE_PREUPDATE_HOOK
125717 125873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (ix==0 && pIdx->pNext==0) /* Condition 3 */
125718 125874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pPk==pIdx /* Condition 2 */
125719 125875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& onError==OE_Replace /* Condition 1 */
125720 125876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& ( 0==(db->flags&SQLITE_RecTriggers) || /* Condition 4 */
@@ -126391,11 +126547,13 @@
126391 126547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Default values for second and subsequent columns need to match. */
126392 126548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pDestCol->colFlags & COLFLAG_GENERATED)==0 && i>0 ){
126393 126549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pDestExpr = sqlite3ColumnExpr(pDest, pDestCol);
126394 126550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pSrcExpr = sqlite3ColumnExpr(pSrc, pSrcCol);
126395 126551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pDestExpr==0 || pDestExpr->op==TK_SPAN );
126552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pDestExpr==0 || !ExprHasProperty(pDestExpr, EP_IntValue) );
126396 126553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pSrcExpr==0 || pSrcExpr->op==TK_SPAN );
126554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pSrcExpr==0 || !ExprHasProperty(pSrcExpr, EP_IntValue) );
126397 126555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pDestExpr==0)!=(pSrcExpr==0)
126398 126556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (pDestExpr!=0 && strcmp(pDestExpr->u.zToken,
126399 126557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSrcExpr->u.zToken)!=0)
126400 126558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
126401 126559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0; /* Default values must be the same for all columns */
@@ -126431,10 +126589,11 @@
126431 126589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** But the main beneficiary of the transfer optimization is the VACUUM
126432 126590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** command, and the VACUUM command disables foreign key constraints. So
126433 126591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the extra complication to make this rule less restrictive is probably
126434 126592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not worth the effort. Ticket [6284df89debdfa61db8073e062908af0c9b6118e]
126435 126593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
126594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pDest) );
126436 126595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (db->flags & SQLITE_ForeignKeys)!=0 && pDest->u.tab.pFKey!=0 ){
126437 126596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
126438 126597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
126439 126598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
126440 126599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (db->flags & SQLITE_CountRows)!=0 ){
@@ -129423,11 +129582,15 @@
129423 129582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto pragma_out;
129424 129583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
129425 129584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
129426 129585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Locate the pragma in the lookup table */
129427 129586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPragma = pragmaLocate(zLeft);
129428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pPragma==0 ) goto pragma_out;
129587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pPragma==0 ){
129588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* IMP: R-43042-22504 No error messages are generated if an
129589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** unknown pragma is issued. */
129590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ goto pragma_out;
129591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
129429 129592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
129430 129593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Make sure the database schema is loaded if the pragma requires that */
129431 129594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pPragma->mPragFlg & PragFlg_NeedSchema)!=0 ){
129432 129595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ReadSchema(pParse) ) goto pragma_out;
129433 129596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -130073,10 +130236,18 @@
130073 130236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3GetBoolean(zRight, 0) ){
130074 130237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->flags |= mask;
130075 130238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
130076 130239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->flags &= ~mask;
130077 130240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( mask==SQLITE_DeferFKs ) db->nDeferredImmCons = 0;
130241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (mask & SQLITE_WriteSchema)!=0
130242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && sqlite3_stricmp(zRight, "reset")==0
130243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
130244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* IMP: R-60817-01178 If the argument is "RESET" then schema
130245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** writing is disabled (as with "PRAGMA writable_schema=OFF") and,
130246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in addition, the schema is reloaded. */
130247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ResetAllSchemasOfConnection(db);
130248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
130078 130249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130079 130250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
130080 130251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Many of the flag-pragmas modify the code generated by the SQL
130081 130252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** compiler (eg. count_changes). So add an opcode to expire all
130082 130253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** compiled SQL statements after modifying a pragma value.
@@ -130113,10 +130284,11 @@
130113 130284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pPk = sqlite3PrimaryKeyIndex(pTab);
130114 130285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = 7;
130115 130286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ViewGetColumnNames(pParse, pTab);
130116 130287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pCol=pTab->aCol; i<pTab->nCol; i++, pCol++){
130117 130288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isHidden = 0;
130289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const Expr *pColExpr;
130118 130290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCol->colFlags & COLFLAG_NOINSERT ){
130119 130291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPragma->iArg==0 ){
130120 130292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nHidden++;
130121 130293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
130122 130294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -130133,20 +130305,20 @@
130133 130305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pPk==0 ){
130134 130306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = 1;
130135 130307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
130136 130308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(k=1; k<=pTab->nCol && pPk->aiColumn[k-1]!=i; k++){}
130137 130309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sqlite3ColumnExpr(pTab,pCol)==0
130139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || sqlite3ColumnExpr(pTab,pCol)->op==TK_SPAN
130140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || isHidden>=2 );
130310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pColExpr = sqlite3ColumnExpr(pTab,pCol);
130311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pColExpr==0 || pColExpr->op==TK_SPAN || isHidden>=2 );
130312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pColExpr==0 || !ExprHasProperty(pColExpr, EP_IntValue)
130313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || isHidden>=2 );
130141 130314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMultiLoad(v, 1, pPragma->iArg ? "issisii" : "issisi",
130142 130315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i-nHidden,
130143 130316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->zCnName,
130144 130317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ColumnType(pCol,""),
130145 130318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->notNull ? 1 : 0,
130146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isHidden>=2 || sqlite3ColumnExpr(pTab,pCol)==0 ? 0 :
130147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ColumnExpr(pTab,pCol)->u.zToken,
130319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (isHidden>=2 || pColExpr==0) ? 0 : pColExpr->u.zToken,
130148 130320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k,
130149 130321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isHidden);
130150 130322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130151 130323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130152 130324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -130170,12 +130342,39 @@
130170 130342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = 6;
130171 130343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodeVerifyNamedSchema(pParse, zDb);
130172 130344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<db->nDb; ii++){
130173 130345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HashElem *k;
130174 130346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Hash *pHash;
130347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int initNCol;
130175 130348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDb && sqlite3_stricmp(zDb, db->aDb[ii].zDbSName)!=0 ) continue;
130349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
130350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Ensure that the Table.nCol field is initialized for all views
130351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and virtual tables. Each time we initialize a Table.nCol value
130352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for a table, that can potentially disrupt the hash table, so restart
130353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the initialization scan.
130354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
130176 130355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pHash = &db->aDb[ii].pSchema->tblHash;
130356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ initNCol = sqliteHashCount(pHash);
130357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( initNCol-- ){
130358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(k=sqliteHashFirst(pHash); 1; k=sqliteHashNext(k) ){
130359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab;
130360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( k==0 ){ initNCol = 0; break; }
130361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab = sqliteHashData(k);
130362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTab->nCol==0 ){
130363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zSql = sqlite3MPrintf(db, "SELECT*FROM\"%w\"", pTab->zName);
130364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zSql ){
130365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_stmt *pDummy = 0;
130366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)sqlite3_prepare(db, zSql, -1, &pDummy, 0);
130367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (void)sqlite3_finalize(pDummy);
130368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DbFree(db, zSql);
130369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
130370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pHash = &db->aDb[ii].pSchema->tblHash;
130371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
130372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
130373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
130374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
130375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
130177 130376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(k=sqliteHashFirst(pHash); k; k=sqliteHashNext(k) ){
130178 130377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = sqliteHashData(k);
130179 130378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zType;
130180 130379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRight && sqlite3_stricmp(zRight, pTab->zName)!=0 ) continue;
130181 130380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IsView(pTab) ){
@@ -130326,15 +130525,17 @@
130326 130525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FuncDef *p;
130327 130526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int showInternFunc = (db->mDbFlags & DBFLAG_InternalFunc)!=0;
130328 130527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = 6;
130329 130528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<SQLITE_FUNC_HASH_SZ; i++){
130330 130529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(p=sqlite3BuiltinFunctions.a[i]; p; p=p->u.pHash ){
130530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->funcFlags & SQLITE_FUNC_BUILTIN );
130331 130531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pragmaFunclistLine(v, p, 1, showInternFunc);
130332 130532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130333 130533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130334 130534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=sqliteHashFirst(&db->aFunc); j; j=sqliteHashNext(j)){
130335 130535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = (FuncDef*)sqliteHashData(j);
130536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (p->funcFlags & SQLITE_FUNC_BUILTIN)==0 );
130336 130537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pragmaFunclistLine(v, p, 0, showInternFunc);
130337 130538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130338 130539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130339 130540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
130340 130541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -130364,11 +130565,11 @@
130364 130565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_FOREIGN_KEY
130365 130566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PragTyp_FOREIGN_KEY_LIST: if( zRight ){
130366 130567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *pFK;
130367 130568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
130368 130569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = sqlite3FindTable(db, zRight, zDb);
130369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTab && !IsVirtual(pTab) ){
130570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTab && IsOrdinaryTable(pTab) ){
130370 130571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFK = pTab->u.tab.pFKey;
130371 130572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFK ){
130372 130573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTabDb = sqlite3SchemaToIndex(db, pTab->pSchema);
130373 130574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i = 0;
130374 130575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem = 8;
@@ -130424,19 +130625,19 @@
130424 130625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = 0;
130425 130626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
130426 130627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = (Table*)sqliteHashData(k);
130427 130628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = sqliteHashNext(k);
130428 130629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTab==0 || IsVirtual(pTab) || pTab->u.tab.pFKey==0 ) continue;
130630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTab==0 || !IsOrdinaryTable(pTab) || pTab->u.tab.pFKey==0 ) continue;
130430 130631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
130431 130632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDb = db->aDb[iDb].zDbSName;
130432 130633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodeVerifySchema(pParse, iDb);
130433 130634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
130434 130635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->nCol+regRow>pParse->nMem ) pParse->nMem = pTab->nCol + regRow;
130435 130636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTable(pParse, 0, iDb, pTab, OP_OpenRead);
130436 130637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeLoadString(v, regResult, pTab->zName);
130437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
130638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
130438 130639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1, pFK=pTab->u.tab.pFKey; pFK; i++, pFK=pFK->pNextFrom){
130439 130640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParent = sqlite3FindTable(db, pFK->zTo, zDb);
130440 130641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParent==0 ) continue;
130441 130642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = 0;
130442 130643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3TableLock(pParse, iDb, pParent->tnum, 0, pParent->zName);
@@ -130455,11 +130656,11 @@
130455 130656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
130456 130657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParse->nErr>0 || pFK==0 );
130457 130658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFK ) break;
130458 130659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nTab<i ) pParse->nTab = i;
130459 130660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, 0); VdbeCoverage(v);
130460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !IsVirtual(pTab) );
130661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsOrdinaryTable(pTab) );
130461 130662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1, pFK=pTab->u.tab.pFKey; pFK; i++, pFK=pFK->pNextFrom){
130462 130663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParent = sqlite3FindTable(db, pFK->zTo, zDb);
130463 130664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = 0;
130464 130665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aiCols = 0;
130465 130666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParent ){
@@ -130659,11 +130860,11 @@
130659 130860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int loopTop;
130660 130861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDataCur, iIdxCur;
130661 130862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r1 = -1;
130662 130863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bStrict;
130663 130864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
130664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTab->tnum<1 ) continue; /* Skip VIEWs or VIRTUAL TABLEs */
130865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !IsOrdinaryTable(pTab) ) continue;
130665 130866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pObjTab && pObjTab!=pTab ) continue;
130666 130867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
130667 130868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenRead, 0,
130668 130869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1, 0, &iDataCur, &iIdxCur);
130669 130870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* reg[7] counts the number of entries in the table.
@@ -131254,16 +131455,16 @@
131254 131455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in each index that it looks at. Return the new limit.
131255 131456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
131256 131457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PragTyp_ANALYSIS_LIMIT: {
131257 131458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 N;
131258 131459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRight
131259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && sqlite3DecOrHexToI64(zRight, &N)==SQLITE_OK
131460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && sqlite3DecOrHexToI64(zRight, &N)==SQLITE_OK /* IMP: R-40975-20399 */
131260 131461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& N>=0
131261 131462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
131262 131463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->nAnalysisLimit = (int)(N&0x7fffffff);
131263 131464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
131264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- returnSingleInt(v, db->nAnalysisLimit);
131465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ returnSingleInt(v, db->nAnalysisLimit); /* IMP: R-57594-65522 */
131265 131466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
131266 131467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
131267 131468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
131268 131469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(SQLITE_DEBUG) || defined(SQLITE_TEST)
131269 131470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -133046,14 +133247,17 @@
133046 133247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( p ){
133047 133248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(p, EP_FromJoin);
133048 133249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) );
133049 133250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetVVAProperty(p, EP_NoReduce);
133050 133251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iRightJoinTable = iTable;
133051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->op==TK_FUNCTION && p->x.pList ){
133052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
133053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<p->x.pList->nExpr; i++){
133054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3SetJoinExpr(p->x.pList->a[i].pExpr, iTable);
133252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->op==TK_FUNCTION ){
133253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(p) );
133254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->x.pList ){
133255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
133256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<p->x.pList->nExpr; i++){
133257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3SetJoinExpr(p->x.pList->a[i].pExpr, iTable);
133258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
133055 133259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133056 133260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133057 133261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3SetJoinExpr(p->pLeft, iTable);
133058 133262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->pRight;
133059 133263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -133072,14 +133276,17 @@
133072 133276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprClearProperty(p, EP_FromJoin);
133073 133277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133074 133278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->op==TK_COLUMN && p->iTable==iTable ){
133075 133279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprClearProperty(p, EP_CanBeNull);
133076 133280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->op==TK_FUNCTION && p->x.pList ){
133078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int i;
133079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=0; i<p->x.pList->nExpr; i++){
133080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsetJoinExpr(p->x.pList->a[i].pExpr, iTable);
133281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->op==TK_FUNCTION ){
133282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(p) );
133283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->x.pList ){
133284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
133285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<p->x.pList->nExpr; i++){
133286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsetJoinExpr(p->x.pList->a[i].pExpr, iTable);
133287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
133081 133288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133082 133289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133083 133290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsetJoinExpr(p->pLeft, iTable);
133084 133291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = p->pRight;
133085 133292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -133590,13 +133797,17 @@
133590 133797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pExtra = 0;
133591 133798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pEList->nExpr; i++){
133592 133799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct ExprList_item *pItem = &pEList->a[i];
133593 133800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->u.x.iOrderByCol==0 ){
133594 133801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pItem->pExpr;
133595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Table *pTab = pExpr->y.pTab;
133596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->op==TK_COLUMN && pExpr->iColumn>=0 && pTab && !IsVirtual(pTab)
133597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (pTab->aCol[pExpr->iColumn].colFlags & COLFLAG_SORTERREF)
133802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab;
133803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->op==TK_COLUMN
133804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pExpr->iColumn>=0
133805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS( ExprUseYTab(pExpr) )
133806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pTab = pExpr->y.pTab)!=0
133807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && IsOrdinaryTable(pTab)
133808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pTab->aCol[pExpr->iColumn].colFlags & COLFLAG_SORTERREF)!=0
133598 133809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
133599 133810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j;
133600 133811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<nDefer; j++){
133601 133812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSort->aDefer[j].iCsr==pExpr->iTable ) break;
133602 133813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -133613,10 +133824,11 @@
133613 133824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133614 133825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(k=0; k<nKey; k++){
133615 133826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pNew = sqlite3PExpr(pParse, TK_COLUMN, 0, 0);
133616 133827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew ){
133617 133828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->iTable = pExpr->iTable;
133829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pNew) );
133618 133830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->y.pTab = pExpr->y.pTab;
133619 133831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->iColumn = pPk ? pPk->aiColumn[k] : -1;
133620 133832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExtra = sqlite3ExprListAppend(pParse, pExtra, pNew);
133621 133833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
133622 133834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -134461,11 +134673,11 @@
134461 134673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "(SELECT t1.col)", the correct type is returned (see the TK_SELECT
134462 134674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** branch below. */
134463 134675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
134464 134676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
134465 134677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
134466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pTab && pExpr->y.pTab==pTab );
134678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTab && ExprUseYTab(pExpr) && pExpr->y.pTab==pTab );
134467 134679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pS ){
134468 134680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The "table" is actually a sub-select or a view in the FROM clause
134469 134681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the SELECT statement. Return the declaration type and origin
134470 134682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** data for the result-set column of the sub-select.
134471 134683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -134521,13 +134733,15 @@
134521 134733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The expression is a sub-select. Return the declaration type and
134522 134734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** origin info for the single column in the result set of the SELECT
134523 134735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** statement.
134524 134736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
134525 134737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
NameContext sNC;
134526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Select *pS = pExpr->x.pSelect;
134527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *p = pS->pEList->a[0].pExpr;
134528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( ExprHasProperty(pExpr, EP_xIsSelect) );
134738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Select *pS;
134739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *p;
134740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pExpr) );
134741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pS = pExpr->x.pSelect;
134742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p = pS->pEList->a[0].pExpr;
134529 134743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sNC.pSrcList = pS->pSrc;
134530 134744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sNC.pNext = pNC;
134531 134745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sNC.pParse = pNC->pParse;
134532 134746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zType = columnType(&sNC, p, &zOrigDb, &zOrigTab, &zOrigCol);
134533 134747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -134652,11 +134866,12 @@
134652 134866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pEList->nExpr; i++){
134653 134867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *p = pEList->a[i].pExpr;
134654 134868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
134655 134869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p!=0 );
134656 134870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->op!=TK_AGG_COLUMN ); /* Agg processing has not run yet */
134657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->op!=TK_COLUMN || p->y.pTab!=0 ); /* Covering idx not yet coded */
134871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->op!=TK_COLUMN
134872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (ExprUseYTab(p) && p->y.pTab!=0) ); /* Covering idx not yet coded */
134658 134873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pEList->a[i].zEName && pEList->a[i].eEName==ENAME_NAME ){
134659 134874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* An AS clause always takes first priority */
134660 134875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zName = pEList->a[i].zEName;
134661 134876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetColName(v, i, COLNAME_NAME, zName, SQLITE_TRANSIENT);
134662 134877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( srcName && p->op==TK_COLUMN ){
@@ -134748,11 +134963,14 @@
134748 134963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pColExpr = sqlite3ExprSkipCollateAndLikely(pEList->a[i].pExpr);
134749 134964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( ALWAYS(pColExpr!=0) && pColExpr->op==TK_DOT ){
134750 134965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColExpr = pColExpr->pRight;
134751 134966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pColExpr!=0 );
134752 134967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
134753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pColExpr->op==TK_COLUMN && (pTab = pColExpr->y.pTab)!=0 ){
134968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pColExpr->op==TK_COLUMN
134969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS( ExprUseYTab(pColExpr) )
134970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (pTab = pColExpr->y.pTab)!=0
134971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
134754 134972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* For columns use the column name name */
134755 134973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol = pColExpr->iColumn;
134756 134974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCol<0 ) iCol = pTab->iPKey;
134757 134975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName = iCol>=0 ? pTab->aCol[iCol].zCnName : "rowid";
134758 134976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pColExpr->op==TK_ID ){
@@ -136330,11 +136548,11 @@
136330 136548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_IF_NULL_ROW && pExpr->iTable==pSubst->iTable ){
136331 136549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pSubst->iNewTable;
136332 136550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
136333 136551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pLeft = substExpr(pSubst, pExpr->pLeft);
136334 136552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->pRight = substExpr(pSubst, pExpr->pRight);
136335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
136553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
136336 136554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substSelect(pSubst, pExpr->x.pSelect, 1);
136337 136555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
136338 136556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
substExprList(pSubst, pExpr->x.pList);
136339 136557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
136340 136558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
@@ -137541,25 +137759,28 @@
137541 137759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** located but before their arguments have been subjected to aggregate
137542 137760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** analysis.
137543 137761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
137544 137762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static u8 minMaxQuery(sqlite3 *db, Expr *pFunc, ExprList **ppMinMax){
137545 137763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eRet = WHERE_ORDERBY_NORMAL; /* Return value */
137546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pEList = pFunc->x.pList; /* Arguments to agg function */
137764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pEList; /* Arguments to agg function */
137547 137765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFunc; /* Name of aggregate function pFunc */
137548 137766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pOrderBy;
137549 137767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 sortFlags = 0;
137550 137768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
137551 137769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( *ppMinMax==0 );
137552 137770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pFunc->op==TK_AGG_FUNCTION );
137553 137771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !IsWindowFunc(pFunc) );
137772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pFunc) );
137773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pEList = pFunc->x.pList;
137554 137774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pEList==0
137555 137775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pEList->nExpr!=1
137556 137776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| ExprHasProperty(pFunc, EP_WinFunc)
137557 137777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| OptimizationDisabled(db, SQLITE_MinMaxOpt)
137558 137778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
137559 137779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return eRet;
137560 137780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
137781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pFunc, EP_IntValue) );
137561 137782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFunc = pFunc->u.zToken;
137562 137783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3StrICmp(zFunc, "min")==0 ){
137563 137784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eRet = WHERE_ORDERBY_MIN;
137564 137785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprCanBeNull(pEList->a[0].pExpr) ){
137565 137786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sortFlags = KEYINFO_ORDER_BIGNULL;
@@ -137632,10 +137853,11 @@
137632 137853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pIdx ){
137633 137854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "no such index: %s", zIndexedBy, 0);
137634 137855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->checkSchema = 1;
137635 137856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_ERROR;
137636 137857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
137858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pFrom->fg.isCte==0 );
137637 137859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom->u2.pIBIndex = pIdx;
137638 137860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
137639 137861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
137640 137862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
137641 137863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -137889,10 +138111,14 @@
137889 138111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->tabFlags |= TF_Ephemeral | TF_NoVisibleRowid;
137890 138112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom->pSelect = sqlite3SelectDup(db, pCte->pSelect, 0);
137891 138113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ) return 2;
137892 138114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom->pSelect->selFlags |= SF_CopyCte;
137893 138115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pFrom->pSelect );
138116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pFrom->fg.isIndexedBy ){
138117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ErrorMsg(pParse, "no such index: \"%s\"", pFrom->u1.zIndexedBy);
138118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 2;
138119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
137894 138120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom->fg.isCte = 1;
137895 138121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFrom->u2.pCteUse = pCteUse;
137896 138122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCteUse->nUse++;
137897 138123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCteUse->nUse>=2 && pCteUse->eM10d==M10d_Any ){
137898 138124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCteUse->eM10d = M10d_Yes;
@@ -138524,11 +138750,11 @@
138524 138750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
138525 138751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Null, 0, pAggInfo->mnReg, pAggInfo->mxReg);
138526 138752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pFunc=pAggInfo->aFunc, i=0; i<pAggInfo->nFunc; i++, pFunc++){
138527 138753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFunc->iDistinct>=0 ){
138528 138754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pE = pFunc->pFExpr;
138529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pE, EP_xIsSelect) );
138755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pE) );
138530 138756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pE->x.pList==0 || pE->x.pList->nExpr!=1 ){
138531 138757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "DISTINCT aggregates must have exactly one "
138532 138758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"argument");
138533 138759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pFunc->iDistinct = -1;
138534 138760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -138549,12 +138775,13 @@
138549 138775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void finalizeAggFunctions(Parse *pParse, AggInfo *pAggInfo){
138550 138776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = pParse->pVdbe;
138551 138777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
138552 138778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_func *pF;
138553 138779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pF=pAggInfo->aFunc; i<pAggInfo->nFunc; i++, pF++){
138554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pList = pF->pFExpr->x.pList;
138555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pF->pFExpr, EP_xIsSelect) );
138780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pList;
138781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pF->pFExpr) );
138782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pList = pF->pFExpr->x.pList;
138556 138783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AggFinal, pF->iMem, pList ? pList->nExpr : 0);
138557 138784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAppendP4(v, pF->pFunc, P4_FUNCDEF);
138558 138785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
138559 138786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
138560 138787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -138584,13 +138811,14 @@
138584 138811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pAggInfo->directMode = 1;
138585 138812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0, pF=pAggInfo->aFunc; i<pAggInfo->nFunc; i++, pF++){
138586 138813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg;
138587 138814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNext = 0;
138588 138815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regAgg;
138589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pList = pF->pFExpr->x.pList;
138590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pF->pFExpr, EP_xIsSelect) );
138816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pList;
138817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pF->pFExpr) );
138591 138818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !IsWindowFunc(pF->pFExpr) );
138819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pList = pF->pFExpr->x.pList;
138592 138820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pF->pFExpr, EP_WinFunc) ){
138593 138821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pFilter = pF->pFExpr->y.pWin->pFilter;
138594 138822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAggInfo->nAccumulator
138595 138823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pF->pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL)
138596 138824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& regAcc
@@ -138832,11 +139060,13 @@
138832 139060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pEList->nExpr!=1 ) return 0; /* Single result column */
138833 139061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pWhere ) return 0;
138834 139062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pGroupBy ) return 0;
138835 139063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = p->pEList->a[0].pExpr;
138836 139064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op!=TK_AGG_FUNCTION ) return 0; /* Result is an aggregate */
139065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseUToken(pExpr) );
138837 139066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
139067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
138838 139068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->x.pList!=0 ) return 0; /* Must be count(*) */
138839 139069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pSrc->nSrc!=1 ) return 0; /* One table in FROM */
138840 139070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSub = p->pSrc->a[0].pSelect;
138841 139071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSub==0 ) return 0; /* The FROM is a subquery */
138842 139072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSub->pPrior==0 ) return 0; /* Must be a compound ry */
@@ -139647,11 +139877,11 @@
139647 139877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
139648 139878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
minMaxFlag = WHERE_ORDERBY_NORMAL;
139649 139879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
139650 139880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pAggInfo->nFunc; i++){
139651 139881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pAggInfo->aFunc[i].pFExpr;
139652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
139882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
139653 139883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sNC.ncFlags |= NC_InAggFunc;
139654 139884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprAnalyzeAggList(&sNC, pExpr->x.pList);
139655 139885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
139656 139886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !IsWindowFunc(pExpr) );
139657 139887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_WinFunc) ){
@@ -139702,11 +139932,13 @@
139702 139932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 distFlag = 0;
139703 139933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eDist = WHERE_DISTINCT_NOOP;
139704 139934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139705 139935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAggInfo->nFunc==1
139706 139936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pAggInfo->aFunc[0].iDistinct>=0
139707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && pAggInfo->aFunc[0].pFExpr->x.pList
139937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS(pAggInfo->aFunc[0].pFExpr!=0)
139938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS(ExprUseXList(pAggInfo->aFunc[0].pFExpr))
139939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pAggInfo->aFunc[0].pFExpr->x.pList!=0
139708 139940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
139709 139941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pAggInfo->aFunc[0].pFExpr->x.pList->a[0].pExpr;
139710 139942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = sqlite3ExprDup(db, pExpr, 0);
139711 139943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDistinct = sqlite3ExprListDup(db, pGroupBy, 0);
139712 139944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDistinct = sqlite3ExprListAppend(pParse, pDistinct, pExpr);
@@ -140023,10 +140255,11 @@
140023 140255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i==pAggInfo->nFunc ){
140024 140256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regAcc = ++pParse->nMem;
140025 140257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, regAcc);
140026 140258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140027 140259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pAggInfo->nFunc==1 && pAggInfo->aFunc[0].iDistinct>=0 ){
140260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pAggInfo->aFunc[0].pFExpr) );
140028 140261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDistinct = pAggInfo->aFunc[0].pFExpr->x.pList;
140029 140262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
distFlag = pDistinct ? (WHERE_WANT_DISTINCT|WHERE_AGG_DISTINCT) : 0;
140030 140263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140031 140264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
140032 140265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This case runs if the aggregate has no GROUP BY clause. The
@@ -144048,11 +144281,14 @@
144048 144281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Except, if argument db is not NULL, then the entry associated with
144049 144282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** connection db is left in the p->u.vtab.p list.
144050 144283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
144051 144284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static VTable *vtabDisconnectAll(sqlite3 *db, Table *p){
144052 144285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VTable *pRet = 0;
144053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VTable *pVTable = p->u.vtab.p;
144286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VTable *pVTable;
144287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
144288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsVirtual(p) );
144289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pVTable = p->u.vtab.p;
144054 144290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->u.vtab.p = 0;
144055 144291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
144056 144292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Assert that the mutex (if any) associated with the BtShared database
144057 144293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that contains table p is held by the caller. See header comments
144058 144294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** above function sqlite3VtabUnlockList() for an explanation of why
@@ -144156,10 +144392,11 @@
144156 144392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** structure being xDisconnected and free). Any other VTable structures
144157 144393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in the list are moved to the sqlite3.pDisconnect list of the associated
144158 144394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** database connection.
144159 144395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
144160 144396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VtabClear(sqlite3 *db, Table *p){
144397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsVirtual(p) );
144161 144398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db || db->pnBytesFreed==0 ) vtabDisconnectAll(0, p);
144162 144399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->u.vtab.azArg ){
144163 144400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
144164 144401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<p->u.vtab.nArg; i++){
144165 144402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i!=1 ) sqlite3DbFree(db, p->u.vtab.azArg[i]);
@@ -144173,13 +144410,16 @@
144173 144410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The string is not copied - the pointer is stored. The
144174 144411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** string will be freed automatically when the table is
144175 144412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** deleted.
144176 144413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
144177 144414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void addModuleArgument(Parse *pParse, Table *pTable, char *zArg){
144178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_int64 nBytes = sizeof(char *)*(2+pTable->u.vtab.nArg);
144415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_int64 nBytes;
144179 144416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **azModuleArg;
144180 144417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
144418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
144419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsVirtual(pTable) );
144420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nBytes = sizeof(char *)*(2+pTable->u.vtab.nArg);
144181 144421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTable->u.vtab.nArg+3>=db->aLimit[SQLITE_LIMIT_COLUMN] ){
144182 144422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "too many columns on %s", pTable->zName);
144183 144423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
144184 144424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
azModuleArg = sqlite3DbRealloc(db, pTable->u.vtab.azArg, nBytes);
144185 144425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( azModuleArg==0 ){
@@ -144262,10 +144502,11 @@
144262 144502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
144263 144503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = pParse->pNewTable; /* The table being constructed */
144264 144504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db; /* The database connection */
144265 144505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
144266 144506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab==0 ) return;
144507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsVirtual(pTab) );
144267 144508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addArgumentToVtab(pParse);
144268 144509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->sArg.z = 0;
144269 144510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab->u.vtab.nArg<1 ) return;
144270 144511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
144271 144512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the CREATE VIRTUAL TABLE statement is being entered for the
@@ -144379,17 +144620,20 @@
144379 144620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **pzErr
144380 144621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
144381 144622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VtabCtx sCtx;
144382 144623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VTable *pVTable;
144383 144624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
144384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *const*azArg = (const char *const*)pTab->u.vtab.azArg;
144625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *const*azArg;
144385 144626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg = pTab->u.vtab.nArg;
144386 144627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErr = 0;
144387 144628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zModuleName;
144388 144629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDb;
144389 144630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VtabCtx *pCtx;
144390 144631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
144632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( IsVirtual(pTab) );
144633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ azArg = (const char *const*)pTab->u.vtab.azArg;
144634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
144391 144635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check that the virtual-table is not already being initialized */
144392 144636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pCtx=db->pVtabCtx; pCtx; pCtx=pCtx->pPrior){
144393 144637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCtx->pTab==pTab ){
144394 144638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pzErr = sqlite3MPrintf(db,
144395 144639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"vtable constructor called recursively: %s", pTab->zName
@@ -144713,11 +144957,11 @@
144713 144957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3VtabCallDestroy(sqlite3 *db, int iDb, const char *zTab){
144714 144958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
144715 144959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab;
144716 144960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
144717 144961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = sqlite3FindTable(db, zTab, db->aDb[iDb].zDbSName);
144718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTab!=0 && ALWAYS(pTab->u.vtab.p!=0) ){
144962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTab!=0 && ALWAYS(IsVirtual(pTab)) && ALWAYS(pTab->u.vtab.p!=0) ){
144719 144963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VTable *p;
144720 144964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int (*xDestroy)(sqlite3_vtab *);
144721 144965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(p=pTab->u.vtab.p; p; p=p->pNext){
144722 144966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->pVtab );
144723 144967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pVtab->nRef>0 ){
@@ -144946,10 +145190,11 @@
144946 145190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = 0;
144947 145191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
144948 145192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Check to see the left operand is a column in a virtual table */
144949 145193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pExpr==0) ) return pDef;
144950 145194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op!=TK_COLUMN ) return pDef;
145195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) );
144951 145196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pExpr->y.pTab;
144952 145197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTab==0 ) return pDef;
144953 145198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !IsVirtual(pTab) ) return pDef;
144954 145199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVtab = sqlite3GetVTable(db, pTab)->pVtab;
144955 145200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pVtab!=0 );
@@ -145254,11 +145499,11 @@
145254 145499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iBase; /* Base register of multi-key index record */
145255 145500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nPrefix; /* Number of prior entires in the key */
145256 145501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eEndLoopOp; /* IN Loop terminator. OP_Next or OP_Prev */
145257 145502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} *aInLoop; /* Information about each nested IN operator */
145258 145503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} in; /* Used when pWLoop->wsFlags&WHERE_IN_ABLE */
145259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Index *pCovidx; /* Possible covering index for WHERE_MULTI_OR */
145504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Index *pCoveringIdx; /* Possible covering index for WHERE_MULTI_OR */
145260 145505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} u;
145261 145506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct WhereLoop *pWLoop; /* The selected WhereLoop object */
145262 145507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask notReady; /* FROM entries not usable at this level */
145263 145508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
145264 145509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrVisit; /* Address at which row is visited */
@@ -146182,20 +146427,27 @@
146182 146427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
146183 146428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
146184 146429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pNew;
146185 146430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = sqlite3ExprDup(db, pX, 0);
146186 146431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed==0 ){
146187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pOrigRhs = pNew->x.pSelect->pEList; /* Original unmodified RHS */
146188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pOrigLhs = pNew->pLeft->x.pList; /* Original unmodified LHS */
146432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pOrigRhs; /* Original unmodified RHS */
146433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pOrigLhs; /* Original unmodified LHS */
146189 146434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pRhs = 0; /* New RHS after modifications */
146190 146435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pLhs = 0; /* New LHS after mods */
146191 146436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; /* Loop counter */
146192 146437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Select *pSelect; /* Pointer to the SELECT on the RHS */
146193 146438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXSelect(pNew) );
146440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOrigRhs = pNew->x.pSelect->pEList;
146441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNew->pLeft!=0 );
146442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pNew->pLeft) );
146443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOrigLhs = pNew->pLeft->x.pList;
146194 146444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=iEq; i<pLoop->nLTerm; i++){
146195 146445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i]->pExpr==pX ){
146196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iField = pLoop->aLTerm[i]->u.x.iField - 1;
146446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iField;
146447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pLoop->aLTerm[i]->eOperator & (WO_OR|WO_AND))==0 );
146448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iField = pLoop->aLTerm[i]->u.x.iField - 1;
146197 146449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrigRhs->a[iField].pExpr==0 ) continue; /* Duplicate PK column */
146198 146450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRhs = sqlite3ExprListAppend(pParse, pRhs, pOrigRhs->a[iField].pExpr);
146199 146451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrigRhs->a[iField].pExpr = 0;
146200 146452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrigLhs->a[iField].pExpr!=0 );
146201 146453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLhs = sqlite3ExprListAppend(pParse, pLhs, pOrigLhs->a[iField].pExpr);
@@ -146306,11 +146558,11 @@
146306 146558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLoop->aLTerm[i]!=0 );
146307 146559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->aLTerm[i]->pExpr==pX ) nEq++;
146308 146560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146309 146561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146310 146562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTab = 0;
146311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pX->flags & EP_xIsSelect)==0 || pX->x.pSelect->pEList->nExpr==1 ){
146563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !ExprUseXSelect(pX) || pX->x.pSelect->pEList->nExpr==1 ){
146312 146564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, 0, &iTab);
146313 146565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
146314 146566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db = pParse->db;
146315 146567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pX = removeUnindexableInClauseTerms(pParse, iEq, pLoop, pX);
146316 146568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -146328,12 +146580,12 @@
146328 146580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bRev = !bRev;
146329 146581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146330 146582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, bRev ? OP_Last : OP_Rewind, iTab, 0);
146331 146583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, bRev);
146332 146584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverageIf(v, !bRev);
146585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
146333 146586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 );
146334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
146335 146587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLoop->wsFlags |= WHERE_IN_ABLE;
146336 146588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLevel->u.in.nIn==0 ){
146337 146589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->addrNxt = sqlite3VdbeMakeLabel(pParse);
146338 146590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146339 146591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iEq>0 && (pLoop->wsFlags & WHERE_IN_SEEKSCAN)==0 ){
@@ -146871,21 +147123,23 @@
146871 147123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
146872 147124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void codeExprOrVector(Parse *pParse, Expr *p, int iReg, int nReg){
146873 147125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nReg>0 );
146874 147126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p && sqlite3ExprIsVector(p) ){
146875 147127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SUBQUERY
146876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (p->flags & EP_xIsSelect) ){
147128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(p) ){
146877 147129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = pParse->pVdbe;
146878 147130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iSelect;
146879 147131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->op==TK_SELECT );
146880 147132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iSelect = sqlite3CodeSubselect(pParse, p);
146881 147133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Copy, iSelect, iReg, nReg-1);
146882 147134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
146883 147135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
146884 147136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
146885 147137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
146886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pList = p->x.pList;
147138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const ExprList *pList;
147139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(p) );
147140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pList = p->x.pList;
146887 147141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nReg<=pList->nExpr );
146888 147142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<nReg; i++){
146889 147143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCode(pParse, pList->a[i].pExpr, iReg+i);
146890 147144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146891 147145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -146934,14 +147188,14 @@
146934 147188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preserveExpr(pX, pExpr);
146935 147189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->affExpr = sqlite3ExprAffinity(pExpr);
146936 147190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_COLUMN;
146937 147191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pX->iIdxCur;
146938 147192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn = pX->iIdxCol;
146939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pExpr->y.pTab = 0;
146940 147193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( ExprHasProperty(pExpr, EP_Skip) );
146941 147194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( ExprHasProperty(pExpr, EP_Unlikely) );
146942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprClearProperty(pExpr, EP_Skip|EP_Unlikely);
147195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprClearProperty(pExpr, EP_Skip|EP_Unlikely|EP_WinFunc|EP_Subrtn);
147196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr->y.pTab = 0;
146943 147197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Prune;
146944 147198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
146945 147199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
146946 147200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
146947 147201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -146952,11 +147206,11 @@
146952 147206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
146953 147207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int whereIndexExprTransColumn(Walker *p, Expr *pExpr){
146954 147208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_COLUMN ){
146955 147209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
IdxExprTrans *pX = p->u.pIdxTrans;
146956 147210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->iTable==pX->iTabCur && pExpr->iColumn==pX->iTabCol ){
146957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pExpr->y.pTab!=0 );
147211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pExpr) && pExpr->y.pTab!=0 );
146958 147212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
preserveExpr(pX, pExpr);
146959 147213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->affExpr = sqlite3TableColumnAffinity(pExpr->y.pTab,pExpr->iColumn);
146960 147214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iTable = pX->iIdxCur;
146961 147215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->iColumn = pX->iIdxCol;
146962 147216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->y.pTab = 0;
@@ -147189,11 +147443,16 @@
147189 147443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the u.vtab.idxStr. NULL it out to prevent a use-after-free */
147190 147444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ) pLoop->u.vtab.idxStr = 0;
147191 147445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p1 = iCur;
147192 147446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->op = pWInfo->eOnePass ? OP_Noop : OP_VNext;
147193 147447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLevel->p2 = sqlite3VdbeCurrentAddr(v);
147194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iIn = pLevel->u.in.nIn;
147448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 );
147449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pLoop->wsFlags & WHERE_IN_ABLE ){
147450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iIn = pLevel->u.in.nIn;
147451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
147452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iIn = 0;
147453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
147195 147454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=nConstraint-1; j>=0; j--){
147196 147455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm = pLoop->aLTerm[j];
147197 147456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTerm->eOperator & WO_IN)!=0 ) iIn--;
147198 147457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j<16 && (pLoop->u.vtab.omitMask>>j)&1 ){
147199 147458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
disableTerm(pLevel, pTerm);
@@ -148078,11 +148337,14 @@
148078 148337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148079 148338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pDelete);
148080 148339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148081 148340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148082 148341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExplainQueryPlanPop(pParse);
148083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pLevel->u.pCovidx = pCov;
148342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pLevel->pWLoop==pLoop );
148343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pLoop->wsFlags & WHERE_MULTI_OR)!=0 );
148344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pLoop->wsFlags & WHERE_IN_ABLE)==0 );
148345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLevel->u.pCoveringIdx = pCov;
148084 148346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCov ) pLevel->iIdxCur = iCovCur;
148085 148347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAndExpr ){
148086 148348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pAndExpr->pLeft = 0;
148087 148349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pAndExpr);
148088 148350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -148222,16 +148484,17 @@
148222 148484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereTermPrint(pTerm, pWC->nTerm-j);
148223 148485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148224 148486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
148225 148487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pE, EP_FromJoin) );
148226 148488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pTerm->prereqRight & pLevel->notReady)!=0 );
148489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
148227 148490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pAlt = sqlite3WhereFindTerm(pWC, iCur, pTerm->u.x.leftColumn, notReady,
148228 148491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WO_EQ|WO_IN|WO_IS, 0);
148229 148492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAlt==0 ) continue;
148230 148493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAlt->wtFlags & (TERM_CODED) ) continue;
148231 148494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pAlt->eOperator & WO_IN)
148232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (pAlt->pExpr->flags & EP_xIsSelect)
148495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ExprUseXSelect(pAlt->pExpr)
148233 148496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pAlt->pExpr->x.pSelect->pEList->nExpr>1)
148234 148497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
148235 148498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
148236 148499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148237 148500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pAlt->eOperator & WO_EQ );
@@ -148476,10 +148739,11 @@
148476 148739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
148477 148740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148478 148741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_EBCDIC
148479 148742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *pnoCase ) return 0;
148480 148743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
148744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
148481 148745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pList = pExpr->x.pList;
148482 148746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeft = pList->a[1].pExpr;
148483 148747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148484 148748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRight = sqlite3ExprSkipCollate(pList->a[0].pExpr);
148485 148749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = pRight->op;
@@ -148491,11 +148755,12 @@
148491 148755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = sqlite3_value_text(pVal);
148492 148756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148493 148757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetVarmask(pParse->pVdbe, iCol);
148494 148758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRight->op==TK_VARIABLE || pRight->op==TK_REGISTER );
148495 148759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( op==TK_STRING ){
148496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- z = (u8*)pRight->u.zToken;
148760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pRight, EP_IntValue) );
148761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = (u8*)pRight->u.zToken;
148497 148762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148498 148763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z ){
148499 148764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148500 148765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Count the number of prefix characters prior to the first wildcard */
148501 148766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt = 0;
@@ -148520,11 +148785,13 @@
148520 148785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148521 148786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Get the pattern prefix. Remove all escapes from the prefix. */
148522 148787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPrefix = sqlite3Expr(db, TK_STRING, (char*)z);
148523 148788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPrefix ){
148524 148789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iFrom, iTo;
148525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zNew = pPrefix->u.zToken;
148790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zNew;
148791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pPrefix, EP_IntValue) );
148792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zNew = pPrefix->u.zToken;
148526 148793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zNew[cnt] = 0;
148527 148794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iFrom=iTo=0; iFrom<cnt; iFrom++){
148528 148795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zNew[iFrom]==wc[3] ) iFrom++;
148529 148796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zNew[iTo++] = zNew[iFrom];
148530 148797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -148544,11 +148811,13 @@
148544 148811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2019-06-14 https://sqlite.org/src/info/ce8717f0885af975
148545 148812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 2019-09-03 https://sqlite.org/src/info/0f0428096f17252a
148546 148813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
148547 148814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLeft->op!=TK_COLUMN
148548 148815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| sqlite3ExprAffinity(pLeft)!=SQLITE_AFF_TEXT
148549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || (pLeft->y.pTab && IsVirtual(pLeft->y.pTab)) /* Might be numeric */
148816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (ALWAYS( ExprUseYTab(pLeft) )
148817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pLeft->y.pTab
148818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && IsVirtual(pLeft->y.pTab)) /* Might be numeric */
148550 148819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
148551 148820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isNum;
148552 148821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double rDummy;
148553 148822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
148554 148823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isNum<=0 ){
@@ -148572,10 +148841,11 @@
148572 148841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the RHS pattern is a bound parameter, make arrangements to
148573 148842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** reprepare the statement when that parameter is rebound */
148574 148843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_VARIABLE ){
148575 148844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Vdbe *v = pParse->pVdbe;
148576 148845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetVarmask(v, pRight->iColumn);
148846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pRight, EP_IntValue) );
148577 148847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *pisComplete && pRight->u.zToken[1] ){
148578 148848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the rhs of the LIKE expression is a variable, and the current
148579 148849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** value of the variable means there is no need to invoke the LIKE
148580 148850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function, then no OP_Variable will be added to the program.
148581 148851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This causes problems for the sqlite3_bind_parameter_name()
@@ -148645,10 +148915,11 @@
148645 148915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
148646 148916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pList;
148647 148917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pCol; /* Column reference */
148648 148918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
148649 148919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
148920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
148650 148921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pList = pExpr->x.pList;
148651 148922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pList==0 || pList->nExpr!=2 ){
148652 148923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
148653 148924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148654 148925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -148658,13 +148929,15 @@
148658 148929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
148659 148930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** vtab_column MATCH expression
148660 148931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** MATCH(expression,vtab_column)
148661 148932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
148662 148933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol = pList->a[1].pExpr;
148934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pCol->op!=TK_COLUMN || ExprUseYTab(pCol) );
148663 148935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
148664 148936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprIsVtab(pCol) ){
148665 148937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<ArraySize(aOp); i++){
148938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
148666 148939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
148667 148940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*peOp2 = aOp[i].eOp2;
148668 148941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppRight = pList->a[0].pExpr;
148669 148942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppLeft = pCol;
148670 148943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
@@ -148681,20 +148954,22 @@
148681 148954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Historically, xFindFunction expected to see lower-case function
148682 148955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** names. But for this use case, xFindFunction is expected to deal
148683 148956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with function names in an arbitrary case.
148684 148957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
148685 148958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol = pList->a[0].pExpr;
148959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pCol->op!=TK_COLUMN || ExprUseYTab(pCol) );
148686 148960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
148687 148961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprIsVtab(pCol) ){
148688 148962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_vtab *pVtab;
148689 148963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_module *pMod;
148690 148964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void (*xNotUsed)(sqlite3_context*,int,sqlite3_value**);
148691 148965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pNotUsed;
148692 148966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVtab = sqlite3GetVTable(db, pCol->y.pTab)->pVtab;
148693 148967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pVtab!=0 );
148694 148968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pVtab->pModule!=0 );
148695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pMod = (sqlite3_module *)pVtab->pModule;
148969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
148970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pMod = (sqlite3_module *)pVtab->pModule;
148696 148971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pMod->xFindFunction!=0 ){
148697 148972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i = pMod->xFindFunction(pVtab,2, pExpr->u.zToken, &xNotUsed, &pNotUsed);
148698 148973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i>=SQLITE_INDEX_CONSTRAINT_FUNCTION ){
148699 148974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*peOp2 = i;
148700 148975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppRight = pList->a[1].pExpr;
@@ -148705,14 +148980,16 @@
148705 148980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148706 148981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pExpr->op==TK_NE || pExpr->op==TK_ISNOT || pExpr->op==TK_NOTNULL ){
148707 148982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int res = 0;
148708 148983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLeft = pExpr->pLeft;
148709 148984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRight = pExpr->pRight;
148985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pLeft->op!=TK_COLUMN || ExprUseYTab(pLeft) );
148710 148986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pLeft->op==TK_COLUMN && pLeft->y.pTab==0 );
148711 148987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprIsVtab(pLeft) ){
148712 148988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res++;
148713 148989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
148990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRight==0 || pRight->op!=TK_COLUMN || ExprUseYTab(pRight) );
148714 148991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pRight && pRight->op==TK_COLUMN && pRight->y.pTab==0 );
148715 148992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRight && ExprIsVtab(pRight) ){
148716 148993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
res++;
148717 148994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SWAP(Expr*, pLeft, pRight);
148718 148995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -148961,10 +149238,11 @@
148961 149238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j;
148962 149239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Bitmask b = 0;
148963 149240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrTerm->u.pAndInfo = pAndInfo;
148964 149241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrTerm->wtFlags |= TERM_ANDINFO;
148965 149242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrTerm->eOperator = WO_AND;
149243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pOrTerm->leftCursor = -1;
148966 149244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pAndWC = &pAndInfo->wc;
148967 149245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(pAndWC->aStatic, 0, sizeof(pAndWC->aStatic));
148968 149246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereClauseInit(pAndWC, pWC->pWInfo);
148969 149247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereSplit(pAndWC, pOrTerm->pExpr, TK_AND);
148970 149248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereExprAnalyze(pSrc, pAndWC);
@@ -149003,15 +149281,14 @@
149003 149281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
149004 149282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Record the set of tables that satisfy case 3. The set might be
149005 149283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** empty.
149006 149284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
149007 149285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrInfo->indexable = indexable;
149286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTerm->eOperator = WO_OR;
149287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTerm->leftCursor = -1;
149008 149288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( indexable ){
149009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTerm->eOperator = WO_OR;
149010 149289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWC->hasOr = 1;
149011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
149012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTerm->eOperator = WO_OR;
149013 149290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149014 149291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149015 149292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* For a two-way OR, attempt to implementation case 2.
149016 149293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
149017 149294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( indexable && pOrWc->nTerm==2 ){
@@ -149080,10 +149357,11 @@
149080 149357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pOrTerm->wtFlags & TERM_COPIED );
149081 149358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pOrTerm->wtFlags & TERM_VIRTUAL );
149082 149359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrTerm->wtFlags & (TERM_COPIED|TERM_VIRTUAL) );
149083 149360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
149084 149361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pOrTerm->eOperator & (WO_OR|WO_AND))==0 );
149085 149363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iColumn = pOrTerm->u.x.leftColumn;
149086 149364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCursor = pOrTerm->leftCursor;
149087 149365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeft = pOrTerm->pExpr->pLeft;
149088 149366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
149089 149367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -149100,10 +149378,11 @@
149100 149378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* We have found a candidate table and column. Check to see if that
149101 149379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table and column is common to every term in the OR clause */
149102 149380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
okToChngToIN = 1;
149103 149381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(; i>=0 && okToChngToIN; i--, pOrTerm++){
149104 149382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrTerm->eOperator & WO_EQ );
149383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pOrTerm->eOperator & (WO_OR|WO_AND))==0 );
149105 149384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOrTerm->leftCursor!=iCursor ){
149106 149385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrTerm->wtFlags &= ~TERM_OR_OK;
149107 149386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pOrTerm->u.x.leftColumn!=iColumn || (iColumn==XN_EXPR
149108 149387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3ExprCompare(pParse, pOrTerm->pExpr->pLeft, pLeft, -1)
149109 149388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
)){
@@ -149136,10 +149415,11 @@
149136 149415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pNew; /* The complete IN operator */
149137 149416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149138 149417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=pOrWc->nTerm-1, pOrTerm=pOrWc->a; i>=0; i--, pOrTerm++){
149139 149418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pOrTerm->wtFlags & TERM_OR_OK)==0 ) continue;
149140 149419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrTerm->eOperator & WO_EQ );
149420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pOrTerm->eOperator & (WO_OR|WO_AND))==0 );
149141 149421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrTerm->leftCursor==iCursor );
149142 149422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrTerm->u.x.leftColumn==iColumn );
149143 149423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDup = sqlite3ExprDup(db, pOrTerm->pExpr->pRight, 0);
149144 149424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pList = sqlite3ExprListAppend(pWInfo->pParse, pList, pDup);
149145 149425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeft = pOrTerm->pExpr->pLeft;
@@ -149148,11 +149428,11 @@
149148 149428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDup = sqlite3ExprDup(db, pLeft, 0);
149149 149429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = sqlite3PExpr(pParse, TK_IN, pDup, 0);
149150 149430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew ){
149151 149431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idxNew;
149152 149432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
transferJoinMarkings(pNew, pExpr);
149153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( !ExprHasProperty(pNew, EP_xIsSelect) );
149433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pNew) );
149154 149434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->x.pList = pList;
149155 149435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idxNew = whereClauseInsert(pWC, pNew, TERM_VIRTUAL|TERM_DYNAMIC);
149156 149436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( idxNew==0 );
149157 149437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exprAnalyze(pSrc, pWC, idxNew);
149158 149438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pTerm = &pWC->a[idxTerm]; // would be needed if pTerm where reused */
@@ -149276,10 +149556,11 @@
149276 149556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** on the first element of the vector. */
149277 149557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_GT+1==TK_LE && TK_GT+2==TK_LT && TK_GT+3==TK_GE );
149278 149558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( TK_IS<TK_GE && TK_ISNULL<TK_GE && TK_IN<TK_GE );
149279 149559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( op<=TK_GE );
149280 149560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_VECTOR && (op>=TK_GT && ALWAYS(op<=TK_GE)) ){
149561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
149281 149562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr = pExpr->x.pList->a[0].pExpr;
149282 149563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149283 149564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149284 149565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149285 149566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_COLUMN ){
@@ -149342,11 +149623,11 @@
149342 149623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
prereqLeft = sqlite3WhereExprUsage(pMaskSet, pExpr->pLeft);
149343 149624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = pExpr->op;
149344 149625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_IN ){
149345 149626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->pRight==0 );
149346 149627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3ExprCheckIN(pParse, pExpr) ) return;
149347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
149628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
149348 149629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->prereqRight = exprSelectUsage(pMaskSet, pExpr->x.pSelect);
149349 149630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
149350 149631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->prereqRight = sqlite3WhereExprListUsage(pMaskSet, pExpr->x.pList);
149351 149632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149352 149633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( op==TK_ISNULL ){
@@ -149378,15 +149659,17 @@
149378 149659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 opMask = (pTerm->prereqRight & prereqLeft)==0 ? WO_ALL : WO_EQUIV;
149379 149660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149380 149661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->u.x.iField>0 ){
149381 149662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( op==TK_IN );
149382 149663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLeft->op==TK_VECTOR );
149664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pLeft) );
149383 149665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeft = pLeft->x.pList->a[pTerm->u.x.iField-1].pExpr;
149384 149666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149385 149667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149386 149668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( exprMightBeIndexed(pSrc, prereqLeft, aiCurCol, pLeft, op) ){
149387 149669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->leftCursor = aiCurCol[0];
149670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
149388 149671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->u.x.leftColumn = aiCurCol[1];
149389 149672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->eOperator = operatorMask(op) & opMask;
149390 149673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149391 149674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_IS ) pTerm->wtFlags |= TERM_IS;
149392 149675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRight
@@ -149420,10 +149703,11 @@
149420 149703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDup = pExpr;
149421 149704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = pTerm;
149422 149705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149423 149706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->wtFlags |= exprCommute(pParse, pDup);
149424 149707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->leftCursor = aiCurCol[0];
149708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
149425 149709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->u.x.leftColumn = aiCurCol[1];
149426 149710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( (prereqLeft | extraRight) != prereqLeft );
149427 149711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->prereqRight = prereqLeft | extraRight;
149428 149712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->prereqAll = prereqAll;
149429 149713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->eOperator = (operatorMask(pDup->op) + eExtraOp) & opMask;
@@ -149430,10 +149714,11 @@
149430 149714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
149431 149715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_ISNULL
149432 149716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !ExprHasProperty(pExpr,EP_FromJoin)
149433 149717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& 0==sqlite3ExprCanBeNull(pLeft)
149434 149718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
149719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
149435 149720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->op = TK_TRUEFALSE;
149436 149721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pExpr->u.zToken = "false";
149437 149722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprSetProperty(pExpr, EP_IsFalse);
149438 149723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->prereqAll = 0;
149439 149724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->eOperator = 0;
@@ -149455,13 +149740,15 @@
149455 149740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** term. That means that if the BETWEEN term is coded, the children are
149456 149741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** skipped. Or, if the children are satisfied by an index, the original
149457 149742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** BETWEEN term is skipped.
149458 149743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
149459 149744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else if( pExpr->op==TK_BETWEEN && pWC->op==TK_AND ){
149460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pList = pExpr->x.pList;
149745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pList;
149461 149746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
149462 149747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const u8 ops[] = {TK_GE, TK_LE};
149748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
149749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pList = pExpr->x.pList;
149463 149750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pList!=0 );
149464 149751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pList->nExpr==2 );
149465 149752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<2; i++){
149466 149753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pNewExpr;
149467 149754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idxNew;
@@ -149550,12 +149837,16 @@
149550 149837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idxNew1;
149551 149838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idxNew2;
149552 149839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zCollSeqName; /* Name of collating sequence */
149553 149840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const u16 wtFlags = TERM_LIKEOPT | TERM_VIRTUAL | TERM_DYNAMIC;
149554 149841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pExpr) );
149555 149843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeft = pExpr->x.pList->a[1].pExpr;
149556 149844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pStr2 = sqlite3ExprDup(db, pStr1, 0);
149845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pStr1==0 || !ExprHasProperty(pStr1, EP_IntValue) );
149846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pStr2==0 || !ExprHasProperty(pStr2, EP_IntValue) );
149847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
149557 149848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
149558 149849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Convert the lower bound to upper-case and the upper bound to
149559 149850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** lower-case (upper-case is less than lower-case in ASCII) so that
149560 149851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the range constraints also work for BLOBs
149561 149852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -149651,10 +149942,11 @@
149651 149942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not use window functions.
149652 149943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
149653 149944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
else if( pExpr->op==TK_IN
149654 149945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pTerm->u.x.iField==0
149655 149946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pExpr->pLeft->op==TK_VECTOR
149947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ALWAYS( ExprUseXSelect(pExpr) )
149656 149948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pExpr->x.pSelect->pPrior==0
149657 149949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
149658 149950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pExpr->x.pSelect->pWin==0
149659 149951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
149660 149952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pWC->op==TK_AND
@@ -149814,18 +150106,19 @@
149814 150106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mask = (p->op==TK_IF_NULL_ROW) ? sqlite3WhereGetMask(pMaskSet, p->iTable) : 0;
149815 150107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pLeft ) mask |= sqlite3WhereExprUsageNN(pMaskSet, p->pLeft);
149816 150108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->pRight ){
149817 150109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mask |= sqlite3WhereExprUsageNN(pMaskSet, p->pRight);
149818 150110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->x.pList==0 );
149819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( ExprHasProperty(p, EP_xIsSelect) ){
150111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( ExprUseXSelect(p) ){
149820 150112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(p, EP_VarSelect) ) pMaskSet->bVarSelect = 1;
149821 150113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mask |= exprSelectUsage(pMaskSet, p->x.pSelect);
149822 150114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->x.pList ){
149823 150115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mask |= sqlite3WhereExprListUsage(pMaskSet, p->x.pList);
149824 150116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149825 150117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_WINDOWFUNC
149826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (p->op==TK_FUNCTION || p->op==TK_AGG_FUNCTION) && p->y.pWin ){
150118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (p->op==TK_FUNCTION || p->op==TK_AGG_FUNCTION) && ExprUseYWin(p) ){
150119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->y.pWin!=0 );
149827 150120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mask |= sqlite3WhereExprListUsage(pMaskSet, p->y.pWin->pPartition);
149828 150121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mask |= sqlite3WhereExprListUsage(pMaskSet, p->y.pWin->pOrderBy);
149829 150122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mask |= sqlite3WhereExprUsage(pMaskSet, p->y.pWin->pFilter);
149830 150123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149831 150124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -149896,10 +150189,11 @@
149896 150189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
149897 150190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColRef = sqlite3ExprAlloc(pParse->db, TK_COLUMN, 0, 0);
149898 150191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pColRef==0 ) return;
149899 150192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColRef->iTable = pItem->iCursor;
149900 150193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColRef->iColumn = k++;
150194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseYTab(pColRef) );
149901 150195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColRef->y.pTab = pTab;
149902 150196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRhs = sqlite3PExpr(pParse, TK_UPLUS,
149903 150197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDup(pParse->db, pArgs->a[j].pExpr, 0), 0);
149904 150198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm = sqlite3PExpr(pParse, TK_EQ, pColRef, pRhs);
149905 150199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pItem->fg.jointype & JT_LEFT ){
@@ -150197,12 +150491,14 @@
150197 150491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWC = pScan->pWC;
150198 150492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while(1){
150199 150493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iColumn = pScan->aiColumn[pScan->iEquiv-1];
150200 150494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCur = pScan->aiCur[pScan->iEquiv-1];
150201 150495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWC!=0 );
150496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( iCur>=0 );
150202 150497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
150203 150498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pTerm=pWC->a+k; k<pWC->nTerm; k++, pTerm++){
150499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 || pTerm->leftCursor<0 );
150204 150500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->leftCursor==iCur
150205 150501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pTerm->u.x.leftColumn==iColumn
150206 150502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (iColumn!=XN_EXPR
150207 150503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| sqlite3ExprCompareSkip(pTerm->pExpr->pLeft,
150208 150504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pScan->pIdxExpr,iCur)==0)
@@ -150638,10 +150934,11 @@
150638 150934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the RHS of a LEFT JOIN. Such a term can only be used if it is from
150639 150935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the ON clause. */
150640 150936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
150641 150937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
150642 150938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTerm->prereqRight & notReady)!=0 ) return 0;
150939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
150643 150940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->u.x.leftColumn<0 ) return 0;
150644 150941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aff = pSrc->pTab->aCol[pTerm->u.x.leftColumn].affinity;
150645 150942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !sqlite3IndexAffinityOk(pTerm->pExpr, aff) ) return 0;
150646 150943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->pExpr->op==TK_IS );
150647 150944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
@@ -150710,12 +151007,15 @@
150710 151007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3ExprIsTableConstant(pExpr, pSrc->iCursor) ){
150711 151008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPartial = sqlite3ExprAnd(pParse, pPartial,
150712 151009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDup(pParse->db, pExpr, 0));
150713 151010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
150714 151011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( termCanDriveIndex(pTerm, pSrc, notReady) ){
150715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iCol = pTerm->u.x.leftColumn;
150716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Bitmask cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
151012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iCol;
151013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Bitmask cMask;
151014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
151015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iCol = pTerm->u.x.leftColumn;
151016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
150717 151017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iCol==BMS );
150718 151018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iCol==BMS-1 );
150719 151019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !sentWarning ){
150720 151020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_log(SQLITE_WARNING_AUTOINDEX,
150721 151021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"automatic index on %s(%s)", pTable->zName,
@@ -150763,12 +151063,15 @@
150763 151063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx->pTable = pTable;
150764 151064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = 0;
150765 151065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idxCols = 0;
150766 151066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pTerm=pWC->a; pTerm<pWCEnd; pTerm++){
150767 151067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( termCanDriveIndex(pTerm, pSrc, notReady) ){
150768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iCol = pTerm->u.x.leftColumn;
150769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Bitmask cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
151068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iCol;
151069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Bitmask cMask;
151070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
151071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iCol = pTerm->u.x.leftColumn;
151072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
150770 151073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iCol==BMS-1 );
150771 151074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( iCol==BMS );
150772 151075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (idxCols & cMask)==0 ){
150773 151076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pX = pTerm->pExpr;
150774 151077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
idxCols |= cMask;
@@ -150891,10 +151194,11 @@
150891 151194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->eOperator & WO_ISNULL );
150892 151195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->eOperator & WO_IS );
150893 151196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pTerm->eOperator & WO_ALL );
150894 151197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTerm->eOperator & ~(WO_EQUIV))==0 ) continue;
150895 151198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->wtFlags & TERM_VNULL ) continue;
151199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
150896 151200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTerm->u.x.leftColumn>=(-1) );
150897 151201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nTerm++;
150898 151202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
150899 151203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
150900 151204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the ORDER BY clause contains only columns in the current
@@ -150951,10 +151255,11 @@
150951 151255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pSrc->fg.jointype & JT_LEFT)!=0
150952 151256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !ExprHasProperty(pTerm->pExpr, EP_FromJoin)
150953 151257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
150954 151258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
150955 151259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
150956 151261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTerm->u.x.leftColumn>=(-1) );
150957 151262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxCons[j].iColumn = pTerm->u.x.leftColumn;
150958 151263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdxCons[j].iTermOffset = i;
150959 151264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
op = pTerm->eOperator & WO_ALL;
150960 151265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==WO_IN ) op = WO_EQ;
@@ -151714,10 +152019,11 @@
151714 152019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->wtFlags & TERM_VIRTUAL ) zType[0] = 'V';
151715 152020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->eOperator & WO_EQUIV ) zType[1] = 'E';
151716 152021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) zType[2] = 'L';
151717 152022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->wtFlags & TERM_CODED ) zType[3] = 'C';
151718 152023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->eOperator & WO_SINGLE ){
152024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
151719 152025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zLeft),zLeft,"left={%d:%d}",
151720 152026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->leftCursor, pTerm->u.x.leftColumn);
151721 152027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( (pTerm->eOperator & WO_OR)!=0 && pTerm->u.pOrInfo!=0 ){
151722 152028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zLeft),zLeft,"indexable=0x%llx",
151723 152029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->u.pOrInfo->indexable);
@@ -151731,11 +152037,11 @@
151731 152037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** shown about each Term */
151732 152038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3WhereTrace & 0x10000 ){
151733 152039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf(" prob=%-3d prereq=%llx,%llx",
151734 152040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTerm->truthProb, (u64)pTerm->prereqAll, (u64)pTerm->prereqRight);
151735 152041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTerm->u.x.iField ){
152042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pTerm->eOperator & (WO_OR|WO_AND))==0 && pTerm->u.x.iField ){
151737 152043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf(" iField=%d", pTerm->u.x.iField);
151738 152044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151739 152045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTerm->iParent>=0 ){
151740 152046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf(" iParent=%d", pTerm->iParent);
151741 152047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -151895,11 +152201,12 @@
151895 152201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){
151896 152202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
151897 152203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWInfo!=0 );
151898 152204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pWInfo->nLevel; i++){
151899 152205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLevel *pLevel = &pWInfo->a[i];
151900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pLevel->pWLoop && (pLevel->pWLoop->wsFlags & WHERE_IN_ABLE) ){
152206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pLevel->pWLoop && (pLevel->pWLoop->wsFlags & WHERE_IN_ABLE)!=0 ){
152207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (pLevel->pWLoop->wsFlags & WHERE_MULTI_OR)==0 );
151901 152208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pLevel->u.in.aInLoop);
151902 152209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151903 152210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151904 152211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WhereClauseClear(&pWInfo->sWC);
151905 152212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( pWInfo->pLoops ){
@@ -152330,13 +152637,16 @@
152330 152637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Test if comparison i of pTerm is compatible with column (i+nEq)
152331 152638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the index. If not, exit the loop. */
152332 152639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char aff; /* Comparison affinity */
152333 152640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char idxaff = 0; /* Indexed columns affinity */
152334 152641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CollSeq *pColl; /* Comparison collation sequence */
152335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *pLhs = pTerm->pExpr->pLeft->x.pList->a[i].pExpr;
152336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *pRhs = pTerm->pExpr->pRight;
152337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pRhs->flags & EP_xIsSelect ){
152642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pLhs, *pRhs;
152643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
152644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pTerm->pExpr->pLeft) );
152645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLhs = pTerm->pExpr->pLeft->x.pList->a[i].pExpr;
152646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRhs = pTerm->pExpr->pRight;
152647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pRhs) ){
152338 152648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRhs = pRhs->x.pSelect->pEList->a[i].pExpr;
152339 152649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
152340 152650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRhs = pRhs->x.pList->a[i].pExpr;
152341 152651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
152342 152652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -152493,11 +152803,11 @@
152493 152803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| (pNew->wsFlags & WHERE_SKIPSCAN)!=0
152494 152804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
152495 152805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152496 152806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eOp & WO_IN ){
152497 152807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pTerm->pExpr;
152498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
152808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprUseXSelect(pExpr) ){
152499 152809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* "x IN (SELECT ...)": TUNING: the SELECT returns 25 rows */
152500 152810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
152501 152811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nIn = 46; assert( 46==sqlite3LogEst(25) );
152502 152812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152503 152813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The expression may actually be of the form (x, y) IN (SELECT...).
@@ -152634,11 +152944,11 @@
152634 152944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STAT4
152635 152945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tRowcnt nOut = 0;
152636 152946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nInMul==0
152637 152947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pProbe->nSample
152638 152948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& ALWAYS(pNew->u.btree.nEq<=pProbe->nSampleCol)
152639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && ((eOp & WO_IN)==0 || !ExprHasProperty(pTerm->pExpr, EP_xIsSelect))
152949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && ((eOp & WO_IN)==0 || ExprUseXList(pTerm->pExpr))
152640 152950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& OptimizationEnabled(db, SQLITE_Stat4)
152641 152951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
152642 152952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pTerm->pExpr;
152643 152953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (eOp & (WO_EQ|WO_ISNULL|WO_IS))!=0 ){
152644 152954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( eOp & WO_EQ );
@@ -152910,10 +153220,11 @@
152910 153220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = pSrc->pTab;
152911 153221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWC = pBuilder->pWC;
152912 153222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !IsVirtual(pSrc->pTab) );
152913 153223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152914 153224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pSrc->fg.isIndexedBy ){
153225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pSrc->fg.isCte==0 );
152915 153226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* An INDEXED BY clause specifies a particular index to use */
152916 153227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pProbe = pSrc->u2.pIBIndex;
152917 153228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( !HasRowid(pTab) ){
152918 153229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pProbe = pTab->pIndex;
152919 153230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -155380,11 +155691,11 @@
155380 155691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrSeek ) sqlite3VdbeJumpHere(v, addrSeek);
155381 155692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
155382 155693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
155383 155694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, pLevel->addrCont);
155384 155695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
155385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pLoop->wsFlags & WHERE_IN_ABLE && pLevel->u.in.nIn>0 ){
155696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pLoop->wsFlags & WHERE_IN_ABLE)!=0 && pLevel->u.in.nIn>0 ){
155386 155697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct InLoop *pIn;
155387 155698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int j;
155388 155699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeResolveLabel(v, pLevel->addrNxt);
155389 155700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=pLevel->u.in.nIn, pIn=&pLevel->u.in.aInLoop[j-1]; j>0; j--, pIn--){
155390 155701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3VdbeGetOp(v, pIn->addrInTop+1)->opcode==OP_IsNull
@@ -155449,14 +155760,14 @@
155449 155760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (ws & WHERE_IDX_ONLY)==0 ){
155450 155761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLevel->iTabCur==pTabList->a[pLevel->iFrom].iCursor );
155451 155762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_NullRow, pLevel->iTabCur);
155452 155763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
155453 155764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (ws & WHERE_INDEXED)
155454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- || ((ws & WHERE_MULTI_OR) && pLevel->u.pCovidx)
155765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || ((ws & WHERE_MULTI_OR) && pLevel->u.pCoveringIdx)
155455 155766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
155456 155767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ws & WHERE_MULTI_OR ){
155457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Index *pIx = pLevel->u.pCovidx;
155768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Index *pIx = pLevel->u.pCoveringIdx;
155458 155769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDb = sqlite3SchemaToIndex(db, pIx->pSchema);
155459 155770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_ReopenIdx, pLevel->iIdxCur, pIx->tnum, iDb);
155460 155771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetP4KeyInfo(pParse, pIx);
155461 155772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
155462 155773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp1(v, OP_NullRow, pLevel->iIdxCur);
@@ -155533,11 +155844,11 @@
155533 155844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** reference the index.
155534 155845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
155535 155846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLoop->wsFlags & (WHERE_INDEXED|WHERE_IDX_ONLY) ){
155536 155847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pIdx = pLoop->u.btree.pIndex;
155537 155848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pLoop->wsFlags & WHERE_MULTI_OR ){
155538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pIdx = pLevel->u.pCovidx;
155849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIdx = pLevel->u.pCoveringIdx;
155539 155850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
155540 155851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIdx
155541 155852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& !db->mallocFailed
155542 155853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
155543 155854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo->eOnePass==ONEPASS_OFF || !HasRowid(pIdx->pTable) ){
@@ -156194,28 +156505,28 @@
156194 156505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void noopValueFunc(sqlite3_context *p){ UNUSED_PARAMETER(p); /*no-op*/ }
156195 156506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156196 156507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Window functions that use all window interfaces: xStep, xFinal,
156197 156508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** xValue, and xInverse */
156198 156509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WINDOWFUNCALL(name,nArg,extra) { \
156199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
156510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nArg, (SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
156200 156511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
name ## StepFunc, name ## FinalizeFunc, name ## ValueFunc, \
156201 156512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
name ## InvFunc, name ## Name, {0} \
156202 156513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156203 156514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156204 156515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Window functions that are implemented using bytecode and thus have
156205 156516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** no-op routines for their methods */
156206 156517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WINDOWFUNCNOOP(name,nArg,extra) { \
156207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
156518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nArg, (SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
156208 156519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
noopStepFunc, noopValueFunc, noopValueFunc, \
156209 156520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
noopStepFunc, name ## Name, {0} \
156210 156521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156211 156522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156212 156523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Window functions that use all window interfaces: xStep, the
156213 156524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** same routine for xFinalize and xValue and which never call
156214 156525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** xInverse. */
156215 156526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WINDOWFUNCX(name,nArg,extra) { \
156216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
156527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nArg, (SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
156217 156528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
name ## StepFunc, name ## ValueFunc, name ## ValueFunc, \
156218 156529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
noopStepFunc, name ## Name, {0} \
156219 156530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156220 156531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156221 156532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -156554,11 +156865,12 @@
156554 156865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
156555 156866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156556 156867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
156557 156868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int disallowAggregatesInOrderByCb(Walker *pWalker, Expr *pExpr){
156558 156869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_AGG_FUNCTION && pExpr->pAggInfo==0 ){
156559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ErrorMsg(pWalker->pParse,
156870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
156871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ErrorMsg(pWalker->pParse,
156560 156872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"misuse of aggregate: %s()", pExpr->u.zToken);
156561 156873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156562 156874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return WRC_Continue;
156563 156875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
156564 156876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -156642,11 +156954,13 @@
156642 156954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Append the arguments passed to each window function to the
156643 156955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sub-select expression list. Also allocate two registers for each
156644 156956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** window function - one for the accumulator, another for interim
156645 156957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** results. */
156646 156958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
156647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pArgs = pWin->pOwner->x.pList;
156959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pArgs;
156960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pWin->pOwner) );
156961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pArgs = pWin->pOwner->x.pList;
156648 156962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWin->pFunc->funcFlags & SQLITE_FUNC_SUBTYPE ){
156649 156963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
selectWindowRewriteEList(pParse, pMWin, pSrc, pArgs, pTab, &pSublist);
156650 156964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWin->iArgCol = (pSublist ? pSublist->nExpr : 0);
156651 156965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWin->bExprArgs = 1;
156652 156966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -157035,12 +157349,15 @@
157035 157349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
157036 157350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** regApp+0: slot to copy min()/max() argument to for MakeRecord
157037 157351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** regApp+1: integer value used to ensure keys are unique
157038 157352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** regApp+2: output of MakeRecord
157039 157353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
157040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pList = pWin->pOwner->x.pList;
157041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pList, 0, 0);
157354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ExprList *pList;
157355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ KeyInfo *pKeyInfo;
157356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pWin->pOwner) );
157357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pList = pWin->pOwner->x.pList;
157358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pList, 0, 0);
157042 157359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWin->csrApp = pParse->nTab++;
157043 157360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWin->regApp = pParse->nMem+1;
157044 157361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->nMem += 3;
157045 157362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pKeyInfo && pWin->pFunc->zName[1]=='i' ){
157046 157363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pKeyInfo->aSortFlags[0]==0 );
@@ -157124,11 +157441,13 @@
157124 157441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
157125 157442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the number of arguments passed to the window-function associated
157126 157443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with the object passed as the only argument to this function.
157127 157444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
157128 157445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int windowArgCount(Window *pWin){
157129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ExprList *pList = pWin->pOwner->x.pList;
157446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const ExprList *pList;
157447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pWin->pOwner) );
157448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pList = pWin->pOwner->x.pList;
157130 157449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (pList ? pList->nExpr : 0);
157131 157450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
157132 157451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
157133 157452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct WindowCodeArg WindowCodeArg;
157134 157453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct WindowCsrAndReg WindowCsrAndReg;
@@ -157309,10 +157628,11 @@
157309 157628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1-bInverse, 1);
157310 157629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pFunc->xSFunc!=noopStepFunc ){
157311 157630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrIf = 0;
157312 157631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWin->pFilter ){
157313 157632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regTmp;
157633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pWin->pOwner) );
157314 157634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWin->bExprArgs || !nArg ||nArg==pWin->pOwner->x.pList->nExpr );
157315 157635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pWin->bExprArgs || nArg ||pWin->pOwner->x.pList==0 );
157316 157636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regTmp = sqlite3GetTempReg(pParse);
157317 157637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+nArg,regTmp);
157318 157638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrIf = sqlite3VdbeAddOp3(v, OP_IfNot, regTmp, 0, 1);
@@ -157322,10 +157642,11 @@
157322 157642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
157323 157643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWin->bExprArgs ){
157324 157644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOp = sqlite3VdbeCurrentAddr(v);
157325 157645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEnd;
157326 157646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
157647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pWin->pOwner) );
157327 157648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nArg = pWin->pOwner->x.pList->nExpr;
157328 157649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regArg = sqlite3GetTempRange(pParse, nArg);
157329 157650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprCodeExprList(pParse, pWin->pOwner->x.pList, regArg, 0, 0);
157330 157651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
157331 157652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iEnd=sqlite3VdbeCurrentAddr(v); iOp<iEnd; iOp++){
@@ -157336,10 +157657,11 @@
157336 157657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
157337 157658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
157338 157659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL ){
157339 157660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CollSeq *pColl;
157340 157661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg>0 );
157662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pWin->pOwner) );
157341 157663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pColl = sqlite3ExprNNCollSeq(pParse, pWin->pOwner->x.pList->a[0].pExpr);
157342 157664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_CollSeq, 0,0,0, (const char*)pColl, P4_COLLSEQ);
157343 157665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
157344 157666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, bInverse? OP_AggInverse : OP_AggStep,
157345 157667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bInverse, regArg, pWin->regAccum);
@@ -157521,10 +157843,11 @@
157521 157843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse = p->pParse;
157522 157844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Window *pWin;
157523 157845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
157524 157846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
157525 157847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FuncDef *pFunc = pWin->pFunc;
157848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( ExprUseXList(pWin->pOwner) );
157526 157849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFunc->zName==nth_valueName
157527 157850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pFunc->zName==first_valueName
157528 157851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
157529 157852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int csr = pWin->csrApp;
157530 157853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int lbl = sqlite3VdbeMakeLabel(pParse);
@@ -158870,13 +159193,13 @@
158870 159193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->affExpr = 0;
158871 159194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->flags = EP_Leaf;
158872 159195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprClearVVAProperties(p);
158873 159196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iAgg = -1;
158874 159197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pLeft = p->pRight = 0;
158875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->x.pList = 0;
158876 159198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pAggInfo = 0;
158877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->y.pTab = 0;
159199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&p->x, 0, sizeof(p->x));
159200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&p->y, 0, sizeof(p->y));
158878 159201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->op2 = 0;
158879 159202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iTable = 0;
158880 159203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iColumn = 0;
158881 159204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->u.zToken = (char*)&p[1];
158882 159205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(p->u.zToken, t.z, t.n);
@@ -166966,11 +167289,13 @@
166966 167289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if this is not the last copy of the function, do not invoke it. Multiple
166967 167290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** copies of a single function are created when create_function() is called
166968 167291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with SQLITE_ANY as the encoding.
166969 167292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
166970 167293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void functionDestroy(sqlite3 *db, FuncDef *p){
166971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- FuncDestructor *pDestructor = p->u.pDestructor;
167294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FuncDestructor *pDestructor;
167295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (p->funcFlags & SQLITE_FUNC_BUILTIN)==0 );
167296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pDestructor = p->u.pDestructor;
166972 167297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pDestructor ){
166973 167298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDestructor->nRef--;
166974 167299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pDestructor->nRef==0 ){
166975 167300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDestructor->xDestroy(pDestructor->pUserData);
166976 167301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DbFree(db, pDestructor);
@@ -168987,10 +169312,11 @@
168987 169312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_OPEN_READWRITE, SQLITE_OPEN_CREATE, SQLITE_OPEN_SHAREDCACHE,
168988 169313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** SQLITE_OPEN_PRIVATECACHE, and some reserved bits. Silently mask
168989 169314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** off all other flags.
168990 169315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
168991 169316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags &= ~( SQLITE_OPEN_DELETEONCLOSE |
169317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_OPEN_EXCLUSIVE |
168992 169318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_OPEN_MAIN_DB |
168993 169319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_OPEN_TEMP_DB |
168994 169320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_OPEN_TRANSIENT_DB |
168995 169321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_OPEN_MAIN_JOURNAL |
168996 169322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_OPEN_TEMP_JOURNAL |
@@ -172095,10 +172421,11 @@
172095 172421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3Fts3ExprFree(Fts3Expr *);
172096 172422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_TEST
172097 172423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3Fts3ExprInitTestInterface(sqlite3 *db, Fts3Hash*);
172098 172424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3Fts3InitTerm(sqlite3 *db);
172099 172425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
172426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void *sqlite3Fts3MallocZero(i64 nByte);
172100 172427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
172101 172428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE int sqlite3Fts3OpenTokenizer(sqlite3_tokenizer *, int, const char *, int,
172102 172429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_tokenizer_cursor **
172103 172430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
172104 172431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -177176,12 +177503,12 @@
177176 177503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case FTSQUERY_OR: {
177177 177504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts3Expr *pLeft = pExpr->pLeft;
177178 177505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts3Expr *pRight = pExpr->pRight;
177179 177506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 iCmp = DOCID_CMP(pLeft->iDocid, pRight->iDocid);
177180 177507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
177181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pLeft->bStart || pLeft->iDocid==pRight->iDocid );
177182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pRight->bStart || pLeft->iDocid==pRight->iDocid );
177508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert_fts3_nc( pLeft->bStart || pLeft->iDocid==pRight->iDocid );
177509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert_fts3_nc( pRight->bStart || pLeft->iDocid==pRight->iDocid );
177183 177510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
177184 177511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRight->bEof || (pLeft->bEof==0 && iCmp<0) ){
177185 177512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts3EvalNextRow(pCsr, pLeft, pRc);
177186 177513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pLeft->bEof || iCmp>0 ){
177187 177514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts3EvalNextRow(pCsr, pRight, pRc);
@@ -178617,11 +178944,11 @@
178617 178944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
178618 178945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allocate nByte bytes of memory using sqlite3_malloc(). If successful,
178619 178946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** zero the memory before returning a pointer to it. If unsuccessful,
178620 178947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** return NULL.
178621 178948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
178622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void *fts3MallocZero(sqlite3_int64 nByte){
178949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_PRIVATE void *sqlite3Fts3MallocZero(sqlite3_int64 nByte){
178623 178950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pRet = sqlite3_malloc64(nByte);
178624 178951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet ) memset(pRet, 0, nByte);
178625 178952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pRet;
178626 178953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
178627 178954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -178698,11 +179025,11 @@
178698 179025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 nByte; /* total space to allocate */
178699 179026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
178700 179027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = pModule->xNext(pCursor, &zToken, &nToken, &iStart, &iEnd, &iPosition);
178701 179028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK ){
178702 179029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte = sizeof(Fts3Expr) + sizeof(Fts3Phrase) + nToken;
178703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRet = (Fts3Expr *)fts3MallocZero(nByte);
179030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRet = (Fts3Expr *)sqlite3Fts3MallocZero(nByte);
178704 179031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pRet ){
178705 179032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
178706 179033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
178707 179034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->eType = FTSQUERY_PHRASE;
178708 179035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->pPhrase = (Fts3Phrase *)&pRet[1];
@@ -178953,11 +179280,11 @@
178953 179280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
178954 179281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cNext = zInput[nKey];
178955 179282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fts3isspace(cNext)
178956 179283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| cNext=='"' || cNext=='(' || cNext==')' || cNext==0
178957 179284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
178958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRet = (Fts3Expr *)fts3MallocZero(sizeof(Fts3Expr));
179285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRet = (Fts3Expr *)sqlite3Fts3MallocZero(sizeof(Fts3Expr));
178959 179286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pRet ){
178960 179287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM;
178961 179288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
178962 179289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->eType = pKey->eType;
178963 179290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->nNear = nNear;
@@ -179132,11 +179459,11 @@
179132 179459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
179133 179460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !sqlite3_fts3_enable_parentheses
179134 179461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& p->eType==FTSQUERY_PHRASE && pParse->isNot
179135 179462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
179136 179463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Create an implicit NOT operator. */
179137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Fts3Expr *pNot = fts3MallocZero(sizeof(Fts3Expr));
179464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Fts3Expr *pNot = sqlite3Fts3MallocZero(sizeof(Fts3Expr));
179138 179465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pNot ){
179139 179466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts3ExprFree(p);
179140 179467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
179141 179468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto exprparse_out;
179142 179469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -179166,11 +179493,11 @@
179166 179493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
179167 179494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isPhrase && !isRequirePhrase ){
179168 179495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Insert an implicit AND operator. */
179169 179496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts3Expr *pAnd;
179170 179497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRet && pPrev );
179171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pAnd = fts3MallocZero(sizeof(Fts3Expr));
179498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pAnd = sqlite3Fts3MallocZero(sizeof(Fts3Expr));
179172 179499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pAnd ){
179173 179500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts3ExprFree(p);
179174 179501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
179175 179502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto exprparse_out;
179176 179503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -183396,12 +183723,22 @@
183396 183723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pReader->aNode = 0;
183397 183724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pElem ){
183398 183725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *aCopy;
183399 183726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PendingList *pList = (PendingList *)fts3HashData(pElem);
183400 183727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCopy = pList->nData+1;
183401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pReader->zTerm = (char *)fts3HashKey(pElem);
183402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pReader->nTerm = fts3HashKeysize(pElem);
183728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
183729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nTerm = fts3HashKeysize(pElem);
183730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (nTerm+1)>pReader->nTermAlloc ){
183731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(pReader->zTerm);
183732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pReader->zTerm = (char*)sqlite3_malloc((nTerm+1)*2);
183733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !pReader->zTerm ) return SQLITE_NOMEM;
183734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pReader->nTermAlloc = (nTerm+1)*2;
183735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
183736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(pReader->zTerm, fts3HashKey(pElem), nTerm);
183737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pReader->zTerm[nTerm] = '\0';
183738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pReader->nTerm = nTerm;
183739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
183403 183740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aCopy = (char*)sqlite3_malloc(nCopy);
183404 183741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !aCopy ) return SQLITE_NOMEM;
183405 183742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(aCopy, pList->aData, nCopy);
183406 183743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pReader->nNode = pReader->nDoclist = nCopy;
183407 183744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pReader->aNode = pReader->aDoclist = aCopy;
@@ -183650,13 +183987,11 @@
183650 183987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Free all allocations associated with the iterator passed as the
183651 183988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** second argument.
183652 183989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
183653 183990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3Fts3SegReaderFree(Fts3SegReader *pReader){
183654 183991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pReader ){
183655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !fts3SegReaderIsPending(pReader) ){
183656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_free(pReader->zTerm);
183657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
183992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(pReader->zTerm);
183658 183993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !fts3SegReaderIsRootOnly(pReader) ){
183659 183994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(pReader->aNode);
183660 183995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
183661 183996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_blob_close(pReader->pBlob);
183662 183997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -188003,13 +188338,12 @@
188003 188338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MatchinfoBuffer *pRet;
188004 188339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 nByte = sizeof(u32) * (2*(sqlite3_int64)nElem + 1)
188005 188340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sizeof(MatchinfoBuffer);
188006 188341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 nStr = strlen(zMatchinfo);
188007 188342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRet = sqlite3_malloc64(nByte + nStr+1);
188343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRet = sqlite3Fts3MallocZero(nByte + nStr+1);
188009 188344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pRet ){
188010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(pRet, 0, nByte);
188011 188345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->aMatchinfo[0] = (u8*)(&pRet->aMatchinfo[1]) - (u8*)pRet;
188012 188346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->aMatchinfo[1+nElem] = pRet->aMatchinfo[0]
188013 188347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sizeof(u32)*((int)nElem+1);
188014 188348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->nElem = (int)nElem;
188015 188349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRet->zMatchinfo = ((char*)pRet) + nByte;
@@ -188409,15 +188743,14 @@
188409 188743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188410 188744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Now that it is known how many phrases there are, allocate and zero
188411 188745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the required space using malloc().
188412 188746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
188413 188747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nByte = sizeof(SnippetPhrase) * nList;
188414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sIter.aPhrase = (SnippetPhrase *)sqlite3_malloc64(nByte);
188748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sIter.aPhrase = (SnippetPhrase *)sqlite3Fts3MallocZero(nByte);
188415 188749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !sIter.aPhrase ){
188416 188750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM;
188417 188751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
188418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(sIter.aPhrase, 0, nByte);
188419 188752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188420 188753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Initialize the contents of the SnippetIter object. Then iterate through
188421 188754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the set of phrases in the expression to populate the aPhrase[] array.
188422 188755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
188423 188756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sIter.pCsr = pCsr;
@@ -189016,13 +189349,12 @@
189016 189349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
189017 189350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
189018 189351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Allocate and populate the array of LcsIterator objects. The array
189019 189352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contains one element for each matchable phrase in the query.
189020 189353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**/
189021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aIter = sqlite3_malloc64(sizeof(LcsIterator) * pCsr->nPhrase);
189354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aIter = sqlite3Fts3MallocZero(sizeof(LcsIterator) * pCsr->nPhrase);
189022 189355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !aIter ) return SQLITE_NOMEM;
189023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(aIter, 0, sizeof(LcsIterator) * pCsr->nPhrase);
189024 189356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)fts3ExprIterate(pCsr->pExpr, fts3MatchinfoLcsCb, (void*)aIter);
189025 189357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
189026 189358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pInfo->nPhrase; i++){
189027 189359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LcsIterator *pIter = &aIter[i];
189028 189360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nToken -= pIter->pExpr->pPhrase->nToken;
@@ -189479,11 +189811,11 @@
189479 189811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Count the number of terms in the query */
189480 189812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = fts3ExprLoadDoclists(pCsr, 0, &nToken);
189481 189813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ) goto offsets_out;
189482 189814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
189483 189815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Allocate the array of TermOffset iterators. */
189484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sCtx.aTerm = (TermOffset *)sqlite3_malloc64(sizeof(TermOffset)*nToken);
189816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sCtx.aTerm = (TermOffset *)sqlite3Fts3MallocZero(sizeof(TermOffset)*nToken);
189485 189817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 0==sCtx.aTerm ){
189486 189818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_NOMEM;
189487 189819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto offsets_out;
189488 189820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
189489 189821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sCtx.iDocid = pCsr->iPrevId;
@@ -190517,11 +190849,25 @@
190517 190849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define NEVER(X) ((X)?(assert(0),1):0)
190518 190850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# else
190519 190851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define ALWAYS(X) (X)
190520 190852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define NEVER(X) (X)
190521 190853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# endif
190854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define testcase(X)
190522 190855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
190856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if defined(NDEBUG)
190857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VVA(X)
190858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
190859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define VVA(X) X
190860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
190861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
190862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
190863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Some of the testcase() macros in this file are problematic for gcov
190864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in that they generate false-miss errors randomly. This is a gcov problem,
190865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** not a problem in this case. But to work around it, we disable the
190866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** problematic test cases for production builds.
190867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
190868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define json_testcase(X)
190523 190869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
190524 190870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Objects */
190525 190871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct JsonString JsonString;
190526 190872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct JsonNode JsonNode;
190527 190873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct JsonParse JsonParse;
@@ -190575,17 +190921,18 @@
190575 190921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A single node of parsed JSON
190576 190922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
190577 190923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct JsonNode {
190578 190924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eType; /* One of the JSON_ type values */
190579 190925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 jnFlags; /* JNODE flags */
190926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 eU; /* Which union element to use */
190580 190927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 n; /* Bytes of content, or number of sub-nodes */
190581 190928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
union {
190582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zJContent; /* Content for INT, REAL, and STRING */
190583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u32 iAppend; /* More terms for ARRAY and OBJECT */
190584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u32 iKey; /* Key for ARRAY objects in json_tree() */
190585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u32 iReplace; /* Replacement content for JNODE_REPLACE */
190586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- JsonNode *pPatch; /* Node chain of patch for JNODE_PATCH */
190929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zJContent; /* 1: Content for INT, REAL, and STRING */
190930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 iAppend; /* 2: More terms for ARRAY and OBJECT */
190931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 iKey; /* 3: Key for ARRAY objects in json_tree() */
190932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 iReplace; /* 4: Replacement content for JNODE_REPLACE */
190933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ JsonNode *pPatch; /* 5: Node chain of patch for JNODE_PATCH */
190587 190934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} u;
190588 190935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
190589 190936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
190590 190937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A completely parsed JSON string
190591 190938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -190862,13 +191209,15 @@
190862 191209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **aReplace /* Replacement values */
190863 191210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
190864 191211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNode!=0 );
190865 191212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode->jnFlags & (JNODE_REPLACE|JNODE_PATCH) ){
190866 191213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pNode->jnFlags & JNODE_REPLACE)!=0 && ALWAYS(aReplace!=0) ){
191214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==4 );
190867 191215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendValue(pOut, aReplace[pNode->u.iReplace]);
190868 191216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
190869 191217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==5 );
190870 191219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = pNode->u.pPatch;
190871 191220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190872 191221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( pNode->eType ){
190873 191222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: {
190874 191223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNode->eType==JSON_NULL );
@@ -190883,17 +191232,19 @@
190883 191232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendRaw(pOut, "false", 5);
190884 191233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
190885 191234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190886 191235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case JSON_STRING: {
190887 191236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode->jnFlags & JNODE_RAW ){
191237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
190888 191238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendString(pOut, pNode->u.zJContent, pNode->n);
190889 191239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
190890 191240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190891 191241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* no break */ deliberate_fall_through
190892 191242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190893 191243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case JSON_REAL:
190894 191244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case JSON_INT: {
191245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
190895 191246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendRaw(pOut, pNode->u.zJContent, pNode->n);
190896 191247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
190897 191248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190898 191249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case JSON_ARRAY: {
190899 191250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 j = 1;
@@ -190905,10 +191256,11 @@
190905 191256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonRenderNode(&pNode[j], pOut, aReplace);
190906 191257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190907 191258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j += jsonNodeSize(&pNode[j]);
190908 191259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190909 191260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pNode->jnFlags & JNODE_APPEND)==0 ) break;
191261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==2 );
190910 191262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = &pNode[pNode->u.iAppend];
190911 191263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = 1;
190912 191264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190913 191265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendChar(pOut, ']');
190914 191266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -190925,10 +191277,11 @@
190925 191277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonRenderNode(&pNode[j+1], pOut, aReplace);
190926 191278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190927 191279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j += 1 + jsonNodeSize(&pNode[j+1]);
190928 191280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190929 191281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pNode->jnFlags & JNODE_APPEND)==0 ) break;
191282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==2 );
190930 191283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = &pNode[pNode->u.iAppend];
190931 191284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = 1;
190932 191285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
190933 191286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendChar(pOut, '}');
190934 191287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -191004,11 +191357,13 @@
191004 191357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_int(pCtx, 0);
191005 191358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
191006 191359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191007 191360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case JSON_INT: {
191008 191361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_int64 i = 0;
191009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *z = pNode->u.zJContent;
191362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *z;
191363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
191364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = pNode->u.zJContent;
191010 191365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z[0]=='-' ){ z++; }
191011 191366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( z[0]>='0' && z[0]<='9' ){
191012 191367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned v = *(z++) - '0';
191013 191368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i>=LARGEST_INT64/10 ){
191014 191369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i>LARGEST_INT64/10 ) goto int_as_real;
@@ -191032,13 +191387,16 @@
191032 191387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int_as_real: ; /* no break */ deliberate_fall_through
191033 191388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191034 191389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case JSON_REAL: {
191035 191390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double r;
191036 191391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_AMALGAMATION
191037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *z = pNode->u.zJContent;
191392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *z;
191393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
191394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = pNode->u.zJContent;
191038 191395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3AtoF(z, &r, sqlite3Strlen30(z), SQLITE_UTF8);
191039 191396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
191397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
191040 191398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r = strtod(pNode->u.zJContent, 0);
191041 191399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
191042 191400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_double(pCtx, r);
191043 191401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
191044 191402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -191045,26 +191403,30 @@
191045 191403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case JSON_STRING: {
191046 191404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if 0 /* Never happens because JNODE_RAW is only set by json_set(),
191047 191405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** json_insert() and json_replace() and those routines do not
191048 191406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** call jsonReturn() */
191049 191407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode->jnFlags & JNODE_RAW ){
191408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
191050 191409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_text(pCtx, pNode->u.zJContent, pNode->n,
191051 191410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_TRANSIENT);
191052 191411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
191053 191412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
191054 191413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pNode->jnFlags & JNODE_RAW)==0 );
191055 191414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pNode->jnFlags & JNODE_ESCAPE)==0 ){
191056 191415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* JSON formatted without any backslash-escapes */
191416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
191057 191417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_text(pCtx, pNode->u.zJContent+1, pNode->n-2,
191058 191418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_TRANSIENT);
191059 191419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
191060 191420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Translate JSON formatted string into raw text */
191061 191421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 i;
191062 191422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 n = pNode->n;
191063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *z = pNode->u.zJContent;
191423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *z;
191064 191424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zOut;
191065 191425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 j;
191426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
191427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = pNode->u.zJContent;
191066 191428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOut = sqlite3_malloc( n+1 );
191067 191429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zOut==0 ){
191068 191430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_error_nomem(pCtx);
191069 191431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
191070 191432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -191187,10 +191549,11 @@
191187 191549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return jsonParseAddNodeExpand(pParse, eType, n, zContent);
191188 191550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191189 191551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = &pParse->aNode[pParse->nNode];
191190 191552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->eType = (u8)eType;
191191 191553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->jnFlags = 0;
191554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( p->eU = zContent ? 1 : 0 );
191192 191555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->n = n;
191193 191556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->u.zJContent = zContent;
191194 191557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pParse->nNode++;
191195 191558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191196 191559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -191254,10 +191617,11 @@
191254 191617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return j+1;
191255 191618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='[' ){
191256 191619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Parse array */
191257 191620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iThis = jsonParseAddNode(pParse, JSON_ARRAY, 0, 0);
191258 191621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iThis<0 ) return -1;
191622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&pParse->aNode[iThis].u, 0, sizeof(pParse->aNode[iThis].u));
191259 191623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=i+1;;j++){
191260 191624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( safe_isspace(z[j]) ){ j++; }
191261 191625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1;
191262 191626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
x = jsonParseValue(pParse, j);
191263 191627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->iDepth--;
@@ -191518,10 +191882,11 @@
191518 191882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
191519 191883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Compare the OBJECT label at pNode against zKey,nKey. Return true on
191520 191884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a match.
191521 191885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
191522 191886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int jsonLabelCompare(JsonNode *pNode, const char *zKey, u32 nKey){
191887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
191523 191888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode->jnFlags & JNODE_RAW ){
191524 191889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode->n!=nKey ) return 0;
191525 191890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return strncmp(pNode->u.zJContent, zKey, nKey)==0;
191526 191891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
191527 191892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode->n!=nKey+2 ) return 0;
@@ -191583,10 +191948,11 @@
191583 191948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191584 191949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j++;
191585 191950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j += jsonNodeSize(&pRoot[j]);
191586 191951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191587 191952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pRoot->jnFlags & JNODE_APPEND)==0 ) break;
191953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRoot->eU==2 );
191588 191954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRoot += pRoot->u.iAppend;
191589 191955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot = &pParse->aNode[iRoot];
191590 191956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = 1;
191591 191957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191592 191958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pApnd ){
@@ -191597,12 +191963,14 @@
191597 191963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPath += i;
191598 191964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = jsonLookupAppend(pParse, zPath, pApnd, pzErr);
191599 191965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->oom ) return 0;
191600 191966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode ){
191601 191967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot = &pParse->aNode[iRoot];
191968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRoot->eU==0 );
191602 191969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->u.iAppend = iStart - iRoot;
191603 191970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->jnFlags |= JNODE_APPEND;
191971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( pRoot->eU = 2 );
191604 191972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->aNode[iLabel].jnFlags |= JNODE_RAW;
191605 191973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191606 191974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pNode;
191607 191975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191608 191976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zPath[0]=='[' ){
@@ -191621,10 +191989,11 @@
191621 191989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( j<=pBase->n ){
191622 191990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pBase[j].jnFlags & JNODE_REMOVE)==0 ) i++;
191623 191991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j += jsonNodeSize(&pBase[j]);
191624 191992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191625 191993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pBase->jnFlags & JNODE_APPEND)==0 ) break;
191994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pBase->eU==2 );
191626 191995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iBase += pBase->u.iAppend;
191627 191996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBase = &pParse->aNode[iBase];
191628 191997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = 1;
191629 191998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191630 191999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = 2;
@@ -191654,10 +192023,11 @@
191654 192023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( j<=pRoot->n && (i>0 || (pRoot[j].jnFlags & JNODE_REMOVE)!=0) ){
191655 192024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pRoot[j].jnFlags & JNODE_REMOVE)==0 ) i--;
191656 192025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j += jsonNodeSize(&pRoot[j]);
191657 192026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191658 192027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pRoot->jnFlags & JNODE_APPEND)==0 ) break;
192028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRoot->eU==2 );
191659 192029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRoot += pRoot->u.iAppend;
191660 192030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot = &pParse->aNode[iRoot];
191661 192031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j = 1;
191662 192032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191663 192033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j<=pRoot->n ){
@@ -191669,12 +192039,14 @@
191669 192039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStart = jsonParseAddNode(pParse, JSON_ARRAY, 1, 0);
191670 192040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = jsonLookupAppend(pParse, zPath, pApnd, pzErr);
191671 192041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->oom ) return 0;
191672 192042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode ){
191673 192043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot = &pParse->aNode[iRoot];
192044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pRoot->eU==0 );
191674 192045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->u.iAppend = iStart - iRoot;
191675 192046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRoot->jnFlags |= JNODE_APPEND;
192047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( pRoot->eU = 2 );
191676 192048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191677 192049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pNode;
191678 192050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191679 192051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
191680 192052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pzErr = zPath;
@@ -191824,13 +192196,17 @@
191824 192196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
191825 192197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zType = jsonType[x.aNode[i].eType];
191826 192198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191827 192199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonPrintf(100, &s,"node %3u: %7s n=%-4d up=%-4d",
191828 192200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i, zType, x.aNode[i].n, x.aUp[i]);
192201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( x.aNode[i].eU==0 || x.aNode[i].eU==1 );
191829 192202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( x.aNode[i].u.zJContent!=0 ){
192203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( x.aNode[i].eU==1 );
191830 192204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendRaw(&s, " ", 1);
191831 192205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendRaw(&s, x.aNode[i].u.zJContent, x.aNode[i].n);
192206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
192207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( x.aNode[i].eU==0 );
191832 192208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191833 192209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendRaw(&s, "\n", 1);
191834 192210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191835 192211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonParseReset(&x);
191836 192212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonResult(&s);
@@ -192009,10 +192385,11 @@
192009 192385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1; i<pPatch->n; i += jsonNodeSize(&pPatch[i+1])+1){
192010 192386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 nKey;
192011 192387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zKey;
192012 192388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPatch[i].eType==JSON_STRING );
192013 192389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPatch[i].jnFlags & JNODE_LABEL );
192390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pPatch[i].eU==1 );
192014 192391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKey = pPatch[i].n;
192015 192392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zKey = pPatch[i].u.zJContent;
192016 192393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pPatch[i].jnFlags & JNODE_RAW)==0 );
192017 192394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=1; j<pTarget->n; j += jsonNodeSize(&pTarget[j+1])+1 ){
192018 192395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTarget[j].eType==JSON_STRING );
@@ -192025,10 +192402,13 @@
192025 192402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
192026 192403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
JsonNode *pNew = jsonMergePatch(pParse, iTarget+j+1, &pPatch[i+1]);
192027 192404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew==0 ) return 0;
192028 192405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTarget = &pParse->aNode[iTarget];
192029 192406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNew!=&pTarget[j+1] ){
192407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTarget[j+1].eU==0 || pTarget[j+1].eU==1 );
192408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pTarget[j+1].eU==1 );
192409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( pTarget[j+1].eU = 5 );
192030 192410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTarget[j+1].u.pPatch = pNew;
192031 192411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTarget[j+1].jnFlags |= JNODE_PATCH;
192032 192412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192033 192413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192034 192414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -192040,13 +192420,18 @@
192040 192420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonParseAddNode(pParse, JSON_STRING, nKey, zKey);
192041 192421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPatch = jsonParseAddNode(pParse, JSON_TRUE, 0, 0);
192042 192422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->oom ) return 0;
192043 192423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonRemoveAllNulls(pPatch);
192044 192424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTarget = &pParse->aNode[iTarget];
192425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->aNode[iRoot].eU==0 || pParse->aNode[iRoot].eU==2 );
192426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pParse->aNode[iRoot].eU==2 );
192045 192427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->aNode[iRoot].jnFlags |= JNODE_APPEND;
192428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( pParse->aNode[iRoot].eU = 2 );
192046 192429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->aNode[iRoot].u.iAppend = iStart - iRoot;
192047 192430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRoot = iStart;
192431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pParse->aNode[iPatch].eU==0 );
192432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( pParse->aNode[iPatch].eU = 5 );
192048 192433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->aNode[iPatch].jnFlags |= JNODE_PATCH;
192049 192434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->aNode[iPatch].u.pPatch = &pPatch[i+1];
192050 192435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192051 192436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192052 192437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pTarget;
@@ -192184,15 +192569,19 @@
192184 192569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1; i<(u32)argc; i+=2){
192185 192570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPath = (const char*)sqlite3_value_text(argv[i]);
192186 192571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = jsonLookup(&x, zPath, 0, ctx);
192187 192572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( x.nErr ) goto replace_err;
192188 192573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode ){
192574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==0 || pNode->eU==1 || pNode->eU==4 );
192575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ json_testcase( pNode->eU!=0 && pNode->eU!=1 );
192189 192576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode->jnFlags |= (u8)JNODE_REPLACE;
192577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( pNode->eU = 4 );
192190 192578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode->u.iReplace = i + 1;
192191 192579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192192 192580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192193 192581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( x.aNode[0].jnFlags & JNODE_REPLACE ){
192582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( x.aNode[0].eU==4 );
192194 192583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_value(ctx, argv[x.aNode[0].u.iReplace]);
192195 192584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
192196 192585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonReturnJson(x.aNode, ctx, argv);
192197 192586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192198 192587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
replace_err:
@@ -192238,15 +192627,19 @@
192238 192627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_error_nomem(ctx);
192239 192628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto jsonSetDone;
192240 192629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( x.nErr ){
192241 192630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto jsonSetDone;
192242 192631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pNode && (bApnd || bIsSet) ){
192632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ json_testcase( pNode->eU!=0 && pNode->eU!=1 && pNode->eU!=4 );
192633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU!=3 || pNode->eU!=5 );
192634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( pNode->eU = 4 );
192243 192635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode->jnFlags |= (u8)JNODE_REPLACE;
192244 192636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode->u.iReplace = i + 1;
192245 192637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192246 192638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192247 192639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( x.aNode[0].jnFlags & JNODE_REPLACE ){
192640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( x.aNode[0].eU==4 );
192248 192641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_value(ctx, argv[x.aNode[0].u.iReplace]);
192249 192642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
192250 192643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonReturnJson(x.aNode, ctx, argv);
192251 192644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192252 192645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonSetDone:
@@ -192593,10 +192986,13 @@
192593 192986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->i<p->iEnd ){
192594 192987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 iUp = p->sParse.aUp[p->i];
192595 192988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
JsonNode *pUp = &p->sParse.aNode[iUp];
192596 192989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->eType = pUp->eType;
192597 192990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pUp->eType==JSON_ARRAY ){
192991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pUp->eU==0 || pUp->eU==3 );
192992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ json_testcase( pUp->eU==3 );
192993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( pUp->eU = 3 );
192598 192994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iUp==p->i-1 ){
192599 192995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pUp->u.iKey = 0;
192600 192996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
192601 192997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pUp->u.iKey++;
192602 192998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -192639,16 +193035,19 @@
192639 193035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iUp = p->sParse.aUp[i];
192640 193036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonEachComputePath(p, pStr, iUp);
192641 193037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = &p->sParse.aNode[i];
192642 193038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pUp = &p->sParse.aNode[iUp];
192643 193039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pUp->eType==JSON_ARRAY ){
193040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pUp->eU==3 || (pUp->eU==0 && pUp->u.iKey==0) );
193041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( pUp->eU==0 );
192644 193042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonPrintf(30, pStr, "[%d]", pUp->u.iKey);
192645 193043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
192646 193044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pUp->eType==JSON_OBJECT );
192647 193045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pNode->jnFlags & JNODE_LABEL)==0 ) pNode--;
192648 193046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNode->eType==JSON_STRING );
192649 193047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNode->jnFlags & JNODE_LABEL );
193048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==1 );
192650 193049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonPrintf(pNode->n+1, pStr, ".%.*s", pNode->n-2, pNode->u.zJContent+1);
192651 193050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192652 193051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192653 193052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
192654 193053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Return the value of a column */
@@ -192666,10 +193065,11 @@
192666 193065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonReturn(pThis, ctx, 0);
192667 193066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->eType==JSON_ARRAY ){
192668 193067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 iKey;
192669 193068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->bRecursive ){
192670 193069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->iRowid==0 ) break;
193070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->sParse.aNode[p->sParse.aUp[p->i]].eU==3 );
192671 193071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iKey = p->sParse.aNode[p->sParse.aUp[p->i]].u.iKey;
192672 193072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
192673 193073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iKey = p->iRowid;
192674 193074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192675 193075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_int64(ctx, (sqlite3_int64)iKey);
@@ -192715,10 +193115,11 @@
192715 193115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendChar(&x, '$');
192716 193116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192717 193117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->eType==JSON_ARRAY ){
192718 193118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonPrintf(30, &x, "[%d]", p->iRowid);
192719 193119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( p->eType==JSON_OBJECT ){
193120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pThis->eU==1 );
192720 193121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonPrintf(pThis->n, &x, ".%.*s", pThis->n-2, pThis->u.zJContent+1);
192721 193122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192722 193123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192723 193124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonResult(&x);
192724 193125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -192782,10 +193183,11 @@
192782 193183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol;
192783 193184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iMask;
192784 193185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pConstraint->iColumn < JEACH_JSON ) continue;
192785 193186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCol = pConstraint->iColumn - JEACH_JSON;
192786 193187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iCol==0 || iCol==1 );
193188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ testcase( iCol==0 );
192787 193189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iMask = 1 << iCol;
192788 193190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pConstraint->usable==0 ){
192789 193191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unusableMask |= iMask;
192790 193192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pConstraint->op==SQLITE_INDEX_CONSTRAINT_EQ ){
192791 193193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aIdx[iCol] = i;
@@ -192879,10 +193281,12 @@
192879 193281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode = p->sParse.aNode;
192880 193282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
192881 193283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iBegin = p->i = (int)(pNode - p->sParse.aNode);
192882 193284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->eType = pNode->eType;
192883 193285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->eType>=JSON_ARRAY ){
193286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pNode->eU==0 );
193287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VVA( pNode->eU = 3 );
192884 193288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNode->u.iKey = 0;
192885 193289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd = p->i + pNode->n + 1;
192886 193290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->bRecursive ){
192887 193291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->eType = p->sParse.aNode[p->sParse.aUp[p->i]].eType;
192888 193292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->i>0 && (p->sParse.aNode[p->i-1].jnFlags & JNODE_LABEL)!=0 ){
@@ -193493,11 +193897,11 @@
193493 193897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
193494 193898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The testcase() macro should already be defined in the amalgamation. If
193495 193899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it is not, make it a no-op.
193496 193900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
193497 193901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_AMALGAMATION
193498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ifdef SQLITE_COVERAGE_TEST
193902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_DEBUG)
193499 193903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int sqlite3RtreeTestcase = 0;
193500 193904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define testcase(X) if( X ){ sqlite3RtreeTestcase += __LINE__; }
193501 193905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# else
193502 193906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define testcase(X)
193503 193907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# endif
@@ -214008,11 +214412,11 @@
214008 214412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
214009 214413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
214010 214414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A version of memcmp() that does not cause asan errors if one of the pointer
214011 214415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** parameters is NULL and the number of bytes to compare is zero.
214012 214416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
214013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define fts5Memcmp(s1, s2, n) ((n)==0 ? 0 : memcmp((s1), (s2), (n)))
214417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define fts5Memcmp(s1, s2, n) ((n)<=0 ? 0 : memcmp((s1), (s2), (n)))
214014 214418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
214015 214419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Mark a function parameter as unused, to suppress nuisance compiler
214016 214420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** warnings. */
214017 214421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef UNUSED_PARAM
214018 214422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define UNUSED_PARAM(X) (void)(X)
@@ -217034,11 +217438,10 @@
217034 217438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *pRc,
217035 217439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Buffer *pBuf,
217036 217440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 nData,
217037 217441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const u8 *pData
217038 217442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
217039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert_nc( *pRc || nData>=0 );
217040 217443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nData ){
217041 217444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fts5BufferGrow(pRc, pBuf, nData) ) return;
217042 217445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(&pBuf->p[pBuf->n], pData, nData);
217043 217446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBuf->n += nData;
217044 217447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -217146,11 +217549,10 @@
217146 217549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
217147 217550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
217148 217551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 iOff = *piOff;
217149 217552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 iVal;
217150 217553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5FastGetVarint32(a, i, iVal);
217151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( iVal>=0 );
217152 217554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iVal<=1 ){
217153 217555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iVal==0 ){
217154 217556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pi = i;
217155 217557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
217156 217558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -221761,11 +222163,11 @@
221761 222163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCol>=0 ){
221762 222164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pHash->eDetail==FTS5_DETAIL_NONE ){
221763 222165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->bContent = 1;
221764 222166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
221765 222167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Append a new column value, if necessary */
221766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( iCol>=p->iCol );
222168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert_nc( iCol>=p->iCol );
221767 222169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCol!=p->iCol ){
221768 222170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pHash->eDetail==FTS5_DETAIL_FULL ){
221769 222171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPtr[p->nData++] = 0x01;
221770 222172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nData += sqlite3Fts5PutVarint(&pPtr[p->nData], iCol);
221771 222173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iCol = (i16)iCol;
@@ -222566,12 +222968,15 @@
222566 222968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** +ve if pRight is smaller than pLeft. In other words:
222567 222969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
222568 222970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** res = *pLeft - *pRight
222569 222971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
222570 222972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int fts5BufferCompare(Fts5Buffer *pLeft, Fts5Buffer *pRight){
222571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nCmp = MIN(pLeft->n, pRight->n);
222572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int res = fts5Memcmp(pLeft->p, pRight->p, nCmp);
222973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCmp, res;
222974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCmp = MIN(pLeft->n, pRight->n);
222975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nCmp<=0 || pLeft->p!=0 );
222976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( nCmp<=0 || pRight->p!=0 );
222977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = fts5Memcmp(pLeft->p, pRight->p, nCmp);
222573 222978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (res==0 ? (pLeft->n - pRight->n) : res);
222574 222979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
222575 222980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
222576 222981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int fts5LeafFirstTermOff(Fts5Data *pLeaf){
222577 222982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ret;
@@ -224244,25 +224649,24 @@
224244 224649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Index *p, /* Leave any error code here */
224245 224650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bGe, /* True for a >= search */
224246 224651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5SegIter *pIter, /* Iterator to seek */
224247 224652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const u8 *pTerm, int nTerm /* Term to search for */
224248 224653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
224249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iOff;
224654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 iOff;
224250 224655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const u8 *a = pIter->pLeaf->p;
224251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int szLeaf = pIter->pLeaf->szLeaf;
224252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int n = pIter->pLeaf->nn;
224656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 n = (u32)pIter->pLeaf->nn;
224253 224657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
224254 224658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 nMatch = 0;
224255 224659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 nKeep = 0;
224256 224660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 nNew = 0;
224257 224661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 iTermOff;
224258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int iPgidx; /* Current offset in pgidx */
224662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 iPgidx; /* Current offset in pgidx */
224259 224663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bEndOfPage = 0;
224260 224664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
224261 224665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->rc==SQLITE_OK );
224262 224666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
224263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iPgidx = szLeaf;
224667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iPgidx = (u32)pIter->pLeaf->szLeaf;
224264 224668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx += fts5GetVarint32(&a[iPgidx], iTermOff);
224265 224669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff = iTermOff;
224266 224670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOff>n ){
224267 224671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = FTS5_CORRUPT;
224268 224672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
@@ -224324,19 +224728,19 @@
224324 224728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do {
224325 224729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5SegIterNextPage(p, pIter);
224326 224730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIter->pLeaf==0 ) return;
224327 224731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a = pIter->pLeaf->p;
224328 224732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fts5LeafIsTermless(pIter->pLeaf)==0 ){
224329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- iPgidx = pIter->pLeaf->szLeaf;
224733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iPgidx = (u32)pIter->pLeaf->szLeaf;
224330 224734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iPgidx += fts5GetVarint32(&pIter->pLeaf->p[iPgidx], iOff);
224331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iOff<4 || iOff>=pIter->pLeaf->szLeaf ){
224735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iOff<4 || (i64)iOff>=pIter->pLeaf->szLeaf ){
224332 224736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->rc = FTS5_CORRUPT;
224333 224737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
224334 224738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
224335 224739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nKeep = 0;
224336 224740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTermOff = iOff;
224337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- n = pIter->pLeaf->nn;
224741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n = (u32)pIter->pLeaf->nn;
224338 224742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iOff += fts5GetVarint32(&a[iOff], nNew);
224339 224743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
224340 224744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
224341 224745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
224342 224746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}while( 1 );
@@ -231573,11 +231977,11 @@
231573 231977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
231574 231978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
231575 231979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
231576 231980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
231577 231981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
231578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2021-10-05 18:33:38 a7835bead85b1b18a8affd9835240b0baf9c7af887196bbdcc3f5d58055042fc", -1, SQLITE_TRANSIENT);
231982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2021-10-04 12:16:27 71b102942cf46e307b123afbc51be06ebf48af9c364c0e7e0b9763f6963d3fb9", -1, SQLITE_TRANSIENT);
231579 231983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231580 231984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231581 231985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
231582 231986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if zName is the extension on one of the shadow tables used
231583 231987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by this module.
231584 231988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!