@@ -1205,11 +1205,11 @@
1205 1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1206 1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [sqlite_version()] and [sqlite_source_id()].
1207 1207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1208 1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION "3.36.0"
1209 1209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_VERSION_NUMBER 3036000
1210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2021-06-03 18:56:42 4a587c3492faa99490fd67ca1de9fceafcdc12d220f42817791923be258b73f1"
1210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2021-06-07 00:41:18 2aa9368b63b42ac7c700516f109edcc6098c12b850eae591afed4e51a3f41819"
1211 1211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1212 1212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1213 1213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: Run-Time Library Version Numbers
1214 1214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** KEYWORDS: sqlite3_version sqlite3_sourceid
1215 1215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -6213,21 +6213,19 @@
6213 6213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The fourth parameter may also optionally include the [SQLITE_DIRECTONLY]
6214 6214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** flag, which if present prevents the function from being invoked from
6215 6215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** within VIEWs, TRIGGERs, CHECK constraints, generated column expressions,
6216 6216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** index expressions, or the WHERE clause of partial indexes.
6217 6217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** <span style="background-color:#ffff90;">
6219 6218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** For best security, the [SQLITE_DIRECTONLY] flag is recommended for
6220 6219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** all application-defined SQL functions that do not need to be
6221 6220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** used inside of triggers, view, CHECK constraints, or other elements of
6222 6221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database schema. This flags is especially recommended for SQL
6223 6222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** functions that have side effects or reveal internal application state.
6224 6223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Without this flag, an attacker might be able to modify the schema of
6225 6224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a database file to include invocations of the function with parameters
6226 6225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** chosen by the attacker, which the application will then execute when
6227 6226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the database file is opened and read.
6228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** </span>
6229 6227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6230 6228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^(The fifth parameter is an arbitrary pointer. The implementation of the
6231 6229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** function can gain access to this pointer using [sqlite3_user_data()].)^
6232 6230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
6233 6231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ^The sixth, seventh and eighth parameters passed to the three
@@ -8891,11 +8889,12 @@
8891 8889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_RESULT_INTREAL 27
8892 8890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_PRNG_SEED 28
8893 8891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS 29
8894 8892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_SEEK_COUNT 30
8895 8893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_TESTCTRL_TRACEFLAGS 31
8896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_TESTCTRL_LAST 31 /* Largest TESTCTRL */
8894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_TESTCTRL_TUNE 32
8895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_TESTCTRL_LAST 32 /* Largest TESTCTRL */
8897 8896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8898 8897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
8899 8898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CAPI3REF: SQL Keyword Checking
8900 8899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
8901 8900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These routines provide access to the set of SQL language keywords
@@ -17314,10 +17313,11 @@
17314 17313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_PushDown 0x00001000 /* The push-down optimization */
17315 17314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_SimplifyJoin 0x00002000 /* Convert LEFT JOIN to JOIN */
17316 17315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_SkipScan 0x00004000 /* Skip-scans */
17317 17316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_PropagateConst 0x00008000 /* The constant propagation opt */
17318 17317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_MinMaxOpt 0x00010000 /* The min/max optimization */
17318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SeekScan 0x00020000 /* The OP_SeekScan optimization */
17319 17319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SQLITE_AllOpts 0xffffffff /* All optimizations */
17320 17320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
17321 17321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
17322 17322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Macros for testing whether or not optimizations are enabled or disabled.
17323 17323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -19323,10 +19323,26 @@
19323 19323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allowed values for mInitFlags
19324 19324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
19325 19325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define INITFLAG_AlterRename 0x0001 /* Reparse after a RENAME */
19326 19326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define INITFLAG_AlterDrop 0x0002 /* Reparse after a DROP COLUMN */
19327 19327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Tuning parameters are set using SQLITE_TESTCTRL_TUNE and are controlled
19329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** on debug-builds of the CLI using ".testctrl tune ID VALUE". Tuning
19330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** parameters are for temporary use during development, to help find
19331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** optimial values for parameters in the query planner. The should not
19332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be used on trunk check-ins. They are a temporary mechanism available
19333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for transient development builds only.
19334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
19335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Tuning parameters are numbered starting with 1.
19336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
19337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_NTUNE 6 /* Should be zero for all trunk check-ins */
19338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
19339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define Tuning(X) (sqlite3Config.aTune[(X)-1])
19340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
19341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define Tuning(X) 0
19342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
19328 19344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19329 19345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Structure containing global configuration data for the SQLite library.
19330 19346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
19331 19347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This structure also contains some state information.
19332 19348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -19387,10 +19403,14 @@
19387 19403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
19388 19404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bLocaltimeFault; /* True to fail localtime() calls */
19389 19405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOnceResetThreshold; /* When to reset OP_Once counters */
19390 19406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 szSorterRef; /* Min size in bytes to use sorter-refs */
19391 19407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int iPrngSeed; /* Alternative fixed seed for the PRNG */
19408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* vvvv--- must be last ---vvv */
19409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
19410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_int64 aTune[SQLITE_NTUNE]; /* Tuning parameters */
19411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
19392 19412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
19393 19413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
19394 19414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
19395 19415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This macro is used inside of assert() statements to indicate that
19396 19416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the assert is only valid on a well-formed database. Instead of:
@@ -90937,12 +90957,11 @@
90937 90957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp[1].opcode==OP_SeekGE );
90938 90958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
90939 90959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pOp->p2 points to the first instruction past the OP_IdxGT that
90940 90960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** follows the OP_SeekGE. */
90941 90961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p2>=(int)(pOp-aOp)+2 );
90942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( aOp[pOp->p2-1].opcode==OP_IdxGT || aOp[pOp->p2-1].opcode==OP_IdxGE );
90943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- testcase( aOp[pOp->p2-1].opcode==OP_IdxGE );
90962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( aOp[pOp->p2-1].opcode==OP_IdxGT );
90944 90963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp[1].p1==aOp[pOp->p2-1].p1 );
90945 90964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp[1].p2==aOp[pOp->p2-1].p2 );
90946 90965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp[1].p3==aOp[pOp->p2-1].p3 );
90947 90966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
90948 90967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pOp->p1>0 );
@@ -101823,11 +101842,11 @@
101823 101842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regRight = exprCodeSubselect(pParse, pRight);
101824 101843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
101825 101844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3VdbeAddOp2(v, OP_Integer, 1, dest);
101826 101845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; 1 /*Loop exits by "break"*/; i++){
101827 101846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int regFree1 = 0, regFree2 = 0;
101828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Expr *pL, *pR;
101847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Expr *pL = 0, *pR = 0;
101829 101848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int r1, r2;
101830 101849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( i>=0 && i<nLeft );
101831 101850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( addrCmp ) sqlite3VdbeJumpHere(v, addrCmp);
101832 101851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r1 = exprVectorRegister(pParse, pLeft, i, regLeft, &pL, ®Free1);
101833 101852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
r2 = exprVectorRegister(pParse, pRight, i, regRight, &pR, ®Free2);
@@ -108284,11 +108303,11 @@
108284 108303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Parse *pParse,
108285 108304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct RenameCtx *pCtx,
108286 108305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void *pPtr
108287 108306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
108288 108307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RenameToken **pp;
108289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pPtr==0 ){
108308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( NEVER(pPtr==0) ){
108290 108309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
108291 108310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
108292 108311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pp=&pParse->pRename; (*pp); pp=&(*pp)->pNext){
108293 108312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (*pp)->p==pPtr ){
108294 108313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
RenameToken *pToken = *pp;
@@ -108838,13 +108857,15 @@
108838 108857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bFKOnly = sqlite3_stricmp(zTable, sParse.pNewTable->zName);
108839 108858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FKey *pFKey;
108840 108859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( sParse.pNewTable->pSelect==0 );
108841 108860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sCtx.pTab = sParse.pNewTable;
108842 108861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bFKOnly==0 ){
108843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- renameTokenFind(
108844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- &sParse, &sCtx, (void*)sParse.pNewTable->aCol[iCol].zName
108845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
108862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iCol<sParse.pNewTable->nCol ){
108863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ renameTokenFind(
108864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &sParse, &sCtx, (void*)sParse.pNewTable->aCol[iCol].zName
108865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
108866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
108846 108867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sCtx.iCol<0 ){
108847 108868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
renameTokenFind(&sParse, &sCtx, (void*)&sParse.pNewTable->iPKey);
108848 108869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
108849 108870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3WalkExprList(&sWalker, sParse.pNewTable->pCheck);
108850 108871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(pIdx=sParse.pNewTable->pIndex; pIdx; pIdx=pIdx->pNext){
@@ -151728,11 +151749,11 @@
151728 151749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( ALWAYS(pExpr->x.pList && pExpr->x.pList->nExpr) ){
151729 151750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* "x IN (value, value, ...)" */
151730 151751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nIn = sqlite3LogEst(pExpr->x.pList->nExpr);
151731 151752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151732 151753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pProbe->hasStat1 && rLogSize>=10 ){
151733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- LogEst M, logK, safetyMargin;
151754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ LogEst M, logK, x;
151734 151755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Let:
151735 151756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** N = the total number of rows in the table
151736 151757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** K = the number of entries on the RHS of the IN operator
151737 151758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** M = the number of rows in the table that match terms to the
151738 151759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to the left in the same index. If the IN operator is on
@@ -151751,20 +151772,29 @@
151751 151772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the index. Do not bother with this optimization on very small
151752 151773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tables (less than 2 rows) as it is pointless in that case.
151753 151774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
151754 151775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
M = pProbe->aiRowLogEst[saved_nEq];
151755 151776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
logK = estLog(nIn);
151756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- safetyMargin = 10; /* TUNING: extra weight for indexed IN */
151757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( M + logK + safetyMargin < nIn + rLogSize ){
151777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* TUNING v----- 10 to bias toward indexed IN */
151778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x = M + logK + 10 - (nIn + rLogSize);
151779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( x>=0 ){
151780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERETRACE(0x40,
151781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ("IN operator (N=%d M=%d logK=%d nIn=%d rLogSize=%d x=%d) "
151782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "prefers indexed lookup\n",
151783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ saved_nEq, M, logK, nIn, rLogSize, x));
151784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( nInMul<2 && OptimizationEnabled(db, SQLITE_SeekScan) ){
151758 151785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WHERETRACE(0x40,
151759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ("Scan preferred over IN operator on column %d of \"%s\" (%d<%d)\n",
151760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- saved_nEq, pProbe->zName, M+logK+10, nIn+rLogSize));
151786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ("IN operator (N=%d M=%d logK=%d nIn=%d rLogSize=%d x=%d"
151787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " nInMul=%d) prefers skip-scan\n",
151788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ saved_nEq, M, logK, nIn, rLogSize, x, nInMul));
151761 151789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->wsFlags |= WHERE_IN_SEEKSCAN;
151762 151790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
151763 151791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WHERETRACE(0x40,
151764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ("IN operator preferred on column %d of \"%s\" (%d>=%d)\n",
151765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- saved_nEq, pProbe->zName, M+logK+10, nIn+rLogSize));
151792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ("IN operator (N=%d M=%d logK=%d nIn=%d rLogSize=%d x=%d"
151793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " nInMul=%d) prefers normal scan\n",
151794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ saved_nEq, M, logK, nIn, rLogSize, x, nInMul));
151795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
151766 151796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151767 151797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151768 151798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pNew->wsFlags |= WHERE_COLUMN_IN;
151769 151799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( eOp & (WO_EQ|WO_IS) ){
151770 151800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iCol = pProbe->aiColumn[saved_nEq];
@@ -169257,10 +169287,40 @@
169257 169287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 2: *ptr = sqlite3WhereTrace; break;
169258 169288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 3: sqlite3WhereTrace = *ptr; break;
169259 169289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
169260 169290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
169261 169291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
169292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
169293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef SQLITE_DEBUG
169294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* sqlite3_test_control(SQLITE_TESTCTRL_TUNE, id, *piValue)
169295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
169296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If "id" is an integer between 1 and SQLITE_NTUNE then set the value
169297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the id-th tuning parameter to *piValue. If "id" is between -1
169298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** and -SQLITE_NTUNE, then write the current value of the (-id)-th
169299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** tuning parameter into *piValue.
169300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
169301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Tuning parameters are for use during transient development builds,
169302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** to help find the best values for constants in the query planner.
169303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Access tuning parameters using the Tuning(ID) macro. Set the
169304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** parameters in the CLI using ".testctrl tune ID VALUE".
169305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
169306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Transient use only. Tuning parameters should not be used in
169307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** checked-in code.
169308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
169309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case SQLITE_TESTCTRL_TUNE: {
169310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int id = va_arg(ap, int);
169311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int *piValue = va_arg(ap, int*);
169312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( id>0 && id<=SQLITE_NTUNE ){
169313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Tuning(id) = *piValue;
169314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( id<0 && id>=-SQLITE_NTUNE ){
169315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *piValue = Tuning(-id);
169316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
169317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = SQLITE_NOTFOUND;
169318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
169319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
169320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
169321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
169262 169322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
169263 169323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
169264 169324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_UNTESTABLE */
169265 169325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
169266 169326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -230441,11 +230501,11 @@
230441 230501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nArg, /* Number of args */
230442 230502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_value **apUnused /* Function arguments */
230443 230503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
230444 230504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nArg==0 );
230445 230505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNUSED_PARAM2(nArg, apUnused);
230446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_result_text(pCtx, "fts5: 2021-06-03 18:56:42 4a587c3492faa99490fd67ca1de9fceafcdc12d220f42817791923be258b73f1", -1, SQLITE_TRANSIENT);
230506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_result_text(pCtx, "fts5: 2021-06-04 23:26:56 1c71de43dbc68002c4a6229e7efffb019655baff67a51fe922571fe420c95835", -1, SQLITE_TRANSIENT);
230447 230507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
230448 230508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
230449 230509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
230450 230510 { 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
230451 230511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by this module.
@@ -235367,12 +235427,12 @@
235367 235427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
235368 235428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* SQLITE_CORE */
235369 235429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
235370 235430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
235371 235431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************** End of stmt.c ************************************************/
235372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if __LINE__!=235372
235432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if __LINE__!=235432
235373 235433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#undef SQLITE_SOURCE_ID
235374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SQLITE_SOURCE_ID "2021-06-03 18:56:42 4a587c3492faa99490fd67ca1de9fceafcdc12d220f42817791923be258balt2"
235434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SQLITE_SOURCE_ID "2021-06-07 00:41:18 2aa9368b63b42ac7c700516f109edcc6098c12b850eae591afed4e51a3f4alt2"
235375 235435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
235376 235436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Return the source-id for this library */
235377 235437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
235378 235438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/************************** End of sqlite3.c ******************************/
235379 235439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!