Fossil SCM

merge previous fork

mgagnon 2018-01-16 15:44 trunk merge
Commit dddad4f0734d399a7a74ee82ec29ccf4d548b6d784d37063ba5de18154df8880
2 files changed +25 -8 +1 -1
+25 -8
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1147,11 +1147,11 @@
11471147
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
11481148
** [sqlite_version()] and [sqlite_source_id()].
11491149
*/
11501150
#define SQLITE_VERSION "3.22.0"
11511151
#define SQLITE_VERSION_NUMBER 3022000
1152
-#define SQLITE_SOURCE_ID "2018-01-15 19:00:35 b0b7d0363acf38c2178e2d3041d8ce2a0de061a51caa64670dbf539ee6d4356b"
1152
+#define SQLITE_SOURCE_ID "2018-01-16 13:37:43 feb2c2b6f66b0f45490beb1642d99cdb89fa220e299a8c118929df557c814189"
11531153
11541154
/*
11551155
** CAPI3REF: Run-Time Library Version Numbers
11561156
** KEYWORDS: sqlite3_version sqlite3_sourceid
11571157
**
@@ -137648,19 +137648,36 @@
137648137648
WHERETRACE(0xffff,("*** Optimizer Finished ***\n"));
137649137649
pWInfo->pParse->nQueryLoop += pWInfo->nRowOut;
137650137650
137651137651
/* If the caller is an UPDATE or DELETE statement that is requesting
137652137652
** to use a one-pass algorithm, determine if this is appropriate.
137653
+ **
137654
+ ** A one-pass approach can be used if the caller has requested one
137655
+ ** and either (a) the scan visits at most one row or (b) each
137656
+ ** of the following are true:
137657
+ **
137658
+ ** * the caller has indicated that a one-pass approach can be used
137659
+ ** with multiple rows (by setting WHERE_ONEPASS_MULTIROW), and
137660
+ ** * the table is not a virtual table, and
137661
+ ** * either the scan does not use the OR optimization or the caller
137662
+ ** is a DELETE operation (WHERE_DUPLICATES_OK is only specified
137663
+ ** for DELETE).
137664
+ **
137665
+ ** The last qualification is because an UPDATE statement uses
137666
+ ** WhereInfo.aiCurOnePass[1] to determine whether or not it really can
137667
+ ** use a one-pass approach, and this is not set accurately for scans
137668
+ ** that use the OR optimization.
137653137669
*/
137654137670
assert( (wctrlFlags & WHERE_ONEPASS_DESIRED)==0 || pWInfo->nLevel==1 );
137655137671
if( (wctrlFlags & WHERE_ONEPASS_DESIRED)!=0 ){
137656137672
int wsFlags = pWInfo->a[0].pWLoop->wsFlags;
137657137673
int bOnerow = (wsFlags & WHERE_ONEROW)!=0;
137658
- if( bOnerow
137659
- || ((wctrlFlags & WHERE_ONEPASS_MULTIROW)!=0
137660
- && 0==(wsFlags & WHERE_VIRTUALTABLE))
137661
- ){
137674
+ if( bOnerow || (
137675
+ 0!=(wctrlFlags & WHERE_ONEPASS_MULTIROW)
137676
+ && 0==(wsFlags & WHERE_VIRTUALTABLE)
137677
+ && (0==(wsFlags & WHERE_MULTI_OR) || (wctrlFlags & WHERE_DUPLICATES_OK))
137678
+ )){
137662137679
pWInfo->eOnePass = bOnerow ? ONEPASS_SINGLE : ONEPASS_MULTI;
137663137680
if( HasRowid(pTabList->a[0].pTab) && (wsFlags & WHERE_IDX_ONLY) ){
137664137681
if( wctrlFlags & WHERE_ONEPASS_MULTIROW ){
137665137682
bFordelete = OPFLAG_FORDELETE;
137666137683
}
@@ -203099,11 +203116,11 @@
203099203116
int nArg, /* Number of args */
203100203117
sqlite3_value **apUnused /* Function arguments */
203101203118
){
203102203119
assert( nArg==0 );
203103203120
UNUSED_PARAM2(nArg, apUnused);
203104
- sqlite3_result_text(pCtx, "fts5: 2018-01-15 19:00:35 b0b7d0363acf38c2178e2d3041d8ce2a0de061a51caa64670dbf539ee6d4356b", -1, SQLITE_TRANSIENT);
203121
+ sqlite3_result_text(pCtx, "fts5: 2018-01-16 13:37:43 feb2c2b6f66b0f45490beb1642d99cdb89fa220e299a8c118929df557c814189", -1, SQLITE_TRANSIENT);
203105203122
}
203106203123
203107203124
static int fts5Init(sqlite3 *db){
203108203125
static const sqlite3_module fts5Mod = {
203109203126
/* iVersion */ 2,
@@ -207367,12 +207384,12 @@
207367207384
}
207368207385
#endif /* SQLITE_CORE */
207369207386
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
207370207387
207371207388
/************** End of stmt.c ************************************************/
207372
-#if __LINE__!=207372
207389
+#if __LINE__!=207389
207373207390
#undef SQLITE_SOURCE_ID
207374
-#define SQLITE_SOURCE_ID "2018-01-15 19:00:35 b0b7d0363acf38c2178e2d3041d8ce2a0de061a51caa64670dbf539ee6d4alt2"
207391
+#define SQLITE_SOURCE_ID "2018-01-16 13:37:43 feb2c2b6f66b0f45490beb1642d99cdb89fa220e299a8c118929df557c81alt2"
207375207392
#endif
207376207393
/* Return the source-id for this library */
207377207394
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
207378207395
/************************** End of sqlite3.c ******************************/
207379207396
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1147,11 +1147,11 @@
1147 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1148 ** [sqlite_version()] and [sqlite_source_id()].
1149 */
1150 #define SQLITE_VERSION "3.22.0"
1151 #define SQLITE_VERSION_NUMBER 3022000
1152 #define SQLITE_SOURCE_ID "2018-01-15 19:00:35 b0b7d0363acf38c2178e2d3041d8ce2a0de061a51caa64670dbf539ee6d4356b"
1153
1154 /*
1155 ** CAPI3REF: Run-Time Library Version Numbers
1156 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1157 **
@@ -137648,19 +137648,36 @@
137648 WHERETRACE(0xffff,("*** Optimizer Finished ***\n"));
137649 pWInfo->pParse->nQueryLoop += pWInfo->nRowOut;
137650
137651 /* If the caller is an UPDATE or DELETE statement that is requesting
137652 ** to use a one-pass algorithm, determine if this is appropriate.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137653 */
137654 assert( (wctrlFlags & WHERE_ONEPASS_DESIRED)==0 || pWInfo->nLevel==1 );
137655 if( (wctrlFlags & WHERE_ONEPASS_DESIRED)!=0 ){
137656 int wsFlags = pWInfo->a[0].pWLoop->wsFlags;
137657 int bOnerow = (wsFlags & WHERE_ONEROW)!=0;
137658 if( bOnerow
137659 || ((wctrlFlags & WHERE_ONEPASS_MULTIROW)!=0
137660 && 0==(wsFlags & WHERE_VIRTUALTABLE))
137661 ){
 
137662 pWInfo->eOnePass = bOnerow ? ONEPASS_SINGLE : ONEPASS_MULTI;
137663 if( HasRowid(pTabList->a[0].pTab) && (wsFlags & WHERE_IDX_ONLY) ){
137664 if( wctrlFlags & WHERE_ONEPASS_MULTIROW ){
137665 bFordelete = OPFLAG_FORDELETE;
137666 }
@@ -203099,11 +203116,11 @@
203099 int nArg, /* Number of args */
203100 sqlite3_value **apUnused /* Function arguments */
203101 ){
203102 assert( nArg==0 );
203103 UNUSED_PARAM2(nArg, apUnused);
203104 sqlite3_result_text(pCtx, "fts5: 2018-01-15 19:00:35 b0b7d0363acf38c2178e2d3041d8ce2a0de061a51caa64670dbf539ee6d4356b", -1, SQLITE_TRANSIENT);
203105 }
203106
203107 static int fts5Init(sqlite3 *db){
203108 static const sqlite3_module fts5Mod = {
203109 /* iVersion */ 2,
@@ -207367,12 +207384,12 @@
207367 }
207368 #endif /* SQLITE_CORE */
207369 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
207370
207371 /************** End of stmt.c ************************************************/
207372 #if __LINE__!=207372
207373 #undef SQLITE_SOURCE_ID
207374 #define SQLITE_SOURCE_ID "2018-01-15 19:00:35 b0b7d0363acf38c2178e2d3041d8ce2a0de061a51caa64670dbf539ee6d4alt2"
207375 #endif
207376 /* Return the source-id for this library */
207377 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
207378 /************************** End of sqlite3.c ******************************/
207379
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1147,11 +1147,11 @@
1147 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1148 ** [sqlite_version()] and [sqlite_source_id()].
1149 */
1150 #define SQLITE_VERSION "3.22.0"
1151 #define SQLITE_VERSION_NUMBER 3022000
1152 #define SQLITE_SOURCE_ID "2018-01-16 13:37:43 feb2c2b6f66b0f45490beb1642d99cdb89fa220e299a8c118929df557c814189"
1153
1154 /*
1155 ** CAPI3REF: Run-Time Library Version Numbers
1156 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1157 **
@@ -137648,19 +137648,36 @@
137648 WHERETRACE(0xffff,("*** Optimizer Finished ***\n"));
137649 pWInfo->pParse->nQueryLoop += pWInfo->nRowOut;
137650
137651 /* If the caller is an UPDATE or DELETE statement that is requesting
137652 ** to use a one-pass algorithm, determine if this is appropriate.
137653 **
137654 ** A one-pass approach can be used if the caller has requested one
137655 ** and either (a) the scan visits at most one row or (b) each
137656 ** of the following are true:
137657 **
137658 ** * the caller has indicated that a one-pass approach can be used
137659 ** with multiple rows (by setting WHERE_ONEPASS_MULTIROW), and
137660 ** * the table is not a virtual table, and
137661 ** * either the scan does not use the OR optimization or the caller
137662 ** is a DELETE operation (WHERE_DUPLICATES_OK is only specified
137663 ** for DELETE).
137664 **
137665 ** The last qualification is because an UPDATE statement uses
137666 ** WhereInfo.aiCurOnePass[1] to determine whether or not it really can
137667 ** use a one-pass approach, and this is not set accurately for scans
137668 ** that use the OR optimization.
137669 */
137670 assert( (wctrlFlags & WHERE_ONEPASS_DESIRED)==0 || pWInfo->nLevel==1 );
137671 if( (wctrlFlags & WHERE_ONEPASS_DESIRED)!=0 ){
137672 int wsFlags = pWInfo->a[0].pWLoop->wsFlags;
137673 int bOnerow = (wsFlags & WHERE_ONEROW)!=0;
137674 if( bOnerow || (
137675 0!=(wctrlFlags & WHERE_ONEPASS_MULTIROW)
137676 && 0==(wsFlags & WHERE_VIRTUALTABLE)
137677 && (0==(wsFlags & WHERE_MULTI_OR) || (wctrlFlags & WHERE_DUPLICATES_OK))
137678 )){
137679 pWInfo->eOnePass = bOnerow ? ONEPASS_SINGLE : ONEPASS_MULTI;
137680 if( HasRowid(pTabList->a[0].pTab) && (wsFlags & WHERE_IDX_ONLY) ){
137681 if( wctrlFlags & WHERE_ONEPASS_MULTIROW ){
137682 bFordelete = OPFLAG_FORDELETE;
137683 }
@@ -203099,11 +203116,11 @@
203116 int nArg, /* Number of args */
203117 sqlite3_value **apUnused /* Function arguments */
203118 ){
203119 assert( nArg==0 );
203120 UNUSED_PARAM2(nArg, apUnused);
203121 sqlite3_result_text(pCtx, "fts5: 2018-01-16 13:37:43 feb2c2b6f66b0f45490beb1642d99cdb89fa220e299a8c118929df557c814189", -1, SQLITE_TRANSIENT);
203122 }
203123
203124 static int fts5Init(sqlite3 *db){
203125 static const sqlite3_module fts5Mod = {
203126 /* iVersion */ 2,
@@ -207367,12 +207384,12 @@
207384 }
207385 #endif /* SQLITE_CORE */
207386 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
207387
207388 /************** End of stmt.c ************************************************/
207389 #if __LINE__!=207389
207390 #undef SQLITE_SOURCE_ID
207391 #define SQLITE_SOURCE_ID "2018-01-16 13:37:43 feb2c2b6f66b0f45490beb1642d99cdb89fa220e299a8c118929df557c81alt2"
207392 #endif
207393 /* Return the source-id for this library */
207394 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
207395 /************************** End of sqlite3.c ******************************/
207396
+1 -1
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123123
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124124
** [sqlite_version()] and [sqlite_source_id()].
125125
*/
126126
#define SQLITE_VERSION "3.22.0"
127127
#define SQLITE_VERSION_NUMBER 3022000
128
-#define SQLITE_SOURCE_ID "2018-01-15 19:00:35 b0b7d0363acf38c2178e2d3041d8ce2a0de061a51caa64670dbf539ee6d4356b"
128
+#define SQLITE_SOURCE_ID "2018-01-16 13:37:43 feb2c2b6f66b0f45490beb1642d99cdb89fa220e299a8c118929df557c814189"
129129
130130
/*
131131
** CAPI3REF: Run-Time Library Version Numbers
132132
** KEYWORDS: sqlite3_version sqlite3_sourceid
133133
**
134134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.22.0"
127 #define SQLITE_VERSION_NUMBER 3022000
128 #define SQLITE_SOURCE_ID "2018-01-15 19:00:35 b0b7d0363acf38c2178e2d3041d8ce2a0de061a51caa64670dbf539ee6d4356b"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.22.0"
127 #define SQLITE_VERSION_NUMBER 3022000
128 #define SQLITE_SOURCE_ID "2018-01-16 13:37:43 feb2c2b6f66b0f45490beb1642d99cdb89fa220e299a8c118929df557c814189"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
134

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button