@@ -1,8 +1,8 @@
1 1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******************************************************************************
2 2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This file is an amalgamation of many separate C source files from SQLite
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** version 3.45.1. By combining all the individual C code files into this
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** version 3.46.0. By combining all the individual C code files into this
4 4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** single large file, the entire code can be compiled as a single translation
5 5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** unit. This allows many compilers to do optimizations that would not be
6 6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** possible if the files were compiled separately. Performance improvements
7 7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of 5% or more are commonly seen when SQLite is compiled as a single
8 8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** translation unit.
@@ -16,11 +16,11 @@
16 16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if you want a wrapper to interface SQLite with your choice of programming
17 17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** language. The code for the "sqlite3" command-line shell is also in a
18 18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** separate file. This file contains only code for the core SQLite library.
19 19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
20 20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The content in this amalgamation comes from Fossil check-in
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** e876e51a0ed5c5b3126f52e532044363a014.
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 27a2113d78b35e324e9aedda7403c96c56ad.
22 22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
23 23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_CORE 1
24 24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AMALGAMATION 1
25 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_PRIVATE
26 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_PRIVATE static
@@ -457,13 +457,13 @@
457 457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
458 458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See also: [sqlite3_libversion()],
459 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
460 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
461 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION "3.45.1"
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_VERSION_NUMBER 3045001
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257cc467a"
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION "3.46.0"
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_VERSION_NUMBER 3046000
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2024-02-20 15:38:36 27a2113d78b35e324e9aedda7403c96c56ad0bed8c6b139fc5a179e8800b9109"
465 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
466 466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
467 467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
468 468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
469 469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -731,10 +731,12 @@
731 731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is a valid and open [database connection].
732 732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> The application must not close the [database connection] specified by
733 733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running.
734 734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** <li> The application must not modify the SQL statement text passed into
735 735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running.
736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** <li> The application must not dereference the arrays or string pointers
737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** passed as the 3rd and 4th callback parameters after it returns.
736 738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** </ul>
737 739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
738 740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API int sqlite3_exec(
739 741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3*, /* An open database */
740 742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *sql, /* SQL to be evaluated */
@@ -14858,11 +14860,11 @@
14858 14860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_PTRSIZE
14859 14861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# if defined(__SIZEOF_POINTER__)
14860 14862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_PTRSIZE __SIZEOF_POINTER__
14861 14863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# elif defined(i386) || defined(__i386__) || defined(_M_IX86) || \
14862 14864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
defined(_M_ARM) || defined(__arm__) || defined(__x86) || \
14863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (defined(__APPLE__) && defined(__POWERPC__)) || \
14865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (defined(__APPLE__) && defined(__ppc__)) || \
14864 14866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(defined(__TOS_AIX__) && !defined(__64BIT__))
14865 14867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_PTRSIZE 4
14866 14868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# else
14867 14869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_PTRSIZE 8
14868 14870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# endif
@@ -16569,11 +16571,11 @@
16569 16571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_NotFound 28 /* jump, synopsis: key=r[P3@P4] */
16570 16572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Found 29 /* jump, synopsis: key=r[P3@P4] */
16571 16573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_SeekRowid 30 /* jump, synopsis: intkey=r[P3] */
16572 16574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_NotExists 31 /* jump, synopsis: intkey=r[P3] */
16573 16575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Last 32 /* jump */
16574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OP_IfSmaller 33 /* jump */
16576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OP_IfSizeBetween 33 /* jump */
16575 16577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_SorterSort 34 /* jump */
16576 16578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Sort 35 /* jump */
16577 16579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Rewind 36 /* jump */
16578 16580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_SorterNext 37 /* jump */
16579 16581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define OP_Prev 38 /* jump */
@@ -17492,10 +17494,14 @@
17492 17494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct FuncDefHash {
17493 17495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FuncDef *a[SQLITE_FUNC_HASH_SZ]; /* Hash table for functions */
17494 17496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
17495 17497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_FUNC_HASH(C,L) (((C)+(L))%SQLITE_FUNC_HASH_SZ)
17496 17498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if defined(SQLITE_USER_AUTHENTICATION)
17500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # warning "The SQLITE_USER_AUTHENTICATION extension is deprecated. \
17501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ See ext/userauth/user-auth.txt for details."
17502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
17497 17503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_USER_AUTHENTICATION
17498 17504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
17499 17505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Information held in the "sqlite3" database connection object and used
17500 17506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to manage user authentication.
17501 17507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -18368,12 +18374,11 @@
18368 18374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_HasStat1 0x00000010 /* nRowLogEst set from sqlite_stat1 */
18369 18375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_HasVirtual 0x00000020 /* Has one or more VIRTUAL columns */
18370 18376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_HasStored 0x00000040 /* Has one or more STORED columns */
18371 18377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_HasGenerated 0x00000060 /* Combo: HasVirtual + HasStored */
18372 18378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_WithoutRowid 0x00000080 /* No rowid. PRIMARY KEY is the key */
18373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define TF_StatsUsed 0x00000100 /* Query planner decisions affected by
18374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Index.aiRowLogEst[] values */
18379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define TF_MaybeReanalyze 0x00000100 /* Maybe run ANALYZE on this table */
18375 18380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_NoVisibleRowid 0x00000200 /* No user-visible "rowid" column */
18376 18381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_OOOHidden 0x00000400 /* Out-of-Order hidden columns */
18377 18382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_HasNotNull 0x00000800 /* Contains NOT NULL constraints */
18378 18383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_Shadow 0x00001000 /* True for a shadow table */
18379 18384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TF_HasStat4 0x00002000 /* STAT4 info available for this table */
@@ -25336,27 +25341,88 @@
25336 25341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
25337 25342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_text(context, &zBuf[1], 10, SQLITE_TRANSIENT);
25338 25343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25339 25344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25340 25345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
25347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
25348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Compute the number of days after the most recent January 1.
25349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
25350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** In other words, compute the zero-based day number for the
25351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** current year:
25352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
25353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Jan01 = 0, Jan02 = 1, ..., Jan31 = 30, Feb01 = 31, ...
25354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Dec31 = 364 or 365.
25355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
25356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int daysAfterJan01(DateTime *pDate){
25357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DateTime jan01 = *pDate;
25358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( jan01.validYMD );
25359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( jan01.validHMS );
25360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pDate->validJD );
25361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jan01.validJD = 0;
25362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jan01.M = 1;
25363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jan01.D = 1;
25364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ computeJD(&jan01);
25365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (int)((pDate->iJD-jan01.iJD+43200000)/86400000);
25366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
25368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
25369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the number of days after the most recent Monday.
25370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
25371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** In other words, return the day of the week according
25372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to this code:
25373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
25374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0=Monday, 1=Tuesday, 2=Wednesday, ..., 6=Sunday.
25375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
25376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int daysAfterMonday(DateTime *pDate){
25377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pDate->validJD );
25378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (int)((pDate->iJD+43200000)/86400000) % 7;
25379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
25381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
25382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return the number of days after the most recent Sunday.
25383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
25384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** In other words, return the day of the week according
25385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to this code:
25386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
25387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0=Sunday, 1=Monday, 2=Tues, ..., 6=Saturday
25388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
25389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int daysAfterSunday(DateTime *pDate){
25390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pDate->validJD );
25391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (int)((pDate->iJD+129600000)/86400000) % 7;
25392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25341 25393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
25342 25394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
25343 25395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** strftime( FORMAT, TIMESTRING, MOD, MOD, ...)
25344 25396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
25345 25397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return a string described by FORMAT. Conversions as follows:
25346 25398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
25347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** %d day of month
25399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %d day of month 01-31
25400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %e day of month 1-31
25348 25401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %f ** fractional seconds SS.SSS
25402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %F ISO date. YYYY-MM-DD
25403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %G ISO year corresponding to %V 0000-9999.
25404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %g 2-digit ISO year corresponding to %V 00-99
25349 25405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %H hour 00-24
25350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** %j day of year 000-366
25406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %k hour 0-24 (leading zero converted to space)
25407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %I hour 01-12
25408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %j day of year 001-366
25351 25409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %J ** julian day number
25410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %l hour 1-12 (leading zero converted to space)
25352 25411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %m month 01-12
25353 25412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %M minute 00-59
25413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %p "am" or "pm"
25414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %P "AM" or "PM"
25415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %R time as HH:MM
25354 25416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %s seconds since 1970-01-01
25355 25417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %S seconds 00-59
25356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** %w day of week 0-6 Sunday==0
25357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** %W week of year 00-53
25418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %T time as HH:MM:SS
25419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %u day of week 1-7 Monday==1, Sunday==7
25420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %w day of week 0-6 Sunday==0, Monday==1
25421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %U week of year 00-53 (First Sunday is start of week 01)
25422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %V week of year 01-53 (First week containing Thursday is week 01)
25423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** %W week of year 00-53 (First Monday is start of week 01)
25358 25424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %Y year 0000-9999
25359 25425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** %% %
25360 25426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
25361 25427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void strftimeFunc(
25362 25428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_context *context,
@@ -25389,19 +25455,34 @@
25389 25455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'd': /* Fall thru */
25390 25456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'e': {
25391 25457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sRes, cf=='d' ? "%02d" : "%2d", x.D);
25392 25458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25393 25459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case 'f': {
25460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'f': { /* Fractional seconds. (Non-standard) */
25395 25461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
double s = x.s;
25396 25462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( s>59.999 ) s = 59.999;
25397 25463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sRes, "%06.3f", s);
25398 25464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25399 25465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25400 25466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'F': {
25401 25467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sRes, "%04d-%02d-%02d", x.Y, x.M, x.D);
25402 25468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'G': /* Fall thru */
25471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'g': {
25472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DateTime y = x;
25473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( y.validJD );
25474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Move y so that it is the Thursday in the same week as x */
25475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ y.iJD += (3 - daysAfterMonday(&x))*86400000;
25476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ y.validYMD = 0;
25477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ computeYMD(&y);
25478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cf=='g' ){
25479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(&sRes, "%02d", y.Y%100);
25480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
25481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(&sRes, "%04d", y.Y);
25482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
25403 25484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25404 25485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'H':
25405 25486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'k': {
25406 25487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sRes, cf=='H' ? "%02d" : "%2d", x.h);
25407 25488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
@@ -25412,29 +25493,15 @@
25412 25493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( h>12 ) h -= 12;
25413 25494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( h==0 ) h = 12;
25414 25495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sRes, cf=='I' ? "%02d" : "%2d", h);
25415 25496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25416 25497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case 'W': /* Fall thru */
25418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case 'j': {
25419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nDay; /* Number of days since 1st day of year */
25420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- DateTime y = x;
25421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- y.validJD = 0;
25422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- y.M = 1;
25423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- y.D = 1;
25424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- computeJD(&y);
25425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nDay = (int)((x.iJD-y.iJD+43200000)/86400000);
25426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cf=='W' ){
25427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int wd; /* 0=Monday, 1=Tuesday, ... 6=Sunday */
25428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wd = (int)(((x.iJD+43200000)/86400000)%7);
25429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_str_appendf(&sRes,"%02d",(nDay+7-wd)/7);
25430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
25431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_str_appendf(&sRes,"%03d",nDay+1);
25432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
25498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'j': { /* Day of year. Jan01==1, Jan02==2, and so forth */
25499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(&sRes,"%03d",daysAfterJan01(&x)+1);
25433 25500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25434 25501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case 'J': {
25502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'J': { /* Julian day number. (Non-standard) */
25436 25503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sRes,"%.16g",x.iJD/86400000.0);
25437 25504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25438 25505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25439 25506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'm': {
25440 25507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sRes,"%02d",x.M);
@@ -25473,16 +25540,36 @@
25473 25540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25474 25541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'T': {
25475 25542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sRes,"%02d:%02d:%02d", x.h, x.m, (int)x.s);
25476 25543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25477 25544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case 'u': /* Fall thru */
25479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case 'w': {
25480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char c = (char)(((x.iJD+129600000)/86400000) % 7) + '0';
25545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'u': /* Day of week. 1 to 7. Monday==1, Sunday==7 */
25546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'w': { /* Day of week. 0 to 6. Sunday==0, Monday==1 */
25547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c = (char)daysAfterSunday(&x) + '0';
25481 25548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='0' && cf=='u' ) c = '7';
25482 25549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendchar(&sRes, 1, c);
25483 25550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'U': { /* Week num. 00-53. First Sun of the year is week 01 */
25553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(&sRes,"%02d",
25554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (daysAfterJan01(&x)-daysAfterSunday(&x)+7)/7);
25555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
25556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'V': { /* Week num. 01-53. First week with a Thur is week 01 */
25558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DateTime y = x;
25559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Adjust y so that is the Thursday in the same week as x */
25560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( y.validJD );
25561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ y.iJD += (3 - daysAfterMonday(&x))*86400000;
25562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ y.validYMD = 0;
25563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ computeYMD(&y);
25564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(&sRes,"%02d", daysAfterJan01(&y)/7+1);
25565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
25566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 'W': { /* Week num. 00-53. First Mon of the year is week 01 */
25568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendf(&sRes,"%02d",
25569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (daysAfterJan01(&x)-daysAfterMonday(&x)+7)/7);
25570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
25484 25571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25485 25572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'Y': {
25486 25573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sRes,"%04d",x.Y);
25487 25574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
25488 25575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -30127,10 +30214,28 @@
30127 30214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(mem0.mutex);
30128 30215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_release_memory(nByte);
30129 30216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_enter(mem0.mutex);
30130 30217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30131 30218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
30219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
30220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
30221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This routine is called whenever an out-of-memory condition is seen,
30222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** It's only purpose to to serve as a breakpoint for gdb or similar
30223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** code debuggers when working on out-of-memory conditions, for example
30224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** caused by PRAGMA hard_heap_limit=N.
30225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
30226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static SQLITE_NOINLINE void test_oom_breakpoint(void){
30227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static u64 nOomFault = 0;
30228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nOomFault++;
30229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The assert() is never reached in a human lifetime. It is here mostly
30230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to prevent code optimizers from optimizing out this function. */
30231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (nOomFault>>32) < 0xffffffff );
30232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
30233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
30234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define test_oom_breakpoint(X) /* No-op for production builds */
30235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
30236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
30132 30237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
30133 30238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Do a memory allocation with statistics and alarms. Assume the
30134 30239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** lock is already held.
30135 30240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
30136 30241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void mallocWithAlarm(int n, void **pp){
@@ -30153,10 +30258,11 @@
30153 30258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AtomicStore(&mem0.nearlyFull, 1);
30154 30259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MallocAlarm(nFull);
30155 30260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( mem0.hardLimit ){
30156 30261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nUsed = sqlite3StatusValue(SQLITE_STATUS_MEMORY_USED);
30157 30262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nUsed >= mem0.hardLimit - nFull ){
30263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ test_oom_breakpoint();
30158 30264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pp = 0;
30159 30265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
30160 30266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30161 30267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30162 30268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -30441,10 +30547,11 @@
30441 30547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nDiff>0 && (nUsed = sqlite3StatusValue(SQLITE_STATUS_MEMORY_USED)) >=
30442 30548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mem0.alarmThreshold-nDiff ){
30443 30549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MallocAlarm(nDiff);
30444 30550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( mem0.hardLimit>0 && nUsed >= mem0.hardLimit - nDiff ){
30445 30551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_mutex_leave(mem0.mutex);
30552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ test_oom_breakpoint();
30446 30553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
30447 30554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30448 30555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30449 30556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew = sqlite3GlobalConfig.m.xRealloc(pOld, nNew);
30450 30557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
@@ -31307,10 +31414,11 @@
31307 31414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31308 31415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
31309 31416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( xtype==etFLOAT ){
31310 31417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRound = -precision;
31311 31418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( xtype==etGENERIC ){
31419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( precision==0 ) precision = 1;
31312 31420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRound = precision;
31313 31421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
31314 31422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRound = precision+1;
31315 31423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31316 31424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3FpDecode(&s, realvalue, iRound, flag_altform2 ? 26 : 16);
@@ -31342,17 +31450,18 @@
31342 31450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
31343 31451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
prefix = flag_prefix;
31344 31452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
31345 31453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31346 31454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exp = s.iDP-1;
31347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( xtype==etGENERIC && precision>0 ) precision--;
31348 31455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31349 31456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
31350 31457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the field type is etGENERIC, then convert to either etEXP
31351 31458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or etFLOAT, as appropriate.
31352 31459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
31353 31460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( xtype==etGENERIC ){
31461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( precision>0 );
31462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ precision--;
31354 31463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flag_rtz = !flag_alternateform;
31355 31464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( exp<-4 || exp>precision ){
31356 31465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xtype = etEXP;
31357 31466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
31358 31467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
precision = precision - exp;
@@ -35639,11 +35748,11 @@
35639 35748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( i>=0 && i<sizeof(p->zBuf)-1 );
35640 35749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->n = sizeof(p->zBuf) - 1 - i;
35641 35750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->n>0 );
35642 35751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->n<sizeof(p->zBuf) );
35643 35752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iDP = p->n + exp;
35644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( iRound<0 ){
35753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iRound<=0 ){
35645 35754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRound = p->iDP - iRound;
35646 35755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRound==0 && p->zBuf[i+1]>='5' ){
35647 35756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iRound = 1;
35648 35757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zBuf[i--] = '0';
35649 35758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->n++;
@@ -36817,11 +36926,11 @@
36817 36926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 28 */ "NotFound" OpHelp("key=r[P3@P4]"),
36818 36927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 29 */ "Found" OpHelp("key=r[P3@P4]"),
36819 36928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 30 */ "SeekRowid" OpHelp("intkey=r[P3]"),
36820 36929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 31 */ "NotExists" OpHelp("intkey=r[P3]"),
36821 36930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 32 */ "Last" OpHelp(""),
36822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* 33 */ "IfSmaller" OpHelp(""),
36931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 33 */ "IfSizeBetween" OpHelp(""),
36823 36932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 34 */ "SorterSort" OpHelp(""),
36824 36933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 35 */ "Sort" OpHelp(""),
36825 36934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 36 */ "Rewind" OpHelp(""),
36826 36935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 37 */ "SorterNext" OpHelp(""),
36827 36936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 38 */ "Prev" OpHelp(""),
@@ -39260,12 +39369,16 @@
39260 39369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
39261 39370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the code incorrectly assumes that it is the POSIX version that is
39262 39371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** available, the error message will often be an empty string. Not a
39263 39372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** huge problem. Incorrectly concluding that the GNU version is available
39264 39373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** could lead to a segfault though.
39374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
39375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Forum post 3f13857fa4062301 reports that the Android SDK may use
39376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** int-type return, depending on its version.
39265 39377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
39266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if defined(STRERROR_R_CHAR_P) || defined(__USE_GNU)
39378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if (defined(STRERROR_R_CHAR_P) || defined(__USE_GNU)) \
39379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && !defined(ANDROID) && !defined(__ANDROID__)
39267 39380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErr =
39268 39381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# endif
39269 39382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
strerror_r(iErrno, aErr, sizeof(aErr)-1);
39270 39383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
39271 39384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#elif SQLITE_THREADSAFE
@@ -53260,10 +53373,18 @@
53260 53373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_step(pStmt);
53261 53374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_ROW ){
53262 53375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut = 0;
53263 53376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
53264 53377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz = sqlite3_column_int64(pStmt, 0)*szPage;
53378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sz==0 ){
53379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_reset(pStmt);
53380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_exec(db, "BEGIN IMMEDIATE; COMMIT;", 0, 0, 0);
53381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3_step(pStmt);
53382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_ROW ){
53383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sz = sqlite3_column_int64(pStmt, 0)*szPage;
53384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
53385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
53265 53386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( piSize ) *piSize = sz;
53266 53387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( mFlags & SQLITE_SERIALIZE_NOCOPY ){
53267 53388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut = 0;
53268 53389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
53269 53390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut = sqlite3_malloc64( sz );
@@ -70281,12 +70402,51 @@
70281 70402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_CORRUPT_PAGE(pMemPage) corruptPageError(__LINE__, pMemPage)
70282 70403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
70283 70404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define SQLITE_CORRUPT_PAGE(pMemPage) SQLITE_CORRUPT_PGNO(pMemPage->pgno)
70284 70405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
70285 70406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Default value for SHARED_LOCK_TRACE macro if shared-cache is disabled
70408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or if the lock tracking is disabled. This is always the value for
70409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** release builds.
70410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
70411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SHARED_LOCK_TRACE(X,MSG,TAB,TYPE) /*no-op*/
70412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
70286 70413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_SHARED_CACHE
70287 70414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if 0
70416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ^---- Change to 1 and recompile to enable shared-lock tracing
70417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for debugging purposes.
70418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
70419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Print all shared-cache locks on a BtShared. Debugging use only.
70420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
70421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sharedLockTrace(
70422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ BtShared *pBt,
70423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zMsg,
70424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iRoot,
70425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int eLockType
70426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
70427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ BtLock *pLock;
70428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iRoot>0 ){
70429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("%s-%p %u%s:", zMsg, pBt, iRoot, eLockType==READ_LOCK?"R":"W");
70430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
70431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("%s-%p:", zMsg, pBt);
70432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(pLock=pBt->pLock; pLock; pLock=pLock->pNext){
70434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf(" %p/%u%s", pLock->pBtree, pLock->iTable,
70435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLock->eLock==READ_LOCK ? "R" : "W");
70436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( pLock->pNext && pLock->pBtree==pLock->pNext->pBtree ){
70437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pLock = pLock->pNext;
70438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf(",%u%s", pLock->iTable, pLock->eLock==READ_LOCK ? "R" : "W");
70439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printf("\n");
70442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fflush(stdout);
70443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
70444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #undef SHARED_LOCK_TRACE
70445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SHARED_LOCK_TRACE(X,MSG,TAB,TYPE) sharedLockTrace(X,MSG,TAB,TYPE)
70446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* Shared-lock tracing */
70447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
70288 70448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
70289 70449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
70290 70450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**** This function is only used as part of an assert() statement. ***
70291 70451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
70292 70452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Check to see if pBtree holds the required locks to read or write to the
@@ -70358,10 +70518,12 @@
70358 70518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70359 70519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70360 70520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
70361 70521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTab = iRoot;
70362 70522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
70523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
70524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SHARED_LOCK_TRACE(pBtree->pBt,"hasLock",iRoot,eLockType);
70363 70525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70364 70526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Search for the required lock. Either a write-lock on root-page iTab, a
70365 70527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** write-lock on the schema table, or (if the client is reading) a
70366 70528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** read-lock on iTab will suffice. Return 1 if any of these are found. */
70367 70529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pLock=pBtree->pBt->pLock; pLock; pLock=pLock->pNext){
@@ -70492,10 +70654,12 @@
70492 70654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int setSharedCacheTableLock(Btree *p, Pgno iTable, u8 eLock){
70493 70655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtShared *pBt = p->pBt;
70494 70656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtLock *pLock = 0;
70495 70657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtLock *pIter;
70496 70658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SHARED_LOCK_TRACE(pBt,"setLock", iTable, eLock);
70660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
70497 70661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3BtreeHoldsMutex(p) );
70498 70662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( eLock==READ_LOCK || eLock==WRITE_LOCK );
70499 70663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->db!=0 );
70500 70664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70501 70665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A connection with the read-uncommitted flag set will never try to
@@ -70559,10 +70723,12 @@
70559 70723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70560 70724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3BtreeHoldsMutex(p) );
70561 70725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->sharable || 0==*ppIter );
70562 70726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->inTrans>0 );
70563 70727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
70728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SHARED_LOCK_TRACE(pBt, "clearAllLocks", 0, 0);
70729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
70564 70730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( *ppIter ){
70565 70731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtLock *pLock = *ppIter;
70566 70732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pBt->btsFlags & BTS_EXCLUSIVE)==0 || pBt->pWriter==pLock->pBtree );
70567 70733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pLock->pBtree->inTrans>=pLock->eLock );
70568 70734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pLock->pBtree==p ){
@@ -70597,10 +70763,13 @@
70597 70763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
70598 70764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function changes all write-locks held by Btree p into read-locks.
70599 70765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
70600 70766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void downgradeAllSharedCacheTableLocks(Btree *p){
70601 70767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtShared *pBt = p->pBt;
70768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
70769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SHARED_LOCK_TRACE(pBt, "downgradeLocks", 0, 0);
70770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
70602 70771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pBt->pWriter==p ){
70603 70772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtLock *pLock;
70604 70773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBt->pWriter = 0;
70605 70774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBt->btsFlags &= ~(BTS_EXCLUSIVE|BTS_PENDING);
70606 70775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pLock=pBt->pLock; pLock; pLock=pLock->pNext){
@@ -75210,13 +75379,16 @@
75210 75379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pCur->curFlags & BTCF_ValidOvfl)==0 ){
75211 75380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nOvfl = (pCur->info.nPayload-pCur->info.nLocal+ovflSize-1)/ovflSize;
75212 75381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->aOverflow==0
75213 75382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| nOvfl*(int)sizeof(Pgno) > sqlite3MallocSize(pCur->aOverflow)
75214 75383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
75215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Pgno *aNew = (Pgno*)sqlite3Realloc(
75216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pCur->aOverflow, nOvfl*2*sizeof(Pgno)
75217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
75384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Pgno *aNew;
75385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3FaultSim(413) ){
75386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aNew = 0;
75387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
75388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aNew = (Pgno*)sqlite3Realloc(pCur->aOverflow, nOvfl*2*sizeof(Pgno));
75389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
75218 75390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aNew==0 ){
75219 75391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_NOMEM_BKPT;
75220 75392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
75221 75393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->aOverflow = aNew;
75222 75394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -76261,14 +76433,14 @@
76261 76433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 i;
76262 76434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76263 76435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( cursorOwnsBtShared(pCur) );
76264 76436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
76265 76437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Currently this interface is only called by the OP_IfSmaller
76267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** opcode, and it that case the cursor will always be valid and
76268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** will always point to a leaf node. */
76269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(pCur->eState!=CURSOR_VALID) ) return -1;
76438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Currently this interface is only called by the OP_IfSizeBetween
76439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** opcode and the OP_Count opcode with P3=1. In either case,
76440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the cursor will always be valid unless the btree is empty. */
76441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCur->eState!=CURSOR_VALID ) return 0;
76270 76442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pCur->pPage->leaf==0) ) return -1;
76271 76443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76272 76444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pCur->pPage->nCell;
76273 76445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pCur->iPage; i++){
76274 76446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n *= pCur->apPage[i]->nCell;
@@ -78392,11 +78564,11 @@
78392 78564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78393 78565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Verify that all sibling pages are of the same "type" (table-leaf,
78394 78566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table-interior, index-leaf, or index-interior).
78395 78567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78396 78568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOld->aData[0]!=apOld[0]->aData[0] ){
78397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_CORRUPT_BKPT;
78569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_CORRUPT_PAGE(pOld);
78398 78570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto balance_cleanup;
78399 78571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78400 78572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78401 78573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Load b.apCell[] with pointers to all cells in pOld. If pOld
78402 78574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** contains overflow cells, include them in the b.apCell[] array
@@ -78416,11 +78588,11 @@
78416 78588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** first.
78417 78589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78418 78590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&b.szCell[b.nCell], 0, sizeof(b.szCell[0])*(limit+pOld->nOverflow));
78419 78591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOld->nOverflow>0 ){
78420 78592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(limit<pOld->aiOvfl[0]) ){
78421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_CORRUPT_BKPT;
78593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_CORRUPT_PAGE(pOld);
78422 78594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto balance_cleanup;
78423 78595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
78424 78596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
limit = pOld->aiOvfl[0];
78425 78597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<limit; j++){
78426 78598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b.apCell[b.nCell] = aData + (maskPage & get2byteAligned(piCell));
@@ -79059,11 +79231,11 @@
79059 79231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pOther=pCur->pBt->pCursor; pOther; pOther=pOther->pNext){
79060 79232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOther!=pCur
79061 79233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pOther->eState==CURSOR_VALID
79062 79234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& pOther->pPage==pCur->pPage
79063 79235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
79064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pCur->pPage);
79065 79237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79066 79238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79067 79239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
79068 79240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79069 79241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -79119,11 +79291,11 @@
79119 79291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79120 79292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( sqlite3PagerPageRefcount(pPage->pDbPage)>1 ){
79121 79293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The page being written is not a root page, and there is currently
79122 79294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** more than one reference to it. This only happens if the page is one
79123 79295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of its own ancestor pages. Corruption. */
79124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_CORRUPT_BKPT;
79296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_CORRUPT_PAGE(pPage);
79125 79297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
79126 79298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemPage * const pParent = pCur->apPage[iPage-1];
79127 79299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int const iIdx = pCur->aiIdx[iPage-1];
79128 79300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79129 79301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3PagerWrite(pParent->pDbPage);
@@ -79283,11 +79455,11 @@
79283 79455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ovflPageSize = pBt->usableSize - 4;
79284 79456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do{
79285 79457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = btreeGetPage(pBt, ovflPgno, &pPage, 0);
79286 79458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
79287 79459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sqlite3PagerPageRefcount(pPage->pDbPage)!=1 || pPage->isInit ){
79288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_CORRUPT_BKPT;
79460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_CORRUPT_PAGE(pPage);
79289 79461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
79290 79462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iOffset+ovflPageSize<(u32)nTotal ){
79291 79463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ovflPgno = get4byte(pPage->aData);
79292 79464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
79293 79465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ovflPageSize = nTotal - iOffset;
@@ -79311,11 +79483,11 @@
79311 79483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
MemPage *pPage = pCur->pPage; /* Page being written */
79312 79484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79313 79485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->info.pPayload + pCur->info.nLocal > pPage->aDataEnd
79314 79486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| pCur->info.pPayload < pPage->aData + pPage->cellOffset
79315 79487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
79316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
79317 79489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79318 79490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->info.nLocal==nTotal ){
79319 79491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The entire cell is local */
79320 79492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return btreeOverwriteContent(pPage, pCur->info.pPayload, pX,
79321 79493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, pCur->info.nLocal);
@@ -79392,11 +79564,11 @@
79392 79564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* This can only happen if the schema is corrupt such that there is more
79393 79565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** than one table or index with the same root page as used by the cursor.
79394 79566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Which can only happen if the SQLITE_NoSchemaError flag was set when
79395 79567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the schema was loaded. This cannot be asserted though, as a user might
79396 79568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** set the flag, load the schema, and then unset the flag. */
79397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PGNO(pCur->pgnoRoot);
79398 79570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79399 79571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79400 79572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79401 79573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Ensure that the cursor is not in the CURSOR_FAULT state and that it
79402 79574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** points to a valid cell.
@@ -79515,11 +79687,11 @@
79515 79687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->intKey || pX->nKey>=0 || (flags & BTREE_PREFORMAT) );
79516 79688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pPage->leaf || !pPage->intKey );
79517 79689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPage->nFree<0 ){
79518 79690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pCur->eState>CURSOR_INVALID) ){
79519 79691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ^^^^^--- due to the moveToRoot() call above */
79520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_CORRUPT_BKPT;
79692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_CORRUPT_PAGE(pPage);
79521 79693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
79522 79694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = btreeComputeFreeSpace(pPage);
79523 79695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79524 79696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
79525 79697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -79554,11 +79726,11 @@
79554 79726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCur->info.nSize = 0;
79555 79727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( loc==0 ){
79556 79728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CellInfo info;
79557 79729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( idx>=0 );
79558 79730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( idx>=pPage->nCell ){
79559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
79560 79732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79561 79733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3PagerWrite(pPage->pDbPage);
79562 79734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
79563 79735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_insert;
79564 79736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -79581,14 +79753,14 @@
79581 79753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This optimization cannot be used on an autovacuum database if the
79582 79754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** new entry uses overflow pages, as the insertCell() call below is
79583 79755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** necessary to add the PTRMAP_OVERFLOW1 pointer-map entry. */
79584 79756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc==SQLITE_OK ); /* clearCell never fails when nLocal==nPayload */
79585 79757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( oldCell < pPage->aData+pPage->hdrOffset+10 ){
79586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
79587 79759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79588 79760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( oldCell+szNew > pPage->aDataEnd ){
79589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
79590 79762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79591 79763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(oldCell, newCell, szNew);
79592 79764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
79593 79765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79594 79766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dropCell(pPage, idx, info.nSize, &rc);
@@ -79686,11 +79858,11 @@
79686 79858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79687 79859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pDest->pKeyInfo==0 ) aOut += putVarint(aOut, iKey);
79688 79860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nIn = pSrc->info.nLocal;
79689 79861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aIn = pSrc->info.pPayload;
79690 79862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aIn+nIn>pSrc->pPage->aDataEnd ){
79691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pSrc->pPage);
79692 79864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79693 79865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nRem = pSrc->info.nPayload;
79694 79866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nIn==nRem && nIn<pDest->pPage->maxLocal ){
79695 79867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(aOut, aIn, nIn);
79696 79868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBt->nPreformatSize = nIn + (aOut - pBt->pTmpSpace);
@@ -79711,11 +79883,11 @@
79711 79883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBt->nPreformatSize += 4;
79712 79884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79713 79885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79714 79886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nRem>nIn ){
79715 79887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aIn+nIn+4>pSrc->pPage->aDataEnd ){
79716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pSrc->pPage);
79717 79889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79718 79890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ovflIn = get4byte(&pSrc->info.pPayload[nIn]);
79719 79891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79720 79892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79721 79893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
do {
@@ -79807,27 +79979,27 @@
79807 79979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCur->eState>=CURSOR_REQUIRESEEK ){
79808 79980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = btreeRestoreCursorPosition(pCur);
79809 79981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( rc!=SQLITE_OK || CORRUPT_DB || pCur->eState==CURSOR_VALID );
79810 79982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc || pCur->eState!=CURSOR_VALID ) return rc;
79811 79983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
79812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PGNO(pCur->pgnoRoot);
79813 79985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79814 79986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79815 79987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCur->eState==CURSOR_VALID );
79816 79988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79817 79989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCellDepth = pCur->iPage;
79818 79990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iCellIdx = pCur->ix;
79819 79991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPage = pCur->pPage;
79820 79992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPage->nCell<=iCellIdx ){
79821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
79822 79994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79823 79995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCell = findCell(pPage, iCellIdx);
79824 79996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPage->nFree<0 && btreeComputeFreeSpace(pPage) ){
79825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
79997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
79826 79998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79827 79999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pCell<&pPage->aCellIdx[pPage->nCell] ){
79828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
80000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PAGE(pPage);
79829 80001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79830 80002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
79831 80003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the BTREE_SAVEPOSITION bit is on, then the cursor position must
79832 80004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be preserved following this delete operation. If the current delete
79833 80005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** will cause a b-tree rebalance, then this is done by saving the cursor
@@ -79914,11 +80086,11 @@
79914 80086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pCur->apPage[iCellDepth+1]->pgno;
79915 80087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
79916 80088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = pCur->pPage->pgno;
79917 80089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
79918 80090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCell = findCell(pLeaf, pLeaf->nCell-1);
79919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pCell<&pLeaf->aData[4] ) return SQLITE_CORRUPT_BKPT;
80091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCell<&pLeaf->aData[4] ) return SQLITE_CORRUPT_PAGE(pLeaf);
79920 80092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCell = pLeaf->xCellSize(pLeaf, pCell);
79921 80093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( MX_CELL_SIZE(pBt) >= nCell );
79922 80094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTmp = pBt->pTmpSpace;
79923 80095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pTmp!=0 );
79924 80096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3PagerWrite(pLeaf->pDbPage);
@@ -80030,11 +80202,11 @@
80030 80202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** root page of the new table should go. meta[3] is the largest root-page
80031 80203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** created so far, so the new root-page is (meta[3]+1).
80032 80204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
80033 80205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3BtreeGetMeta(p, BTREE_LARGEST_ROOT_PAGE, &pgnoRoot);
80034 80206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pgnoRoot>btreePagecount(pBt) ){
80035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
80207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PGNO(pgnoRoot);
80036 80208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80037 80209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pgnoRoot++;
80038 80210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80039 80211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The new root-page may not be allocated on a pointer-map page, or the
80040 80212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** PENDING_BYTE page.
@@ -80078,11 +80250,11 @@
80078 80250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
80079 80251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
80080 80252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80081 80253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = ptrmapGet(pBt, pgnoRoot, &eType, &iPtrPage);
80082 80254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( eType==PTRMAP_ROOTPAGE || eType==PTRMAP_FREEPAGE ){
80083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_CORRUPT_BKPT;
80255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_CORRUPT_PGNO(pgnoRoot);
80084 80256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80085 80257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
80086 80258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
releasePage(pRoot);
80087 80259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
80088 80260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -80168,18 +80340,18 @@
80168 80340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int hdr;
80169 80341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CellInfo info;
80170 80342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80171 80343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_mutex_held(pBt->mutex) );
80172 80344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pgno>btreePagecount(pBt) ){
80173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
80345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PGNO(pgno);
80174 80346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80175 80347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = getAndInitPage(pBt, pgno, &pPage, 0);
80176 80348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
80177 80349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pBt->openFlags & BTREE_SINGLE)==0
80178 80350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& sqlite3PagerPageRefcount(pPage->pDbPage) != (1 + (pgno==1))
80179 80351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
80180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = SQLITE_CORRUPT_BKPT;
80352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_CORRUPT_PAGE(pPage);
80181 80353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto cleardatabasepage_out;
80182 80354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80183 80355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hdr = pPage->hdrOffset;
80184 80356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pPage->nCell; i++){
80185 80357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCell = findCell(pPage, i);
@@ -80279,11 +80451,11 @@
80279 80451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80280 80452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3BtreeHoldsMutex(p) );
80281 80453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( p->inTrans==TRANS_WRITE );
80282 80454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iTable>=2 );
80283 80455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iTable>btreePagecount(pBt) ){
80284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_CORRUPT_BKPT;
80456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return SQLITE_CORRUPT_PGNO(iTable);
80285 80457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
80286 80458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
80287 80459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeClearTable(p, iTable, 0);
80288 80460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
80289 80461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = btreeGetPage(pBt, (Pgno)iTable, &pPage, 0);
@@ -83920,32 +84092,52 @@
83920 84092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83921 84093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
83922 84094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83923 84095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
83924 84096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Handle negative integers in a single step. This is needed in the
83925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** case when the value is -9223372036854775808.
83926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
83927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( op==TK_UMINUS
83928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (pExpr->pLeft->op==TK_INTEGER || pExpr->pLeft->op==TK_FLOAT) ){
83929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pExpr = pExpr->pLeft;
83930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- op = pExpr->op;
83931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- negInt = -1;
83932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zNeg = "-";
84097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** case when the value is -9223372036854775808. Except - do not do this
84098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for hexadecimal literals. */
84099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==TK_UMINUS ){
84100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pLeft = pExpr->pLeft;
84101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pLeft->op==TK_INTEGER || pLeft->op==TK_FLOAT) ){
84102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ExprHasProperty(pLeft, EP_IntValue)
84103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pLeft->u.zToken[0]!='0' || (pLeft->u.zToken[1] & ~0x20)!='X'
84104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
84105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pExpr = pLeft;
84106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ op = pExpr->op;
84107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ negInt = -1;
84108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zNeg = "-";
84109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
84110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
83933 84111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83934 84112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
83935 84113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( op==TK_STRING || op==TK_FLOAT || op==TK_INTEGER ){
83936 84114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVal = valueNew(db, pCtx);
83937 84115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pVal==0 ) goto no_mem;
83938 84116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ExprHasProperty(pExpr, EP_IntValue) ){
83939 84117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemSetInt64(pVal, (i64)pExpr->u.iValue*negInt);
83940 84118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
83941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zVal = sqlite3MPrintf(db, "%s%s", zNeg, pExpr->u.zToken);
83942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zVal==0 ) goto no_mem;
83943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ValueSetStr(pVal, -1, zVal, SQLITE_UTF8, SQLITE_DYNAMIC);
84119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 iVal;
84120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==TK_INTEGER && 0==sqlite3DecOrHexToI64(pExpr->u.zToken, &iVal) ){
84121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeMemSetInt64(pVal, iVal*negInt);
84122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
84123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zVal = sqlite3MPrintf(db, "%s%s", zNeg, pExpr->u.zToken);
84124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zVal==0 ) goto no_mem;
84125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ValueSetStr(pVal, -1, zVal, SQLITE_UTF8, SQLITE_DYNAMIC);
84126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
83944 84127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (op==TK_INTEGER || op==TK_FLOAT ) && affinity==SQLITE_AFF_BLOB ){
83946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ValueApplyAffinity(pVal, SQLITE_AFF_NUMERIC, SQLITE_UTF8);
84128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( affinity==SQLITE_AFF_BLOB ){
84129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( op==TK_FLOAT ){
84130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pVal && pVal->z && pVal->flags==(MEM_Str|MEM_Term) );
84131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3AtoF(pVal->z, &pVal->u.r, pVal->n, SQLITE_UTF8);
84132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pVal->flags = MEM_Real;
84133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( op==TK_INTEGER ){
84134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This case is required by -9223372036854775808 and other strings
84135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that look like integers but cannot be handled by the
84136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3DecOrHexToI64() call above. */
84137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ValueApplyAffinity(pVal, SQLITE_AFF_NUMERIC, SQLITE_UTF8);
84138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
83947 84139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
83948 84140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ValueApplyAffinity(pVal, affinity, SQLITE_UTF8);
83949 84141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
83950 84142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (pVal->flags & MEM_IntReal)==0 );
83951 84143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pVal->flags & (MEM_Int|MEM_IntReal|MEM_Real) ){
@@ -94641,11 +94833,11 @@
94641 94833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94642 94834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
94643 94835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94644 94836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
94645 94837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef SQLITE_OMIT_CAST
94838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !defined(SQLITE_OMIT_CAST) && !defined(SQLITE_OMIT_ANALYZE)
94647 94839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Opcode: Cast P1 P2 * * *
94648 94840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Synopsis: affinity(r[P1])
94649 94841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
94650 94842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Force the value in register P1 to be the type defined by P2.
94651 94843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -94856,20 +95048,24 @@
94856 95048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (flags3 & (MEM_Int|MEM_IntReal|MEM_Real|MEM_Str))==MEM_Str ){
94857 95049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
applyNumericAffinity(pIn3,0);
94858 95050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94859 95051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94860 95052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( affinity==SQLITE_AFF_TEXT && ((flags1 | flags3) & MEM_Str)!=0 ){
94861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (flags1 & MEM_Str)==0 && (flags1&(MEM_Int|MEM_Real|MEM_IntReal))!=0 ){
95053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (flags1 & MEM_Str)!=0 ){
95054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn1->flags &= ~(MEM_Int|MEM_Real|MEM_IntReal);
95055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (flags1&(MEM_Int|MEM_Real|MEM_IntReal))!=0 ){
94862 95056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pIn1->flags & MEM_Int );
94863 95057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pIn1->flags & MEM_Real );
94864 95058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pIn1->flags & MEM_IntReal );
94865 95059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemStringify(pIn1, encoding, 1);
94866 95060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( (flags1&MEM_Dyn) != (pIn1->flags&MEM_Dyn) );
94867 95061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags1 = (pIn1->flags & ~MEM_TypeMask) | (flags1 & MEM_TypeMask);
94868 95062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pIn1==pIn3) ) flags3 = flags1 | MEM_Str;
94869 95063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
94870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (flags3 & MEM_Str)==0 && (flags3&(MEM_Int|MEM_Real|MEM_IntReal))!=0 ){
95064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (flags3 & MEM_Str)!=0 ){
95065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pIn3->flags &= ~(MEM_Int|MEM_Real|MEM_IntReal);
95066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( (flags3&(MEM_Int|MEM_Real|MEM_IntReal))!=0 ){
94871 95067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pIn3->flags & MEM_Int );
94872 95068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pIn3->flags & MEM_Real );
94873 95069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pIn3->flags & MEM_IntReal );
94874 95070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeMemStringify(pIn3, encoding, 1);
94875 95071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( (flags3&MEM_Dyn) != (pIn3->flags&MEM_Dyn) );
@@ -96209,15 +96405,20 @@
96209 96405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
len = sqlite3SmallTypeSizes[serial_type];
96210 96406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( len>=1 && len<=8 && len!=5 && len!=7 );
96211 96407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( len ){
96212 96408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: zPayload[7] = (u8)(v&0xff); v >>= 8;
96213 96409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPayload[6] = (u8)(v&0xff); v >>= 8;
96410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* no break */ deliberate_fall_through
96214 96411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 6: zPayload[5] = (u8)(v&0xff); v >>= 8;
96215 96412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPayload[4] = (u8)(v&0xff); v >>= 8;
96413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* no break */ deliberate_fall_through
96216 96414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 4: zPayload[3] = (u8)(v&0xff); v >>= 8;
96415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* no break */ deliberate_fall_through
96217 96416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 3: zPayload[2] = (u8)(v&0xff); v >>= 8;
96417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* no break */ deliberate_fall_through
96218 96418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 2: zPayload[1] = (u8)(v&0xff); v >>= 8;
96419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* no break */ deliberate_fall_through
96219 96420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 1: zPayload[0] = (u8)(v&0xff);
96220 96421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
96221 96422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPayload += len;
96222 96423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
96223 96424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( serial_type<0x80 ){
@@ -98738,32 +98939,41 @@
98738 98939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ) goto jump_to_p2;
98739 98940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98740 98941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
98741 98942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98742 98943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
98743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: IfSmaller P1 P2 P3 * *
98944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: IfSizeBetween P1 P2 P3 P4 *
98744 98945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
98745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Estimate the number of rows in the table P1. Jump to P2 if that
98746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** estimate is less than approximately 2**(0.1*P3).
98946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Let N be the approximate number of rows in the table or index
98947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** with cursor P1 and let X be 10*log2(N) if N is positive or -1
98948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if N is zero. Thus X will be within the range of -1 to 640, inclusive
98949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Jump to P2 if X is in between P3 and P4, inclusive.
98747 98950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
98748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- case OP_IfSmaller: { /* jump */
98951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case OP_IfSizeBetween: { /* jump */
98749 98952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCursor *pC;
98750 98953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BtCursor *pCrsr;
98751 98954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int res;
98752 98955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 sz;
98753 98956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
98754 98957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
98958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p4type==P4_INT32 );
98959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p3>=-1 && pOp->p3<=640 );
98960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pOp->p4.i>=-1 && pOp->p4.i<=640 );
98755 98961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pC = p->apCsr[pOp->p1];
98756 98962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pC!=0 );
98757 98963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCrsr = pC->uc.pCursor;
98758 98964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pCrsr );
98759 98965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3BtreeFirst(pCrsr, &res);
98760 98966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) goto abort_due_to_error;
98761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( res==0 ){
98967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( res!=0 ){
98968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sz = -1; /* -Infinity encoding */
98969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
98762 98970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz = sqlite3BtreeRowCountEst(pCrsr);
98763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ALWAYS(sz>=0) && sqlite3LogEst((u64)sz)<pOp->p3 ) res = 1;
98971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sz>0 );
98972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sz = sqlite3LogEst((u64)sz);
98764 98973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ res = sz>=pOp->p3 && sz<=pOp->p4.i;
98765 98975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeBranchTaken(res!=0,2);
98766 98976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( res ) goto jump_to_p2;
98767 98977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
98768 98978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98769 98979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -99459,42 +99669,55 @@
99459 99669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) goto abort_due_to_error;
99460 99670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOut->u.i = pgno;
99461 99671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
99462 99672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99463 99673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
99464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Opcode: SqlExec * * * P4 *
99674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Opcode: SqlExec P1 P2 * P4 *
99465 99675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
99466 99676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Run the SQL statement or statements specified in the P4 string.
99467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Disable Auth and Trace callbacks while those statements are running if
99468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** P1 is true.
99677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
99678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The P1 parameter is a bitmask of options:
99679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
99680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x0001 Disable Auth and Trace callbacks while the statements
99681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in P4 are running.
99682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
99683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x0002 Set db->nAnalysisLimit to P2 while the statements in
99684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** P4 are running.
99685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
99469 99686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
99470 99687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case OP_SqlExec: {
99471 99688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zErr;
99472 99689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_AUTHORIZATION
99473 99690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_xauth xAuth;
99474 99691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
99475 99692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 mTrace;
99693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int savedAnalysisLimit;
99476 99694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
99477 99695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeIncrWriteCounter(p, 0);
99478 99696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->nSqlExec++;
99479 99697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErr = 0;
99480 99698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_AUTHORIZATION
99481 99699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xAuth = db->xAuth;
99482 99700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
99483 99701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mTrace = db->mTrace;
99484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOp->p1 ){
99702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ savedAnalysisLimit = db->nAnalysisLimit;
99703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p1 & 0x0001 ){
99485 99704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_AUTHORIZATION
99486 99705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->xAuth = 0;
99487 99706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
99488 99707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->mTrace = 0;
99489 99708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
99709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOp->p1 & 0x0002 ){
99710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->nAnalysisLimit = pOp->p2;
99711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
99490 99712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_exec(db, pOp->p4.z, 0, 0, &zErr);
99491 99713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->nSqlExec--;
99492 99714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_OMIT_AUTHORIZATION
99493 99715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->xAuth = xAuth;
99494 99716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
99495 99717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->mTrace = mTrace;
99718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db->nAnalysisLimit = savedAnalysisLimit;
99496 99719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErr || rc ){
99497 99720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeError(p, "%s", zErr);
99498 99721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zErr);
99499 99722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_NOMEM ) goto no_mem;
99500 99723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto abort_due_to_error;
@@ -99647,12 +99870,12 @@
99647 99870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** register P1 the text of an error message describing any problems.
99648 99871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If no problems are found, store a NULL in register P1.
99649 99872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
99650 99873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The register P3 contains one less than the maximum number of allowed errors.
99651 99874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** At most reg(P3) errors will be reported.
99652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** In other words, the analysis stops as soon as reg(P1) errors are
99653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** seen. Reg(P1) is updated with the number of errors remaining.
99875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** In other words, the analysis stops as soon as reg(P3) errors are
99876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** seen. Reg(P3) is updated with the number of errors remaining.
99654 99877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
99655 99878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The root page numbers of all tables in the database are integers
99656 99879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** stored in P4_INTARRAY argument.
99657 99880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
99658 99881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If P5 is not zero, the check is done on the auxiliary database
@@ -106210,10 +106433,12 @@
106210 106433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db; /* The database connection */
106211 106434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106212 106435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iCol>=0 && iCol<pEList->nExpr );
106213 106436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pOrig = pEList->a[iCol].pExpr;
106214 106437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOrig!=0 );
106438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( !ExprHasProperty(pExpr, EP_Reduced|EP_TokenOnly) );
106439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pExpr->pAggInfo ) return;
106215 106440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db = pParse->db;
106216 106441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDup = sqlite3ExprDup(db, pOrig, 0);
106217 106442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->mallocFailed ){
106218 106443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprDelete(db, pDup);
106219 106444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pDup = 0;
@@ -106408,11 +106633,11 @@
106408 106633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
106409 106634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int lookupName(
106410 106635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse, /* The parsing context */
106411 106636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDb, /* Name of the database containing table, or NULL */
106412 106637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTab, /* Name of table containing column, or NULL */
106413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zCol, /* Name of the column. */
106638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const Expr *pRight, /* Name of the column. */
106414 106639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
NameContext *pNC, /* The name context used to resolve the name */
106415 106640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr /* Make this EXPR node point to the selected column */
106416 106641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
106417 106642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j; /* Loop counters */
106418 106643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int cnt = 0; /* Number of matching column names */
@@ -106425,10 +106650,11 @@
106425 106650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Schema *pSchema = 0; /* Schema of the expression */
106426 106651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int eNewExprOp = TK_COLUMN; /* New value for pExpr->op on success */
106427 106652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = 0; /* Table holding the row */
106428 106653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Column *pCol; /* A column of pTab */
106429 106654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ExprList *pFJMatch = 0; /* Matches for FULL JOIN .. USING */
106655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zCol = pRight->u.zToken;
106430 106656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
106431 106657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pNC ); /* the name context cannot be NULL. */
106432 106658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zCol ); /* The Z in X.Y.Z cannot be NULL */
106433 106659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zDb==0 || zTab!=0 );
106434 106660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) );
@@ -106884,10 +107110,14 @@
106884 107110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErr = cnt==0 ? "no such column" : "ambiguous column name";
106885 107111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDb ){
106886 107112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "%s: %s.%s.%s", zErr, zDb, zTab, zCol);
106887 107113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( zTab ){
106888 107114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "%s: %s.%s", zErr, zTab, zCol);
107115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( cnt==0 && ExprHasProperty(pRight,EP_DblQuoted) ){
107116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ErrorMsg(pParse, "%s: \"%s\" - should this be a"
107117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " string literal in single-quotes?",
107118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zErr, zCol);
106889 107119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
106890 107120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "%s: %s", zErr, zCol);
106891 107121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
106892 107122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RecordErrorOffsetOfExpr(pParse->db, pExpr);
106893 107123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->checkSchema = 1;
@@ -107131,20 +107361,19 @@
107131 107361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be one call to lookupName(). Then the compiler will in-line
107132 107362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** lookupName() for a size reduction and performance increase.
107133 107363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
107134 107364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_ID:
107135 107365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_DOT: {
107136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zColumn;
107137 107366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTable;
107138 107367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDb;
107139 107368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pRight;
107140 107369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
107141 107370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->op==TK_ID ){
107142 107371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDb = 0;
107143 107372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTable = 0;
107144 107373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !ExprHasProperty(pExpr, EP_IntValue) );
107145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zColumn = pExpr->u.zToken;
107374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRight = pExpr;
107146 107375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
107147 107376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pLeft = pExpr->pLeft;
107148 107377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_IdxExpr );
107149 107378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
testcase( pNC->ncFlags & NC_GenCol );
107150 107379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ResolveNotValid(pParse, pNC, "the \".\" operator",
@@ -107159,18 +107388,17 @@
107159 107388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pLeft = pRight->pLeft;
107160 107389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRight = pRight->pRight;
107161 107390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107162 107391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ExprUseUToken(pLeft) && ExprUseUToken(pRight) );
107163 107392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTable = pLeft->u.zToken;
107164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zColumn = pRight->u.zToken;
107165 107393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ExprUseYTab(pExpr) );
107166 107394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( IN_RENAME_OBJECT ){
107167 107395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RenameTokenRemap(pParse, (void*)pExpr, (void*)pRight);
107168 107396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3RenameTokenRemap(pParse, (void*)&pExpr->y.pTab, (void*)pLeft);
107169 107397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107170 107398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return lookupName(pParse, zDb, zTable, zColumn, pNC, pExpr);
107399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return lookupName(pParse, zDb, zTable, pRight, pNC, pExpr);
107172 107400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107173 107401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
107174 107402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Resolve function names
107175 107403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
107176 107404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TK_FUNCTION: {
@@ -118538,11 +118766,11 @@
118538 118766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 nDistinct = p->current.anDLt[i] + 1;
118539 118767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 iVal = (p->nRow + nDistinct - 1) / nDistinct;
118540 118768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iVal==2 && p->nRow*10 <= nDistinct*11 ) iVal = 1;
118541 118769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(&sStat, " %llu", iVal);
118542 118770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STAT4
118543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( p->current.anEq[i] );
118771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->current.anEq[i] || p->nRow==0 );
118544 118772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
118545 118773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
118546 118774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ResultStrAccum(context, &sStat);
118547 118775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
118548 118776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STAT4
@@ -118723,11 +118951,11 @@
118723 118951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3OpenTable(pParse, iTabCur, iDb, pTab, OP_OpenRead);
118724 118952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeLoadString(v, regTabname, pTab->zName);
118725 118953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118726 118954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
118727 118955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCol; /* Number of columns in pIdx. "N" */
118728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int addrRewind; /* Address of "OP_Rewind iIdxCur" */
118956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int addrGotoEnd; /* Address of "OP_Rewind iIdxCur" */
118729 118957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNextRow; /* Address of "next_row:" */
118730 118958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zIdxName; /* Name of the index */
118731 118959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nColTest; /* Number of columns to test for changes */
118732 118960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118733 118961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOnlyIdx && pOnlyIdx!=pIdx ) continue;
@@ -118747,13 +118975,18 @@
118747 118975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "Analysis for %s.%s", pTab->zName, zIdxName));
118748 118976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118749 118977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
118750 118978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Pseudo-code for loop that calls stat_push():
118751 118979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
118980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** regChng = 0
118752 118981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Rewind csr
118753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if eof(csr) goto end_of_scan;
118754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** regChng = 0
118982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if eof(csr){
118983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** stat_init() with count = 0;
118984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** goto end_of_scan;
118985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** }
118986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** count()
118987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** stat_init()
118755 118988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** goto chng_addr_0;
118756 118989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
118757 118990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** next_row:
118758 118991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** regChng = 0
118759 118992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if( idx(0) != regPrev(0) ) goto chng_addr_0
@@ -118788,45 +119021,40 @@
118788 119021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( iDb==sqlite3SchemaToIndex(db, pIdx->pSchema) );
118789 119022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_OpenRead, iIdxCur, pIdx->tnum, iDb);
118790 119023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
118791 119024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeComment((v, "%s", pIdx->zName));
118792 119025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Invoke the stat_init() function. The arguments are:
119026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Implementation of the following:
118794 119027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
119028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** regChng = 0
119029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Rewind csr
119030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if eof(csr){
119031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** stat_init() with count = 0;
119032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** goto end_of_scan;
119033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** }
119034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** count()
119035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** stat_init()
119036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** goto chng_addr_0;
119037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
119038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( regTemp2==regStat+4 );
119039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Integer, db->nAnalysisLimit, regTemp2);
119040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
119041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Arguments to stat_init():
118795 119042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (1) the number of columns in the index including the rowid
118796 119043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (or for a WITHOUT ROWID table, the number of PK columns),
118797 119044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (2) the number of columns in the key without the rowid/pk
118798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (3) estimated number of rows in the index,
118799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
119045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (3) estimated number of rows in the index. */
118800 119046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, nCol, regStat+1);
118801 119047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( regRowid==regStat+2 );
118802 119048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, pIdx->nKeyCol, regRowid);
118803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifdef SQLITE_ENABLE_STAT4
118804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( OptimizationEnabled(db, SQLITE_Stat4) ){
118805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Count, iIdxCur, regTemp);
118806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrRewind = sqlite3VdbeAddOp1(v, OP_Rewind, iIdxCur);
118807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeCoverage(v);
118808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else
118809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
118810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- {
118811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- addrRewind = sqlite3VdbeAddOp1(v, OP_Rewind, iIdxCur);
118812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- VdbeCoverage(v);
118813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_Count, iIdxCur, regTemp, 1);
118814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
118815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( regTemp2==regStat+4 );
118816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp2(v, OP_Integer, db->nAnalysisLimit, regTemp2);
119049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_Count, iIdxCur, regTemp,
119050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ OptimizationDisabled(db, SQLITE_Stat4));
118817 119051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddFunctionCall(pParse, 0, regStat+1, regStat, 4,
118818 119052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&statInitFuncdef, 0);
118819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
118820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Implementation of the following:
118821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
118822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Rewind csr
118823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if eof(csr) goto end_of_scan;
118824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** regChng = 0
118825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** goto next_push_0;
118826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
118827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
119053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrGotoEnd = sqlite3VdbeAddOp1(v, OP_Rewind, iIdxCur);
119054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
119055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
118828 119056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 0, regChng);
118829 119057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
addrNextRow = sqlite3VdbeCurrentAddr(v);
118830 119058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118831 119059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nColTest>0 ){
118832 119060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int endDistinctTest = sqlite3VdbeMakeLabel(pParse);
@@ -118929,10 +119157,16 @@
118929 119157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Next, iIdxCur, addrNextRow); VdbeCoverage(v);
118930 119158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
118931 119159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
118932 119160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118933 119161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Add the entry to the stat1 table. */
119162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pIdx->pPartIdxWhere ){
119163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Partial indexes might get a zero-entry in sqlite_stat1. But
119164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** an empty table is omitted from sqlite_stat1. */
119165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, addrGotoEnd);
119166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrGotoEnd = 0;
119167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
118934 119168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
callStatGet(pParse, regStat, STAT_GET_STAT1, regStat1);
118935 119169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( "BBB"[0]==SQLITE_AFF_TEXT );
118936 119170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_MakeRecord, regTabname, 3, regTemp, "BBB", 0);
118937 119171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_NewRowid, iStatCur, regNewRowid);
118938 119172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Insert, iStatCur, regTemp, regNewRowid);
@@ -118951,10 +119185,16 @@
118951 119185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regCol = regStat1+4;
118952 119186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regSampleRowid = regCol + nCol;
118953 119187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrNext;
118954 119188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int addrIsNull;
118955 119189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 seekOp = HasRowid(pTab) ? OP_NotExists : OP_NotFound;
119190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
119191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* No STAT4 data is generated if the number of rows is zero */
119192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( addrGotoEnd==0 ){
119193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Cast, regStat1, SQLITE_AFF_INTEGER);
119194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ addrGotoEnd = sqlite3VdbeAddOp1(v, OP_IfNot, regStat1);
119195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
118956 119196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
118957 119197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( doOnce ){
118958 119198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mxCol = nCol;
118959 119199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pX;
118960 119200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -119004,11 +119244,11 @@
119004 119244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrIsNull);
119005 119245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119006 119246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_ENABLE_STAT4 */
119007 119247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
119008 119248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* End of analysis */
119009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, addrRewind);
119249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( addrGotoEnd ) sqlite3VdbeJumpHere(v, addrGotoEnd);
119010 119250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
119011 119251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
119012 119252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
119013 119253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Create a single sqlite_stat1 entry containing NULL as the index
119014 119254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** name and the row count as the content.
@@ -120753,11 +120993,11 @@
120753 120993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeJumpHere(v, addrRewind);
120754 120994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
120755 120995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
120756 120996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp0(v, OP_Halt);
120757 120997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
120758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if SQLITE_USER_AUTHENTICATION
120998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if SQLITE_USER_AUTHENTICATION && !defined(SQLITE_OMIT_SHARED_CACHE)
120759 120999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->nTableLock>0 && db->init.busy==0 ){
120760 121000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3UserAuthInit(db);
120761 121001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db->auth.authLevel<UAUTH_User ){
120762 121002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ErrorMsg(pParse, "user not authenticated");
120763 121003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->rc = SQLITE_AUTH_USER;
@@ -123487,15 +123727,15 @@
123487 123727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MPrintf(db, "tbl_name='%q' AND type!='trigger'", p->zName),0);
123488 123728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
123489 123729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Test for cycles in generated columns and illegal expressions
123490 123730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** in CHECK constraints and in DEFAULT clauses. */
123491 123731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->tabFlags & TF_HasGenerated ){
123492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4(v, OP_SqlExec, 1, 0, 0,
123732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_SqlExec, 0x0001, 0, 0,
123493 123733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MPrintf(db, "SELECT*FROM\"%w\".\"%w\"",
123494 123734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->aDb[iDb].zDbSName, p->zName), P4_DYNAMIC);
123495 123735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
123496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4(v, OP_SqlExec, 1, 0, 0,
123736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_SqlExec, 0x0001, 0, 0,
123497 123737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3MPrintf(db, "PRAGMA \"%w\".integrity_check(%Q)",
123498 123738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->aDb[iDb].zDbSName, p->zName), P4_DYNAMIC);
123499 123739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
123500 123740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
123501 123741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Add the table to the in-memory representation of the database.
@@ -129253,11 +129493,11 @@
129253 129493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| sqlite3_context_db_handle(context)->mallocFailed );
129254 129494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
129255 129495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
129256 129496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zPattern[0]==0 ){
129257 129497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sqlite3_value_type(argv[1])!=SQLITE_NULL );
129258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_value(context, argv[0]);
129498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(context, (const char*)zStr, nStr, SQLITE_TRANSIENT);
129259 129499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
129260 129500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
129261 129501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nPattern = sqlite3_value_bytes(argv[1]);
129262 129502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zPattern==sqlite3_value_text(argv[1]) ); /* No encoding change */
129263 129503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRep = sqlite3_value_text(argv[2]);
@@ -137740,10 +137980,38 @@
137740 137980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Number of pragmas: 68 on by default, 78 total. */
137741 137981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
137742 137982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of pragma.h **********************************************/
137743 137983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** Continuing where we left off in pragma.c *********************/
137744 137984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
137985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
137986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** When the 0x10 bit of PRAGMA optimize is set, any ANALYZE commands
137987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** will be run with an analysis_limit set to the lessor of the value of
137988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the following macro or to the actual analysis_limit if it is non-zero,
137989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in order to prevent PRAGMA optimize from running for too long.
137990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
137991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The value of 2000 is chosen emperically so that the worst-case run-time
137992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for PRAGMA optimize does not exceed 100 milliseconds against a variety
137993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of test databases on a RaspberryPI-4 compiled using -Os and without
137994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** -DSQLITE_DEBUG. Of course, your mileage may vary. For the purpose of
137995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** his paragraph, "worst-case" means that ANALYZE ends up being
137996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** run on every table in the database. The worst case typically only
137997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** happens if PRAGMA optimize is run on a database file for which ANALYZE
137998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** has not been previously run and the 0x10000 flag is included so that
137999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** all tables are analyzed. The usual case for PRAGMA optimize is that
138000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** no ANALYZE commands will be run at all, or if any ANALYZE happens it
138001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** will be against a single table, so that expected timing for PRAGMA
138002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** optimize on a PI-4 is more like 1 millisecond or less with the 0x10000
138003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** flag or less than 100 microseconds without the 0x10000 flag.
138004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
138005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** An analysis limit of 2000 is almost always sufficient for the query
138006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** planner to fully characterize an index. The additional accuracy from
138007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a larger analysis is not usually helpful.
138008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
138009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_DEFAULT_OPTIMIZE_LIMIT
138010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define SQLITE_DEFAULT_OPTIMIZE_LIMIT 2000
138011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
138012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
137745 138013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
137746 138014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Interpret the given string as a safety level. Return 0 for OFF,
137747 138015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** 1 for ON or NORMAL, 2 for FULL, and 3 for EXTRA. Return 1 for an empty or
137748 138016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** unrecognized string argument. The FULL and EXTRA option is disallowed
137749 138017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if the omitFull parameter it 1.
@@ -139472,35 +139740,11 @@
139472 139740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bStrict; /* True for a STRICT table */
139473 139741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r2; /* Previous key for WITHOUT ROWID tables */
139474 139742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mxCol; /* Maximum non-virtual column number */
139475 139743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139476 139744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pObjTab && pObjTab!=pTab ) continue;
139477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !IsOrdinaryTable(pTab) ){
139478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef SQLITE_OMIT_VIRTUALTABLE
139479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_vtab *pVTab;
139480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int a1;
139481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !IsVirtual(pTab) ) continue;
139482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTab->nCol<=0 ){
139483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zMod = pTab->u.vtab.azArg[0];
139484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( sqlite3HashFind(&db->aModule, zMod)==0 ) continue;
139485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
139486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ViewGetColumnNames(pParse, pTab);
139487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pTab->u.vtab.p==0 ) continue;
139488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pVTab = pTab->u.vtab.p->pVtab;
139489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(pVTab==0) ) continue;
139490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(pVTab->pModule==0) ) continue;
139491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pVTab->pModule->iVersion<4 ) continue;
139492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pVTab->pModule->xIntegrity==0 ) continue;
139493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_VCheck, i, 3, isQuick);
139494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTab->nTabRef++;
139495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAppendP4(v, pTab, P4_TABLEREF);
139496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- a1 = sqlite3VdbeAddOp1(v, OP_IsNull, 3); VdbeCoverage(v);
139497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- integrityCheckResultRow(v);
139498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeJumpHere(v, a1);
139499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
139500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- continue;
139501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
139745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !IsOrdinaryTable(pTab) ) continue;
139502 139746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isQuick || HasRowid(pTab) ){
139503 139747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPk = 0;
139504 139748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = 0;
139505 139749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
139506 139750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pPk = sqlite3PrimaryKeyIndex(pTab);
@@ -139631,10 +139875,11 @@
139631 139875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* OP_IsType does not detect NaN values in the database file
139632 139876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** which should be treated as a NULL. So if the header type
139633 139877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is REAL, we have to load the actual data using OP_Column
139634 139878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to reliably determine if the value is a NULL. */
139635 139879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp3(v, OP_Column, p1, p3, 3);
139880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ColumnDefault(v, pTab, j, 3);
139636 139881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jmp3 = sqlite3VdbeAddOp2(v, OP_NotNull, 3, labelOk);
139637 139882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
139638 139883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
139639 139884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName,
139640 139885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCol->zCnName);
@@ -139821,10 +140066,42 @@
139821 140066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pPk ){
139822 140067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ReleaseTempRange(pParse, r2, pPk->nKeyCol);
139823 140068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
139824 140069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
139825 140070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
140072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef SQLITE_OMIT_VIRTUALTABLE
140073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Second pass to invoke the xIntegrity method on all virtual
140074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** tables.
140075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
140076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(x=sqliteHashFirst(pTbls); x; x=sqliteHashNext(x)){
140077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Table *pTab = sqliteHashData(x);
140078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_vtab *pVTab;
140079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int a1;
140080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pObjTab && pObjTab!=pTab ) continue;
140081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( IsOrdinaryTable(pTab) ) continue;
140082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !IsVirtual(pTab) ) continue;
140083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTab->nCol<=0 ){
140084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zMod = pTab->u.vtab.azArg[0];
140085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3HashFind(&db->aModule, zMod)==0 ) continue;
140086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
140087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3ViewGetColumnNames(pParse, pTab);
140088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pTab->u.vtab.p==0 ) continue;
140089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pVTab = pTab->u.vtab.p->pVtab;
140090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(pVTab==0) ) continue;
140091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(pVTab->pModule==0) ) continue;
140092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pVTab->pModule->iVersion<4 ) continue;
140093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pVTab->pModule->xIntegrity==0 ) continue;
140094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp3(v, OP_VCheck, i, 3, isQuick);
140095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->nTabRef++;
140096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAppendP4(v, pTab, P4_TABLEREF);
140097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ a1 = sqlite3VdbeAddOp1(v, OP_IsNull, 3); VdbeCoverage(v);
140098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ integrityCheckResultRow(v);
140099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeJumpHere(v, a1);
140100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
140101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
140102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
139826 140103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
139827 140104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
139828 140105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const int iLn = VDBE_OFFSET_LINENO(2);
139829 140106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const VdbeOpList endCode[] = {
139830 140107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ OP_AddImm, 1, 0, 0}, /* 0 */
@@ -140084,48 +140361,67 @@
140084 140361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to change and improve over time. Applications should anticipate that
140085 140362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this pragma will perform new optimizations in future releases.
140086 140363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
140087 140364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The optional argument is a bitmask of optimizations to perform:
140088 140365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
140089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 0x0001 Debugging mode. Do not actually perform any optimizations
140090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** but instead return one line of text for each optimization
140091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** that would have been done. Off by default.
140092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
140093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 0x0002 Run ANALYZE on tables that might benefit. On by default.
140094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** See below for additional information.
140095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
140096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 0x0004 (Not yet implemented) Record usage and performance
140097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** information from the current session in the
140098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** database file so that it will be available to "optimize"
140099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pragmas run by future database connections.
140100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
140101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** 0x0008 (Not yet implemented) Create indexes that might have
140102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** been helpful to recent queries
140103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
140104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The default MASK is and always shall be 0xfffe. 0xfffe means perform all
140105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of the optimizations listed above except Debug Mode, including new
140106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** optimizations that have not yet been invented. If new optimizations are
140107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** ever added that should be off by default, those off-by-default
140108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** optimizations will have bitmasks of 0x10000 or larger.
140366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x00001 Debugging mode. Do not actually perform any optimizations
140367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** but instead return one line of text for each optimization
140368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that would have been done. Off by default.
140369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
140370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x00002 Run ANALYZE on tables that might benefit. On by default.
140371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** See below for additional information.
140372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
140373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x00010 Run all ANALYZE operations using an analysis_limit that
140374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is the lessor of the current analysis_limit and the
140375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** SQLITE_DEFAULT_OPTIMIZE_LIMIT compile-time option.
140376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The default value of SQLITE_DEFAULT_OPTIMIZE_LIMIT is
140377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** currently (2024-02-19) set to 2000, which is such that
140378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the worst case run-time for PRAGMA optimize on a 100MB
140379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database will usually be less than 100 milliseconds on
140380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a RaspberryPI-4 class machine. On by default.
140381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
140382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 0x10000 Look at tables to see if they need to be reanalyzed
140383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** due to growth or shrinkage even if they have not been
140384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** queried during the current connection. Off by default.
140385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
140386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The default MASK is and always shall be 0x0fffe. In the current
140387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** implementation, the default mask only covers the 0x00002 optimization,
140388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** though additional optimizations that are covered by 0x0fffe might be
140389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** added in the future. Optimizations that are off by default and must
140390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be explicitly requested have masks of 0x10000 or greater.
140109 140391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
140110 140392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** DETERMINATION OF WHEN TO RUN ANALYZE
140111 140393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
140112 140394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** In the current implementation, a table is analyzed if only if all of
140113 140395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the following are true:
140114 140396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
140115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (1) MASK bit 0x02 is set.
140116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
140117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (2) The query planner used sqlite_stat1-style statistics for one or
140118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** more indexes of the table at some point during the lifetime of
140119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the current connection.
140120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
140121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (3) One or more indexes of the table are currently unanalyzed OR
140122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the number of rows in the table has increased by 25 times or more
140123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** since the last time ANALYZE was run.
140397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (1) MASK bit 0x00002 is set.
140398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
140399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (2) The table is an ordinary table, not a virtual table or view.
140400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
140401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (3) The table name does not begin with "sqlite_".
140402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
140403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (4) One or more of the following is true:
140404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (4a) The 0x10000 MASK bit is set.
140405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (4b) One or more indexes on the table lacks an entry
140406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in the sqlite_stat1 table.
140407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (4c) The query planner used sqlite_stat1-style statistics for one
140408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or more indexes of the table at some point during the lifetime
140409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the current connection.
140410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
140411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (5) One or more of the following is true:
140412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (5a) One or more indexes on the table lacks an entry
140413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in the sqlite_stat1 table. (Same as 4a)
140414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (5b) The number of rows in the table has increased or decreased by
140415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 10-fold. In other words, the current size of the table is
140416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 10 times larger than the size in sqlite_stat1 or else the
140417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** current size is less than 1/10th the size in sqlite_stat1.
140124 140418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
140125 140419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The rules for when tables are analyzed are likely to change in
140126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** future releases.
140420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** future releases. Future versions of SQLite might accept a string
140421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** literal argument to this pragma that contains a mnemonic description
140422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the options rather than a bitmap.
140127 140423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
140128 140424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PragTyp_OPTIMIZE: {
140129 140425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDbLast; /* Loop termination point for the schema loop */
140130 140426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iTabCur; /* Cursor for a table whose size needs checking */
140131 140427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
HashElem *k; /* Loop over tables of a schema */
@@ -140133,56 +140429,122 @@
140133 140429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab; /* A table in the schema */
140134 140430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Index *pIdx; /* An index of the table */
140135 140431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
LogEst szThreshold; /* Size threshold above which reanalysis needed */
140136 140432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zSubSql; /* SQL statement for the OP_SqlExec opcode */
140137 140433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 opMask; /* Mask of operations to perform */
140434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nLimit; /* Analysis limit to use */
140435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCheck = 0; /* Number of tables to be optimized */
140436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nBtree = 0; /* Number of btrees to scan */
140437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nIndex; /* Number of indexes on the current table */
140138 140438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
140139 140439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRight ){
140140 140440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opMask = (u32)sqlite3Atoi(zRight);
140141 140441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (opMask & 0x02)==0 ) break;
140142 140442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
140143 140443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opMask = 0xfffe;
140144 140444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (opMask & 0x10)==0 ){
140446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nLimit = 0;
140447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( db->nAnalysisLimit>0
140448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && db->nAnalysisLimit<SQLITE_DEFAULT_OPTIMIZE_LIMIT ){
140449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nLimit = 0;
140450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
140451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nLimit = SQLITE_DEFAULT_OPTIMIZE_LIMIT;
140452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
140145 140453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iTabCur = pParse->nTab++;
140146 140454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(iDbLast = zDb?iDb:db->nDb-1; iDb<=iDbLast; iDb++){
140147 140455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iDb==1 ) continue;
140148 140456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3CodeVerifySchema(pParse, iDb);
140149 140457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pSchema = db->aDb[iDb].pSchema;
140150 140458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(k=sqliteHashFirst(&pSchema->tblHash); k; k=sqliteHashNext(k)){
140151 140459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab = (Table*)sqliteHashData(k);
140152 140460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
140153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If table pTab has not been used in a way that would benefit from
140154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** having analysis statistics during the current session, then skip it.
140155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This also has the effect of skipping virtual tables and views */
140156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (pTab->tabFlags & TF_StatsUsed)==0 ) continue;
140461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This only works for ordinary tables */
140462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !IsOrdinaryTable(pTab) ) continue;
140157 140463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
140158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Reanalyze if the table is 25 times larger than the last analysis */
140159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- szThreshold = pTab->nRowLogEst + 46; assert( sqlite3LogEst(25)==46 );
140464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Do not scan system tables */
140465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( 0==sqlite3StrNICmp(pTab->zName, "sqlite_", 7) ) continue;
140466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
140467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Find the size of the table as last recorded in sqlite_stat1.
140468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If any index is unanalyzed, then the threshold is -1 to
140469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** indicate a new, unanalyzed index
140470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
140471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ szThreshold = pTab->nRowLogEst;
140472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nIndex = 0;
140160 140473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
140474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nIndex++;
140161 140475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !pIdx->hasStat1 ){
140162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- szThreshold = 0; /* Always analyze if any index lacks statistics */
140163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
140476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ szThreshold = -1; /* Always analyze if any index lacks statistics */
140164 140477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140165 140478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( szThreshold ){
140167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3OpenTable(pParse, iTabCur, iDb, pTab, OP_OpenRead);
140168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp3(v, OP_IfSmaller, iTabCur,
140169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeCurrentAddr(v)+2+(opMask&1), szThreshold);
140479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
140480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If table pTab has not been used in a way that would benefit from
140481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** having analysis statistics during the current session, then skip it,
140482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** unless the 0x10000 MASK bit is set. */
140483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pTab->tabFlags & TF_MaybeReanalyze)!=0 ){
140484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Check for size change if stat1 has been used for a query */
140485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( opMask & 0x10000 ){
140486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Check for size change if 0x10000 is set */
140487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pTab->pIndex!=0 && szThreshold<0 ){
140488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Do analysis if unanalyzed indexes exists */
140489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
140490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Otherwise, we can skip this table */
140491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
140492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
140493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
140494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCheck++;
140495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nCheck==2 ){
140496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If ANALYZE might be invoked two or more times, hold a write
140497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** transaction for efficiency */
140498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3BeginWriteOperation(pParse, 0, iDb);
140499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
140500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nBtree += nIndex+1;
140501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
140502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Reanalyze if the table is 10 times larger or smaller than
140503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the last analysis. Unconditional reanalysis if there are
140504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** unanalyzed indexes. */
140505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3OpenTable(pParse, iTabCur, iDb, pTab, OP_OpenRead);
140506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( szThreshold>=0 ){
140507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const LogEst iRange = 33; /* 10x size change */
140508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4Int(v, OP_IfSizeBetween, iTabCur,
140509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeCurrentAddr(v)+2+(opMask&1),
140510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ szThreshold>=iRange ? szThreshold-iRange : -1,
140511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ szThreshold+iRange);
140512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeCoverage(v);
140513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
140514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp2(v, OP_Rewind, iTabCur,
140515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeCurrentAddr(v)+2+(opMask&1));
140170 140516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
VdbeCoverage(v);
140171 140517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140172 140518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSubSql = sqlite3MPrintf(db, "ANALYZE \"%w\".\"%w\"",
140173 140519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->aDb[iDb].zDbSName, pTab->zName);
140174 140520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( opMask & 0x01 ){
140175 140521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r1 = sqlite3GetTempReg(pParse);
140176 140522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp4(v, OP_String8, 0, r1, 0, zSubSql, P4_DYNAMIC);
140177 140523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_ResultRow, r1, 1);
140178 140524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
140179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3VdbeAddOp4(v, OP_SqlExec, 0, 0, 0, zSubSql, P4_DYNAMIC);
140525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3VdbeAddOp4(v, OP_SqlExec, nLimit ? 0x02 : 00, nLimit, 0,
140526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zSubSql, P4_DYNAMIC);
140180 140527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140181 140528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140182 140529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140183 140530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp0(v, OP_Expire);
140531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
140532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* In a schema with a large number of tables and indexes, scale back
140533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the analysis_limit to avoid excess run-time in the worst case.
140534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
140535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !db->mallocFailed && nLimit>0 && nBtree>100 ){
140536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iAddr, iEnd;
140537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VdbeOp *aOp;
140538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nLimit = 100*nLimit/nBtree;
140539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nLimit<100 ) nLimit = 100;
140540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aOp = sqlite3VdbeGetOp(v, 0);
140541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iEnd = sqlite3VdbeCurrentAddr(v);
140542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(iAddr=0; iAddr<iEnd; iAddr++){
140543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( aOp[iAddr].opcode==OP_SqlExec ) aOp[iAddr].p2 = nLimit;
140544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
140545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
140184 140546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
140185 140547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
140186 140548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
140187 140549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
140188 140550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** PRAGMA busy_timeout
@@ -148175,10 +148537,12 @@
148175 148537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
148176 148538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Display all information about an AggInfo object
148177 148539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
148178 148540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void printAggInfo(AggInfo *pAggInfo){
148179 148541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii;
148542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3DebugPrintf("AggInfo %d/%p:\n",
148543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pAggInfo->selId, pAggInfo);
148180 148544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pAggInfo->nColumn; ii++){
148181 148545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct AggInfo_col *pCol = &pAggInfo->aCol[ii];
148182 148546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DebugPrintf(
148183 148547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"agg-column[%d] pTab=%s iTable=%d iColumn=%d iMem=%d"
148184 148548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" iSorterColumn=%d %s\n",
@@ -150277,10 +150641,16 @@
150277 150641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db->mallocFailed==0 || db->mallocFailed==1 );
150278 150642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db->mallocFailed==0 || pParse->nErr!=0 );
150279 150643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ExprListDelete(db, pMinMaxOrderBy);
150280 150644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_DEBUG
150281 150645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pAggInfo && !db->mallocFailed ){
150646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if TREETRACE_ENABLED
150647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3TreeTrace & 0x20 ){
150648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ TREETRACE(0x20,pParse,p,("Finished with AggInfo\n"));
150649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ printAggInfo(pAggInfo);
150650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
150651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
150282 150652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pAggInfo->nColumn; i++){
150283 150653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = pAggInfo->aCol[i].pCExpr;
150284 150654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr==0 ) continue;
150285 150655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->pAggInfo==pAggInfo );
150286 150656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pExpr->iAgg==i );
@@ -154714,10 +155084,12 @@
154714 155084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sCtx.pPrior = db->pVtabCtx;
154715 155085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sCtx.bDeclared = 0;
154716 155086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pVtabCtx = &sCtx;
154717 155087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTab->nTabRef++;
154718 155088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = xConstruct(db, pMod->pAux, nArg, azArg, &pVTable->pVtab, &zErr);
155089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTab!=0 );
155090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pTab->nTabRef>1 || rc!=SQLITE_OK );
154719 155091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3DeleteTable(db, pTab);
154720 155092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db->pVtabCtx = sCtx.pPrior;
154721 155093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_NOMEM ) sqlite3OomFault(db);
154722 155094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sCtx.pTab==pTab );
154723 155095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -154736,11 +155108,11 @@
154736 155108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVTable->pVtab->pModule = pMod->pModule;
154737 155109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pMod->nRefModule++;
154738 155110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pVTable->nRef = 1;
154739 155111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sCtx.bDeclared==0 ){
154740 155112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFormat = "vtable constructor did not declare schema: %s";
154741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pzErr = sqlite3MPrintf(db, zFormat, pTab->zName);
155113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pzErr = sqlite3MPrintf(db, zFormat, zModuleName);
154742 155114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VtabUnlock(pVTable);
154743 155115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_ERROR;
154744 155116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
154745 155117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol;
154746 155118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u16 oooHidden = 0;
@@ -164129,11 +164501,13 @@
164129 164501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pIndex->bUnordered ) return 0;
164130 164502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pOB = pBuilder->pWInfo->pOrderBy)==0 ) return 0;
164131 164503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pOB->nExpr; ii++){
164132 164504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *pExpr = sqlite3ExprSkipCollateAndLikely(pOB->a[ii].pExpr);
164133 164505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(pExpr==0) ) continue;
164134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pExpr->op==TK_COLUMN && pExpr->iTable==iCursor ){
164506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pExpr->op==TK_COLUMN || pExpr->op==TK_AGG_COLUMN)
164507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pExpr->iTable==iCursor
164508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
164135 164509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->iColumn<0 ) return 1;
164136 164510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(jj=0; jj<pIndex->nKeyCol; jj++){
164137 164511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pExpr->iColumn==pIndex->aiColumn[jj] ) return 1;
164138 164512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164139 164513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( (aColExpr = pIndex->aColExpr)!=0 ){
@@ -164735,11 +165109,11 @@
164735 165109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pBuilder->bldFlags1==SQLITE_BLDF1_INDEXED ){
164736 165110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If a non-unique index is used, or if a prefix of the key for
164737 165111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** unique index is used (making the index functionally non-unique)
164738 165112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** then the sqlite_stat1 data becomes important for scoring the
164739 165113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** plan */
164740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTab->tabFlags |= TF_StatsUsed;
165114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->tabFlags |= TF_MaybeReanalyze;
164741 165115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
164742 165116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef SQLITE_ENABLE_STAT4
164743 165117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Stat4ProbeFree(pBuilder->pRec);
164744 165118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBuilder->nRecValid = 0;
164745 165119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBuilder->pRec = 0;
@@ -166229,14 +166603,13 @@
166229 166603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->nOBSat = pFrom->isOrdered;
166230 166604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo->wctrlFlags & WHERE_DISTINCTBY ){
166231 166605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pFrom->isOrdered==pWInfo->pOrderBy->nExpr ){
166232 166606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->eDistinct = WHERE_DISTINCT_ORDERED;
166233 166607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
166234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pWInfo->pSelect->pOrderBy
166235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && pWInfo->nOBSat > pWInfo->pSelect->pOrderBy->nExpr ){
166236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pWInfo->nOBSat = pWInfo->pSelect->pOrderBy->nExpr;
166237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
166608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* vvv--- See check-in [12ad822d9b827777] on 2023-03-16 ---vvv */
166609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pWInfo->pSelect->pOrderBy==0
166610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || pWInfo->nOBSat <= pWInfo->pSelect->pOrderBy->nExpr );
166238 166611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
166239 166612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->revMask = pFrom->revLoop;
166240 166613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pWInfo->nOBSat<=0 ){
166241 166614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pWInfo->nOBSat = 0;
166242 166615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nLoop>0 ){
@@ -166571,11 +166944,11 @@
166571 166944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WhereLoop *pLoop = pWInfo->a[i].pWLoop;
166572 166945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned int reqFlags = (WHERE_SELFCULL|WHERE_COLUMN_EQ);
166573 166946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SrcItem *pItem = &pWInfo->pTabList->a[pLoop->iTab];
166574 166947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Table *pTab = pItem->pTab;
166575 166948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pTab->tabFlags & TF_HasStat1)==0 ) break;
166576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pTab->tabFlags |= TF_StatsUsed;
166949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pTab->tabFlags |= TF_MaybeReanalyze;
166577 166950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i>=1
166578 166951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (pLoop->wsFlags & reqFlags)==reqFlags
166579 166952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* vvvvvv--- Always the case if WHERE_COLUMN_EQ is defined */
166580 166953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& ALWAYS((pLoop->wsFlags & (WHERE_IPK|WHERE_INDEXED))!=0)
166581 166954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
@@ -171056,10 +171429,18 @@
171056 171429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WithDelete(pParse->db, pWith);
171057 171430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171058 171431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pSelect;
171059 171432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
171060 171433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Memory allocator for parser stack resizing. This is a thin wrapper around
171435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sqlite3_realloc() that includes a call to sqlite3FaultSim() to facilitate
171436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** testing.
171437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
171438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void *parserStackRealloc(void *pOld, sqlite3_uint64 newSize){
171439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return sqlite3FaultSim(700) ? 0 : sqlite3_realloc(pOld, newSize);
171440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
171441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
171061 171442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171062 171443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Construct a new Expr object from a single token */
171063 171444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static Expr *tokenExpr(Parse *pParse, int op, Token t){
171064 171445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Expr *p = sqlite3DbMallocRawNN(pParse->db, sizeof(Expr)+t.n+1);
171065 171446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p ){
@@ -171357,10 +171738,13 @@
171357 171738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3ParserARG_PDECL A parameter declaration for the %extra_argument
171358 171739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3ParserARG_PARAM Code to pass %extra_argument as a subroutine parameter
171359 171740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3ParserARG_STORE Code to store %extra_argument into yypParser
171360 171741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3ParserARG_FETCH Code to extract %extra_argument from yypParser
171361 171742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3ParserCTX_* As sqlite3ParserARG_ except for %extra_context
171743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** YYREALLOC Name of the realloc() function to use
171744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** YYFREE Name of the free() function to use
171745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** YYDYNSTACK True if stack space should be extended on heap
171362 171746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** YYERRORSYMBOL is the code number of the error symbol. If not
171363 171747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** defined, then do no error processing.
171364 171748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** YYNSTATE the combined number of states.
171365 171749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** YYNRULE the number of rules in the grammar
171366 171750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** YYNTOKEN Number of terminal symbols
@@ -171370,10 +171754,12 @@
171370 171754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** YY_ERROR_ACTION The yy_action[] code for syntax error
171371 171755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** YY_ACCEPT_ACTION The yy_action[] code for accept
171372 171756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** YY_NO_ACTION The yy_action[] code for no-op
171373 171757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** YY_MIN_REDUCE Minimum value for reduce actions
171374 171758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** YY_MAX_REDUCE Maximum value for reduce actions
171759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** YY_MIN_DSTRCTR Minimum symbol value that has a destructor
171760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** YY_MAX_DSTRCTR Maximum symbol value that has a destructor
171375 171761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
171376 171762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef INTERFACE
171377 171763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define INTERFACE 1
171378 171764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
171379 171765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************* Begin control #defines *****************************************/
@@ -171410,10 +171796,13 @@
171410 171796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserARG_SDECL
171411 171797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserARG_PDECL
171412 171798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserARG_PARAM
171413 171799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserARG_FETCH
171414 171800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserARG_STORE
171801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define YYREALLOC parserStackRealloc
171802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define YYFREE sqlite3_free
171803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define YYDYNSTACK 1
171415 171804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserCTX_SDECL Parse *pParse;
171416 171805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserCTX_PDECL ,Parse *pParse
171417 171806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserCTX_PARAM ,pParse
171418 171807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
171419 171808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
@@ -171428,10 +171817,12 @@
171428 171817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define YY_ERROR_ACTION 1243
171429 171818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define YY_ACCEPT_ACTION 1244
171430 171819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define YY_NO_ACTION 1245
171431 171820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define YY_MIN_REDUCE 1246
171432 171821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define YY_MAX_REDUCE 1650
171822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define YY_MIN_DSTRCTR 204
171823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define YY_MAX_DSTRCTR 316
171433 171824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************* End control #defines *******************************************/
171434 171825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
171435 171826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171436 171827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Define the yytestcase() macro to be a no-op if is not already defined
171437 171828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** otherwise.
@@ -171442,10 +171833,26 @@
171442 171833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for testing.
171443 171834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
171444 171835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef yytestcase
171445 171836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define yytestcase(X)
171446 171837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
171838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
171839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Macro to determine if stack space has the ability to grow using
171840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** heap memory.
171841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
171842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if YYSTACKDEPTH<=0 || YYDYNSTACK
171843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define YYGROWABLESTACK 1
171844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
171845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define YYGROWABLESTACK 0
171846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
171847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
171848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Guarantee a minimum number of initial stack slots.
171849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
171850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if YYSTACKDEPTH<=0
171851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # undef YYSTACKDEPTH
171852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define YYSTACKDEPTH 2 /* Need a minimum stack size */
171853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
171447 171854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171448 171855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171449 171856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Next are the tables used to determine what action to take based on the
171450 171857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** current state and lookahead token. These tables are used to implement
171451 171858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** functions that take a state number and lookahead value and return an
@@ -172351,18 +172758,13 @@
172351 172758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef YYNOERRORRECOVERY
172352 172759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int yyerrcnt; /* Shifts left before out of the error */
172353 172760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
172354 172761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ParserARG_SDECL /* A place to hold %extra_argument */
172355 172762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ParserCTX_SDECL /* A place to hold %extra_context */
172356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if YYSTACKDEPTH<=0
172357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int yystksz; /* Current side of the stack */
172358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yyStackEntry *yystack; /* The parser's stack */
172359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yyStackEntry yystk0; /* First stack entry */
172360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
172361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
172362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yyStackEntry *yystackEnd; /* Last entry in the stack */
172363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
172763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yyStackEntry *yystackEnd; /* Last entry in the stack */
172764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yyStackEntry *yystack; /* The parser stack */
172765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yyStackEntry yystk0[YYSTACKDEPTH]; /* Initial stack space */
172364 172766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
172365 172767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct yyParser yyParser;
172366 172768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
172367 172769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include <assert.h> */
172368 172770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef NDEBUG
@@ -173134,41 +173536,49 @@
173134 173536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 404 */ "window ::= frame_opt",
173135 173537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
173136 173538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* NDEBUG */
173137 173539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
173138 173540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
173139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if YYSTACKDEPTH<=0
173541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if YYGROWABLESTACK
173140 173542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
173141 173543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Try to increase the size of the parser stack. Return the number
173142 173544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of errors. Return 0 on success.
173143 173545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
173144 173546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int yyGrowStack(yyParser *p){
173547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int oldSize = 1 + (int)(p->yystackEnd - p->yystack);
173145 173548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int newSize;
173146 173549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idx;
173147 173550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yyStackEntry *pNew;
173148 173551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
173149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- newSize = p->yystksz*2 + 100;
173150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- idx = p->yytos ? (int)(p->yytos - p->yystack) : 0;
173151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->yystack==&p->yystk0 ){
173152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew = malloc(newSize*sizeof(pNew[0]));
173153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pNew ) pNew[0] = p->yystk0;
173552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ newSize = oldSize*2 + 100;
173553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ idx = (int)(p->yytos - p->yystack);
173554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->yystack==p->yystk0 ){
173555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew = YYREALLOC(0, newSize*sizeof(pNew[0]));
173556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNew==0 ) return 1;
173557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(pNew, p->yystack, oldSize*sizeof(pNew[0]));
173154 173558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
173155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
173559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew = YYREALLOC(p->yystack, newSize*sizeof(pNew[0]));
173560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNew==0 ) return 1;
173156 173561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pNew ){
173158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->yystack = pNew;
173159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->yytos = &p->yystack[idx];
173562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->yystack = pNew;
173563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->yytos = &p->yystack[idx];
173160 173564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef NDEBUG
173161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( yyTraceFILE ){
173162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n",
173163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yyTracePrompt, p->yystksz, newSize);
173164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
173565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( yyTraceFILE ){
173566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n",
173567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yyTracePrompt, oldSize, newSize);
173568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
173165 173569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
173166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->yystksz = newSize;
173167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
173168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return pNew==0;
173570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->yystackEnd = &p->yystack[newSize-1];
173571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
173169 173572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* YYGROWABLESTACK */
173574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
173575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !YYGROWABLESTACK
173576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* For builds that do no have a growable stack, yyGrowStack always
173577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** returns an error.
173578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
173579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define yyGrowStack(X) 1
173170 173580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
173171 173581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
173172 173582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Datatype of the argument to the memory allocated passed as the
173173 173583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** second argument to sqlite3ParserAlloc() below. This can be changed by
173174 173584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** putting an appropriate #define in the %include section of the input
@@ -173184,28 +173594,18 @@
173184 173594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yyParser *yypParser = (yyParser*)yypRawParser;
173185 173595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ParserCTX_STORE
173186 173596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef YYTRACKMAXSTACKDEPTH
173187 173597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yypParser->yyhwm = 0;
173188 173598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
173189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if YYSTACKDEPTH<=0
173190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yypParser->yytos = NULL;
173191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yypParser->yystack = NULL;
173192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yypParser->yystksz = 0;
173193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( yyGrowStack(yypParser) ){
173194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yypParser->yystack = &yypParser->yystk0;
173195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yypParser->yystksz = 1;
173196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
173197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
173599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yypParser->yystack = yypParser->yystk0;
173600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yypParser->yystackEnd = &yypParser->yystack[YYSTACKDEPTH-1];
173198 173601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef YYNOERRORRECOVERY
173199 173602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yypParser->yyerrcnt = -1;
173200 173603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
173201 173604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yypParser->yytos = yypParser->yystack;
173202 173605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yypParser->yystack[0].stateno = 0;
173203 173606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yypParser->yystack[0].major = 0;
173204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if YYSTACKDEPTH>0
173205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yypParser->yystackEnd = &yypParser->yystack[YYSTACKDEPTH-1];
173206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
173207 173607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173208 173608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
173209 173609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef sqlite3Parser_ENGINEALWAYSONSTACK
173210 173610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
173211 173611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function allocates a new parser.
@@ -173379,13 +173779,30 @@
173379 173779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
173380 173780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Clear all secondary memory allocations from the parser
173381 173781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
173382 173782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_PRIVATE void sqlite3ParserFinalize(void *p){
173383 173783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yyParser *pParser = (yyParser*)p;
173384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser);
173385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if YYSTACKDEPTH<=0
173386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack);
173784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
173785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* In-lined version of calling yy_pop_parser_stack() for each
173786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** element left in the stack */
173787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yyStackEntry *yytos = pParser->yytos;
173788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( yytos>pParser->yystack ){
173789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef NDEBUG
173790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( yyTraceFILE ){
173791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(yyTraceFILE,"%sPopping %s\n",
173792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yyTracePrompt,
173793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yyTokenName[yytos->major]);
173794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
173795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
173796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( yytos->major>=YY_MIN_DSTRCTR ){
173797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yy_destructor(pParser, yytos->major, &yytos->minor);
173798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
173799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yytos--;
173800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
173801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
173802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if YYGROWABLESTACK
173803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParser->yystack!=pParser->yystk0 ) YYFREE(pParser->yystack);
173387 173804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
173388 173805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173389 173806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
173390 173807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef sqlite3Parser_ENGINEALWAYSONSTACK
173391 173808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -173564,11 +173981,11 @@
173564 173981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
173565 173982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Here code is inserted which will execute if the parser
173566 173983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** stack every overflows */
173567 173984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******** Begin %stack_overflow code ******************************************/
173568 173985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
173569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3ErrorMsg(pParse, "parser stack overflow");
173986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3OomFault(pParse->db);
173570 173987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******** End %stack_overflow code ********************************************/
173571 173988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ParserARG_STORE /* Suppress warning about unused %extra_argument var */
173572 173989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3ParserCTX_STORE
173573 173990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173574 173991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -173608,29 +174025,23 @@
173608 174025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
173609 174026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yypParser->yyhwm++;
173610 174027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) );
173611 174028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173612 174029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
173613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if YYSTACKDEPTH>0
173614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( yypParser->yytos>yypParser->yystackEnd ){
173615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yypParser->yytos--;
173616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yyStackOverflow(yypParser);
173617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
173618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
173619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
173620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){
174030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yytos = yypParser->yytos;
174031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( yytos>yypParser->yystackEnd ){
173621 174032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yyGrowStack(yypParser) ){
173622 174033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yypParser->yytos--;
173623 174034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yyStackOverflow(yypParser);
173624 174035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
173625 174036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
174037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yytos = yypParser->yytos;
174038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( yytos <= yypParser->yystackEnd );
173626 174039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
173628 174040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yyNewState > YY_MAX_SHIFT ){
173629 174041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
173630 174042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yytos = yypParser->yytos;
173632 174043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yytos->stateno = yyNewState;
173633 174044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yytos->major = yyMajor;
173634 174045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yytos->minor.yy0 = yyMinor;
173635 174046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yyTraceShift(yypParser, yyNewState, "Shift");
173636 174047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -176208,23 +176619,16 @@
176208 176619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yypParser->yyhwm++;
176209 176620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( yypParser->yyhwm ==
176210 176621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(int)(yypParser->yytos - yypParser->yystack));
176211 176622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
176212 176623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
176213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if YYSTACKDEPTH>0
176214 176624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yypParser->yytos>=yypParser->yystackEnd ){
176215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- yyStackOverflow(yypParser);
176216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
176217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
176218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
176219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){
176220 176625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( yyGrowStack(yypParser) ){
176221 176626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yyStackOverflow(yypParser);
176222 176627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
176223 176628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
176224 176629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
176225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
176226 176630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
176227 176631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yyact = yy_reduce(yypParser,yyruleno,yymajor,yyminor sqlite3ParserCTX_PARAM);
176228 176632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( yyact <= YY_MAX_SHIFTREDUCE ){
176229 176633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
yy_shift(yypParser,yyact,(YYCODETYPE)yymajor,yyminor);
176230 176634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef YYNOERRORRECOVERY
@@ -188495,26 +188899,28 @@
188495 188899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zTabname, /* Name of the pVTab table */
188496 188900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isQuick, /* True if this is a quick_check */
188497 188901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char **pzErr /* Write error message here */
188498 188902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
188499 188903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts3Table *p = (Fts3Table*)pVtab;
188500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc;
188904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = SQLITE_OK;
188501 188905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bOk = 0;
188502 188906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188503 188907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAMETER(isQuick);
188504 188908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Fts3IntegrityCheck(p, &bOk);
188505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( rc!=SQLITE_CORRUPT_VTAB || bOk==0 );
188506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc!=SQLITE_OK && rc!=SQLITE_CORRUPT_VTAB ){
188909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( rc!=SQLITE_CORRUPT_VTAB );
188910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_ERROR || (rc&0xFF)==SQLITE_CORRUPT ){
188507 188911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pzErr = sqlite3_mprintf("unable to validate the inverted index for"
188508 188912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FTS%d table %s.%s: %s",
188509 188913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->bFts4 ? 4 : 3, zSchema, zTabname, sqlite3_errstr(rc));
188510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( bOk==0 ){
188914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( *pzErr ) rc = SQLITE_OK;
188915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( rc==SQLITE_OK && bOk==0 ){
188511 188916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pzErr = sqlite3_mprintf("malformed inverted index for FTS%d table %s.%s",
188512 188917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->bFts4 ? 4 : 3, zSchema, zTabname);
188918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( *pzErr==0 ) rc = SQLITE_NOMEM;
188513 188919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
188514 188920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts3SegmentsClose(p);
188515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_OK;
188921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
188516 188922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
188517 188923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188518 188924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188519 188925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188520 188926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const sqlite3_module fts3Module = {
@@ -200172,11 +200578,16 @@
200172 200578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
200173 200579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
200174 200580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_finalize(pStmt);
200175 200581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
200176 200582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
200177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pbOk = (rc==SQLITE_OK && cksum1==cksum2);
200583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc==SQLITE_CORRUPT_VTAB ){
200584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_OK;
200585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pbOk = 0;
200586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
200587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pbOk = (rc==SQLITE_OK && cksum1==cksum2);
200588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
200178 200589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
200179 200590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
200180 200591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
200181 200592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
200182 200593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Run the integrity-check. If no error occurs and the current contents of
@@ -203796,10 +204207,44 @@
203796 204207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nUsed==0 ) return;
203797 204208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c = p->zBuf[p->nUsed-1];
203798 204209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='[' || c=='{' ) return;
203799 204210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendChar(p, ',');
203800 204211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
204212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
204213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* c is a control character. Append the canonical JSON representation
204214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of that control character to p.
204215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
204216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This routine assumes that the output buffer has already been enlarged
204217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** sufficiently to hold the worst-case encoding plus a nul terminator.
204218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
204219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void jsonAppendControlChar(JsonString *p, u8 c){
204220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char aSpecial[] = {
204221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 'b', 't', 'n', 0, 'f', 'r', 0, 0,
204222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
204223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
204224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( sizeof(aSpecial)==32 );
204225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aSpecial['\b']=='b' );
204226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aSpecial['\f']=='f' );
204227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aSpecial['\n']=='n' );
204228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aSpecial['\r']=='r' );
204229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aSpecial['\t']=='t' );
204230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( c>=0 && c<sizeof(aSpecial) );
204231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->nUsed+7 <= p->nAlloc );
204232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( aSpecial[c] ){
204233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zBuf[p->nUsed] = '\\';
204234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zBuf[p->nUsed+1] = aSpecial[c];
204235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->nUsed += 2;
204236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
204237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zBuf[p->nUsed] = '\\';
204238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zBuf[p->nUsed+1] = 'u';
204239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zBuf[p->nUsed+2] = '0';
204240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zBuf[p->nUsed+3] = '0';
204241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zBuf[p->nUsed+4] = "0123456789abcdef"[c>>4];
204242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->zBuf[p->nUsed+5] = "0123456789abcdef"[c&0xf];
204243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->nUsed += 6;
204244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
204245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
203801 204246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
203802 204247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Append the N-byte string in zIn to the end of the JsonString string
203803 204248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** under construction. Enclose the string in double-quotes ("...") and
203804 204249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** escape any double-quotes or backslash characters contained within the
203805 204250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** string.
@@ -203856,39 +204301,18 @@
203856 204301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z += k;
203857 204302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
N -= k;
203858 204303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
203859 204304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c = z[0];
203860 204305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='"' || c=='\\' ){
203861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- json_simple_escape:
203862 204306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (p->nUsed+N+3 > p->nAlloc) && jsonStringGrow(p,N+3)!=0 ) return;
203863 204307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zBuf[p->nUsed++] = '\\';
203864 204308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zBuf[p->nUsed++] = c;
203865 204309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='\'' ){
203866 204310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zBuf[p->nUsed++] = c;
203867 204311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
203868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static const char aSpecial[] = {
203869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 'b', 't', 'n', 0, 'f', 'r', 0, 0,
203870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
203871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- };
203872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( sizeof(aSpecial)==32 );
203873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( aSpecial['\b']=='b' );
203874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( aSpecial['\f']=='f' );
203875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( aSpecial['\n']=='n' );
203876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( aSpecial['\r']=='r' );
203877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( aSpecial['\t']=='t' );
203878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( c>=0 && c<sizeof(aSpecial) );
203879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( aSpecial[c] ){
203880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = aSpecial[c];
203881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- goto json_simple_escape;
203882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
203883 204312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (p->nUsed+N+7 > p->nAlloc) && jsonStringGrow(p,N+7)!=0 ) return;
203884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zBuf[p->nUsed++] = '\\';
203885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zBuf[p->nUsed++] = 'u';
203886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zBuf[p->nUsed++] = '0';
203887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zBuf[p->nUsed++] = '0';
203888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zBuf[p->nUsed++] = "0123456789abcdef"[c>>4];
203889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zBuf[p->nUsed++] = "0123456789abcdef"[c&0xf];
204313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jsonAppendControlChar(p, c);
203890 204314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
203891 204315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z++;
203892 204316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
N--;
203893 204317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
203894 204318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zBuf[p->nUsed++] = '"';
@@ -204585,11 +205009,14 @@
204585 205009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k = j+sz;
204586 205010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( j<k ){
204587 205011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !jsonIsOk[z[j]] && z[j]!='\'' ){
204588 205012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z[j]=='"' ){
204589 205013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( x==JSONB_TEXTJ ) return j+1;
204590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( z[j]!='\\' || j+1>=k ){
205014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( z[j]<=0x1f ){
205015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Control characters in JSON5 string literals are ok */
205016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( x==JSONB_TEXTJ ) return j+1;
205017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( NEVER(z[j]!='\\') || j+1>=k ){
204591 205018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return j+1;
204592 205019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( strchr("\"\\/bfnrt",z[j+1])!=0 ){
204593 205020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j++;
204594 205021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( z[j+1]=='u' ){
204595 205022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( j+5>=k ) return j+1;
@@ -204783,10 +205210,11 @@
204783 205210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return j+1;
204784 205211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
204785 205212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case '[': {
204786 205213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Parse array */
204787 205214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iThis = pParse->nBlob;
205215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( i<=pParse->nJson );
204788 205216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonBlobAppendNode(pParse, JSONB_ARRAY, pParse->nJson - i, 0);
204789 205217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iStart = pParse->nBlob;
204790 205218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParse->oom ) return -1;
204791 205219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ++pParse->iDepth > JSON_MAX_DEPTH ){
204792 205220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->iErr = i;
@@ -204879,13 +205307,18 @@
204879 205307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
204880 205308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParse->iErr = j;
204881 205309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return -1;
204882 205310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
204883 205311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c<=0x1f ){
204884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Control characters are not allowed in strings */
204885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pParse->iErr = j;
204886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return -1;
205312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c==0 ){
205313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->iErr = j;
205314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return -1;
205315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
205316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Control characters are not allowed in canonical JSON string
205317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** literals, but are allowed in JSON5 string literals. */
205318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ opcode = JSONB_TEXT5;
205319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pParse->hasNonstd = 1;
204887 205320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='"' ){
204888 205321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
opcode = JSONB_TEXT5;
204889 205322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
204890 205323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
j++;
204891 205324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -205097,10 +205530,11 @@
205097 205530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strncmp(z+i,"null",4)==0 && !sqlite3Isalnum(z[i+4]) ){
205098 205531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonBlobAppendOneByte(pParse, JSONB_NULL);
205099 205532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return i+4;
205100 205533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
205101 205534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* fall-through into the default case that checks for NaN */
205535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* no break */ deliberate_fall_through
205102 205536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
205103 205537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: {
205104 205538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 k;
205105 205539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nn;
205106 205540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c = z[i];
@@ -205181,10 +205615,14 @@
205181 205615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
205182 205616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void jsonReturnStringAsBlob(JsonString *pStr){
205183 205617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
JsonParse px;
205184 205618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&px, 0, sizeof(px));
205185 205619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonStringTerminate(pStr);
205620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pStr->eErr ){
205621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_error_nomem(pStr->pCtx);
205622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
205623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
205186 205624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
px.zJson = pStr->zBuf;
205187 205625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
px.nJson = pStr->nUsed;
205188 205626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
px.db = sqlite3_context_db_handle(pStr->pCtx);
205189 205627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(void)jsonTranslateTextToBlob(&px, 0);
205190 205628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( px.oom ){
@@ -205361,11 +205799,11 @@
205361 205799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 k;
205362 205800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 sz2 = sz;
205363 205801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zIn = (const char*)&pParse->aBlob[i+n];
205364 205802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendChar(pOut, '"');
205365 205803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( sz2>0 ){
205366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(k=0; k<sz2 && zIn[k]!='\\' && zIn[k]!='"'; k++){}
205804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(k=0; k<sz2 && (jsonIsOk[(u8)zIn[k]] || zIn[k]=='\''); k++){}
205367 205805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( k>0 ){
205368 205806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendRawNZ(pOut, zIn, k);
205369 205807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( k>=sz2 ){
205370 205808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
205371 205809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -205373,10 +205811,17 @@
205373 205811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz2 -= k;
205374 205812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
205375 205813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zIn[0]=='"' ){
205376 205814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonAppendRawNZ(pOut, "\\\"", 2);
205377 205815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zIn++;
205816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sz2--;
205817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
205818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
205819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zIn[0]<=0x1f ){
205820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOut->nUsed+7>pOut->nAlloc && jsonStringGrow(pOut,7) ) break;
205821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ jsonAppendControlChar(pOut, zIn[0]);
205822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zIn++;
205378 205823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz2--;
205379 205824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
205380 205825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
205381 205826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( zIn[0]=='\\' );
205382 205827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sz2>=1 );
@@ -206506,12 +206951,13 @@
206506 206951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** See for example https://sqlite.org/forum/forumpost/012136abd5292b8d
206507 206952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
206508 206953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
206509 206954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zJson = (char*)sqlite3_value_text(pArg);
206510 206955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nJson = sqlite3_value_bytes(pArg);
206956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( db->mallocFailed ) goto json_pfa_oom;
206511 206957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nJson==0 ) goto json_pfa_malformed;
206512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( NEVER(p->zJson==0) ) goto json_pfa_oom;
206958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( p->zJson!=0 );
206513 206959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( jsonConvertTextToBlob(p, (flgs & JSON_KEEPERROR) ? 0 : ctx) ){
206514 206960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( flgs & JSON_KEEPERROR ){
206515 206961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->nErr = 1;
206516 206962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p;
206517 206963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -206673,14 +207119,14 @@
206673 207119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
206674 207120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( showContent ){
206675 207121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sz==0 && x<=JSONB_FALSE ){
206676 207122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_append(pOut, "\n", 1);
206677 207123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
206678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u32 i;
207124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u32 j;
206679 207125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendall(pOut, ": \"");
206680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=iStart+n; i<iStart+n+sz; i++){
206681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u8 c = pParse->aBlob[i];
207126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(j=iStart+n; j<iStart+n+sz; j++){
207127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u8 c = pParse->aBlob[j];
206682 207128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c<0x20 || c>=0x7f ) c = '.';
206683 207129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_append(pOut, (char*)&c, 1);
206684 207130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
206685 207131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_append(pOut, "\"\n", 2);
206686 207132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -206727,15 +207173,16 @@
206727 207173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3StrAccumInit(&out, 0, 0, 0, 1000000);
206728 207174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p = jsonParseFuncArg(ctx, argv[0], 0);
206729 207175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p==0 ) return;
206730 207176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( argc==1 ){
206731 207177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonDebugPrintBlob(p, 0, p->nBlob, 0, &out);
206732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text64(ctx, out.zText, out.nChar, SQLITE_DYNAMIC, SQLITE_UTF8);
207178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text64(ctx,out.zText,out.nChar,SQLITE_TRANSIENT,SQLITE_UTF8);
206733 207179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
206734 207180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonShowParse(p);
206735 207181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
206736 207182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonParseFree(p);
207183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_reset(&out);
206737 207184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
206738 207185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_DEBUG */
206739 207186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
206740 207187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/****************************************************************************
206741 207188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Scalar SQL function implementations
@@ -208084,10 +208531,13 @@
208084 208531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
208085 208532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
208086 208533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case JEACH_VALUE: {
208087 208534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 i = jsonSkipLabel(p);
208088 208535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
jsonReturnFromBlob(&p->sParse, i, ctx, 1);
208536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (p->sParse.aBlob[i] & 0x0f)>=JSONB_ARRAY ){
208537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_subtype(ctx, JSON_SUBTYPE);
208538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
208089 208539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
208090 208540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
208091 208541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case JEACH_TYPE: {
208092 208542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 i = jsonSkipLabel(p);
208093 208543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 eType = p->sParse.aBlob[i] & 0x0f;
@@ -209158,15 +209608,13 @@
209158 209608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
209159 209609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
209160 209610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Clear the Rtree.pNodeBlob object
209161 209611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
209162 209612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void nodeBlobReset(Rtree *pRtree){
209163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pRtree->pNodeBlob && pRtree->inWrTrans==0 && pRtree->nCursor==0 ){
209164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_blob *pBlob = pRtree->pNodeBlob;
209165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRtree->pNodeBlob = 0;
209166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_blob_close(pBlob);
209167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
209613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_blob *pBlob = pRtree->pNodeBlob;
209614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRtree->pNodeBlob = 0;
209615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_blob_close(pBlob);
209168 209616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209169 209617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
209170 209618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
209171 209619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Obtain a reference to an r-tree node.
209172 209620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -209206,11 +209654,10 @@
209206 209654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_blob_open(pRtree->db, pRtree->zDb, pRtree->zNodeName,
209207 209655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"data", iNode, 0,
209208 209656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&pRtree->pNodeBlob);
209209 209657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209210 209658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ){
209211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nodeBlobReset(pRtree);
209212 209659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppNode = 0;
209213 209660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If unable to open an sqlite3_blob on the desired row, that can only
209214 209661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** be because the shadow tables hold erroneous data. */
209215 209662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_ERROR ){
209216 209663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_CORRUPT_VTAB;
@@ -209266,10 +209713,11 @@
209266 209713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_CORRUPT_VTAB;
209267 209714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RTREE_IS_CORRUPT(pRtree);
209268 209715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209269 209716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppNode = pNode;
209270 209717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
209718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nodeBlobReset(pRtree);
209271 209719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pNode ){
209272 209720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRtree->nNodeRef--;
209273 209721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(pNode);
209274 209722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209275 209723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppNode = 0;
@@ -209410,10 +209858,11 @@
209410 209858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RtreeNode *pNode, /* The node from which to extract a coordinate */
209411 209859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCell, /* The index of the cell within the node */
209412 209860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCoord, /* Which coordinate to extract */
209413 209861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RtreeCoord *pCoord /* OUT: Space to write result to */
209414 209862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
209863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( iCell<NCELL(pNode) );
209415 209864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
readCoord(&pNode->zData[12 + pRtree->nBytesPerCell*iCell + 4*iCoord], pCoord);
209416 209865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209417 209866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
209418 209867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
209419 209868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Deserialize cell iCell of node pNode. Populate the structure pointed
@@ -209599,11 +210048,13 @@
209599 210048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRtree->nCursor>0 );
209600 210049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
resetCursor(pCsr);
209601 210050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_finalize(pCsr->pReadAux);
209602 210051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(pCsr);
209603 210052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRtree->nCursor--;
209604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nodeBlobReset(pRtree);
210053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pRtree->nCursor==0 && pRtree->inWrTrans==0 ){
210054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nodeBlobReset(pRtree);
210055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
209605 210056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
209606 210057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
209607 210058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
209608 210059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
209609 210060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Rtree virtual table module xEof method.
@@ -210184,11 +210635,15 @@
210184 210635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RtreeCursor *pCsr = (RtreeCursor *)pVtabCursor;
210185 210636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RtreeSearchPoint *p = rtreeSearchPointFirst(pCsr);
210186 210637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
210187 210638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RtreeNode *pNode = rtreeNodeOfFirstSearchPoint(pCsr, &rc);
210188 210639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_OK && ALWAYS(p) ){
210189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pRowid = nodeGetRowid(RTREE_OF_CURSOR(pCsr), pNode, p->iCell);
210640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->iCell>=NCELL(pNode) ){
210641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_ABORT;
210642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
210643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pRowid = nodeGetRowid(RTREE_OF_CURSOR(pCsr), pNode, p->iCell);
210644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
210190 210645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
210191 210646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
210192 210647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
210193 210648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
210194 210649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -210202,10 +210657,11 @@
210202 210657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = SQLITE_OK;
210203 210658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RtreeNode *pNode = rtreeNodeOfFirstSearchPoint(pCsr, &rc);
210204 210659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
210205 210660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc ) return rc;
210206 210661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( NEVER(p==0) ) return SQLITE_OK;
210662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->iCell>=NCELL(pNode) ) return SQLITE_ABORT;
210207 210663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i==0 ){
210208 210664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_result_int64(ctx, nodeGetRowid(pRtree, pNode, p->iCell));
210209 210665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( i<=pRtree->nDim2 ){
210210 210666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nodeGetCoord(pRtree, pNode, p->iCell, i-1, &c);
210211 210667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef SQLITE_RTREE_INT_ONLY
@@ -211684,11 +212140,11 @@
211684 212140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Called when a transaction starts.
211685 212141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
211686 212142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int rtreeBeginTransaction(sqlite3_vtab *pVtab){
211687 212143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Rtree *pRtree = (Rtree *)pVtab;
211688 212144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pRtree->inWrTrans==0 );
211689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pRtree->inWrTrans++;
212145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pRtree->inWrTrans = 1;
211690 212146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
211691 212147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
211692 212148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
211693 212149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
211694 212150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Called when a transaction completes (either by COMMIT or ROLLBACK).
@@ -211697,10 +212153,13 @@
211697 212153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int rtreeEndTransaction(sqlite3_vtab *pVtab){
211698 212154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Rtree *pRtree = (Rtree *)pVtab;
211699 212155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pRtree->inWrTrans = 0;
211700 212156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nodeBlobReset(pRtree);
211701 212157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return SQLITE_OK;
212158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
212159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int rtreeRollback(sqlite3_vtab *pVtab){
212160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rtreeEndTransaction(pVtab);
211702 212161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
211703 212162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
211704 212163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
211705 212164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The xRename method for rtree module virtual tables.
211706 212165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -211816,11 +212275,11 @@
211816 212275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rtreeRowid, /* xRowid - read data */
211817 212276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rtreeUpdate, /* xUpdate - write data */
211818 212277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rtreeBeginTransaction, /* xBegin - begin transaction */
211819 212278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rtreeEndTransaction, /* xSync - sync transaction */
211820 212279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rtreeEndTransaction, /* xCommit - commit transaction */
211821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rtreeEndTransaction, /* xRollback - rollback transaction */
212280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rtreeRollback, /* xRollback - rollback transaction */
211822 212281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, /* xFindFunction - function overloading */
211823 212282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rtreeRename, /* xRename - rename the table */
211824 212283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rtreeSavepoint, /* xSavepoint */
211825 212284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, /* xRelease */
211826 212285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
0, /* xRollbackTo */
@@ -231114,10 +231573,13 @@
231114 231573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3Fts5ParserARG_PDECL A parameter declaration for the %extra_argument
231115 231574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3Fts5ParserARG_PARAM Code to pass %extra_argument as a subroutine parameter
231116 231575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3Fts5ParserARG_STORE Code to store %extra_argument into fts5yypParser
231117 231576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3Fts5ParserARG_FETCH Code to extract %extra_argument from fts5yypParser
231118 231577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sqlite3Fts5ParserCTX_* As sqlite3Fts5ParserARG_ except for %extra_context
231578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fts5YYREALLOC Name of the realloc() function to use
231579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fts5YYFREE Name of the free() function to use
231580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fts5YYDYNSTACK True if stack space should be extended on heap
231119 231581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fts5YYERRORSYMBOL is the code number of the error symbol. If not
231120 231582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** defined, then do no error processing.
231121 231583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fts5YYNSTATE the combined number of states.
231122 231584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fts5YYNRULE the number of rules in the grammar
231123 231585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fts5YYNFTS5TOKEN Number of terminal symbols
@@ -231127,10 +231589,12 @@
231127 231589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fts5YY_ERROR_ACTION The fts5yy_action[] code for syntax error
231128 231590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fts5YY_ACCEPT_ACTION The fts5yy_action[] code for accept
231129 231591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fts5YY_NO_ACTION The fts5yy_action[] code for no-op
231130 231592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fts5YY_MIN_REDUCE Minimum value for reduce actions
231131 231593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fts5YY_MAX_REDUCE Maximum value for reduce actions
231594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fts5YY_MIN_DSTRCTR Minimum symbol value that has a destructor
231595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fts5YY_MAX_DSTRCTR Maximum symbol value that has a destructor
231132 231596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
231133 231597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef INTERFACE
231134 231598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define INTERFACE 1
231135 231599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231136 231600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************* Begin control #defines *****************************************/
@@ -231153,10 +231617,13 @@
231153 231617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserARG_SDECL Fts5Parse *pParse;
231154 231618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserARG_PDECL ,Fts5Parse *pParse
231155 231619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserARG_PARAM ,pParse
231156 231620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserARG_FETCH Fts5Parse *pParse=fts5yypParser->pParse;
231157 231621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserARG_STORE fts5yypParser->pParse=pParse;
231622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define fts5YYREALLOC realloc
231623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define fts5YYFREE free
231624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define fts5YYDYNSTACK 0
231158 231625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserCTX_SDECL
231159 231626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserCTX_PDECL
231160 231627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserCTX_PARAM
231161 231628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserCTX_FETCH
231162 231629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define sqlite3Fts5ParserCTX_STORE
@@ -231170,10 +231637,12 @@
231170 231637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5YY_ERROR_ACTION 80
231171 231638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5YY_ACCEPT_ACTION 81
231172 231639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5YY_NO_ACTION 82
231173 231640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5YY_MIN_REDUCE 83
231174 231641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5YY_MAX_REDUCE 110
231642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define fts5YY_MIN_DSTRCTR 16
231643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define fts5YY_MAX_DSTRCTR 24
231175 231644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************* End control #defines *******************************************/
231176 231645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fts5YY_NLOOKAHEAD ((int)(sizeof(fts5yy_lookahead)/sizeof(fts5yy_lookahead[0])))
231177 231646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231178 231647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Define the fts5yytestcase() macro to be a no-op if is not already defined
231179 231648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** otherwise.
@@ -231184,10 +231653,26 @@
231184 231653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for testing.
231185 231654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
231186 231655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef fts5yytestcase
231187 231656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# define fts5yytestcase(X)
231188 231657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
231659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Macro to determine if stack space has the ability to grow using
231660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** heap memory.
231661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
231662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if fts5YYSTACKDEPTH<=0 || fts5YYDYNSTACK
231663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define fts5YYGROWABLESTACK 1
231664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
231665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define fts5YYGROWABLESTACK 0
231666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
231667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
231668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Guarantee a minimum number of initial stack slots.
231669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
231670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if fts5YYSTACKDEPTH<=0
231671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # undef fts5YYSTACKDEPTH
231672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define fts5YYSTACKDEPTH 2 /* Need a minimum stack size */
231673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
231189 231674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231190 231675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231191 231676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Next are the tables used to determine what action to take based on the
231192 231677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** current state and lookahead token. These tables are used to implement
231193 231678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** functions that take a state number and lookahead value and return an
@@ -231345,18 +231830,13 @@
231345 231830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef fts5YYNOERRORRECOVERY
231346 231831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fts5yyerrcnt; /* Shifts left before out of the error */
231347 231832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231348 231833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5ParserARG_SDECL /* A place to hold %extra_argument */
231349 231834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5ParserCTX_SDECL /* A place to hold %extra_context */
231350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if fts5YYSTACKDEPTH<=0
231351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int fts5yystksz; /* Current side of the stack */
231352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yyStackEntry *fts5yystack; /* The parser's stack */
231353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yyStackEntry fts5yystk0; /* First stack entry */
231354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
231355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yyStackEntry fts5yystack[fts5YYSTACKDEPTH]; /* The parser's stack */
231356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yyStackEntry *fts5yystackEnd; /* Last entry in the stack */
231357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
231835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yyStackEntry *fts5yystackEnd; /* Last entry in the stack */
231836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yyStackEntry *fts5yystack; /* The parser stack */
231837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yyStackEntry fts5yystk0[fts5YYSTACKDEPTH]; /* Initial stack space */
231358 231838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
231359 231839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct fts5yyParser fts5yyParser;
231360 231840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231361 231841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* #include <assert.h> */
231362 231842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef NDEBUG
@@ -231459,41 +231939,49 @@
231459 231939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* 27 */ "star_opt ::=",
231460 231940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
231461 231941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* NDEBUG */
231462 231942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231463 231943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if fts5YYSTACKDEPTH<=0
231944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if fts5YYGROWABLESTACK
231465 231945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
231466 231946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Try to increase the size of the parser stack. Return the number
231467 231947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of errors. Return 0 on success.
231468 231948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
231469 231949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int fts5yyGrowStack(fts5yyParser *p){
231950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int oldSize = 1 + (int)(p->fts5yystackEnd - p->fts5yystack);
231470 231951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int newSize;
231471 231952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idx;
231472 231953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yyStackEntry *pNew;
231473 231954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- newSize = p->fts5yystksz*2 + 100;
231475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- idx = p->fts5yytos ? (int)(p->fts5yytos - p->fts5yystack) : 0;
231476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->fts5yystack==&p->fts5yystk0 ){
231477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew = malloc(newSize*sizeof(pNew[0]));
231478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pNew ) pNew[0] = p->fts5yystk0;
231955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ newSize = oldSize*2 + 100;
231956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ idx = (int)(p->fts5yytos - p->fts5yystack);
231957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->fts5yystack==p->fts5yystk0 ){
231958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew = fts5YYREALLOC(0, newSize*sizeof(pNew[0]));
231959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNew==0 ) return 1;
231960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(pNew, p->fts5yystack, oldSize*sizeof(pNew[0]));
231479 231961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
231480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pNew = realloc(p->fts5yystack, newSize*sizeof(pNew[0]));
231962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pNew = fts5YYREALLOC(p->fts5yystack, newSize*sizeof(pNew[0]));
231963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pNew==0 ) return 1;
231481 231964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pNew ){
231483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->fts5yystack = pNew;
231484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->fts5yytos = &p->fts5yystack[idx];
231965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->fts5yystack = pNew;
231966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->fts5yytos = &p->fts5yystack[idx];
231485 231967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef NDEBUG
231486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fts5yyTraceFILE ){
231487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fprintf(fts5yyTraceFILE,"%sStack grows from %d to %d entries.\n",
231488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yyTracePrompt, p->fts5yystksz, newSize);
231489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
231968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fts5yyTraceFILE ){
231969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(fts5yyTraceFILE,"%sStack grows from %d to %d entries.\n",
231970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yyTracePrompt, oldSize, newSize);
231971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
231490 231972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->fts5yystksz = newSize;
231492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
231493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return pNew==0;
231973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->fts5yystackEnd = &p->fts5yystack[newSize-1];
231974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
231494 231975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* fts5YYGROWABLESTACK */
231977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
231978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if !fts5YYGROWABLESTACK
231979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* For builds that do no have a growable stack, fts5yyGrowStack always
231980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** returns an error.
231981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
231982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define fts5yyGrowStack(X) 1
231495 231983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231496 231984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231497 231985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Datatype of the argument to the memory allocated passed as the
231498 231986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** second argument to sqlite3Fts5ParserAlloc() below. This can be changed by
231499 231987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** putting an appropriate #define in the %include section of the input
@@ -231509,28 +231997,18 @@
231509 231997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yyParser *fts5yypParser = (fts5yyParser*)fts5yypRawParser;
231510 231998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5ParserCTX_STORE
231511 231999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef fts5YYTRACKMAXSTACKDEPTH
231512 232000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yypParser->fts5yyhwm = 0;
231513 232001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if fts5YYSTACKDEPTH<=0
231515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yypParser->fts5yytos = NULL;
231516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yypParser->fts5yystack = NULL;
231517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yypParser->fts5yystksz = 0;
231518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fts5yyGrowStack(fts5yypParser) ){
231519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yypParser->fts5yystack = &fts5yypParser->fts5yystk0;
231520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yypParser->fts5yystksz = 1;
231521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
231522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
232002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yypParser->fts5yystack = fts5yypParser->fts5yystk0;
232003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yypParser->fts5yystackEnd = &fts5yypParser->fts5yystack[fts5YYSTACKDEPTH-1];
231523 232004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef fts5YYNOERRORRECOVERY
231524 232005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yypParser->fts5yyerrcnt = -1;
231525 232006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231526 232007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yypParser->fts5yytos = fts5yypParser->fts5yystack;
231527 232008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yypParser->fts5yystack[0].stateno = 0;
231528 232009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yypParser->fts5yystack[0].major = 0;
231529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if fts5YYSTACKDEPTH>0
231530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yypParser->fts5yystackEnd = &fts5yypParser->fts5yystack[fts5YYSTACKDEPTH-1];
231531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
231532 232010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231533 232011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231534 232012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef sqlite3Fts5Parser_ENGINEALWAYSONSTACK
231535 232013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
231536 232014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function allocates a new parser.
@@ -231640,13 +232118,30 @@
231640 232118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
231641 232119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Clear all secondary memory allocations from the parser
231642 232120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
231643 232121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void sqlite3Fts5ParserFinalize(void *p){
231644 232122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yyParser *pParser = (fts5yyParser*)p;
231645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( pParser->fts5yytos>pParser->fts5yystack ) fts5yy_pop_parser_stack(pParser);
231646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if fts5YYSTACKDEPTH<=0
231647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pParser->fts5yystack!=&pParser->fts5yystk0 ) free(pParser->fts5yystack);
232123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
232124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* In-lined version of calling fts5yy_pop_parser_stack() for each
232125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** element left in the stack */
232126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yyStackEntry *fts5yytos = pParser->fts5yytos;
232127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( fts5yytos>pParser->fts5yystack ){
232128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef NDEBUG
232129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fts5yyTraceFILE ){
232130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(fts5yyTraceFILE,"%sPopping %s\n",
232131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yyTracePrompt,
232132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yyTokenName[fts5yytos->major]);
232133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
232134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
232135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fts5yytos->major>=fts5YY_MIN_DSTRCTR ){
232136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yy_destructor(pParser, fts5yytos->major, &fts5yytos->minor);
232137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
232138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yytos--;
232139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
232140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
232141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if fts5YYGROWABLESTACK
232142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pParser->fts5yystack!=pParser->fts5yystk0 ) fts5YYFREE(pParser->fts5yystack);
231648 232143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231649 232144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231650 232145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231651 232146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef sqlite3Fts5Parser_ENGINEALWAYSONSTACK
231652 232147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -231869,29 +232364,23 @@
231869 232364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (int)(fts5yypParser->fts5yytos - fts5yypParser->fts5yystack)>fts5yypParser->fts5yyhwm ){
231870 232365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yypParser->fts5yyhwm++;
231871 232366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( fts5yypParser->fts5yyhwm == (int)(fts5yypParser->fts5yytos - fts5yypParser->fts5yystack) );
231872 232367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231873 232368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
231874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if fts5YYSTACKDEPTH>0
231875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fts5yypParser->fts5yytos>fts5yypParser->fts5yystackEnd ){
231876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yypParser->fts5yytos--;
231877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yyStackOverflow(fts5yypParser);
231878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return;
231879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
231880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
231881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fts5yypParser->fts5yytos>=&fts5yypParser->fts5yystack[fts5yypParser->fts5yystksz] ){
232369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yytos = fts5yypParser->fts5yytos;
232370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fts5yytos>fts5yypParser->fts5yystackEnd ){
231882 232371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fts5yyGrowStack(fts5yypParser) ){
231883 232372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yypParser->fts5yytos--;
231884 232373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yyStackOverflow(fts5yypParser);
231885 232374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
231886 232375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5yytos = fts5yypParser->fts5yytos;
232377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( fts5yytos <= fts5yypParser->fts5yystackEnd );
231887 232378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
231889 232379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fts5yyNewState > fts5YY_MAX_SHIFT ){
231890 232380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yyNewState += fts5YY_MIN_REDUCE - fts5YY_MIN_SHIFTREDUCE;
231891 232381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
231892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yytos = fts5yypParser->fts5yytos;
231893 232382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yytos->stateno = fts5yyNewState;
231894 232383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yytos->major = fts5yyMajor;
231895 232384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yytos->minor.fts5yy0 = fts5yyMinor;
231896 232385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yyTraceShift(fts5yypParser, fts5yyNewState, "Shift");
231897 232386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -232324,23 +232813,16 @@
232324 232813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yypParser->fts5yyhwm++;
232325 232814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( fts5yypParser->fts5yyhwm ==
232326 232815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(int)(fts5yypParser->fts5yytos - fts5yypParser->fts5yystack));
232327 232816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232328 232817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
232329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if fts5YYSTACKDEPTH>0
232330 232818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fts5yypParser->fts5yytos>=fts5yypParser->fts5yystackEnd ){
232331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5yyStackOverflow(fts5yypParser);
232332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- break;
232333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
232334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
232335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fts5yypParser->fts5yytos>=&fts5yypParser->fts5yystack[fts5yypParser->fts5yystksz-1] ){
232336 232819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fts5yyGrowStack(fts5yypParser) ){
232337 232820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yyStackOverflow(fts5yypParser);
232338 232821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
232339 232822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232340 232823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
232342 232824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
232343 232825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yyact = fts5yy_reduce(fts5yypParser,fts5yyruleno,fts5yymajor,fts5yyminor sqlite3Fts5ParserCTX_PARAM);
232344 232826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( fts5yyact <= fts5YY_MAX_SHIFTREDUCE ){
232345 232827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fts5yy_shift(fts5yypParser,fts5yyact,(fts5YYCODETYPE)fts5yymajor,fts5yyminor);
232346 232828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifndef fts5YYNOERRORRECOVERY
@@ -245375,27 +245857,30 @@
245375 245857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a rowid of iFrom or greater.
245376 245858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
245377 245859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void fts5TokendataIterNext(Fts5Iter *pIter, int bFrom, i64 iFrom){
245378 245860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ii;
245379 245861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5TokenDataIter *pT = pIter->pTokenDataIter;
245862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Fts5Index *pIndex = pIter->pIndex;
245380 245863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
245381 245864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(ii=0; ii<pT->nIter; ii++){
245382 245865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fts5Iter *p = pT->apIter[ii];
245383 245866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->base.bEof==0
245384 245867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (p->base.iRowid==pIter->base.iRowid || (bFrom && p->base.iRowid<iFrom))
245385 245868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
245386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5MultiIterNext(p->pIndex, p, bFrom, iFrom);
245869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5MultiIterNext(pIndex, p, bFrom, iFrom);
245387 245870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( bFrom && p->base.bEof==0
245388 245871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& p->base.iRowid<iFrom
245389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && p->pIndex->rc==SQLITE_OK
245872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && pIndex->rc==SQLITE_OK
245390 245873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
245391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5MultiIterNext(p->pIndex, p, 0, 0);
245874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5MultiIterNext(pIndex, p, 0, 0);
245392 245875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245393 245876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245394 245877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245395 245878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
245396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fts5IterSetOutputsTokendata(pIter);
245879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pIndex->rc==SQLITE_OK ){
245880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fts5IterSetOutputsTokendata(pIter);
245881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
245397 245882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
245398 245883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
245399 245884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
245400 245885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the segment-iterator passed as the first argument is at EOF, then
245401 245886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** set pIter->term to a copy of buffer pTerm.
@@ -250545,11 +251030,11 @@
250545 251030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
250546 251031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
250547 251032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
250548 251033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
250549 251034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
250550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257cc467a", -1, SQLITE_TRANSIENT);
251035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2024-02-20 12:14:07 6c5a0c85454e3c658e51fab611c169c034447174022eebc52fd8619b528a4765", -1, SQLITE_TRANSIENT);
250551 251036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250552 251037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250553 251038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
250554 251039 { 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
250555 251040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by this module.
@@ -250584,18 +251069,19 @@
250584 251069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM(isQuick);
250585 251070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3Fts5StorageIntegrity(pTab->pStorage, 0);
250586 251071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (rc&0xff)==SQLITE_CORRUPT ){
250587 251072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pzErr = sqlite3_mprintf("malformed inverted index for FTS5 table %s.%s",
250588 251073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSchema, zTabname);
251074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = (*pzErr) ? SQLITE_OK : SQLITE_NOMEM;
250589 251075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( rc!=SQLITE_OK ){
250590 251076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pzErr = sqlite3_mprintf("unable to validate the inverted index for"
250591 251077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FTS5 table %s.%s: %s",
250592 251078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSchema, zTabname, sqlite3_errstr(rc));
250593 251079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250594 251080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3Fts5IndexCloseReader(pTab->p.pIndex);
250595 251081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return SQLITE_OK;
251082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
250597 251083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
250598 251084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
250599 251085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int fts5Init(sqlite3 *db){
250600 251086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const sqlite3_module fts5Mod = {
250601 251087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* iVersion */ 4,
250602 251088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!