diff -Nru sqlite3-3.35.0/debian/changelog sqlite3-3.35.0-1/debian/changelog
--- sqlite3-3.35.0/debian/changelog 2021-04-03 14:57:46.000000000 +0000
+++ sqlite3-3.35.0-1/debian/changelog 2021-04-04 17:25:13.000000000 +0000
@@ -1,8 +1,8 @@
-sqlite3 (3.35.0-17395~202104022043~202104031457~ubuntu20.10.1) groovy; urgency=low
+sqlite3 (3.35.0-1-17377~202104021520~202104041725~ubuntu20.10.1) groovy; urgency=low
* Auto build.
- -- Gajj GNDU Sat, 03 Apr 2021 14:57:46 +0000
+ -- Gajj GNDU Sun, 04 Apr 2021 17:25:13 +0000
sqlite3 (3.35.0) UNRELEASED; urgency=medium
diff -Nru sqlite3-3.35.0/debian/git-build-recipe.manifest sqlite3-3.35.0-1/debian/git-build-recipe.manifest
--- sqlite3-3.35.0/debian/git-build-recipe.manifest 2021-04-03 14:57:46.000000000 +0000
+++ sqlite3-3.35.0-1/debian/git-build-recipe.manifest 2021-04-04 17:25:13.000000000 +0000
@@ -1,3 +1,3 @@
-# git-build-recipe format 0.4 deb-version {debupstream}-17395~202104022043~202104031457
-lp:~linuxgndu/sqlite-recipe/+git/sqlite-recipe git-commit:9af69ff547d76f1f8c7c4513fdb6c0ca1a32f9fc
+# git-build-recipe format 0.4 deb-version {debupstream}-1-17377~202104021520~202104041725
+lp:~linuxgndu/sqlite-recipe/+git/sqlite-recipe git-commit:8bec96953b78abf7ee0323850434e956a435b0ba
nest-part packaging lp:sqlite-recipe debian debian git-commit:8d41916a566e0d2a5a2f72d5a417616b9f895822
diff -Nru sqlite3-3.35.0/doc/lemon.html sqlite3-3.35.0-1/doc/lemon.html
--- sqlite3-3.35.0/doc/lemon.html 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/doc/lemon.html 2021-04-04 17:23:21.000000000 +0000
@@ -697,7 +697,6 @@
%stack_size
%start_symbol
%syntax_error
-%token
%token_class
%token_destructor
%token_prefix
@@ -1080,37 +1079,14 @@
See Error Processing.
-
-4.4.20 The %token directive
-
-Tokens are normally created automatically, the first time they are used.
-Any identifier that begins with an upper-case letter is a token.
-
-
Sometimes it is useful to declare tokens in advance, however. The
-integer values assigned to each token determined by the order in which
-the tokens are seen. So by declaring tokens in advance, it is possible to
-cause some tokens to have low-numbered values, which might be desirable in
-some grammers, or to have sequential values assigned to a sequence of
-related tokens. For this reason, the %token directive is provided to
-declare tokens in advance. The syntax is as follows:
-
-
-%token TOKEN TOKEN... .
-
-
-The %token directive is followed by zero or more token symbols and
-terminated by a single ".". Each token named is created if it does not
-already exist. Tokens are created in order.
-
-
-
4.4.21 The %token_class directive
+4.4.20 The %token_class directive
Undocumented. Appears to be related to the MULTITERMINAL concept.
Implementation.
-4.4.22 The %token_destructor directive
+4.4.21 The %token_destructor directive
The %destructor directive assigns a destructor to a non-terminal
symbol. (See the description of the
@@ -1126,7 +1102,7 @@
destructors.
-4.4.23 The %token_prefix directive
+4.4.22 The %token_prefix directive
Lemon generates #defines that assign small integer constants
to each terminal symbol in the grammar. If desired, Lemon will
@@ -1153,7 +1129,7 @@
-
4.4.24 The %token_type and %type directives
+4.4.23 The %token_type and %type directives
These directives are used to specify the data types for values
on the parser's stack associated with terminal and non-terminal
@@ -1190,7 +1166,7 @@
and able to pay that price, fine. You just need to know.
-4.4.25 The %wildcard directive
+4.4.24 The %wildcard directive
The %wildcard directive is followed by a single token name and a
period. This directive specifies that the identified token should
diff -Nru sqlite3-3.35.0/ext/expert/expert1.test sqlite3-3.35.0-1/ext/expert/expert1.test
--- sqlite3-3.35.0/ext/expert/expert1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/expert/expert1.test 2021-04-04 17:23:21.000000000 +0000
@@ -103,7 +103,7 @@
SELECT * FROM t1
} {
(no new indexes)
- SCAN t1
+ SCAN TABLE t1
}
do_setup_rec_test $tn.2 {
@@ -112,7 +112,7 @@
SELECT * FROM t1 WHERE b>?;
} {
CREATE INDEX t1_idx_00000062 ON t1(b);
- SEARCH t1 USING INDEX t1_idx_00000062 (b>?)
+ SEARCH TABLE t1 USING INDEX t1_idx_00000062 (b>?)
}
do_setup_rec_test $tn.3 {
@@ -121,7 +121,7 @@
SELECT * FROM t1 WHERE b COLLATE nocase BETWEEN ? AND ?
} {
CREATE INDEX t1_idx_3e094c27 ON t1(b COLLATE NOCASE);
- SEARCH t1 USING INDEX t1_idx_3e094c27 (b>? AND b)
+ SEARCH TABLE t1 USING INDEX t1_idx_3e094c27 (b>? AND b)
}
do_setup_rec_test $tn.4 {
@@ -130,7 +130,7 @@
SELECT a FROM t1 ORDER BY b;
} {
CREATE INDEX t1_idx_00000062 ON t1(b);
- SCAN t1 USING INDEX t1_idx_00000062
+ SCAN TABLE t1 USING INDEX t1_idx_00000062
}
do_setup_rec_test $tn.5 {
@@ -139,7 +139,7 @@
SELECT a FROM t1 WHERE a=? ORDER BY b;
} {
CREATE INDEX t1_idx_000123a7 ON t1(a, b);
- SEARCH t1 USING COVERING INDEX t1_idx_000123a7 (a=?)
+ SEARCH TABLE t1 USING COVERING INDEX t1_idx_000123a7 (a=?)
}
if 0 {
@@ -149,7 +149,7 @@
SELECT min(a) FROM t1
} {
CREATE INDEX t1_idx_00000061 ON t1(a);
- SEARCH t1 USING COVERING INDEX t1_idx_00000061
+ SEARCH TABLE t1 USING COVERING INDEX t1_idx_00000061
}
}
@@ -159,7 +159,7 @@
SELECT * FROM t1 ORDER BY a, b, c;
} {
CREATE INDEX t1_idx_033e95fe ON t1(a, b, c);
- SCAN t1 USING COVERING INDEX t1_idx_033e95fe
+ SCAN TABLE t1 USING COVERING INDEX t1_idx_033e95fe
}
#do_setup_rec_test $tn.1.8 {
@@ -168,7 +168,7 @@
# SELECT * FROM t1 ORDER BY a ASC, b COLLATE nocase DESC, c ASC;
#} {
# CREATE INDEX t1_idx_5be6e222 ON t1(a, b COLLATE NOCASE DESC, c);
-# 0|0|0|SCAN t1 USING COVERING INDEX t1_idx_5be6e222
+# 0|0|0|SCAN TABLE t1 USING COVERING INDEX t1_idx_5be6e222
#}
do_setup_rec_test $tn.8.1 {
@@ -177,7 +177,7 @@
SELECT * FROM t1 WHERE a=?
} {
CREATE INDEX t1_idx_00000061 ON t1(a);
- SEARCH t1 USING INDEX t1_idx_00000061 (a=?)
+ SEARCH TABLE t1 USING INDEX t1_idx_00000061 (a=?)
}
do_setup_rec_test $tn.8.2 {
CREATE TABLE t1(a, b COLLATE nocase, c);
@@ -185,7 +185,7 @@
SELECT * FROM t1 ORDER BY a ASC, b DESC, c ASC;
} {
CREATE INDEX t1_idx_5cb97285 ON t1(a, b DESC, c);
- SCAN t1 USING COVERING INDEX t1_idx_5cb97285
+ SCAN TABLE t1 USING COVERING INDEX t1_idx_5cb97285
}
@@ -197,7 +197,7 @@
SELECT * FROM "t t" WHERE a=?
} {
CREATE INDEX 't t_idx_00000061' ON 't t'(a);
- SEARCH t t USING INDEX t t_idx_00000061 (a=?)
+ SEARCH TABLE t t USING INDEX t t_idx_00000061 (a=?)
}
do_setup_rec_test $tn.9.2 {
@@ -206,7 +206,7 @@
SELECT * FROM "t t" WHERE b BETWEEN ? AND ?
} {
CREATE INDEX 't t_idx_00000062' ON 't t'(b);
- SEARCH t t USING INDEX t t_idx_00000062 (b>? AND b)
+ SEARCH TABLE t t USING INDEX t t_idx_00000062 (b>? AND b)
}
# Columns with names that require quotes.
@@ -217,7 +217,7 @@
SELECT * FROM t3 WHERE "b b" = ?
} {
CREATE INDEX t3_idx_00050c52 ON t3('b b');
- SEARCH t3 USING INDEX t3_idx_00050c52 (b b=?)
+ SEARCH TABLE t3 USING INDEX t3_idx_00050c52 (b b=?)
}
do_setup_rec_test $tn.10.2 {
@@ -226,7 +226,7 @@
SELECT * FROM t3 ORDER BY "b b"
} {
CREATE INDEX t3_idx_00050c52 ON t3('b b');
- SCAN t3 USING INDEX t3_idx_00050c52
+ SCAN TABLE t3 USING INDEX t3_idx_00050c52
}
# Transitive constraints
@@ -239,8 +239,8 @@
} {
CREATE INDEX t5_idx_000123a7 ON t5(a, b);
CREATE INDEX t6_idx_00000063 ON t6(c);
- SEARCH t6 USING INDEX t6_idx_00000063 (c=?)
- SEARCH t5 USING COVERING INDEX t5_idx_000123a7 (a=? AND b=?)
+ SEARCH TABLE t6 USING INDEX t6_idx_00000063 (c=?)
+ SEARCH TABLE t5 USING COVERING INDEX t5_idx_000123a7 (a=? AND b=?)
}
# OR terms.
@@ -254,9 +254,9 @@
CREATE INDEX t7_idx_00000061 ON t7(a);
MULTI-INDEX OR
INDEX 1
- SEARCH t7 USING INDEX t7_idx_00000061 (a=?)
+ SEARCH TABLE t7 USING INDEX t7_idx_00000061 (a=?)
INDEX 2
- SEARCH t7 USING INDEX t7_idx_00000062 (b=?)
+ SEARCH TABLE t7 USING INDEX t7_idx_00000062 (b=?)
}
# rowid terms.
@@ -267,7 +267,7 @@
SELECT * FROM t8 WHERE rowid=?
} {
(no new indexes)
- SEARCH t8 USING INTEGER PRIMARY KEY (rowid=?)
+ SEARCH TABLE t8 USING INTEGER PRIMARY KEY (rowid=?)
}
do_setup_rec_test $tn.13.2 {
CREATE TABLE t8(a, b);
@@ -275,7 +275,7 @@
SELECT * FROM t8 ORDER BY rowid
} {
(no new indexes)
- SCAN t8
+ SCAN TABLE t8
}
do_setup_rec_test $tn.13.3 {
CREATE TABLE t8(a, b);
@@ -283,7 +283,7 @@
SELECT * FROM t8 WHERE a=? ORDER BY rowid
} {
CREATE INDEX t8_idx_00000061 ON t8(a);
- SEARCH t8 USING INDEX t8_idx_00000061 (a=?)
+ SEARCH TABLE t8 USING INDEX t8_idx_00000061 (a=?)
}
# Triggers
@@ -298,7 +298,7 @@
INSERT INTO t9 VALUES(?, ?, ?);
} {
CREATE INDEX t10_idx_00000062 ON t10(b);
- SEARCH t10 USING INDEX t10_idx_00000062 (b=?)
+ SEARCH TABLE t10 USING INDEX t10_idx_00000062 (b=?)
}
do_setup_rec_test $tn.15 {
@@ -314,8 +314,8 @@
SELECT * FROM t2, t1 WHERE b=? AND d=? AND t2.rowid=t1.rowid
} {
CREATE INDEX t2_idx_00000064 ON t2(d);
- SEARCH t2 USING INDEX t2_idx_00000064 (d=?)
- SEARCH t1 USING INTEGER PRIMARY KEY (rowid=?)
+ SEARCH TABLE t2 USING INDEX t2_idx_00000064 (d=?)
+ SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
}
do_setup_rec_test $tn.16 {
@@ -324,7 +324,7 @@
SELECT * FROM t1 WHERE b IS NOT NULL;
} {
(no new indexes)
- SCAN t1
+ SCAN TABLE t1
}
do_setup_rec_test $tn.17.1 {
@@ -333,7 +333,7 @@
SELECT * FROM example WHERE a=?
} {
(no new indexes)
- SEARCH example USING INDEX sqlite_autoindex_example_1 (A=?)
+ SEARCH TABLE example USING INDEX sqlite_autoindex_example_1 (A=?)
}
do_setup_rec_test $tn.17.2 {
CREATE TABLE example (A INTEGER, B INTEGER, C INTEGER, PRIMARY KEY (A,B));
@@ -341,7 +341,7 @@
SELECT * FROM example WHERE b=?
} {
CREATE INDEX example_idx_00000042 ON example(B);
- SEARCH example USING INDEX example_idx_00000042 (B=?)
+ SEARCH TABLE example USING INDEX example_idx_00000042 (B=?)
}
do_setup_rec_test $tn.17.3 {
CREATE TABLE example (A INTEGER, B INTEGER, C INTEGER, PRIMARY KEY (A,B));
@@ -349,7 +349,7 @@
SELECT * FROM example WHERE a=? AND b=?
} {
(no new indexes)
- SEARCH example USING INDEX sqlite_autoindex_example_1 (A=? AND B=?)
+ SEARCH TABLE example USING INDEX sqlite_autoindex_example_1 (A=? AND B=?)
}
do_setup_rec_test $tn.17.4 {
CREATE TABLE example (A INTEGER, B INTEGER, C INTEGER, PRIMARY KEY (A,B));
@@ -357,7 +357,7 @@
SELECT * FROM example WHERE a=? AND b>?
} {
(no new indexes)
- SEARCH example USING INDEX sqlite_autoindex_example_1 (A=? AND B>?)
+ SEARCH TABLE example USING INDEX sqlite_autoindex_example_1 (A=? AND B>?)
}
do_setup_rec_test $tn.17.5 {
CREATE TABLE example (A INTEGER, B INTEGER, C INTEGER, PRIMARY KEY (A,B));
@@ -365,7 +365,7 @@
SELECT * FROM example WHERE a>? AND b=?
} {
CREATE INDEX example_idx_0000cb3f ON example(B, A);
- SEARCH example USING INDEX example_idx_0000cb3f (B=? AND A>?)
+ SEARCH TABLE example USING INDEX example_idx_0000cb3f (B=? AND A>?)
}
do_setup_rec_test $tn.18.0 {
@@ -377,7 +377,7 @@
SELECT x FROM SomeObject;
} {
(no new indexes)
- SCAN SomeObject
+ SCAN TABLE SomeObject
}
do_setup_rec_test $tn.18.1 {
CREATE TABLE SomeObject (
@@ -388,7 +388,7 @@
SELECT * FROM SomeObject WHERE x=?;
} {
CREATE INDEX SomeObject_idx_00000078 ON SomeObject(x);
- SEARCH SomeObject USING COVERING INDEX SomeObject_idx_00000078 (x=?)
+ SEARCH TABLE SomeObject USING COVERING INDEX SomeObject_idx_00000078 (x=?)
}
}
@@ -455,3 +455,4 @@
}
finish_test
+
diff -Nru sqlite3-3.35.0/ext/fts3/fts3.c sqlite3-3.35.0-1/ext/fts3/fts3.c
--- sqlite3-3.35.0/ext/fts3/fts3.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/fts3/fts3.c 2021-04-04 17:23:21.000000000 +0000
@@ -326,9 +326,7 @@
** assert() conditions in the fts3 code are activated - conditions that are
** only true if it is guaranteed that the fts3 database is not corrupt.
*/
-#ifdef SQLITE_DEBUG
int sqlite3_fts3_may_be_corrupt = 1;
-#endif
/*
** Write a 64-bit variable-length integer to memory starting at p[0].
diff -Nru sqlite3-3.35.0/ext/fts3/fts3Int.h sqlite3-3.35.0-1/ext/fts3/fts3Int.h
--- sqlite3-3.35.0/ext/fts3/fts3Int.h 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/fts3/fts3Int.h 2021-04-04 17:23:21.000000000 +0000
@@ -134,7 +134,7 @@
** is used for assert() conditions that are true only if it can be
** guranteed that the database is not corrupt.
*/
-#ifdef SQLITE_DEBUG
+#if defined(SQLITE_DEBUG) || defined(SQLITE_TEST)
extern int sqlite3_fts3_may_be_corrupt;
# define assert_fts3_nc(x) assert(sqlite3_fts3_may_be_corrupt || (x))
#else
diff -Nru sqlite3-3.35.0/ext/fts3/fts3_test.c sqlite3-3.35.0-1/ext/fts3/fts3_test.c
--- sqlite3-3.35.0/ext/fts3/fts3_test.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/fts3/fts3_test.c 2021-04-04 17:23:21.000000000 +0000
@@ -585,7 +585,6 @@
int objc,
Tcl_Obj *CONST objv[]
){
-#ifdef SQLITE_DEBUG
int bOld = sqlite3_fts3_may_be_corrupt;
if( objc!=2 && objc!=1 ){
@@ -599,7 +598,6 @@
}
Tcl_SetObjResult(interp, Tcl_NewIntObj(bOld));
-#endif
return TCL_OK;
}
diff -Nru sqlite3-3.35.0/ext/fts5/fts5_main.c sqlite3-3.35.0-1/ext/fts5/fts5_main.c
--- sqlite3-3.35.0/ext/fts5/fts5_main.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/fts5/fts5_main.c 2021-04-04 17:23:21.000000000 +0000
@@ -22,9 +22,7 @@
** assert() conditions in the fts5 code are activated - conditions that are
** only true if it is guaranteed that the fts5 database is not corrupt.
*/
-#ifdef SQLITE_DEBUG
int sqlite3_fts5_may_be_corrupt = 1;
-#endif
typedef struct Fts5Auxdata Fts5Auxdata;
diff -Nru sqlite3-3.35.0/ext/fts5/fts5_tcl.c sqlite3-3.35.0-1/ext/fts5/fts5_tcl.c
--- sqlite3-3.35.0/ext/fts5/fts5_tcl.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/fts5/fts5_tcl.c 2021-04-04 17:23:21.000000000 +0000
@@ -29,9 +29,7 @@
#include
#include
-#ifdef SQLITE_DEBUG
extern int sqlite3_fts5_may_be_corrupt;
-#endif
extern int sqlite3Fts5TestRegisterMatchinfo(sqlite3*);
extern int sqlite3Fts5TestRegisterTok(sqlite3*, fts5_api*);
@@ -1013,7 +1011,6 @@
int objc,
Tcl_Obj *CONST objv[]
){
-#ifdef SQLITE_DEBUG
int bOld = sqlite3_fts5_may_be_corrupt;
if( objc!=2 && objc!=1 ){
@@ -1027,7 +1024,6 @@
}
Tcl_SetObjResult(interp, Tcl_NewIntObj(bOld));
-#endif
return TCL_OK;
}
diff -Nru sqlite3-3.35.0/ext/fts5/test/fts5plan.test sqlite3-3.35.0-1/ext/fts5/test/fts5plan.test
--- sqlite3-3.35.0/ext/fts5/test/fts5plan.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/fts5/test/fts5plan.test 2021-04-04 17:23:21.000000000 +0000
@@ -30,23 +30,23 @@
SELECT * FROM t1, f1 WHERE f1 MATCH t1.x
} {
QUERY PLAN
- |--SCAN t1
- `--SCAN f1 VIRTUAL TABLE INDEX 0:M1
+ |--SCAN TABLE t1
+ `--SCAN TABLE f1 VIRTUAL TABLE INDEX 0:M1
}
do_eqp_test 1.2 {
SELECT * FROM t1, f1 WHERE f1 > t1.x
} {
QUERY PLAN
- |--SCAN f1 VIRTUAL TABLE INDEX 0:
- `--SCAN t1
+ |--SCAN TABLE f1 VIRTUAL TABLE INDEX 0:
+ `--SCAN TABLE t1
}
do_eqp_test 1.3 {
SELECT * FROM f1 WHERE f1 MATCH ? ORDER BY ff
} {
QUERY PLAN
- |--SCAN f1 VIRTUAL TABLE INDEX 0:M1
+ |--SCAN TABLE f1 VIRTUAL TABLE INDEX 0:M1
`--USE TEMP B-TREE FOR ORDER BY
}
@@ -54,12 +54,12 @@
SELECT * FROM f1 ORDER BY rank
} {
QUERY PLAN
- |--SCAN f1 VIRTUAL TABLE INDEX 0:
+ |--SCAN TABLE f1 VIRTUAL TABLE INDEX 0:
`--USE TEMP B-TREE FOR ORDER BY
}
do_eqp_test 1.5 {
SELECT * FROM f1 WHERE rank MATCH ?
-} {SCAN f1 VIRTUAL TABLE INDEX 0:r}
+} {SCAN TABLE f1 VIRTUAL TABLE INDEX 0:r}
finish_test
diff -Nru sqlite3-3.35.0/ext/fts5/test/fts5trigram.test sqlite3-3.35.0-1/ext/fts5/test/fts5trigram.test
--- sqlite3-3.35.0/ext/fts5/test/fts5trigram.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/fts5/test/fts5trigram.test 2021-04-04 17:23:21.000000000 +0000
@@ -192,9 +192,10 @@
} {VIRTUAL TABLE INDEX 0:G0}
do_eqp_test 6.3 {
SELECT * FROM ci1 WHERE x LIKE ?
-} {{SCAN ci1 VIRTUAL TABLE INDEX 0:}}
+} {{SCAN TABLE ci1 VIRTUAL TABLE INDEX 0:}}
do_eqp_test 6.4 {
SELECT * FROM ci1 WHERE x GLOB ?
} {VIRTUAL TABLE INDEX 0:G0}
finish_test
+
diff -Nru sqlite3-3.35.0/ext/rtree/geopoly.c sqlite3-3.35.0-1/ext/rtree/geopoly.c
--- sqlite3-3.35.0/ext/rtree/geopoly.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/rtree/geopoly.c 2021-04-04 17:23:21.000000000 +0000
@@ -683,7 +683,7 @@
aCoord[2].f = mnY;
aCoord[3].f = mxY;
}
- }else if( aCoord ){
+ }else{
memset(aCoord, 0, sizeof(RtreeCoord)*4);
}
return pOut;
diff -Nru sqlite3-3.35.0/ext/rtree/rtree6.test sqlite3-3.35.0-1/ext/rtree/rtree6.test
--- sqlite3-3.35.0/ext/rtree/rtree6.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/ext/rtree/rtree6.test 2021-04-04 17:23:21.000000000 +0000
@@ -79,47 +79,47 @@
SELECT * FROM t1,t2 WHERE k=+ii AND x1<10
} {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 2:C0
- `--SEARCH t2 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0
+ `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
}
do_eqp_test rtree6.2.2 {
SELECT * FROM t1,t2 WHERE k=ii AND x1<10
} {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 2:C0
- `--SEARCH t2 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0
+ `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
}
do_eqp_test rtree6.2.3 {
SELECT * FROM t1,t2 WHERE k=ii
} {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 2:
- `--SEARCH t2 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:
+ `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
}
do_eqp_test rtree6.2.4.1 {
SELECT * FROM t1,t2 WHERE v=+ii and x1<10 and x2>10
} {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 2:C0E1
- `--SEARCH t2 USING AUTOMATIC COVERING INDEX (v=?)
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0E1
+ `--SEARCH TABLE t2 USING AUTOMATIC COVERING INDEX (v=?)
}
do_eqp_test rtree6.2.4.2 {
SELECT * FROM t1,t2 WHERE v=10 and x1<10 and x2>10
} {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 2:C0E1
- `--SEARCH t2 USING AUTOMATIC PARTIAL COVERING INDEX (v=?)
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 2:C0E1
+ `--SEARCH TABLE t2 USING AUTOMATIC PARTIAL COVERING INDEX (v=?)
}
do_eqp_test rtree6.2.5 {
SELECT * FROM t1,t2 WHERE k=ii AND x1=min_x AND t.x<=max_x AND t.y>=min_y AND t.x<=max_y
} {
QUERY PLAN
- |--SCAN t
- `--SCAN r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
+ |--SCAN TABLE t
+ `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
}
do_eqp_test 1.2 {
@@ -39,8 +39,8 @@
WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND t.x<=max_y
} {
QUERY PLAN
- |--SCAN t
- `--SCAN r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
+ |--SCAN TABLE t
+ `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
}
do_eqp_test 1.3 {
@@ -48,16 +48,16 @@
WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND ?<=max_y
} {
QUERY PLAN
- |--SCAN t
- `--SCAN r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
+ |--SCAN TABLE t
+ `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
}
do_eqp_test 1.5 {
SELECT * FROM t, r_tree
} {
QUERY PLAN
- |--SCAN r_tree VIRTUAL TABLE INDEX 2:
- `--SCAN t
+ |--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:
+ `--SCAN TABLE t
}
do_execsql_test 2.0 {
@@ -87,8 +87,8 @@
WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND t.x<=max_y
} {
QUERY PLAN
- |--SCAN t
- `--SCAN r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
+ |--SCAN TABLE t
+ `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
}
do_eqp_test 2.2 {
@@ -96,8 +96,8 @@
WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND t.x<=max_y
} {
QUERY PLAN
- |--SCAN t
- `--SCAN r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
+ |--SCAN TABLE t
+ `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
}
do_eqp_test 2.3 {
@@ -105,16 +105,16 @@
WHERE t.x>=min_x AND t.x<=max_x AND t.y>=min_y AND ?<=max_y
} {
QUERY PLAN
- |--SCAN t
- `--SCAN r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
+ |--SCAN TABLE t
+ `--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:D3B2D1B0
}
do_eqp_test 2.5 {
SELECT * FROM t, r_tree
} {
QUERY PLAN
- |--SCAN r_tree VIRTUAL TABLE INDEX 2:
- `--SCAN t
+ |--SCAN TABLE r_tree VIRTUAL TABLE INDEX 2:
+ `--SCAN TABLE t
}
#-------------------------------------------------------------------------
@@ -128,24 +128,24 @@
do_eqp_test 3.2.1 { SELECT * FROM t1 CROSS JOIN t2 } {
QUERY PLAN
- |--SCAN t1
- `--SCAN t2
+ |--SCAN TABLE t1
+ `--SCAN TABLE t2
}
do_eqp_test 3.2.2 { SELECT * FROM t2 CROSS JOIN t1 } {
QUERY PLAN
- |--SCAN t2
- `--SCAN t1
+ |--SCAN TABLE t2
+ `--SCAN TABLE t1
}
do_eqp_test 3.3.1 { SELECT * FROM t1 CROSS JOIN t3 } {
QUERY PLAN
- |--SCAN t1
- `--SCAN t3 VIRTUAL TABLE INDEX 2:
+ |--SCAN TABLE t1
+ `--SCAN TABLE t3 VIRTUAL TABLE INDEX 2:
}
do_eqp_test 3.3.2 { SELECT * FROM t3 CROSS JOIN t1 } {
QUERY PLAN
- |--SCAN t3 VIRTUAL TABLE INDEX 2:
- `--SCAN t1
+ |--SCAN TABLE t3 VIRTUAL TABLE INDEX 2:
+ `--SCAN TABLE t1
}
#--------------------------------------------------------------------
@@ -203,8 +203,8 @@
SELECT * FROM t1, rt WHERE x==id;
} {
QUERY PLAN
- |--SCAN t1
- `--SCAN rt VIRTUAL TABLE INDEX 1:
+ |--SCAN TABLE t1
+ `--SCAN TABLE rt VIRTUAL TABLE INDEX 1:
}
# Now create enough ANALYZE data to tell SQLite that virtual table "rt"
@@ -220,8 +220,8 @@
SELECT * FROM t1, rt WHERE x==id;
} {
QUERY PLAN
- |--SCAN rt VIRTUAL TABLE INDEX 2:
- `--SEARCH t1 USING INDEX sqlite_autoindex_t1_1 (x=?)
+ |--SCAN TABLE rt VIRTUAL TABLE INDEX 2:
+ `--SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (x=?)
}
# Delete the ANALYZE data. "t1" should be the outer loop again.
@@ -233,8 +233,8 @@
SELECT * FROM t1, rt WHERE x==id;
} {
QUERY PLAN
- |--SCAN t1
- `--SCAN rt VIRTUAL TABLE INDEX 1:
+ |--SCAN TABLE t1
+ `--SCAN TABLE rt VIRTUAL TABLE INDEX 1:
}
# This time create and attach a database that contains ANALYZE data for
@@ -258,8 +258,8 @@
SELECT * FROM t1, rt WHERE x==id;
} {
QUERY PLAN
- |--SCAN t1
- `--SCAN rt VIRTUAL TABLE INDEX 1:
+ |--SCAN TABLE t1
+ `--SCAN TABLE rt VIRTUAL TABLE INDEX 1:
}
#--------------------------------------------------------------------
@@ -327,9 +327,9 @@
WHERE (x1 BETWEEN xmin AND xmax);
} {
QUERY PLAN
- |--SCAN xdir
- |--SCAN ydir
- `--SCAN rt VIRTUAL TABLE INDEX 2:B2D3B0D1
+ |--SCAN TABLE xdir
+ |--SCAN TABLE ydir
+ `--SCAN TABLE rt VIRTUAL TABLE INDEX 2:B2D3B0D1
} {
2 4
}
@@ -340,9 +340,9 @@
WHERE (x1 BETWEEN xmin AND xmax);
} {
QUERY PLAN
- |--SCAN xdir
- |--SCAN rt VIRTUAL TABLE INDEX 2:B0D1
- `--SCAN ydir
+ |--SCAN TABLE xdir
+ |--SCAN TABLE rt VIRTUAL TABLE INDEX 2:B0D1
+ `--SCAN TABLE ydir
} {
5 1 2 7 12 14 {}
5 2 2 7 8 12 10
@@ -355,9 +355,9 @@
WHERE (x1 BETWEEN xmin AND xmax);
} {
QUERY PLAN
- |--SCAN xdir
- |--SCAN rt VIRTUAL TABLE INDEX 2:B0D1
- `--SCAN ydir
+ |--SCAN TABLE xdir
+ |--SCAN TABLE rt VIRTUAL TABLE INDEX 2:B0D1
+ `--SCAN TABLE ydir
} {
2 4
}
@@ -368,9 +368,9 @@
WHERE (x1 BETWEEN xmin AND xmax);
} {
QUERY PLAN
- |--SCAN xdir
- |--SCAN rt VIRTUAL TABLE INDEX 2:B0D1
- `--SCAN ydir
+ |--SCAN TABLE xdir
+ |--SCAN TABLE rt VIRTUAL TABLE INDEX 2:B0D1
+ `--SCAN TABLE ydir
} {
2 4
}
diff -Nru sqlite3-3.35.0/manifest sqlite3-3.35.0-1/manifest
--- sqlite3-3.35.0/manifest 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/manifest 2021-04-04 17:23:21.000000000 +0000
@@ -1,5 +1,5 @@
-C Correctly\scapture\sthe\serror\swhen\sa\sRETURNING\sclause\sappears\son\san\s\nattempt\sto\sUPDATE\san\seponymous\svirtual\stable.\ndbsqlfuzz\s486f791cbe2dc45839310073e71367a1d8ad22dd.
-D 2021-04-02T20:43:26.666
+C Version\s3.35.4
+D 2021-04-02T15:20:15.843
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -7,7 +7,7 @@
F Makefile.linux-gcc f609543700659711fbd230eced1f01353117621dccae7b9fb70daa64236c5241
F Makefile.msc 6b5428cef2af1288e02faeb602dabe68fbf2de7bc8a8e29c7299778ee08cd35c
F README.md 1514a365ffca3c138e00c5cc839906108a01011a6b082bad19b09781e3aa498a
-F VERSION 8c392f6d70d82e513a0eac622bdf23c43df3e084cb630288beba8cef3012c812
+F VERSION ecb003bb32c9abbcabbfb2f4fc1e5f0011eb407ad28b041d1c7ae68f0739da3d
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
@@ -34,11 +34,11 @@
F config.guess 883205ddf25b46f10c181818bf42c09da9888884af96f79e1719264345053bd6
F config.h.in 6376abec766e9a0785178b1823b5a587e9f1ccbc
F config.sub c2d0260f17f3e4bc0b6808fccf1b291cb5e9126c14fc5890efc77b9fd0175559
-F configure c658869fc056a2460a2212fb2960e410cd24e3fb9c55640fbc78d15b48810936 x
+F configure 1ef01982e256c82a74885886ef5cc05e3d1d85a50d3b93941903dcf3f93cae56 x
F configure.ac 4e4b58b32f88c8da9914a2f2c3158f80e69907eccc019fcc7e3ba14ffd91c640
F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad
F doc/F2FS.txt c1d4a0ae9711cfe0e1d8b019d154f1c29e0d3abfe820787ba1e9ed7691160fcd
-F doc/lemon.html efc0cd2345d66905505d98f862e1c571512def0ceb5b016cb658fd4918eb76a3
+F doc/lemon.html 1bb72ece6271df0d901d233551dd985f2c6ba30d09382cf2d321ed951ab57491
F doc/pager-invariants.txt 27fed9a70ddad2088750c4a2b493b63853da2710
F doc/trusted-schema.md 33625008620e879c7bcfbbfa079587612c434fa094d338b08242288d358c3e8a
F doc/vdbesort-memory.md 4da2639c14cd24a31e0af694b1a8dd37eaf277aff3867e9a8cc14046bc49df56
@@ -50,7 +50,7 @@
F ext/async/sqlite3async.h 46b47c79357b97ad85d20d2795942c0020dc20c532114a49808287f04aa5309a
F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3
F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4
-F ext/expert/expert1.test 6703fd74711daf8230240680b0a348d0720e28819b602701adfbd32457fdcddd
+F ext/expert/expert1.test 63d778d964e55ef2d1a723043d91c59e7dc6ef1649d91c78c0bef00f9c6f1427
F ext/expert/sqlite3expert.c de51b187c629a4c4264d5de0b77862641e11426f7a963a92abf2d4077085fc8c
F ext/expert/sqlite3expert.h ca81efc2679a92373a13a3e76a6138d0310e32be53d6c3bfaedabd158ea8969b
F ext/expert/test_expert.c d56c194b769bdc90cf829a14c9ecbc1edca9c850b837a4d0b13be14095c32a72
@@ -84,9 +84,9 @@
F ext/fts3/README.syntax a19711dc5458c20734b8e485e75fb1981ec2427a
F ext/fts3/README.tokenizers b92bdeb8b46503f0dd301d364efc5ef59ef9fa8e2758b8e742f39fa93a2e422d
F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
-F ext/fts3/fts3.c d91986eb52b0a640f7e5e545deabab708db53e886750a4e994e919784a1bcd86
+F ext/fts3/fts3.c 7b449348226a91cc851fe969f5c1932d4f00c359a32fd17f2afea92bf875147b
F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
-F ext/fts3/fts3Int.h bde280294d56ff50ee29d03e5140f0b6953b44d1c969bb5831e8ae85e3e76715
+F ext/fts3/fts3Int.h 045179f538c478ced266ca14327269cde8ad8d573c5be902230a5ebaa5636c59
F ext/fts3/fts3_aux.c 96708c8b3a7d9b8ca1b68ea2b7e503e283f20e95f145becadedfad096dbd0f34
F ext/fts3/fts3_expr.c 5853cd7a35a79d193614add9b4c461b2d56f465d90899ca4309f05d9d1536558
F ext/fts3/fts3_hash.c 8b6e31bfb0844c27dc6092c2620bdb1fca17ed613072db057d96952c6bdb48b7
@@ -95,7 +95,7 @@
F ext/fts3/fts3_porter.c 3565faf04b626cddf85f03825e86056a4562c009
F ext/fts3/fts3_snippet.c 86e7e947a176f0f005720b3ca17631aca2fd2f9daa6729d4adbf2d16ab1b9613
F ext/fts3/fts3_term.c f45a1e7c6ef464abb1231245d123dae12266b69e05cc56e14045b76591ae92d1
-F ext/fts3/fts3_test.c d8d7b2734f894e8a489987447658e374cdd3a3bc8575c401decf1911cb7c6454
+F ext/fts3/fts3_test.c 73b16e229e517c1b1f0fb8e1046182a4e5dbc8dbe6eea8a5d4353fcce7dbbf39
F ext/fts3/fts3_tokenize_vtab.c 8d15b148e7d88a4280389a200b26e8d52abda4c4ec2e9a35e9d7a1fa50e5aa03
F ext/fts3/fts3_tokenizer.c 6d8fc150c48238955d5182bf661498db0dd473c8a2a80e00c16994a646fa96e7
F ext/fts3/fts3_tokenizer.h 64c6ef6c5272c51ebe60fc607a896e84288fcbc3
@@ -120,9 +120,9 @@
F ext/fts5/fts5_expr.c 016bd06030679bd31b0f07ef87d62c42031e5da25cb3174a84e5b0f6ef4b47b0
F ext/fts5/fts5_hash.c 1aa93c9b5f461afba66701ee226297dc78402b3bdde81e90a10de5fe3df14959
F ext/fts5/fts5_index.c df5e18b705ac601e826576298a5ce23ef1e5d417fbfdb3feb5f702f89e5f6f41
-F ext/fts5/fts5_main.c f497ca97cb2802311ec93733b595762dc5b044ce3c6c8ce5fb3e871dd3fccd5d
+F ext/fts5/fts5_main.c d77648a52b8d73d13887306149912e420f7e0b2d7b3d7da2f54152bfa140ac02
F ext/fts5/fts5_storage.c 58ba71e6cd3d43a5735815e7956ee167babb4d2cbfe206905174792af4d09d75
-F ext/fts5/fts5_tcl.c b1445cbe69908c411df8084a10b2485500ac70a9c747cdc8cda175a3da59d8ae
+F ext/fts5/fts5_tcl.c 39bcbae507f594aad778172fa914cad0f585bf92fd3b078c686e249282db0d95
F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee
F ext/fts5/fts5_test_tok.c a2bed8edb25f6432e8cdb62aad5916935c19dba8dac2b8324950cfff397e25ff
F ext/fts5/fts5_tokenize.c 5e251efb0f1af99a25ed50010ba6b1ad1250aca5921af1988fdcabe5ebc3cb43
@@ -200,7 +200,7 @@
F ext/fts5/test/fts5onepass.test f9b7d9b2c334900c6542a869760290e2ab5382af8fbd618834bf1fcc3e7b84da
F ext/fts5/test/fts5optimize.test 36a752d24c818792032e4ff502936fc9cc5ef938721696396fdc79214b2717f1
F ext/fts5/test/fts5phrase.test 13e5d8e9083077b3d9c74315b3c92ec723cc6eb37c8155e0bfe1bba00559f07b
-F ext/fts5/test/fts5plan.test b65cfcca9ddd6fdaa118c61e17aeec8e8433bc5b6bb307abd116514f79c49c5a
+F ext/fts5/test/fts5plan.test 79d35b5e83bbdcba48d946a7f008df161f6b0ede1a966892d0aa6c8dd0b6e773
F ext/fts5/test/fts5porter.test 8d08010c28527db66bc3feebd2b8767504aaeb9b101a986342fa7833d49d0d15
F ext/fts5/test/fts5porter2.test 0d251a673f02fa13ca7f011654873b3add20745f7402f108600a23e52d8c7457
F ext/fts5/test/fts5prefix.test a0fa67b06650f2deaa7bf27745899d94e0fb547ad9ecbd08bfad98c04912c056
@@ -219,7 +219,7 @@
F ext/fts5/test/fts5tok1.test 1f7817499f5971450d8c4a652114b3d833393c8134e32422d0af27884ffe9cef
F ext/fts5/test/fts5tok2.test dcacb32d4a2a3f0dd3215d4a3987f78ae4be21a2
F ext/fts5/test/fts5tokenizer.test ac3c9112b263a639fb0508ae73a3ee886bf4866d2153771a8e8a20c721305a43
-F ext/fts5/test/fts5trigram.test 5b4feb53a4d5aca70c841f6919c8719b5a9c805474727dda99285fccdd2e9cce
+F ext/fts5/test/fts5trigram.test e2ce256fd0ccd6707e740aa3596206aedb0d5834b100c0cb49e344dcd1d8463c
F ext/fts5/test/fts5umlaut.test a42fe2fe6387c40c49ab27ccbd070e1ae38e07f38d05926482cc0bccac9ad602
F ext/fts5/test/fts5unicode.test 17056f4efe6b0a5d4f41fdf7a7dc9af2873004562eaa899d40633b93dc95f5a9
F ext/fts5/test/fts5unicode2.test 9b3df486de05fb4bde4aa7ee8de2e6dae1df6eb90e3f2e242c9383b95d314e3e
@@ -392,7 +392,7 @@
F ext/repair/test/checkindex01.test b530f141413b587c9eb78ff734de6bb79bc3515c335096108c12c01bddbadcec
F ext/repair/test/test.tcl 686d76d888dffd021f64260abf29a55c57b2cedfa7fc69150b42b1d6119aac3c
F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
-F ext/rtree/geopoly.c d35b73dddcbc6f3f81879f95875770b553a1021216fa4a04f77b9c49bce21a46
+F ext/rtree/geopoly.c 1b1ddecb79877b12331d35de9f393b80bbb731e0bf6db6c572f23191987ea803
F ext/rtree/rtree.c 60f6f1675134201974be4189dbd219494c13e1ed30e80bd92ae0dcc86df1b035
F ext/rtree/rtree.h 4a690463901cb5e6127cf05eb8e642f127012fd5003830dbc974eca5802d9412
F ext/rtree/rtree1.test 00792b030a4e188ff1b22e8530e8aa0452bb5dd81c2b18cb004afc7dc63e040e
@@ -400,13 +400,13 @@
F ext/rtree/rtree3.test 4ee5d7df86040efe3d8d84f141f2962a7745452200a7cba1db06f86d97050499
F ext/rtree/rtree4.test 304de65d484540111b896827e4261815e5dca4ce28eeecd58be648cd73452c4b
F ext/rtree/rtree5.test 49c9041d713d54560b315c2c7ef7207ee287eba1b20f8266968a06f2e55d3142
-F ext/rtree/rtree6.test 9ce3691c1aac43070a9f194f0ebf54372db346c5a82241fd11b525ed53ce9f3f
+F ext/rtree/rtree6.test 1252a0439da01d2f1f5cbbdeeb80455a2d68b9bae2a9787937b167a5e3957828
F ext/rtree/rtree7.test c8fb2e555b128dd0f0bdb520c61380014f497f8a23c40f2e820acc9f9e4fdce5
F ext/rtree/rtree8.test 2d99006a1386663978c9e1df167554671e4f711c419175b39f332719deb1ce0e
F ext/rtree/rtree9.test c646f12c8c1c68ef015c6c043d86a0c42488e2e68ed1bb1b0771a7ca246cbabf
F ext/rtree/rtreeA.test ed2f1be9c06dde0b1ab93a95dd9e87eeaa02db2d30bcb4b9179b69ee3dc3319b
F ext/rtree/rtreeB.test 4cec297f8e5c588654bbf3c6ed0903f10612be8a2878055dd25faf8c71758bc9
-F ext/rtree/rtreeC.test c4bfa9a61c6788c03e4a9ce40ab2cfc6100982559effd9842d1b658e1d47aa5f
+F ext/rtree/rtreeC.test 6aa87eba4d9a3003b941a1ba77db259c5cabc3fd92fc5a6360f5369520eb9a4d
F ext/rtree/rtreeD.test fe46aa7f012e137bd58294409b16c0d43976c3bb92c8f710481e577c4a1100dc
F ext/rtree/rtreeE.test e65d3fc625da1800b412fc8785817327d43ccfec5f5973912d8c9e471928caa9
F ext/rtree/rtreeF.test 81ffa7ef51c4e4618d497a57328c265bf576990c7070633b623b23cd450ed331
@@ -476,7 +476,7 @@
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
-F src/alter.c ee335771956c1b674ec5f3f943cf7179f877accf208c498271c72b4ea8d16409
+F src/alter.c 2d631213818b654faaf08755f26e934134c4769757ae9286981401cd6b571081
F src/analyze.c 01c6c6765cb4d40b473b71d85535093730770bb186f2f473abac25f07fcdee5c
F src/attach.c 9cbe761e464025694df8e6f6ee4d9f41432c3a255ca9443ccbb4130eeb87cf72
F src/auth.c 08954fdc4cc2da5264ba5b75cfd90b67a6fc7d1710a02ccf917c38eadec77853
@@ -486,7 +486,7 @@
F src/btree.c cfd2a37794532d765e235a2550ad2732924a6d06b07a3bc9f6a71750e3b3cca1
F src/btree.h 096cc53baa58be22b02c896d1cf933c38cfc6d65f9253c1367ece8cc88a24de5
F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
-F src/build.c 06089aaf769ec1e91d1ba607442aa32c22aeb97200d47fe405ceb373adbdf2d7
+F src/build.c 066c44421bf7b73c6fa47f6fb0c0fcf1357c10552bcf8f3f94c6ebede581cd01
F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
F src/ctime.c 2a322b9a3d75771fb4d99e0702851f4f68dda982507a0f798eefb0712969a410
@@ -494,16 +494,16 @@
F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
F src/dbstat.c 3aa79fc3aed7ce906e4ea6c10e85d657299e304f6049861fe300053ac57de36c
F src/delete.c 73f57a9a183532c344a3135cf8f2a5589376e39183e0b5f562d6b61b2af0f4d8
-F src/expr.c 1bf346b7efbe37f62aab7079fdc9ee1aa13e9bea29dbb161f9e7036db9df24e2
+F src/expr.c cfab1113f9eba24f1d6d11b710577c9fcc9cc8e29ed60bd7ac7906be7481dda4
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c e9063648396c58778f77583a678342fe4a9bc82436bf23c5f9f444f2df0fdaa4
F src/func.c 479f6929be027eb0210cbdde9d3529c012facf082d64a6b854a9415940761e5e
-F src/global.c 56d6762a3a44495ab035e2d3185eeccbc98579e18c06038e1bb9af346105bc84
+F src/global.c ed55af196a9b66e198aaeda3f5454c3aa7d7d050c6c938181fd044b70d180a81
F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19
F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144
F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
-F src/insert.c f8d462ab6174a2c30476b5a1fc77f4d66ce7d9dd45c994966b9f4445db1131f0
+F src/insert.c e36be69e3810902eaf7e171260c885bc9547b1d41616c868f1cc46e6a0a3b7fd
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
F src/loadext.c 8c9c8cd2bd8eecdb06d9b6e89de7e9e65bae45cc8fc33609cc74023a5c296067
F src/main.c 2a7ece3a67c646e5fe9984ffe0277d6a76f80ce9715bf2faa591d8cb66b9d913
@@ -526,7 +526,7 @@
F src/os.h 48388821692e87da174ea198bf96b1b2d9d83be5dfc908f673ee21fafbe0d432
F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
-F src/os_unix.c b5b7475bd1a8f1b83b6173a81f4fe50f9e077ccbacb62ce2fe7a5cb89916bce1
+F src/os_unix.c 7a9eab7b11f552ab91ead980086b312c7e3b871efdee8c0c072b682bbec6592e
F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
F src/pager.c 970691daea03f9f15e34de671bd8675c1e136232b529e21bfd36d4dba6d41753
@@ -538,21 +538,21 @@
F src/pragma.c eb42cb9bec189cf18cef5d8fcae56e13bb73ef2b019b198fb48740ced81bce95
F src/pragma.h 8dc78ab7e9ec6ce3ded8332810a2066f1ef6267e2e03cd7356ee00276125c6cf
F src/prepare.c e21b54489b5c73b06ada15e6fc79b5c6f64b06701924a6ca98944ae59e06256f
-F src/printf.c 78fabb49b9ac9a12dd1c89d744abdc9b67fd3205e62967e158f78b965a29ec4b
+F src/printf.c 2b03a80d7c11bb422115dca175a18bf430e9c9dbaa0eee63b758f0c022f8f34f
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
-F src/resolve.c fc136d935f19966747663bed605ad7f06f84f9fe7bf7bf79e9bf844ef5c7556d
+F src/resolve.c fec151c9c33a6fa2e93d10b4e8cd4084a7c773df36fb3ec6788eb89ae493a1a4
F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
-F src/select.c 2d7a1f3d9f5970962b407cb4b38416fedc1a3b55efd010b40af375088653b6ce
-F src/shell.c.in dcce260883836c9b58847505fbccce8d5546af925046f7dacd9443e922ece036
-F src/sqlite.h.in 18ec33e32001721fd4e9c4705a24a85dff04956ac2c0a21775058884ba845b09
+F src/select.c 734cf12e42f81f2fe461e41214e6552375e55b62a802784a4f0066ac592e7f4a
+F src/shell.c.in aa28256887d049badaf93aa30ab5c76a2ec88143a674d685c0e739056702e5c3
+F src/sqlite.h.in 3426a080ea1f222a73e3bd91e7eacbd30570a0117c03d42c6dde606f33e5e318
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e
-F src/sqliteInt.h c5cfae5891a6e643116f66f63769bcffeba89ca51f6278732da710eb0cf092b6
+F src/sqliteInt.h e56aa05ef78513cd596c30a56fda68cd9bba91d444ac40e135e919fed40cd875
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
F src/tclsqlite.c 986b6391f02cd9b53c1d688be55899f6ffddeb8e8014cd83c1b73ff912579a71
-F src/test1.c 2100f4c28bae21ce83a9a0c5ec6827efd0e15d11b93b569b614daa5654b3fcf6
+F src/test1.c cff43d8e21be543b77651b4d2caf49bd6488fee220f8540ecd9f71d13169dbd1
F src/test2.c 3efb99ab7f1fc8d154933e02ae1378bac9637da5
F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644
F src/test4.c 7c4420e01c577b5c4add2cb03119743b1a357543d347773b9e717195ea967159
@@ -607,18 +607,18 @@
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
F src/tokenize.c 0b9c82fa628b5adce93e2bcaf935a24d43eb83344fb51551f7835526d0693fc4
-F src/treeview.c 70f57a2b77e20b354724ea69b8ed1ea1df946c48296d695320c741c7d174be90
-F src/trigger.c 28f439bb454a46ba191817c8c5b6468f7ef236233b14155fd3b10c12bc6f868e
+F src/treeview.c c6260e1fa5f41c361b2409edc9b0050bcaef5bc4d6abc467fbc45f0d7ccf3d84
+F src/trigger.c bce0908f714a5b89360c01e444521a648997425e2a91ff9b92b899cf8d53c20b
F src/update.c 0f5a61f0787199983530a33f6fffe4f52742f35fcdf6ccfad1078b1a8bc17723
F src/upsert.c df8f1727d62b5987c4fd302cd4d7c0c84ae57cd65683c5a34a740dfe24039235
F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
F src/util.c 41c7a72da1df47864faa378a1c720b38adb288c6838cb6be5594511b6287a048
F src/vacuum.c 492422c1463c076473bae1858799c7a0a5fe87a133d1223239447c422cd26286
-F src/vdbe.c c2990a6f877a15b2fd7cc8cb624033699a4a602740f5b9f576762861cc86d3ce
+F src/vdbe.c 5001a0d3003d3664615dd7ac3cedab1d51e2391b5bdd0878f40a41fdcd942e13
F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
F src/vdbeInt.h 000d9ab1ea4cb55a80de15e28f3f595645b4fddef34bca4347fb3db8031d9041
F src/vdbeapi.c 4a43e303ec3354c785f453e881521969378e85628278ab74ba4a9df790c0d93b
-F src/vdbeaux.c 1ffaf15d48b1678dfd403c02ee60061c10a5dd447051860e793cd3393ab019fe
+F src/vdbeaux.c 1b3eaa3a70d9d1877266e8ade0d0c3b2b4c6cf77d393d94dbcbd522b9bfefc15
F src/vdbeblob.c 253ed82894924c362a7fa3079551d3554cd1cdace39aa833da77d3bc67e7c1b1
F src/vdbemem.c 947f2a65910edb4014dc981d33e414a68c51f169f9df8c4c493a0ba840b6eb1f
F src/vdbesort.c f5b5e473a7cee44e47a94817b042fd7172cf3aa2c0a7928a8339d612bcfdec5a
@@ -629,9 +629,9 @@
F src/wal.c 69e770e96fd56cc21608992bf2c6f1f3dc5cf2572d0495c6a643b06c3a679f14
F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
F src/walker.c d42d6c80ea363ef689a462e65eefcfe87deab924c50de5baa37ecb6af7d7ddaa
-F src/where.c 07d1232df6fc4705815b0ef5182fe3e56bdba6ac09ce52bd66ecb207626aac2b
+F src/where.c 10d06b16670a1d2a992d52a9f08e49426d38a08fb0a7ae5f7f62fd023d560e1e
F src/whereInt.h 446e5e8018f83358ef917cf32d8e6a86dc8430113d0b17e720f1839d3faa44c4
-F src/wherecode.c c7354c9749f015f37bc32e15a4257a5155fa5d2b79f605f528bd09f3b9f1b4e6
+F src/wherecode.c e57a8690311a75d06e723e8d379f9831de04aba300e07174d236e32a7f9c7a13
F src/whereexpr.c 4ba94b8ebbff97c658b212de6ccdb6d3a41847800bdf99e7a2a967c250269f2c
F src/window.c 32b03808aff2e7263889cce0cbcb2a68efefc2a9d5187514ddb6a2a1046dc7f5
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
@@ -646,33 +646,32 @@
F test/alter3.test e487958dec7932453e0b83baf21d6b1e71d5e7d9a55bc20eadfa62a51ddffc29
F test/alter4.test dfd6086faf461b27ca2d2999848dcd207edf23352fc1592d0005c0844f3f08cf
F test/alterauth.test 63442ba61ceb0c1eeb63aac1f4f5cebfa509d352276059d27106ae256bafc959
-F test/alterauth2.test 381b1ab603c9ef96314a3158528ea17f7964449385a28eeaf8191120b2e24a8d
-F test/altercol.test b11fa1b131e80ab5b6ecfb3b725fb0419c14ca6efba5adb57aeabfc9baa0c8f3
+F test/alterauth2.test 794ac5cef251819fe364b4fe20f12f86e9c5d68070513c7fd26c17cb244c89af
+F test/altercol.test 3456f7cc4196ef8f7d82d245d6e91940eb12bc95c36c91ac4b512f6b5c9a4fa9
F test/altercorrupt.test 584d707a80e106952d6382790c8919bcf9f0db678ed3a1c09fd98b7f9d1d3a10
F test/alterdropcol.test 596623cb8a72d9570bfb8417b0f302810efe007873796f03c17a9e9ff28dade1
F test/alterdropcol2.test 527fce683b200d620f560f666c44ae33e22728e990a10a48a543280dfd4b4d41
F test/alterlegacy.test f38c6d06cda39e1f7b955bbce57f2e3ef5b7cb566d3d1234502093e228c15811
F test/altermalloc.test 167a47de41b5c638f5f5c6efb59784002b196fff70f98d9b4ed3cd74a3fb80c9
F test/altermalloc2.test fa7b1c1139ea39b8dec407cf1feb032ca8e0076bd429574969b619175ad0174b
-F test/altermalloc3.test 059841a3de6b6780efd9f0b30bf1d9b4443c555f68d39975cbcac2583167b239
-F test/alterqf.test 67568ad152db8c1187b15633b801242cf960f1beafc51261a3d1725d910baeb2
-F test/altertab.test d15362de3d487368e1f64d600fdfc1976033aecf8394c0a88454a5c63b357209
+F test/altermalloc3.test 2c7bbd8cf3e9c4a91e28675bb62bcc2ef70f227967fa74349f03d9f4642f0615
+F test/altertab.test 7691872aadfe00a94b459af9086504bcf399dd936336e486da1b182930744b77
F test/altertab2.test b0d62f323ca5dab42b0bc028c52e310ebdd13e655e8fac070fe622bad7852c2b
F test/altertab3.test 2b82fa2236a3a91553d53ae5555d8e723c7eec174c41f1fa62ff497355398479
F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
F test/analyze.test 547bb700f903107b38611b014ca645d6b5bb819f5210d7bf39c40802aafeb7d7
-F test/analyze3.test 4440c4932247adb2b4e0c838f657c19dc7af4f56859255436dc4e855f39b9324
-F test/analyze4.test 293ec8ea21525f3435beaf9d6b1efb29e719415f03a0cd2a70589d59098e8464
+F test/analyze3.test fca2a9de0017becfdcc201647f03b1cfd5ba0e7b5b5c852936e4ec62780cde49
+F test/analyze4.test cdf88f3f72b0f0643a1ff6c730fc5af1e42464d47478d9fbac84c333f72c014e
F test/analyze5.test fa5131952303ac4146aba101b116b9c8cb89e2637531c334a6df7f7d19dddc0d
-F test/analyze6.test 028f5bdfc9e5b5294768fa9a7185b8cd1d019aa7aab5b2f8ee42d7271d9a3b28
-F test/analyze7.test 079d17c495e396bdbd6cc6a083112788a6fbfb3b95c42e760e4270a53c9ead8f
-F test/analyze8.test 29ef237d8a59b39cc31c3310134fefe96a690b195e3deed5ecb652839089f15c
-F test/analyze9.test 162cd40d713310fbe7a63a5ecff5d3a013777d86809618838177d9b2af4dd09c
-F test/analyzeC.test 1111830ad355d29a294a5dda654dd5f6a8622c6a223a4f7b7b3d091df7a7a42b
-F test/analyzeD.test 485f621cfd2ef0a8f8ac79672586651bfa495bd899db50461bb4b558400ab3c1
-F test/analyzeE.test 69d130f9ba78c9853dcd5a18317e81f462a72d704cec0c4c30afb220213acd29
-F test/analyzeF.test 40b5cc3ad7b10e81020d7ca86f1417647ecfae7477cfd88acc5aa7ae1068f949
-F test/analyzeG.test 623be33038c49648872746c8dd8b23b5792c08fef173c55e82f1b12fca259852
+F test/analyze6.test 6c3f7df2996cb6872f355a6ac1eb6d5de00a5a9288214bad7ef25c97d9cc72dc
+F test/analyze7.test 6ef0b12369f61ddeadc7d8a705c40e6b52cb29f63de3a4c56581b510b46b5783
+F test/analyze8.test 36ce54947710bd44e4f9484e1ad07e725ef01a9d7078b417c1bc884356febe4d
+F test/analyze9.test 9fbf0e0101eef4f5dc149769aa14e10b76ee06e7c28598264b32173cd1999a54
+F test/analyzeC.test 489fe2ea3be3f17548e8dd895f1b41c9669b52de1b0861f5bffe6eec46eac710
+F test/analyzeD.test e50cd0b3e6063216cc0c88a1776e8645dc0bd65a6bb275769cbee33b7fd8d90c
+F test/analyzeE.test 8684e8ac5722fb97c251887ad97e5d496a98af1d
+F test/analyzeF.test 9e1a0537949eb5483642b1140a5c39e5b4025939024b935398471fa552f4dabb
+F test/analyzeG.test a48c0f324dd14de9a40d52abe5ca2637f682b9a791d2523dd619f6efa14e345b
F test/analyzer1.test 459fa02c445ddbf0101a3bad47b34290a35f2e49
F test/async.test 1d0e056ba1bb9729283a0f22718d3a25e82c277b
F test/async2.test c0a9bd20816d7d6a2ceca7b8c03d3d69c28ffb8b
@@ -686,18 +685,18 @@
F test/attach.test 54f8e49e88d0de48f6428267a678465863d2b8f72320612f35bd5c02e240bc2f
F test/attach2.test 256bd240da1835fb8408dd59fb7ef71f8358c7a756c46662434d11d07ba3a0ce
F test/attach3.test c59d92791070c59272e00183b7353eeb94915976
-F test/attach4.test 00e754484859998d124d144de6d114d920f2ed6ca2f961e6a7f4183c714f885e
+F test/attach4.test aa05b1d8218b24eba5a7cccf4f224f514ba57ba705c9267f09d2bb63fed0eea1
F test/attachmalloc.test 12c4f028e570acf9e0a4b0b7fe6f536e21f3d5ebddcece423603d0569beaf438
F test/auth.test 2154625c05bc79f0e0ea72cb2358395a8041243caa0fd7ce7617d50da4331794
F test/auth2.test 9eb7fce9f34bf1f50d3f366fb3e606be5a2000a1
F test/auth3.test db21405b95257c24d29273b6b31d0efc59e1d337e3d5804ba2d1fd4897b1ae49
F test/autoanalyze1.test b9cc3f32a990fa56669b668d237c6d53e983554ae80c0604992e18869a0b2dec
F test/autoinc.test 997d6f185f138229dc4251583a1d04816423dddc2fc034871a01aeb1d728cb39
-F test/autoindex1.test fe27af92eaf884bd9c38f94be3e8afa04ec494e5eefb189902026181a6175f5e
+F test/autoindex1.test 96185415f5faacd5b8d7a7f505efddd5abb1f111d58338e9c0b1dc40b87cd3cc
F test/autoindex2.test 12ef578928102baaa0dc23ad397601a2f4ecb0df
-F test/autoindex3.test 2d13958a5617e987624a428d7aed91bf51f322b49b476e3573fadec697ce6da5
+F test/autoindex3.test 2dd997d6590438b53e4f715f9278aa91c9299cf3f81246a0915269c35beb790e
F test/autoindex4.test 49d3cd791a9baa16fb461d7ea3de80d019a819cf
-F test/autoindex5.test 809c59d6bee9a5146bef0809a6a2a050f89b78f63c11db2b84a567403e7dd85a
+F test/autoindex5.test a5d72fe8c217cc0ea356dc6fa06a282a8a3fc53aa807709d79dba07a8f248102
F test/autovacuum.test 0831cd34e14695d297187f7f6519265e3121c5b0a1720e548e86829e796129e9
F test/autovacuum_ioerr2.test 8a367b224183ad801e0e24dcb7d1501f45f244b4
F test/avfs.test 0c3a38e03cccb0fc3127838462dc05dc3f4c1480d770c084b388304c25de3652
@@ -712,17 +711,17 @@
F test/badutf.test d5360fc31f643d37a973ab0d8b4fb85799c3169f
F test/badutf2.test f310fd3b24a491b6b77bccdf14923b85d6ebcce751068c180d93a6b8ff854399
F test/bc_common.tcl b5e42d80305be95697e6370e015af571e5333a1c
-F test/bestindex1.test 2e92e046148b3f8a2be62af9c0f307413547a33677af0df159c0fcc76e5134a2
-F test/bestindex2.test 60266e2854055788459cbfd86cef575601eabe74a2c61faba72601739fea4398
-F test/bestindex3.test e061a6ed0f519beee037ba7e7a4c37f80c8a7e4a303e2559ed1f760e4b0235eb
-F test/bestindex4.test 82250e7dcc6d5b15244edc9d6554b1760583af1b8548c2a255a1c4f28e744c0e
+F test/bestindex1.test 705b57d7f51d53ee5fd043dd9666236e1fc18f4d59abf51da0ea5ea1b4804947
+F test/bestindex2.test 9a0ccd320b6525eec3a706aae6cdab7e1b7b5abca75027e39f39f755e76e5928
+F test/bestindex3.test 7622e792ff2da16d262d3cea6ad914591ac4806d57ed128e6c940b7920b47b84
+F test/bestindex4.test 038e3d0789332f3f1d61474f9bbc9c6d08c6bd1783a978f31f38ad82688de601
F test/bestindex5.test 67c1166131bb59f9e47c00118f7d432ca5491e6cae6ca3f87ca9db20103a78f9
F test/bestindex6.test d856a9bb63d927493575823eed44053bc36251e241aa364e54d0f2a2d302e1d4
-F test/bestindex7.test a11348824aed0de2bb9030f092636929000cd72882bdf919adacc3792f67ccbd
-F test/between.test b9a65fb065391980119e8a781a7409d3fcf059d89968279c750e190a9a1d5263
+F test/bestindex7.test f36ada201973d3022cf7afffffe08de9e58341996020e7a2df9a1d2f2be20132
+F test/between.test 68137a6e941c221417c15b6fe2d55f27bb1b6ab48bdf9e2aa51efdd85bc53802
F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59
F test/bigfile2.test 1b489a3a39ae90c7f027b79110d6b4e1dbc71bfc
-F test/bigmmap.test b820c234daa56d24bc3bf006e3ac7aa9d9623c8ac656a38f59063b444a2d65d1
+F test/bigmmap.test e906cf9729d7c362270ffe9fa6471f4c39c28ba83f0f77fb795e1b4d38a22ba0
F test/bigrow.test f0aeb7573dcb8caaafea76454be3ade29b7fc747
F test/bigsort.test 8299fa9298f4f1e02fc7d2712e8b77d6cd60e5a2
F test/bind.test 1e136709b306f7ed3192d349c2930d89df6ab621654ad6f1a72381d3fe76f483
@@ -741,7 +740,7 @@
F test/btree02.test 7555a5440453d900410160a52554fe6478af4faf53098f7235f1f443d5a1d6cc
F test/btreefault.test c2bcb542685eea44621275cfedbd8a13f65201e3
F test/busy.test 510dc6daaad18bcbbc085bcc6217d6dc418def5e73f72ce1475eea0cb7834727
-F test/busy2.test dbfb61b3265e7a962d3bcd32cd542bbe3d7801edbda6438d35af5aa707cae981
+F test/busy2.test 0a1633fef7987fc8ea25ed5838f7eef2f08fc6d2a3dcc77d23e6402e53946a7a
F test/cache.test 13bc046b26210471ca6f2889aceb1ea52dc717de
F test/cacheflush.test af25bb1509df04c1da10e38d8f322d66eceedf61
F test/cachespill.test 895997f84a25b323b166aecb69baab2d6380ea98f9e0bcc688c4493c535cfab9
@@ -773,7 +772,7 @@
F test/collateB.test 1e68906951b846570f29f20102ed91d29e634854ee47454d725f2151ecac0b95
F test/colmeta.test 2c765ea61ee37bc43bbe6d6047f89004e6508eb1
F test/colname.test 87ad5458bb8709312dac0d6755fd30e8e4ca83298d0a9ef6e5c24277a3c3390e
-F test/columncount.test d86fb6307261186370698962790ad2088ed419e4a4e823512b502f17d443b1b7
+F test/columncount.test eff33d402a7b0fde0a52a1920d238af200ca573327021e0ce3b7e5688de41449
F test/conflict.test ac0667090f66130ac77d5fb764655558ca6600dd6d88f670ca9123b61c448337
F test/conflict2.test 5557909ce683b1073982f5d1b61dfb1d41e369533bfdaf003180c5bc87282dd1
F test/conflict3.test 81865d9599609aca394fb3b9cd5f561d4729ea5b176bece3644f6ecb540f88ac
@@ -801,10 +800,10 @@
F test/corruptL.test 22589f503602cc5984e80f27f46c4de2134f24f1515ba2440513c377cb692258
F test/corruptM.test 7d574320e08c1b36caa3e47262061f186367d593a7e305d35f15289cc2c3e067
F test/corruptN.test 781c5f26a2d8918f03d45ac4968a738031eeb113a4b153c7588756d9b09c7b04
-F test/cost.test b11cdbf9f11ffe8ef99c9881bf390e61fe92baf2182bad1dbe6de59a7295c576
-F test/count.test 5364003488249957750a5f15ee42ca1cd7b100b1131c2dc71fff266a1250bf55
+F test/cost.test 1d156ce9858780a966c062694687afe0343a0ed12d081d071fb57027e726bafc
+F test/count.test e0699a15712bc2a4679d60e408921c2cce7f6365a30340e790c98e0f334a9c77
F test/countofview.test e17d6e6688cf74f22783c9ec6e788c0790ee4fbbaee713affd00b1ac0bb39b86
-F test/coveridxscan.test f35c7208dedc4f98e471c569df64c0f95a49f6e072d8dc7c8f99bdee2697de1b
+F test/coveridxscan.test 5ec98719a2e2914e8908dc75f7247d9b54a26df04625f846ac7900d5483f7296
F test/crash.test fb9dc4a02dcba30d4aa5c2c226f98b220b2b959f
F test/crash2.test 5b14d4eb58b880e231361d3b609b216acda86651
F test/crash3.test 8f5de9d32ab9ab95475a9efe7f47a940aa889418
@@ -843,20 +842,20 @@
F test/descidx2.test a0ba347037ff3b811f4c6ceca5fd0f9d5d72e74e59f2d9de346a9d2f6ad78298
F test/descidx3.test 953c831df7ea219c73826dfbf2f6ee02d95040725aa88ccb4fa43d1a1999b926
F test/diskfull.test 106391384780753ea6896b7b4f005d10e9866b6e
-F test/distinct.test eefe5a8e47fcb761aaa745838e355ab28586f9f75786a1c098016881344b2a5e
+F test/distinct.test e7d0cf371944dd0cbedff86420744e2f1ea2b528156451c97eb6ff41a99b9236
F test/distinct2.test cd1d15a4a2abf579298f7161e821ed50c0119136fe0424db85c52cf0adc230d1
-F test/distinctagg.test fd74c3783700f1d99c67a5d906bba97fb6650f4559f3ea7b1873f793ffc601c9
+F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376
F test/e_blobbytes.test 439a945953b35cb6948a552edaec4dc31fd70a05
F test/e_blobclose.test 4b3c8c60c2171164d472059c73e9f3c1844bb66d
F test/e_blobopen.test e95e1d40f995056f6f322cd5e1a1b83a27e1a145
F test/e_blobwrite.test f87ff598b67af5b3ec002a8d83e804dc8d23808e88cf0080c176612fc9ffce14
F test/e_changes.test fd66105385153dbf21fdb35eb8ef6c3e1eade579
-F test/e_createtable.test 7997c0106c181243e0ac7db7ba8b9ae7233d0bfb0188605650322a7a02ea326e
+F test/e_createtable.test 7107f5deda2324ea12dbf105044dc9265195401e9dbb3eead6a2c1a3da4bb5b7
F test/e_delete.test ab39084f26ae1f033c940b70ebdbbd523dc4962e
F test/e_droptrigger.test 235c610f8bf8ec44513e222b9085c7e49fad65ad0c1975ac2577109dd06fd8fa
F test/e_dropview.test 74e405df7fa0f762e0c9445b166fe03955856532e2bb234c372f7c51228d75e7
F test/e_expr.test 6ba7a51ece7b3e7fc145f14f924eed25ebb5a24e7b8596c78f3838d372cf0385
-F test/e_fkey.test 351c7b989e5aefcc339ef5fc78dc4738442bd247a392cd67d81c2881000c369e
+F test/e_fkey.test a2907f749cccd0b2c30d8576b673002eebdcc1fc9964bae61e5117b1d54733e2
F test/e_fts3.test 17ba7c373aba4d4f5696ba147ee23fd1a1ef70782af050e03e262ca187c5ee07
F test/e_insert.test f02f7f17852b2163732c6611d193f84fc67bc641fb4882c77a464076e5eba80e
F test/e_reindex.test 2b0e29344497d9a8a999453a003cb476b6b1d2eef2d6c120f83c2d3a429f3164
@@ -876,19 +875,18 @@
F test/enc2.test 848bf05f15b011719f478dddb7b5e9aea35e39e457493cba4c4eef75d849a5ec
F test/enc3.test 6807f7a7740a00361ca8d0ccd66bc60c8dc5f2b6
F test/enc4.test c8f1ce3618508fd0909945beb8b8831feef2c020
-F test/eqp.test bfe979eb1f4b8ab7a3bd7db6d16c2e6c6be0e5a3aada2227716f3fd3a9d76b69
+F test/eqp.test 84879b63e3110552bf8ce648a3507dc3ceb72109ecec83c2aef0db37a27f6382
F test/errmsg.test eae9f091eb39ce7e20305de45d8e5d115b68fa856fba4ea6757b6ca3705ff7f9
F test/eval.test a64c9105d6ff163df7cf09d6ac29cdad5922078c
F test/exclusive.test 7ff63be7503990921838d5c9f77f6e33e68e48ed1a9d48cd28745bf650bf0747
F test/exclusive2.test 984090e8e9d1b331d2e8111daf6e5d61dda0bef7
F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7
F test/exists.test 79a75323c78f02bbe9c251ea502a092f9ef63dac
-F test/exists2.test 92d563a97019a70f7adcbe3cbaab16f9fc696affbf0f9ede1796ea5f7cc5a3ac
-F test/existsfault.test 72a0036c1424d9204d49f4d976c3277a1b8bb2eed3c67aa124ba2df2f1331c7c
+F test/exists2.test 47970f2ce98826519cc38ce502b718641755b30a93d9b89915019ba1e770f361
+F test/existsfault.test 74f7edc713f5a335e7ff47adf503067bf05c6f8630f88b2a19c24f0fa5486ab8
F test/expr.test 26cd01e8485bc48c8aa6a1add598e9ce1e706b4eb4f3f554e0b0223022e8c2cf
F test/expr2.test c27327ae9c017a7ff6280123f67aff496f912da74d78c888926d68b46ec75fd8
F test/extension01.test 00d13cec817f331a687a243e0e5a2d87b0e358c9
-F test/external_reader.test c7d34694f1b25c32d866f56ac80c1e29edddc42b4ef90cad589263ffac2cde0c
F test/extraquick.test cb254400bd42bfb777ff675356aabf3287978f79
F test/fallocate.test 37a62e396a68eeede8f8d2ecf23573a80faceb630788d314d0a073d862616717
F test/filectrl.test 6e871c2d35dead1d9a88e176e8d2ca094fec6bb3
@@ -962,7 +960,7 @@
F test/fts3ao.test 266989148fec6d9f1bb6c5382f7aa3dcea0e9cd444576e28dd2b9287ac7dd220
F test/fts3atoken.test dc2078ce464914efe3a8dfc545dd034a0fc14f2ab425c240471d5a5f1c721400
F test/fts3auto.test 649aa4c198d7acc5cd6355e19ee073d051c40d9e88a43fc3d88af46bdf3e99d5
-F test/fts3aux1.test 1880eaa75c586cd10f53080479a2b819b3915ae7ce55c4e0ba8f1fe05ac0a6a7
+F test/fts3aux1.test 7a170e172afdbceb67f5baa05941fd4fbf56af42f61daa3d140f4b4bf4cb68f6
F test/fts3aux2.test 2459e7fa3e22734aed237d1e2ae192f5541c4d8b218956ad2d90754977bf907f
F test/fts3b.test c15c4a9d04e210d0be67e54ce6a87b927168fbf9c1e3faec8c1a732c366fd491
F test/fts3c.test fc723a9cf10b397fdfc2b32e73c53c8b1ec02958
@@ -973,7 +971,7 @@
F test/fts3corrupt3.test 0d5b69a0998b4adf868cc301fc78f3d0707745f1d984ce044c205cdb764b491f
F test/fts3corrupt4.test b71512ec391d39da96d60d01959e4e9f20d4237a964a94abcf5f5a2ad28378c1
F test/fts3corrupt5.test 0549f85ec4bd22e992f645f13c59b99d652f2f5e643dac75568bfd23a6db7ed5
-F test/fts3corrupt6.test d274f139ec173392002c768631f404fefc007ae02ffa1b03d8cbd096c3fc00f9
+F test/fts3corrupt6.test d5896a8d389bd824457772dc1e2d2023cd5c5cf8e42733607b5d632103018d8b
F test/fts3cov.test 7eacdbefd756cfa4dc2241974e3db2834e9b372ca215880e00032222f32194cf
F test/fts3d.test 2bd8c97bcb9975f2334147173b4872505b6a41359a4f9068960a36afe07a679f
F test/fts3defer.test f4c20e4c7153d20a98ee49ee5f3faef624fefc9a067f8d8d629db380c4d9f1de
@@ -990,7 +988,7 @@
F test/fts3fault2.test 6a17a11d8034b1c4eca9f3091649273d56c49ff049e2173df8060f94341e9da0
F test/fts3first.test dbdedd20914c8d539aa3206c9b34a23775644641
F test/fts3fuzz001.test e3c7b0ce9b04cc02281dcc96812a277f02df03cd7dc082055d87e11eb18aaf56
-F test/fts3join.test b285c919559af5b093c51abb2c07ce7ec0156dbc9573f444b78dabd9f3040db2
+F test/fts3join.test 949b4f5ae3ae9cc2423cb865d711e32476bdb205ab2be923fdf48246e4a44166
F test/fts3malloc.test b0e4c133b8d61d4f6d112d8110f8320e9e453ef6
F test/fts3matchinfo.test aa66cc50615578b30f6df9984819ae5b702511cf8a94251ec7c594096a703a4a
F test/fts3matchinfo2.test 00144e841704b8debfcdf6097969cd9f2a1cf759e2203cda42583648f2e6bf58
@@ -999,12 +997,12 @@
F test/fts3offsets.test b85fd382abdc78ebce721d8117bd552dfb75094c
F test/fts3prefix.test fa794eaab0bdae466494947b0b153d7844478ab2
F test/fts3prefix2.test e1f0a822ca661dced7f12ce392e14eaf65609dce
-F test/fts3query.test 45806a302921b245a9dba5d85c9d51fb98b3f137eea6e6bf6eae4883e041ab72
+F test/fts3query.test ca033ff2ebcc22c69d89032fb0bc1850997d31e7e60ecd26440796ba1654e78f
F test/fts3rank.test cd99bc83a3c923c8d52afd90d86979cf05fc41849f892faeac3988055ef37b99
F test/fts3rnd.test 1320d8826a845e38a96e769562bf83d7a92a15d0
F test/fts3shared.test 57e26a801f21027b7530da77db54286a6fe4997e
F test/fts3snippet.test 0887196d67cffbe365edde535b95ecc642a532ce8551ccd9a73aab5999c3ffae
-F test/fts3snippet2.test e79afeb1f673713f96d7fc5655726081975399d11e659d15553207be43301dc4
+F test/fts3snippet2.test 2dabb5889eda4c9980aad325e688b470781f97ce7c0fca0db125616fae0a2cdd
F test/fts3sort.test ed34c716a11cc2009a35210e84ad5f9c102362ca
F test/fts3tok1.test a663f4cac22a9505400bc22aacb818d7055240409c28729669ea7d4cc2120d15
F test/fts3tok_err.test 52273cd193b9036282f7bacb43da78c6be87418d
@@ -1031,7 +1029,7 @@
F test/fts4rename.test 2e0565ffd92b2c51f1a757df0b8f2ca30537197106fec09e943919801d173692
F test/fts4umlaut.test fcaca4471de7e78c9d1f7e8976e3e8704d7d8ad979d57a739d00f3f757380429
F test/fts4unicode.test 82a9c16b68ba2f358a856226bb2ee02f81583797bc4744061c54401bf1a0f4c9
-F test/fts4upfrom.test f25835162c989dffd5e2ef91ec24c4848cc9973093e2d492d1c7b32afac1b49d
+F test/fts4upfrom.test 8df5acb6e10ad73f393d1add082b042ab1db72567888847d098152121e507b34
F test/full.test 6b3c8fb43c6beab6b95438c1675374b95fab245d
F test/func.test f673822636fb8ed618dd2b80230d16e495d19c8f2e2e7d6c22e93e2b3de097ad
F test/func2.test 772d66227e4e6684b86053302e2d74a2500e1e0f
@@ -1065,7 +1063,7 @@
F test/having.test a89236dd8d55aa50c4805f82ac9daf64d477a44d712d8209c118978d0ca21ec9
F test/hexlit.test 4a6a5f46e3c65c4bf1fa06f5dd5a9507a5627751
F test/hidden.test 23c1393a79e846d68fd902d72c85d5e5dcf98711
-F test/hook.test 55b6d605d06dadbb04416eae8ad79889aea3521d119c87f04353c25f9c1450a4
+F test/hook.test fa54fa8afc842ae375f10c1f9fc0014fa59789052fc30c9eae19811fa3afa009
F test/hook2.test b9ff3b8c6519fb67f33192f1afe86e7782ee4ac8
F test/icu.test 716a6b89fbabe5cc63e0cd4c260befb08fd7b9d761f04d43669233292f0753b1
F test/ieee754.test b0945d12be7d255f3dfa18e2511b17ca37e0edd2b803231c52d05b86c04ab26e
@@ -1073,7 +1071,7 @@
F test/in.test 688ed2011d922d83141a45af431601738674a4c0bdde34b6351f688b82a169b3
F test/in2.test 5d4c61d17493c832f7d2d32bef785119e87bde75
F test/in3.test 3cbf58c87f4052cee3a58b37b6389777505aa0c0
-F test/in4.test cd08375ba470b248c3dc4ab30fd5dbcb682deafe3862d8249ba0ad6a11dd25ea
+F test/in4.test 64ac9c767ac5af562f066a40163d4202f8fa3be05d264ec65d6258e74606b30c
F test/in5.test b32ce7f4a93f44c5dee94af16886d922cc16ebe33c8e1765c73d4049d0f4b40f
F test/in6.test 8562d0945195cab3cc4ab3794e9118e72cb44c43f785c2b04d48a9d06ca6b4ec
F test/incrblob.test c9b96afc292aeff43d6687bcb09b0280aa599822
@@ -1092,13 +1090,13 @@
F test/index3.test 51685f39345462b84fcf77eb8537af847fdf438cc96b05c45d6aaca4e473ade0
F test/index4.test ab92e736d5946840236cd61ac3191f91a7856bf6
F test/index5.test 8621491915800ec274609e42e02a97d67e9b13e7
-F test/index6.test 880858a65d8686120fe9a8971a4d82b429cc206fe7fd525b8b2b55451c74d82d
-F test/index7.test b238344318e0b4e42126717f6554f0e7dfd0b39cecad4b736039b43e1e3b6eb3
-F test/index8.test caa097735c91dbc23d8a402f5e63a2a03c83840ba3928733ed7f9a03f8a912a3
+F test/index6.test f172653b35b20233e59200e8b92a76db61bf7285437bf777b93b306ba26a47e7
+F test/index7.test b8a0ba2110fd517bb48c4e76d26d60f1ab2ed9e257b18d71f820d7e71e9f8570
+F test/index8.test bc2e3db70e8e62459aaa1bd7e4a9b39664f8f9d7
F test/index9.test 0aa3e509dddf81f93380396e40e9bb386904c1054924ba8fa9bcdfe85a8e7721
-F test/indexedby.test f21eca4f7a6ffe14c8500a7ad6cd53166666c99e5ccd311842a28bc94a195fe0
-F test/indexexpr1.test 7e0e7a33acb4d9b3524398e6ce90cc05c26603fabbaf3062083a036c8874bc12
-F test/indexexpr2.test 2c7abe3c48f8aaa5a448615ab4d13df3662185d28419c00999670834a3f0b484
+F test/indexedby.test a3ca11f0819a9279619099f36b624bcaa315f7a1ed65c3ed2219c2a944683d2c
+F test/indexexpr1.test 284e119999d132cc8bf37735a928c9859b28e8e295d02b7a6a4f93977c7f9ba5
+F test/indexexpr2.test dba11dbb0a58fcba4cd694f46b4004976123b81b0501f525d43c9be59f0207b1
F test/indexfault.test 98d78a8ff1f5335628b62f886a1cb7c7dac1ef6d48fa39c51ec871c87dce9811
F test/init.test 15c823093fdabbf7b531fe22cf037134d09587a7
F test/insert.test 4e3f0de67aac3c5be1f4aaedbcea11638f1b5cdc9a3115be14d19aa9db7623c6
@@ -1112,7 +1110,7 @@
F test/intarray.test bb976b0b3df0ebb6a2eddfb61768280440e672beba5460ed49679ea984ccf440
F test/interrupt.test 16ea879ec728cb76414c148c5f24afd5d1f91054
F test/interrupt2.test e4408ca770a6feafbadb0801e54a0dcd1a8d108d
-F test/intpkey.test aee694afed1a65c86c4e69ad030224b3fc268113d00685234d40079fca16bad3
+F test/intpkey.test ac71107a49a06492b69b82aafaf225400598d3c8
F test/intreal.test 2a87e85a5949bd55e41ef04c58f5800587c5380bdbc559ff1c79b614b0e6a533
F test/io.test f95bca1783b01ea7761671560d023360d2dfa4cc
F test/ioerr.test 470fcc78e9cd352d162baf782fe301ea807d764241f58a48fc58109c2dfcdb6b
@@ -1123,10 +1121,10 @@
F test/ioerr6.test a395a6ab144b26a9e3e21059a1ab6a7149cca65b
F test/istrue.test 9619a2d77580f676048aaff7a16a0bcfea2b96c6c660dfaded2e53c873418899
F test/join.test 25da4f53523a4aa17c893134b47fba6aa4799bb33350517b157785878290e238
-F test/join2.test 9bdc615841b91c97a16d68bad9508aea11fa0c6b34e5689847bcc4dac70e4990
+F test/join2.test 21fc30e54ab35ed66bf51b89cec18729205497f5cc43c83bc042f96a73721593
F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0
F test/join4.test 1a352e4e267114444c29266ce79e941af5885916
-F test/join5.test f418fccdfefa41f1659663463aa517431ddcf3e30ccbb80e64173b7d615a03f4
+F test/join5.test 3a96dc62f0b45402d7207e22d1993fe0c2fce1c57644a11439891dd62b990eb7
F test/join6.test f809c025fa253f9e150c0e9afd4cef8813257bceeb6f46e04041228c9403cc2c
F test/journal1.test c7b768041b7f494471531e17abc2f4f5ebf9e5096984f43ed17c4eb80ba34497
F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
@@ -1144,9 +1142,9 @@
F test/lastinsert.test 42e948fd6442f07d60acbd15d33fb86473e0ef63
F test/laststmtchanges.test ae613f53819206b3222771828d024154d51db200
F test/lemon-test01.y 58b764610fd934e189ffbb0bbfa33d171b9cb06019b55bdc04d090d6767e11d7
-F test/like.test 35e83182beb4c730d50e0f9aff7613fb5cdf8ca9147a833a77290fa5b8ba9474
+F test/like.test 0b7b4765ca59d95a1f92dfab9e4d810c9fb8280b5edd6332a01340a20db9e0ed
F test/like2.test 3b2ee13149ba4a8a60b59756f4e5d345573852da
-F test/like3.test a76e5938fadbe6d32807284c796bafd869974a961057bc5fc5a28e06de98745c
+F test/like3.test 03d1bdf848483b78d2cfd1db283d75c4ec2e37c8b8eccc006813f3978d78fbbd
F test/limit.test 350f5d03c29e7dff9a2cde016f84f8d368d40bcd02fa2b2a52fa10c4bf3cbfaf
F test/limit2.test 9409b033284642a859fafc95f29a5a6a557bd57c1f0d7c3f554bd64ed69df77e
F test/loadext.test faa4f6eed07a5aac35d57fdd7bc07f8fc82464cfd327567c10cf0ba3c86cde04
@@ -1181,7 +1179,7 @@
F test/mallocH.test 79b65aed612c9b3ed2dcdaa727c85895fd1bfbdb
F test/mallocI.test 6c23a71df077fa5d387be90e7e669c5b368ca38a
F test/mallocJ.test b5d1839da331d96223e5f458856f8ffe1366f62e
-F test/mallocK.test 25897506da0098cea09b302ff432b0fb6d8002773c1e0fc9732aa8b444bfd455
+F test/mallocK.test 1f4b5efbf61715ab79b20b38739ff4b3d110ceb53f54e5db6da1f01c083707ab
F test/mallocL.test fb311ff80afddf3b1a75e52289081f4754d901dc
F test/mallocM.test 78bbe9d3da84a5c679123cdb40d7b2010b18fc46e13897e4f253c6ba6fbff134
F test/malloc_common.tcl aac62499b76be719fac31e7a3e54a7fd53272e7f
@@ -1203,7 +1201,7 @@
F test/misc4.test 10cd6addb2fa9093df4751a1b92b50440175dd5468a6ec84d0386e78f087db0e
F test/misc5.test c4aeaa0fa28faa08f2485309c38db4719e6cd1364215d5687a5b96d340a3fa58
F test/misc6.test 953cc693924d88e6117aeba16f46f0bf5abede91
-F test/misc7.test d912f3d45c2989191b797504a220ca225d6be80b21acad22ba0d35f4a9ee4579
+F test/misc7.test 7b4c88c1d5ea8c8b9d537d212c08a0343d345fdd5c789598692c1c0e60fbda69
F test/misc8.test 8782708f4c8a459591c3e8fe1215bd2048bffb4024b3df249e9b9ed407dc61ed
F test/misuse.test 9e7f78402005e833af71dcab32d048003869eca5abcaccc985d4f8dc1d86bcc7
F test/mjournal.test 28a08d5cb5fb5b5702a46e19176e45e964e0800d1f894677169e79f34030e152
@@ -1227,10 +1225,10 @@
F test/notify2.test 2ecabaa1305083856b7c39cf32816b612740c161
F test/notify3.test 10ff25cde502e72a92053a2f215d64bece4ef934
F test/notnull.test a37b663d5bb728d66fc182016613fb8e4a0a4bbf3d75b8876a7527f7d4ed3f18
-F test/notnull2.test 9b09c3405f1dfaf8c1725fb16d815407a5ceb4bb5bc7300e7a506348b3e78cd9
-F test/notnullfault.test fc4bb7845582a2b3db376001ef49118393b1b11abe0d24adb03db057ee2b73d5
+F test/notnull2.test 965a893619751255e59c911a8c58504b3174a3788b1458b7c7365b232209711b
+F test/notnullfault.test 6126e31300632070ca6021698393c7fcf61ab4791bc2aa1d6d704242c0fcd4f8
F test/null.test b7ff206a1c60fe01aa2abd33ef9ea83c93727d993ca8a613de86e925c9f2bc6f
-F test/nulls1.test 7a5e4346ee4285034100b4cd20e6784f16a9d6c927e44ecdf10034086bbee9c9
+F test/nulls1.test 82c5bc33148405f21205865abf13c786084438d573a4ac4e87e11b6091cde526
F test/numcast.test 5d126f7f581432e86a90d1e35cac625164aec4a1
F test/numindex1.test 20a5450d4b056e48cd5db30e659f13347a099823
F test/offset1.test f06b83657bcf26f9ce805e67450e189e282143b2
@@ -1238,7 +1236,7 @@
F test/optfuzz-db01.c 9f2fa80b8f84ebbf1f2e8b13421a4e0477fe300f6686fbd76cac1d2db66e0fdc
F test/optfuzz-db01.txt 21f6bdeadc701cf11528276e2a55c70bfcb846ba42df327f979bd9e7b6ce7041
F test/optfuzz.c 50e330304eb1992e15ddd11f3daaad9bcc0d9aaad09cb2bcc77f9515df2e88b1
-F test/orderby1.test a4bba04b9c60a21e53486fbc173a596b29641a3b3a57a0f26a1cbef1360358e9
+F test/orderby1.test 6bf0ce45cbfb1cf4779dd418ac5e8cf66abfa04de2c1d2edf1e0e85f1520d8f3
F test/orderby2.test bc11009f7cd99d96b1b11e57b199b00633eb5b04
F test/orderby3.test 8619d06a3debdcd80a27c0fdea5c40b468854b99
F test/orderby4.test 4d39bfbaaa3ae64d026ca2ff166353d2edca4ba4
@@ -1297,18 +1295,18 @@
F test/releasetest_data.tcl 3d41ddb3f04f474ac9d925485da24ce6576ff0ebc4c7201c8a340bc09846c261
F test/resetdb.test 8062cf10a09d8c048f8de7711e94571c38b38168db0e5877ba7561789e5eeb2b
F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb
-F test/returning1.test 23dd8e28e69fb2f4e1a2173a241d5fb84846cac651096ad378980e4b7a79b434
+F test/returning1.test ce2192b40045cc94d53ac5ec5789a72a3ade233a6ea6e29666e296d151b59479
F test/rollback.test 06680159bc6746d0f26276e339e3ae2f951c64812468308838e0a3362d911eaa
-F test/rollback2.test 3f3a4e20401825017df7e7671e9f31b6de5fae5620c2b9b49917f52f8c160a8f
+F test/rollback2.test bc868d57899dc6972e2b4483faae0e03365a0556941474eec487ae21d8d38bb6
F test/rollbackfault.test 0e646aeab8840c399cfbfa43daab46fd609cf04a
F test/round1.test 768018b04522ca420b1aba8a24bd76091d269f3bce3902af3ec6ebcee41ab21e
F test/rowallock.test 3f88ec6819489d0b2341c7a7528ae17c053ab7cc
F test/rowhash.test 0bc1d31415e4575d10cacf31e1a66b5cc0f8be81
F test/rowid.test bfbd7b97d9267660be3c8f28507c4ed7f205196b8877c0db42df347c2e8845e3
-F test/rowvalue.test 466efbb7bb93ca9f95d89f69c7c140aa52cc57ac6dfa7efba09ea4a9ab3cd9f0
+F test/rowvalue.test 6795850abf6243e96f09ef041919d1ea61713332237b60d01371c0fee73f6379
F test/rowvalue2.test 060d238b7e5639a7c5630cb5e63e311b44efef2b
F test/rowvalue3.test 3068f508753af69884b12125995f023da0dbb256
-F test/rowvalue4.test 441e7e366ac6d939a3a95a574031c56ec2a854077a91d66eee5ff1d86cb5be58
+F test/rowvalue4.test 02e35f7762371c2f57ebd856aa056eac56cb27ef7715a0bb31eac1895a745356
F test/rowvalue5.test c81c7d8cf36711ab37675ad7376084ae2a359cb6
F test/rowvalue6.test d19b54feb604d5601f8614b15e214e0774c01087
F test/rowvalue7.test c1cbdbf407029db01f87764097c6ac02a1c5a37efd2776eff32a9cdfdf6f2dba
@@ -1325,7 +1323,7 @@
F test/savepoint6.test f41279c5e137139fa5c21485773332c7adb98cd7
F test/savepoint7.test cde525ea3075283eb950cdcdefe23ead4f700daa
F test/savepointfault.test f044eac64b59f09746c7020ee261734de82bf9b2
-F test/scanstatus.test 9a0ed37ab6d57b50567282788fffdf832d9b16739ecc41bff9d77a8d767cf317
+F test/scanstatus.test 874e35011779b07725a47dbf1dd6282b0ca04af7e028fb0b534ee544b571be42
F test/schema.test 5dd11c96ba64744de955315d2e4f8992e447533690153b93377dffb2a5ef5431
F test/schema2.test 906408621ea881fdb496d878b1822572a34e32c5
F test/schema3.test 1bc1008e1f8cb5654b248c55f27249366eb7ed38
@@ -1343,11 +1341,11 @@
F test/select6.test 319d45e414cdd321bf17cfacedaf19e3935ad64dac357c53f1492338c6e9b801
F test/select7.test f659f231489349e8c5734e610803d7654207318f
F test/select8.test 8c8f5ae43894c891efc5755ed905467d1d67ad5d
-F test/select9.test f7586b207ce2304ab80dc93d3146469a28fd4403621dd3a82d06644563d3c812
-F test/selectA.test 5a9ef0f36c0f2666eb5e998073a98fce90c2fd0aa63a79c462c80036e9e0926d
+F test/select9.test aebc2bb0c3bc44606125033cbcaac2c8d1f33a95
+F test/selectA.test 68de52409e45a3313d00b8461b48bef4fb729faf36ade9067a994eae55cc86f4
F test/selectB.test 954e4e49cf1f896d61794e440669e03a27ceea25
F test/selectC.test fec14c9015ed4ec941508bbc144f30b42e40ac34a4bb33001450369865dd0b75
-F test/selectD.test 6d1909b49970bf92f45ce657505befcef5fc7cbc13544e18103a316d32189bfb
+F test/selectD.test fc20452847a01775710090383cfb4423275d2f745fed61f34fbf37573ac0d214
F test/selectE.test a8730ca330fcf40ace158f134f4fe0eb00c7edbf
F test/selectF.test 21c94e6438f76537b72532fa9fd4710cdd455fc3
F test/selectG.test 089f7d3d7e6db91566f00b036cb353107a2cca6220eb1cb264085a836dae8840
@@ -1380,11 +1378,11 @@
F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5
F test/shrink.test 1b4330b1fd9e818c04726d45cb28db73087535ce
F test/sidedelete.test f0ad71abe6233e3b153100f3b8d679b19a488329
-F test/skipscan1.test 1a9972e1dc15ca3887f306d3cd9a29679afb382eca0f3539f3b746f3c2ccaf68
-F test/skipscan2.test c588cb7ed947db724d300f2a0dc537dd2ad292b0f812641d8481bc0b95dd3f49
+F test/skipscan1.test ed524bc86f27646b3a297f45d6557b55db338977b6838f8064b196b35848b31b
+F test/skipscan2.test 3eb703ce794f139e7b83567911046298bcde29606116727f9b700ce34f559d2d
F test/skipscan3.test ec5bab3f81c7038b43450e7b3062e04a198bdbb5
-F test/skipscan5.test 0672103fd2c8f96bd114133f356192b35ece45c794fe3677e1d9e5e3104a608e
-F test/skipscan6.test bddbb35dd335e2d21b7791a61e3b2e1f3255dc307ce80aa6fe19cc298e6feb13
+F test/skipscan5.test 980875ad45d8aacfe7bdec7c288343520cd1d14e84befdcfe50c785f9e6c8709
+F test/skipscan6.test 0b4cd1b4ac9f84d91454df513c99a4932fa07e8f27b8049bea605068b3e34ac7
F test/snapshot.test a504f2e7009f512ef66c719f0ea1c55a556bdaf1e1312c80a04d46fc1a3e9632
F test/snapshot2.test 8d6ff5dd9cc503f6e12d408a30409c3f9c653507b24408d9cd7195931c89bc54
F test/snapshot3.test 8744313270c55f6e18574283553d3c5c5fe4c5970585663613a0e75c151e599b
@@ -1472,7 +1470,7 @@
F test/tkt-2ea2425d34.test 1cf13e6f75d149b3209a0cb32927a82d3d79fb28
F test/tkt-31338dca7e.test 6fb8807851964da0d24e942f2e19c7c705b9fb58
F test/tkt-313723c356.test 4b306ad45c736cedf2f5221f6155b92143244b6d
-F test/tkt-385a5b56b9.test 81d7c8ef2d2a378323ba2190c1f02f91022fdff0d8d0b84c04954d02c85ef374
+F test/tkt-385a5b56b9.test 5204a7cba0e28c99df0acbf95af5e1af4d32965a7a14de6eccebf949607618b1
F test/tkt-38cb5df375.test f3cc8671f1eb604d4ae9cf886ed4366bec656678
F test/tkt-3998683a16.test 6d1d04d551ed1704eb3396ca87bb9ccc8c5c1eb7
F test/tkt-3a77c9714e.test 90e3e8455ee945a4076d4c44062b8845708af24a880355328fe7008f2047c9f0
@@ -1487,7 +1485,7 @@
F test/tkt-5ee23731f.test 9db6e1d7209dc0794948b260d6f82b2b1de83a9f
F test/tkt-6bfb98dfc0.test 24780633627b5cfc0635a5500c2389ebfb563336
F test/tkt-752e1646fc.test ea78d88d14fe9866bdd991c634483334639e13bf
-F test/tkt-78e04e52ea.test b731f2ab7d1c2482ac5152097da02ef4805a45147ba9498d3cd9da27072f34d1
+F test/tkt-78e04e52ea.test cb44d0f5e7940223be740a39913a1b9b9b30d7e4a17ed3349141f893bae1b8f2
F test/tkt-7a31705a7e6.test 9e9c057b6a9497c8f7ba7b16871029414ccf6550e7345d9085d6d71c9a56bb6f
F test/tkt-7bbfb7d442.test 7b2cd79c7a17ae6750e75ec1a7846712a69c9d18
F test/tkt-80ba201079.test 105a721e6aad0ae3c5946d7615d1e4d03f6145b8
@@ -1506,7 +1504,7 @@
F test/tkt-b1d3a2e531.test 8f7576e41ca179289ee1a8fee28386fd8e4b0550
F test/tkt-b351d95f9.test d14a503c414c5c58fdde3e80f9a3cfef986498c0
F test/tkt-b72787b1.test a95e8cdad0b98af1853ac7f0afd4ab27b77bf5f3
-F test/tkt-b75a9ca6b0.test dc6a853c242f7d0326564ae32e9e5eb462b5e8d2bc5b01ea3b18fd24f8e5894b
+F test/tkt-b75a9ca6b0.test ade89229d853a67a21bbd5e6e1e787a8f9d21f19908d1b7fca6bf3d4d5aa0767
F test/tkt-ba7cbfaedc.test b4c0deccc12aeb55cfdb57935b16b5d67c5a9877
F test/tkt-bd484a090c.test 60460bf946f79a79712b71f202eda501ca99b898
F test/tkt-bdc6bbbb38.test fc38bb09bdd440e3513a1f5f98fc60a075182d7d
@@ -1572,7 +1570,7 @@
F test/tkt3357.test 77c37c6482b526fe89941ce951c22d011f5922ed
F test/tkt3419.test 1bbf36d7ea03b638c15804251287c2391f5c1f6b
F test/tkt3424.test 61f831bd2b071bd128fa5d00fbda57e656ca5812
-F test/tkt3442.test 6287173de5bb2d43693b1f822426018a209f9df49ce2f454808bac1771852330
+F test/tkt3442.test a1fc47c669e651d16494de3ff349bcb53281456f2ca02c8bc14220b6044bbfe8
F test/tkt3457.test 5651e2cbb94645b677ec663160b9e192b87b7d365aecdfb24e19f749575a6fc2
F test/tkt3461.test 228ea328a5a21e8663f80ee3d212a6ad92549a19
F test/tkt3493.test 1686cbde85f8721fc1bdc0ee72f2ef2f63139218
@@ -1608,14 +1606,14 @@
F test/tkt3997.test a335fa41ca3985660a139df7b734a26ef53284bd
F test/tkt4018.test 18dbc6617f7a4b90e938d1bd6d26ad18daafaf08
F test/tokenize.test ce430a7aed48fc98301611429595883fdfcab5d7
-F test/tpch01.test 4479008f85f6f8f25f7ab2cb305d665752b4727fa28a8df3d8e0ad46520c62ff
+F test/tpch01.test 7c4eb8cdd79c568f46d344b3e789c9fdb8a766d112871352704861f3fca32a2a
F test/trace.test a659a9862957f4789e37a92b3bf6d2caf5c86b02cdeefc41e850ae53acf6992a
F test/trace2.test f5cb67ad3bc09e0c58e8cca78dfd0b5639259983
F test/trace3.test ae2004df24b585fed9046cc0bae4601762bc6fc4aa321d475f1350bba5047f31
F test/trans.test 45f6f9ab6f66a7b5744f1caac06b558f95da62501916906cf55586a896f9f439
F test/trans2.test 62bd045bfc7a1c14c5ba83ba64d21ade31583f76
F test/trans3.test 91a100e5412b488e22a655fe423a14c26403ab94
-F test/transitive1.test 239eec5343388983f112c16d666aa89960cd85302b6af6cd8408ce8edb7b3316
+F test/transitive1.test 293300f46916569f08875cdb2fe2134be2c27677
F test/trigger1.test d30cd09ae8ac365a088f09daba583cc5c0b8fc7d4e1d70809d0b4be3bf6ae2ab
F test/trigger2.test d15da46f7012832faf3e0c536b47024409d5fb1722d2bb77e29c06d96d704bb1
F test/trigger3.test aa640bb2bbb03edd5ff69c055117ea088f121945
@@ -1632,7 +1630,7 @@
F test/triggerE.test 612969cb57a4ef792059ad6d01af0117e1ae862c283753ffcc9a6428642b22ee
F test/triggerF.test 5d76f0a8c428ff87a4d5ed52da06f6096a2c787a1e21b846111dfac4123de3ad
F test/triggerG.test 2b816093c91ba73c733cfa8aedcc210ad819d72a98b1da30768a3c56505233e9
-F test/triggerupfrom.test d1f9e56090408115c522bee626cc33a2f3370f627a5e341d832589d72e3aa271
+F test/triggerupfrom.test d25961fa70a99b6736193da7b49a36d8c1d28d56188f0be6406d4366315cd6e4
F test/trustschema1.test 4e970aef0bfe0cee139703cc7209d0e0f07725d999b180ba50770f49edef1494
F test/tt3_checkpoint.c 9e75cf7c1c364f52e1c47fd0f14c4340a9db0fe1
F test/tt3_index.c 39eec10a35f57672225be4d182862152896dee4a
@@ -1651,14 +1649,14 @@
F test/unique.test 93f8b2ef5ea51b9495f8d6493429b1fd0f465264
F test/unique2.test 3674e9f2a3f1fbbfd4772ac74b7a97090d0f77d2
F test/unixexcl.test d936ba2b06794018e136418addd59a2354eeae97
-F test/unordered.test 0edaf3411d300693bca595897c5201421c6c5ec787990a1dfe2f7f60ae93f1e2
+F test/unordered.test ffeea7747d5ba962a8009a20b7e53d68cbae05b063604c68702c5998eb50c981
F test/update.test e906ca7cb1dc6f52af1ea243e08f727edfa79f924c2691f2f9e72481f847310d
F test/update2.test 67455bc61fcbcf96923c45b3bc4f87bc72be7d67575ad35f134906148c7b06d3
F test/upfrom1.tcl 8859d9d437f03b44174c4524a7a734a391fd4526fcff65be08285dafc9dc9041
F test/upfrom1.test d18f69f7c691bc791e7f31bf0e354eeff04cf2f44edc32d6b1928bad71697073
-F test/upfrom2.test f92e47bfc35e9410d3e8716ee626384e89ad026c55fd6148508ca9d707521673
-F test/upfrom3.test 6130f24ebf97f5ea865e5d2a14a2d543fe5428a62e87cc60f62d875e45c1f5f0
-F test/upfromfault.test 3a10075a0043f0c4fad6614b2c371f88a8ba5a4acab68b907438413865d6a8d6
+F test/upfrom2.test 6ebd3be8c3fac984e89a177d823686f04605b512fc167392bce6d8ba2ba63325
+F test/upfrom3.test 7dab379d128e8dd7beb2055b295fb113c7ba93e8c2038f5ddb7a4a10f0ebb348
+F test/upfromfault.test 70ecf8eb85559727a487283f69374e3ae39879e994d8a2437c49d7c05ecb70c9
F test/upsert1.test 88f9e258c6a0eeeb85937b08831e8daad440ba41f125af48439e9d33f266fb18
F test/upsert2.test 9c3cdbb1a890227f6504ce4b0e3de68f4cdfa16bb21d8641208a9239896c5a09
F test/upsert3.test 88d7d590a1948a9cb6eac1b54b0642f67a9f35a1fc0f19b200e97d5d39e3179c
@@ -1733,37 +1731,37 @@
F test/walro.test cb438d05ba0d191f10b688e39c4f0cd5b71569a1d1f4440e5bdf3c6880e08c20
F test/walro2.test 0e79dd15cbdb4f482c01ea248373669c732414a726b357d04846a816afafb768
F test/walrofault.test c70cb6e308c443867701856cce92ad8288cd99488fa52afab77cca6cfd51af68
-F test/walsetlk.test 3185bebc90557e0d611442c8d64f7a0cb7b06f8e156eea37a4a7358f722715be
+F test/walsetlk.test 11f7fe792fdce54cf09874dab824e0627f2eedecfb9f7983e325606ec5184e0c
F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417
F test/walslow.test c05c68d4dc2700a982f89133ce103a1a84cc285f
F test/walthread.test 14b20fcfa6ae152f5d8e12f5dc8a8a724b7ef189f5d8ef1e2ceab79f2af51747
F test/walvfs.test bccb3e0d235ef85e276f491d34db32c9ada1ea67be8d9f10aabe7b30319ec656
F test/wapp.tcl b440cd8cf57953d3a49e7ee81e6a18f18efdaf113b69f7d8482b0710a64566ec
F test/wapptest.tcl 899594e25684861d5b0c0880fb012364def50ef8097041b8ddf74be5ba7fa270 x
-F test/where.test 4f7a3939e5190845ef42142031a1819070f65e065e6a840a09adc54dccfef01f
-F test/where2.test 03c21a11e7b90e2845fc3c8b4002fc44cc2797fa74c86ee47d70bd7ea4f29ed6
-F test/where3.test 5b4ffc0ac2ea0fe92f02b1244b7531522fe4d7bccf6fa8741d54e82c10e67753
+F test/where.test e713c0c64e3e6b062235e39a2f7e5508c517df16b63d69fd786e26bc7330b1c6
+F test/where2.test 478d2170637b9211f593120648858593bf2445a1
+F test/where3.test 2341a294e17193a6b1699ea7f192124a5286ca6acfcc3f4b06d16c931fbcda2c
F test/where4.test 4a371bfcc607f41d233701bdec33ac2972908ba8
F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
-F test/where7.test ab41d53ce8f2a6919ea3d5b13cd1153c1375a8e3ddaa129b81781f9033981383
+F test/where7.test 75722434c486ac9e74718caa6cce234f45ba34c0b6c0f9555b29eb8bb5f6ade1
F test/where8.test 461ca40265ed996a6305da99bb024b0e41602bb586acf544c08f95922358e49f
-F test/where9.test b1942ed1d4c4632ea99e135691371f33803428ee4092a462280338ab3347f916
+F test/where9.test 8e3e0ff42cc17156f52361a1c012281550d0d632912fec92d1d6df74db7a8e6d
F test/whereA.test 9d1077b117f1b68d5f739d94f36956c36cf995eb87bb19b77b2e81af020edd20
F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5
F test/whereC.test cae295158703cb3fc23bf1a108a9ab730efff0f6
F test/whereD.test c1c335e914e28b122e000e9310f02d2be83e1c9dbca2e29f46bd732703944d1b
-F test/whereE.test 0ac7e61c6225354a980666996539da154991b4325af943a25a9079079c82fb03
-F test/whereF.test 926b65519608e3f2aa28720822b9154fb5c7b13519dd78194f434a511ab3dac5
-F test/whereG.test 0a489c891a74500b3994266342785dc12e675ac55ad74935c7c1b70393edf82c
+F test/whereE.test b3a055eef928c992b0a33198a7b8dc10eea5ad2f
+F test/whereF.test 3d9412b1199d3e2bed34fcb76b4c48d0bf4df95d27e3f8dd27b6f8b4716d0d89
+F test/whereG.test 77127a4d214bb21da3b5c695cf4106cd9e418c60d9c24471ba55d3772067cd35
F test/whereH.test e4b07f7a3c2f5d31195cd33710054c78667573b2
-F test/whereI.test c4bb7e2ca56d49bd8ab5c7bd085b8b83e353922b46904d68aefb3c7468643581
-F test/whereJ.test fc05e374cc9f2dc204148d6c06822c380ad388895fe97a6d335b94a26a08aecf
-F test/whereK.test 0270ab7f04ba5436fb9156d31d642a1c82727f4c4bfe5ba90d435c78cf44684a
-F test/whereL.test 7717caf61ff4b09d05ddd2978701c4cf5661408bd4dce31d38eff482f60f44f3
+F test/whereI.test a2874062140ed4aba9ffae76e6190a3df6fc73d1373fdfa8fd632945082a5364
+F test/whereJ.test 88287550f6ee604422403b053455b1ad894eeaa5c35d348532dfa1439286cb9a
+F test/whereK.test f8e3cf26a8513ecc7f514f54df9f0572c046c42b
+F test/whereL.test 1afe47227f093dc0547236491fb37529b7be9724b8575925a321001b80e6a23a
F test/wherefault.test 1374c3aa198388925246475f84ad4cd5f9528864
F test/wherelfault.test 9012e4ef5259058b771606616bd007af5d154e64cc25fa9fd4170f6411db44e3
-F test/wherelimit.test daa0fd9122c5745cc459ec40b8d3c16ce13ce8382b5b847e7cfff4b871260cbf
+F test/wherelimit.test afb46397c6d7e964e6e294ba3569864a0c570fe3807afc634236c2b752372f31
F test/wherelimit2.test 657a3f24aadee62d058c5091ea682dc4af4b95ffe32f137155be49799a58e721
F test/win32heap.test 10fd891266bd00af68671e702317726375e5407561d859be1aa04696f2aeee74
F test/win32lock.test fbf107c91d8f5512be5a5b87c4c42ab9fdd54972
@@ -1788,20 +1786,20 @@
F test/windowerr.tcl f5acd6fbc210d7b5546c0e879d157888455cd4a17a1d3f28f07c1c8a387019e0
F test/windowerr.test a8b752402109c15aa1c5efe1b93ccb0ce1ef84fa964ae1cd6684dd0b3cc1819b
F test/windowfault.test d543d46571b32d19f198cb04b6505747fabf3cc369970daae47074ee793612be
-F test/windowpushd.test d8895d08870b7226f7693665bd292eb177e62ca06799184957b3ca7dc03067df
-F test/with1.test b231edbf0f7c1d94bc14365cd9f33e197b2f0aa16add927ee121649fce014c15
+F test/windowpushd.test 5b9c114e8173c3addacf58a0fcd941437b14649f2033700184479a13f188ad00
+F test/with1.test 780be387f01e290e768bdfd1827280f9e37ba37223eb4736aba386864fac5a94
F test/with2.test 000fb95f1f29dae868cea0f41505eb5126077d49eb967ff88f9ee46212ad8863
-F test/with3.test ad32d13ad50661e6fa305f62a0717649c348792e7b658bf2644976227a9e0373
+F test/with3.test 2f1e05aef7aeef9a741cbf36deeb4be73003dc541921c3abc78becbbf5b7852d
F test/with4.test 257be66c0c67fee1defbbac0f685c3465e2cad037f21ce65f23f86084f198205
F test/with5.test 6248213c41fab36290b5b73aa3f937309dfba337004d9d8434c3fabc8c7d4be8
-F test/with6.test 661d7e416bef6c0a2556b2c9f0c8178a5b15932bed65246abed99723a8d4e7c0
+F test/with6.test 3001b59179cbdc26a8c67ff8f46944e3141fdece9ab064c49bbf08459b67b207
F test/withM.test 693b61765f2b387b5e3e24a4536e2e82de15ff64
F test/without_rowid1.test e4034c0849ccc2e8bb749c69f15bd69bb9fcf8fe77e8d17ce02369604242fe83
F test/without_rowid2.test af260339f79d13cb220288b67cd287fbcf81ad99
F test/without_rowid3.test 39ab0dd773eaa62e59b17093f875327630f54c4145458f6d2b053d68d4b2f67b
F test/without_rowid4.test 4e08bcbaee0399f35d58b5581881e7a6243d458a
F test/without_rowid5.test 89b1c587bd92a0590e440da33e7666bf4891572a
-F test/without_rowid6.test efbd7add62c59bf5ca97bf8da674e734e6a70ef979234e816166824b4d258f68
+F test/without_rowid6.test 8463b20098e9f75a501a9f17dfb42fffc79068eac0b2775fe56ef2281d2df45e
F test/without_rowid7.test d7c59a93d726b55812d620f8f284e01904a5b85f9ee9eea8f2f68571a5e8c40e
F test/wordcount.c d721a4b6fae93e6e33449700bce1686bc23257c27425bc3ef1599dc912adec66
F test/writecrash.test f1da7f7adfe8d7f09ea79b42e5ca6dcc41102f27f8e334ad71539501ddd910cc
@@ -1831,7 +1829,7 @@
F tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce
F tool/index_usage.c f62a0c701b2c7ff2f3e21d206f093c123f222dbf07136a10ffd1ca15a5c706c5
F tool/kvtest-speed.sh 4761a9c4b3530907562314d7757995787f7aef8f
-F tool/lemon.c a5acddd3eec6a388872aae6efc7563336348a9c45e5563642f77e8e3a50e859d
+F tool/lemon.c d44ba4f03427c9bd34b601f315fe77c2b6d4bd215801a0259aeedbcc4c94a95c
F tool/lempar.c 1d3d075da18681c67ecc66c1f171e7094e18cd2cfba6a8a1bd4f3f639d6656e1
F tool/libvers.c caafc3b689638a1d88d44bc5f526c2278760d9b9
F tool/loadfts.c c3c64e4d5e90e8ba41159232c2189dba4be7b862
@@ -1912,7 +1910,9 @@
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P e16da5af822ef31d7e05992403cf9787fbb3d9abb0b5283aba55ea07e1830a72
-R 31cf23d11c71c31febdef8457989c710
-U drh
-Z bb6d981e49a44d67794ddc6bc2f09d25
+P 64b0eb7e1171611436031b8d2923ce947c37addbd8a776a7ded461fc486c3640
+R 55c5b4b708ce6050b44359864678297d
+T +sym-release *
+T +sym-version-3.35.4 *
+U dan
+Z 77a9a4e15883c7141df67ebe55a2c0d2
diff -Nru sqlite3-3.35.0/manifest.uuid sqlite3-3.35.0-1/manifest.uuid
--- sqlite3-3.35.0/manifest.uuid 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/manifest.uuid 2021-04-04 17:23:21.000000000 +0000
@@ -1 +1 @@
-778a9a6e6f8d960fd55ac9be7eea20b1875a46192db85e63dddc61b632b30173
\ No newline at end of file
+5d4c65779dab868b285519b19e4cf9d451d50c6048f06f653aa701ec212df45e
\ No newline at end of file
diff -Nru sqlite3-3.35.0/src/alter.c sqlite3-3.35.0-1/src/alter.c
--- sqlite3-3.35.0/src/alter.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/alter.c 2021-04-04 17:23:21.000000000 +0000
@@ -54,7 +54,7 @@
const char *zDb, /* Name of db to verify schema of */
int bTemp, /* True if this is the temp db */
const char *zWhen, /* "when" part of error message */
- int bNoDQS /* Do not allow DQS in the schema */
+ const char *zDropColumn /* Name of column being dropped */
){
pParse->colNamesSet = 1;
sqlite3NestedParse(pParse,
@@ -62,9 +62,9 @@
"FROM \"%w\"." DFLT_SCHEMA_TABLE " "
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
" AND sql NOT LIKE 'create virtual%%'"
- " AND sqlite_rename_test(%Q, sql, type, name, %d, %Q, %d)=NULL ",
+ " AND sqlite_rename_test(%Q, sql, type, name, %d, %Q, %Q)=NULL ",
zDb,
- zDb, bTemp, zWhen, bNoDQS
+ zDb, bTemp, zWhen, zDropColumn
);
if( bTemp==0 ){
@@ -73,32 +73,8 @@
"FROM temp." DFLT_SCHEMA_TABLE " "
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
" AND sql NOT LIKE 'create virtual%%'"
- " AND sqlite_rename_test(%Q, sql, type, name, 1, %Q, %d)=NULL ",
- zDb, zWhen, bNoDQS
- );
- }
-}
-
-/*
-** Generate VM code to replace any double-quoted strings (but not double-quoted
-** identifiers) within the "sql" column of the sqlite_schema table in
-** database zDb with their single-quoted equivalents. If argument bTemp is
-** not true, similarly update all SQL statements in the sqlite_schema table
-** of the temp db.
-*/
-static void renameFixQuotes(Parse *pParse, const char *zDb, int bTemp){
- sqlite3NestedParse(pParse,
- "UPDATE \"%w\"." DFLT_SCHEMA_TABLE
- " SET sql = sqlite_rename_quotefix(%Q, sql)"
- "WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
- " AND sql NOT LIKE 'create virtual%%'" , zDb, zDb
- );
- if( bTemp==0 ){
- sqlite3NestedParse(pParse,
- "UPDATE temp." DFLT_SCHEMA_TABLE
- " SET sql = sqlite_rename_quotefix('temp', sql)"
- "WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
- " AND sql NOT LIKE 'create virtual%%'"
+ " AND sqlite_rename_test(%Q, sql, type, name, 1, %Q, %Q)=NULL ",
+ zDb, zWhen, zDropColumn
);
}
}
@@ -261,7 +237,7 @@
"sql = sqlite_rename_table(%Q, type, name, sql, %Q, %Q, 1), "
"tbl_name = "
"CASE WHEN tbl_name=%Q COLLATE nocase AND "
- " sqlite_rename_test(%Q, sql, type, name, 1, 'after rename', 0) "
+ " sqlite_rename_test(%Q, sql, type, name, 1, 'after rename',0) "
"THEN %Q ELSE tbl_name END "
"WHERE type IN ('view', 'trigger')"
, zDb, zTabName, zName, zTabName, zDb, zName);
@@ -620,10 +596,6 @@
goto exit_rename_column;
}
- /* Ensure the schema contains no double-quoted strings */
- renameTestSchema(pParse, zDb, iSchema==1, "", 0);
- renameFixQuotes(pParse, zDb, iSchema==1);
-
/* Do the rename operation using a recursive UPDATE statement that
** uses the sqlite_rename_column() SQL function to compute the new
** CREATE statement text for the sqlite_schema table.
@@ -653,7 +625,7 @@
/* Drop and reload the database schema. */
renameReloadSchema(pParse, iSchema, INITFLAG_AlterRename);
- renameTestSchema(pParse, zDb, iSchema==1, "after rename", 1);
+ renameTestSchema(pParse, zDb, iSchema==1, "after rename", 0);
exit_rename_column:
sqlite3SrcListDelete(db, pSrc);
@@ -1077,12 +1049,17 @@
const char *zDb, /* Name of schema SQL belongs to */
sqlite3 *db, /* Database handle */
const char *zSql, /* SQL to parse */
- int bTemp /* True if SQL is from temp schema */
+ int bTemp, /* True if SQL is from temp schema */
+ const char *zDropColumn /* Name of column being dropped */
){
int rc;
char *zErr = 0;
db->init.iDb = bTemp ? 1 : sqlite3FindDbName(db, zDb);
+ if( zDropColumn ){
+ db->init.bDropColumn = 1;
+ db->init.azInit = (char**)&zDropColumn;
+ }
/* Parse the SQL statement passed as the first argument. If no error
** occurs and the parse does not result in a new table, index or
@@ -1115,6 +1092,7 @@
#endif
db->init.iDb = 0;
+ db->init.bDropColumn = 0;
return rc;
}
@@ -1138,72 +1116,47 @@
int nSql = sqlite3Strlen30(zSql);
sqlite3 *db = sqlite3_context_db_handle(pCtx);
int rc = SQLITE_OK;
- char *zQuot = 0;
+ char *zQuot;
char *zOut;
- int nQuot = 0;
- char *zBuf1 = 0;
- char *zBuf2 = 0;
-
- if( zNew ){
- /* Set zQuot to point to a buffer containing a quoted copy of the
- ** identifier zNew. If the corresponding identifier in the original
- ** ALTER TABLE statement was quoted (bQuote==1), then set zNew to
- ** point to zQuot so that all substitutions are made using the
- ** quoted version of the new column name. */
- zQuot = sqlite3MPrintf(db, "\"%w\" ", zNew);
- if( zQuot==0 ){
- return SQLITE_NOMEM;
- }else{
- nQuot = sqlite3Strlen30(zQuot)-1;
- }
+ int nQuot;
- assert( nQuot>=nNew );
- zOut = sqlite3DbMallocZero(db, nSql + pRename->nList*nQuot + 1);
+ /* Set zQuot to point to a buffer containing a quoted copy of the
+ ** identifier zNew. If the corresponding identifier in the original
+ ** ALTER TABLE statement was quoted (bQuote==1), then set zNew to
+ ** point to zQuot so that all substitutions are made using the
+ ** quoted version of the new column name. */
+ zQuot = sqlite3MPrintf(db, "\"%w\"", zNew);
+ if( zQuot==0 ){
+ return SQLITE_NOMEM;
}else{
- zOut = (char*)sqlite3DbMallocZero(db, (nSql*2+1) * 3);
- if( zOut ){
- zBuf1 = &zOut[nSql*2+1];
- zBuf2 = &zOut[nSql*4+2];
- }
+ nQuot = sqlite3Strlen30(zQuot);
+ }
+ if( bQuote ){
+ zNew = zQuot;
+ nNew = nQuot;
}
/* At this point pRename->pList contains a list of RenameToken objects
** corresponding to all tokens in the input SQL that must be replaced
- ** with the new column name, or with single-quoted versions of themselves.
- ** All that remains is to construct and return the edited SQL string. */
+ ** with the new column name. All that remains is to construct and
+ ** return the edited SQL string. */
+ assert( nQuot>=nNew );
+ zOut = sqlite3DbMallocZero(db, nSql + pRename->nList*nQuot + 1);
if( zOut ){
int nOut = nSql;
memcpy(zOut, zSql, nSql);
while( pRename->pList ){
int iOff; /* Offset of token to replace in zOut */
- u32 nReplace;
- const char *zReplace;
RenameToken *pBest = renameColumnTokenNext(pRename);
- if( zNew ){
- if( bQuote==0 && sqlite3IsIdChar(*pBest->t.z) ){
- nReplace = nNew;
- zReplace = zNew;
- }else{
- nReplace = nQuot;
- zReplace = zQuot;
- if( pBest->t.z[pBest->t.n]=='"' ) nReplace++;
- }
+ u32 nReplace;
+ const char *zReplace;
+ if( sqlite3IsIdChar(*pBest->t.z) ){
+ nReplace = nNew;
+ zReplace = zNew;
}else{
- /* Dequote the double-quoted token. Then requote it again, this time
- ** using single quotes. If the character immediately following the
- ** original token within the input SQL was a single quote ('), then
- ** add another space after the new, single-quoted version of the
- ** token. This is so that (SELECT "string"'alias') maps to
- ** (SELECT 'string' 'alias'), and not (SELECT 'string''alias'). */
- memcpy(zBuf1, pBest->t.z, pBest->t.n);
- zBuf1[pBest->t.n] = 0;
- sqlite3Dequote(zBuf1);
- sqlite3_snprintf(nSql*2, zBuf2, "%Q%s", zBuf1,
- pBest->t.z[pBest->t.n]=='\'' ? " " : ""
- );
- zReplace = zBuf2;
- nReplace = sqlite3Strlen30(zReplace);
+ nReplace = nQuot;
+ zReplace = zQuot;
}
iOff = pBest->t.z - zSql;
@@ -1441,7 +1394,7 @@
#ifndef SQLITE_OMIT_AUTHORIZATION
db->xAuth = 0;
#endif
- rc = renameParseSql(&sParse, zDb, db, zSql, bTemp);
+ rc = renameParseSql(&sParse, zDb, db, zSql, bTemp, 0);
/* Find tokens that need to be replaced. */
memset(&sWalker, 0, sizeof(Walker));
@@ -1645,7 +1598,7 @@
sWalker.xSelectCallback = renameTableSelectCb;
sWalker.u.pRename = &sCtx;
- rc = renameParseSql(&sParse, zDb, db, zInput, bTemp);
+ rc = renameParseSql(&sParse, zDb, db, zInput, bTemp, 0);
if( rc==SQLITE_OK ){
int isLegacy = (db->flags & SQLITE_LegacyAlter);
@@ -1748,119 +1701,6 @@
return;
}
-static int renameQuotefixExprCb(Walker *pWalker, Expr *pExpr){
- if( pExpr->op==TK_STRING && (pExpr->flags & EP_DblQuoted) ){
- renameTokenFind(pWalker->pParse, pWalker->u.pRename, (void*)pExpr);
- }
- return WRC_Continue;
-}
-
-/*
-** The implementation of an SQL scalar function that rewrites DDL statements
-** so that any string literals that use double-quotes are modified so that
-** they use single quotes.
-**
-** Two arguments must be passed:
-**
-** 0: Database name ("main", "temp" etc.).
-** 1: SQL statement to edit.
-**
-** The returned value is the modified SQL statement. For example, given
-** the database schema:
-**
-** CREATE TABLE t1(a, b, c);
-**
-** SELECT sqlite_rename_quotefix('main',
-** 'CREATE VIEW v1 AS SELECT "a", "string" FROM t1'
-** );
-**
-** returns the string:
-**
-** CREATE VIEW v1 AS SELECT "a", 'string' FROM t1
-*/
-static void renameQuotefixFunc(
- sqlite3_context *context,
- int NotUsed,
- sqlite3_value **argv
-){
- sqlite3 *db = sqlite3_context_db_handle(context);
- char const *zDb = (const char*)sqlite3_value_text(argv[0]);
- char const *zInput = (const char*)sqlite3_value_text(argv[1]);
-
-#ifndef SQLITE_OMIT_AUTHORIZATION
- sqlite3_xauth xAuth = db->xAuth;
- db->xAuth = 0;
-#endif
-
- sqlite3BtreeEnterAll(db);
-
- UNUSED_PARAMETER(NotUsed);
- if( zDb && zInput ){
- int rc;
- Parse sParse;
- rc = renameParseSql(&sParse, zDb, db, zInput, 0);
-
- if( rc==SQLITE_OK ){
- RenameCtx sCtx;
- Walker sWalker;
-
- /* Walker to find tokens that need to be replaced. */
- memset(&sCtx, 0, sizeof(RenameCtx));
- memset(&sWalker, 0, sizeof(Walker));
- sWalker.pParse = &sParse;
- sWalker.xExprCallback = renameQuotefixExprCb;
- sWalker.xSelectCallback = renameColumnSelectCb;
- sWalker.u.pRename = &sCtx;
-
- if( sParse.pNewTable ){
- Select *pSelect = sParse.pNewTable->pSelect;
- if( pSelect ){
- pSelect->selFlags &= ~SF_View;
- sParse.rc = SQLITE_OK;
- sqlite3SelectPrep(&sParse, pSelect, 0);
- rc = (db->mallocFailed ? SQLITE_NOMEM : sParse.rc);
- if( rc==SQLITE_OK ){
- sqlite3WalkSelect(&sWalker, pSelect);
- }
- }else{
- int i;
- sqlite3WalkExprList(&sWalker, sParse.pNewTable->pCheck);
-#ifndef SQLITE_OMIT_GENERATED_COLUMNS
- for(i=0; inCol; i++){
- sqlite3WalkExpr(&sWalker, sParse.pNewTable->aCol[i].pDflt);
- }
-#endif /* SQLITE_OMIT_GENERATED_COLUMNS */
- }
- }else if( sParse.pNewIndex ){
- sqlite3WalkExprList(&sWalker, sParse.pNewIndex->aColExpr);
- sqlite3WalkExpr(&sWalker, sParse.pNewIndex->pPartIdxWhere);
- }else{
-#ifndef SQLITE_OMIT_TRIGGER
- rc = renameResolveTrigger(&sParse);
- if( rc==SQLITE_OK ){
- renameWalkTrigger(&sWalker, sParse.pNewTrigger);
- }
-#endif /* SQLITE_OMIT_TRIGGER */
- }
-
- if( rc==SQLITE_OK ){
- rc = renameEditSql(context, &sCtx, zInput, 0, 0);
- }
- renameTokenFree(db, sCtx.pList);
- }
- if( rc!=SQLITE_OK ){
- sqlite3_result_error_code(context, rc);
- }
- renameParseCleanup(&sParse);
- }
-
-#ifndef SQLITE_OMIT_AUTHORIZATION
- db->xAuth = xAuth;
-#endif
-
- sqlite3BtreeLeaveAll(db);
-}
-
/*
** An SQL user function that checks that there are no parse or symbol
** resolution problems in a CREATE TRIGGER|TABLE|VIEW|INDEX statement.
@@ -1874,7 +1714,7 @@
** 3: Object name.
** 4: True if object is from temp schema.
** 5: "when" part of error message.
-** 6: True to disable the DQS quirk when parsing SQL.
+** 6: Name of column being dropped, or NULL.
**
** Unless it finds an error, this function normally returns NULL. However, it
** returns integer value 1 if:
@@ -1893,7 +1733,7 @@
int bTemp = sqlite3_value_int(argv[4]);
int isLegacy = (db->flags & SQLITE_LegacyAlter);
char const *zWhen = (const char*)sqlite3_value_text(argv[5]);
- int bNoDQS = sqlite3_value_int(argv[6]);
+ char const *zDropColumn = (const char*)sqlite3_value_text(argv[6]);
#ifndef SQLITE_OMIT_AUTHORIZATION
sqlite3_xauth xAuth = db->xAuth;
@@ -1901,14 +1741,10 @@
#endif
UNUSED_PARAMETER(NotUsed);
-
if( zDb && zInput ){
int rc;
Parse sParse;
- int flags = db->flags;
- if( bNoDQS ) db->flags &= ~(SQLITE_DqsDML|SQLITE_DqsDDL);
- rc = renameParseSql(&sParse, zDb, db, zInput, bTemp);
- db->flags |= (flags & (SQLITE_DqsDML|SQLITE_DqsDDL));
+ rc = renameParseSql(&sParse, zDb, db, zInput, bTemp, zDropColumn);
if( rc==SQLITE_OK ){
if( isLegacy==0 && sParse.pNewTable && sParse.pNewTable->pSelect ){
NameContext sNC;
@@ -1976,7 +1812,7 @@
#endif
UNUSED_PARAMETER(NotUsed);
- rc = renameParseSql(&sParse, zDb, db, zSql, iSchema==1);
+ rc = renameParseSql(&sParse, zDb, db, zSql, iSchema==1, 0);
if( rc!=SQLITE_OK ) goto drop_column_done;
pTab = sParse.pNewTable;
if( pTab==0 || pTab->nCol==1 || iCol>=pTab->nCol ){
@@ -2070,7 +1906,6 @@
assert( iDb>=0 );
zDb = db->aDb[iDb].zDbSName;
renameTestSchema(pParse, zDb, iDb==1, "", 0);
- renameFixQuotes(pParse, zDb, iDb==1);
sqlite3NestedParse(pParse,
"UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
"sql = sqlite_drop_column(%d, sql, %d) "
@@ -2080,7 +1915,7 @@
/* Drop and reload the database schema. */
renameReloadSchema(pParse, iDb, INITFLAG_AlterDrop);
- renameTestSchema(pParse, zDb, iDb==1, "after drop column", 1);
+ renameTestSchema(pParse, zDb, iDb==1, "after drop column", zCol);
/* Edit rows of table on disk */
if( pParse->nErr==0 && (pTab->aCol[iCol].colFlags & COLFLAG_VIRTUAL)==0 ){
@@ -2142,7 +1977,6 @@
INTERNAL_FUNCTION(sqlite_rename_table, 7, renameTableFunc),
INTERNAL_FUNCTION(sqlite_rename_test, 7, renameTableTest),
INTERNAL_FUNCTION(sqlite_drop_column, 3, dropColumnFunc),
- INTERNAL_FUNCTION(sqlite_rename_quotefix,2, renameQuotefixFunc),
};
sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs));
}
diff -Nru sqlite3-3.35.0/src/build.c sqlite3-3.35.0-1/src/build.c
--- sqlite3-3.35.0/src/build.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/build.c 2021-04-04 17:23:21.000000000 +0000
@@ -4263,7 +4263,7 @@
pIndex = sqlite3FindIndex(db, pName->a[0].zName, pName->a[0].zDatabase);
if( pIndex==0 ){
if( !ifExists ){
- sqlite3ErrorMsg(pParse, "no such index: %S", pName->a);
+ sqlite3ErrorMsg(pParse, "no such index: %S", pName, 0);
}else{
sqlite3CodeVerifyNamedSchema(pParse, pName->a[0].zDatabase);
}
diff -Nru sqlite3-3.35.0/src/expr.c sqlite3-3.35.0-1/src/expr.c
--- sqlite3-3.35.0/src/expr.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/expr.c 2021-04-04 17:23:21.000000000 +0000
@@ -611,7 +611,6 @@
int regLeft = 0;
int regRight = 0;
u8 opx = op;
- int addrCmp = 0;
int addrDone = sqlite3VdbeMakeLabel(pParse);
int isCommuted = ExprHasProperty(pExpr,EP_Commuted);
@@ -631,24 +630,21 @@
assert( p5==0 || pExpr->op!=op );
assert( p5==SQLITE_NULLEQ || pExpr->op==op );
- if( op==TK_LE ) opx = TK_LT;
- if( op==TK_GE ) opx = TK_GT;
- if( op==TK_NE ) opx = TK_EQ;
+ p5 |= SQLITE_STOREP2;
+ if( opx==TK_LE ) opx = TK_LT;
+ if( opx==TK_GE ) opx = TK_GT;
regLeft = exprCodeSubselect(pParse, pLeft);
regRight = exprCodeSubselect(pParse, pRight);
- sqlite3VdbeAddOp2(v, OP_Integer, 1, dest);
for(i=0; 1 /*Loop exits by "break"*/; i++){
int regFree1 = 0, regFree2 = 0;
Expr *pL, *pR;
int r1, r2;
assert( i>=0 && i0
@@ -1504,7 +1494,6 @@
pNew = sqlite3DbMallocRawNN(db, sqlite3DbMallocSize(db, p));
if( pNew==0 ) return 0;
pNew->nExpr = p->nExpr;
- pNew->nAlloc = p->nAlloc;
pItem = pNew->a;
pOldItem = p->a;
for(i=0; inExpr; i++, pItem++, pOldItem++){
@@ -1677,64 +1666,41 @@
** NULL is returned. If non-NULL is returned, then it is guaranteed
** that the new entry was successfully appended.
*/
-static const struct ExprList_item zeroItem;
-SQLITE_NOINLINE ExprList *sqlite3ExprListAppendNew(
- sqlite3 *db, /* Database handle. Used for memory allocation */
- Expr *pExpr /* Expression to be appended. Might be NULL */
-){
- struct ExprList_item *pItem;
- ExprList *pList;
-
- pList = sqlite3DbMallocRawNN(db, sizeof(ExprList)+sizeof(pList->a[0])*4 );
- if( pList==0 ){
- sqlite3ExprDelete(db, pExpr);
- return 0;
- }
- pList->nAlloc = 4;
- pList->nExpr = 1;
- pItem = &pList->a[0];
- *pItem = zeroItem;
- pItem->pExpr = pExpr;
- return pList;
-}
-SQLITE_NOINLINE ExprList *sqlite3ExprListAppendGrow(
- sqlite3 *db, /* Database handle. Used for memory allocation */
- ExprList *pList, /* List to which to append. Might be NULL */
- Expr *pExpr /* Expression to be appended. Might be NULL */
-){
- struct ExprList_item *pItem;
- ExprList *pNew;
- pList->nAlloc *= 2;
- pNew = sqlite3DbRealloc(db, pList,
- sizeof(*pList)+(pList->nAlloc-1)*sizeof(pList->a[0]));
- if( pNew==0 ){
- sqlite3ExprListDelete(db, pList);
- sqlite3ExprDelete(db, pExpr);
- return 0;
- }else{
- pList = pNew;
- }
- pItem = &pList->a[pList->nExpr++];
- *pItem = zeroItem;
- pItem->pExpr = pExpr;
- return pList;
-}
ExprList *sqlite3ExprListAppend(
Parse *pParse, /* Parsing context */
ExprList *pList, /* List to which to append. Might be NULL */
Expr *pExpr /* Expression to be appended. Might be NULL */
){
struct ExprList_item *pItem;
+ sqlite3 *db = pParse->db;
+ assert( db!=0 );
if( pList==0 ){
- return sqlite3ExprListAppendNew(pParse->db,pExpr);
- }
- if( pList->nAllocnExpr+1 ){
- return sqlite3ExprListAppendGrow(pParse->db,pList,pExpr);
+ pList = sqlite3DbMallocRawNN(db, sizeof(ExprList) );
+ if( pList==0 ){
+ goto no_mem;
+ }
+ pList->nExpr = 0;
+ }else if( (pList->nExpr & (pList->nExpr-1))==0 ){
+ ExprList *pNew;
+ pNew = sqlite3DbRealloc(db, pList,
+ sizeof(*pList)+(2*(sqlite3_int64)pList->nExpr-1)*sizeof(pList->a[0]));
+ if( pNew==0 ){
+ goto no_mem;
+ }
+ pList = pNew;
}
pItem = &pList->a[pList->nExpr++];
- *pItem = zeroItem;
+ assert( offsetof(struct ExprList_item,zEName)==sizeof(pItem->pExpr) );
+ assert( offsetof(struct ExprList_item,pExpr)==0 );
+ memset(&pItem->zEName,0,sizeof(*pItem)-offsetof(struct ExprList_item,zEName));
pItem->pExpr = pExpr;
return pList;
+
+no_mem:
+ /* Avoid leaking memory if malloc has failed. */
+ sqlite3ExprDelete(db, pExpr);
+ sqlite3ExprListDelete(db, pList);
+ return 0;
}
/*
@@ -4080,9 +4046,8 @@
}else{
r1 = sqlite3ExprCodeTemp(pParse, pLeft, ®Free1);
r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, ®Free2);
- sqlite3VdbeAddOp2(v, OP_Integer, 1, inReg);
- codeCompare(pParse, pLeft, pExpr->pRight, op, r1, r2,
- sqlite3VdbeCurrentAddr(v)+2, p5,
+ codeCompare(pParse, pLeft, pExpr->pRight, op,
+ r1, r2, inReg, SQLITE_STOREP2 | p5,
ExprHasProperty(pExpr,EP_Commuted));
assert(TK_LT==OP_Lt); testcase(op==OP_Lt); VdbeCoverageIf(v,op==OP_Lt);
assert(TK_LE==OP_Le); testcase(op==OP_Le); VdbeCoverageIf(v,op==OP_Le);
@@ -4090,11 +4055,6 @@
assert(TK_GE==OP_Ge); testcase(op==OP_Ge); VdbeCoverageIf(v,op==OP_Ge);
assert(TK_EQ==OP_Eq); testcase(op==OP_Eq); VdbeCoverageIf(v,op==OP_Eq);
assert(TK_NE==OP_Ne); testcase(op==OP_Ne); VdbeCoverageIf(v,op==OP_Ne);
- if( p5==SQLITE_NULLEQ ){
- sqlite3VdbeAddOp2(v, OP_Integer, 0, inReg);
- }else{
- sqlite3VdbeAddOp3(v, OP_ZeroOrNull, r1, inReg, r2);
- }
testcase( regFree1==0 );
testcase( regFree2==0 );
}
diff -Nru sqlite3-3.35.0/src/global.c sqlite3-3.35.0-1/src/global.c
--- sqlite3-3.35.0/src/global.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/global.c 2021-04-04 17:23:21.000000000 +0000
@@ -37,7 +37,7 @@
198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,
234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,
- 252,253,254,255,
+ 252,253,254,255
#endif
#ifdef SQLITE_EBCDIC
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /* 0x */
@@ -57,35 +57,7 @@
224,225,162,163,164,165,166,167,168,169,234,235,236,237,238,239, /* Ex */
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255, /* Fx */
#endif
-/* All of the upper-to-lower conversion data is above. The following
-** 18 integers are completely unrelated. They are appended to the
-** sqlite3UpperToLower[] array to avoid UBSAN warnings. Here's what is
-** going on:
-**
-** The SQL comparison operators (<>, =, >, <=, <, and >=) are implemented
-** by invoking sqlite3MemCompare(A,B) which compares values A and B and
-** returns negative, zero, or positive if A is less then, equal to, or
-** greater than B, respectively. Then the true false results is found by
-** consulting sqlite3aLTb[opcode], sqlite3aEQb[opcode], or
-** sqlite3aGTb[opcode] depending on whether the result of compare(A,B)
-** is negative, zero, or positive, where opcode is the specific opcode.
-** The only works because the comparison opcodes are consecutive and in
-** this order: NE EQ GT LE LT GE. Various assert()s throughout the code
-** ensure that is the case.
-**
-** These elements must be appended to another array. Otherwise the
-** index (here shown as [256-OP_Ne]) would be out-of-bounds and thus
-** be undefined behavior. That's goofy, but the C-standards people thought
-** it was a good idea, so here we are.
-*/
-/* NE EQ GT LE LT GE */
- 1, 0, 0, 1, 1, 0, /* aLTb[]: Use when compare(A,B) less than zero */
- 0, 1, 0, 1, 0, 1, /* aEQb[]: Use when compare(A,B) equals zero */
- 1, 0, 1, 0, 0, 1 /* aGTb[]: Use when compare(A,B) greater than zero*/
};
-const unsigned char *sqlite3aLTb = &sqlite3UpperToLower[256-OP_Ne];
-const unsigned char *sqlite3aEQb = &sqlite3UpperToLower[256+6-OP_Ne];
-const unsigned char *sqlite3aGTb = &sqlite3UpperToLower[256+12-OP_Ne];
/*
** The following 256 byte lookup table is used to support SQLites built-in
diff -Nru sqlite3-3.35.0/src/insert.c sqlite3-3.35.0-1/src/insert.c
--- sqlite3-3.35.0/src/insert.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/insert.c 2021-04-04 17:23:21.000000000 +0000
@@ -817,7 +817,7 @@
bIdListInOrder = 0;
}else{
sqlite3ErrorMsg(pParse, "table %S has no column named %s",
- pTabList->a, pColumn->a[i].zName);
+ pTabList, 0, pColumn->a[i].zName);
pParse->checkSchema = 1;
goto insert_cleanup;
}
@@ -945,7 +945,7 @@
if( nColumn!=(pTab->nCol-nHidden) ){
sqlite3ErrorMsg(pParse,
"table %S has %d columns but %d values were supplied",
- pTabList->a, pTab->nCol-nHidden, nColumn);
+ pTabList, 0, pTab->nCol-nHidden, nColumn);
goto insert_cleanup;
}
}
diff -Nru sqlite3-3.35.0/src/os_unix.c sqlite3-3.35.0-1/src/os_unix.c
--- sqlite3-3.35.0/src/os_unix.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/os_unix.c 2021-04-04 17:23:21.000000000 +0000
@@ -3951,7 +3951,6 @@
/* Forward declaration */
static int unixGetTempname(int nBuf, char *zBuf);
-static int unixFcntlExternalReader(unixFile*, int*);
/*
** Information and control of an open file handle.
@@ -4068,10 +4067,6 @@
return proxyFileControl(id,op,pArg);
}
#endif /* SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__) */
-
- case SQLITE_FCNTL_EXTERNAL_READER: {
- return unixFcntlExternalReader((unixFile*)id, (int*)pArg);
- }
}
return SQLITE_NOTFOUND;
}
@@ -4318,40 +4313,6 @@
#define UNIX_SHM_DMS (UNIX_SHM_BASE+SQLITE_SHM_NLOCK) /* deadman switch */
/*
-** Use F_GETLK to check whether or not there are any readers with open
-** wal-mode transactions in other processes on database file pFile. If
-** no error occurs, return SQLITE_OK and set (*piOut) to 1 if there are
-** such transactions, or 0 otherwise. If an error occurs, return an
-** SQLite error code. The final value of *piOut is undefined in this
-** case.
-*/
-static int unixFcntlExternalReader(unixFile *pFile, int *piOut){
- int rc = SQLITE_OK;
- *piOut = 0;
- if( pFile->pShm){
- unixShmNode *pShmNode = pFile->pShm->pShmNode;
- struct flock f;
-
- memset(&f, 0, sizeof(f));
- f.l_type = F_WRLCK;
- f.l_whence = SEEK_SET;
- f.l_start = UNIX_SHM_BASE + 3;
- f.l_len = SQLITE_SHM_NLOCK - 3;
-
- sqlite3_mutex_enter(pShmNode->pShmMutex);
- if( osFcntl(pShmNode->hShm, F_GETLK, &f)<0 ){
- rc = SQLITE_IOERR_LOCK;
- }else{
- *piOut = (f.l_type!=F_UNLCK);
- }
- sqlite3_mutex_leave(pShmNode->pShmMutex);
- }
-
- return rc;
-}
-
-
-/*
** Apply posix advisory locks for all bytes from ofst through ofst+n-1.
**
** Locks block if the mask is exactly UNIX_SHM_C and are non-blocking
diff -Nru sqlite3-3.35.0/src/printf.c sqlite3-3.35.0-1/src/printf.c
--- sqlite3-3.35.0/src/printf.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/printf.c 2021-04-04 17:23:21.000000000 +0000
@@ -29,7 +29,7 @@
#define etSQLESCAPE2 10 /* Strings with '\'' doubled and enclosed in '',
NULL pointers replaced by SQL NULL. %Q */
#define etTOKEN 11 /* a pointer to a Token structure */
-#define etSRCITEM 12 /* a pointer to a SrcItem */
+#define etSRCLIST 12 /* a pointer to a SrcList */
#define etPOINTER 13 /* The %p conversion */
#define etSQLESCAPE3 14 /* %w -> Strings with '\"' doubled */
#define etORDINAL 15 /* %r -> 1st, 2nd, 3rd, 4th, etc. English only */
@@ -95,16 +95,10 @@
/* All the rest are undocumented and are for internal use only */
{ 'T', 0, 0, etTOKEN, 0, 0 },
- { 'S', 0, 0, etSRCITEM, 0, 0 },
+ { 'S', 0, 0, etSRCLIST, 0, 0 },
{ 'r', 10, 1, etORDINAL, 0, 0 },
};
-/* Notes:
-**
-** %S Takes a pointer to SrcItem. Shows name or database.name
-** %!S Like %S but prefer the zName over the zAlias
-*/
-
/* Floating point constants used for rounding */
static const double arRound[] = {
5.0e-01, 5.0e-02, 5.0e-03, 5.0e-04, 5.0e-05,
@@ -859,24 +853,21 @@
length = width = 0;
break;
}
- case etSRCITEM: {
+ case etSRCLIST: {
+ SrcList *pSrc;
+ int k;
SrcItem *pItem;
if( (pAccum->printfFlags & SQLITE_PRINTF_INTERNAL)==0 ) return;
- pItem = va_arg(ap, SrcItem*);
+ pSrc = va_arg(ap, SrcList*);
+ k = va_arg(ap, int);
+ pItem = &pSrc->a[k];
assert( bArgList==0 );
- if( pItem->zAlias && !flag_altform2 ){
- sqlite3_str_appendall(pAccum, pItem->zAlias);
- }else if( pItem->zName ){
- if( pItem->zDatabase ){
- sqlite3_str_appendall(pAccum, pItem->zDatabase);
- sqlite3_str_append(pAccum, ".", 1);
- }
- sqlite3_str_appendall(pAccum, pItem->zName);
- }else if( pItem->zAlias ){
- sqlite3_str_appendall(pAccum, pItem->zAlias);
- }else if( ALWAYS(pItem->pSelect) ){
- sqlite3_str_appendf(pAccum, "SUBQUERY %u", pItem->pSelect->selId);
+ assert( k>=0 && knSrc );
+ if( pItem->zDatabase ){
+ sqlite3_str_appendall(pAccum, pItem->zDatabase);
+ sqlite3_str_append(pAccum, ".", 1);
}
+ sqlite3_str_appendall(pAccum, pItem->zName);
length = width = 0;
break;
}
diff -Nru sqlite3-3.35.0/src/resolve.c sqlite3-3.35.0-1/src/resolve.c
--- sqlite3-3.35.0/src/resolve.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/resolve.c 2021-04-04 17:23:21.000000000 +0000
@@ -563,6 +563,7 @@
assert( pExpr->op==TK_ID );
if( ExprHasProperty(pExpr,EP_DblQuoted)
&& areDoubleQuotedStringsEnabled(db, pTopNC)
+ && (db->init.bDropColumn==0 || sqlite3StrICmp(zCol, db->init.azInit[0])!=0)
){
/* If a double-quoted identifier does not match any known column name,
** then treat it as a string.
@@ -577,6 +578,11 @@
** Someday, I hope to get rid of this hack. Unfortunately there is
** a huge amount of legacy SQL that uses it. So for now, we just
** issue a warning.
+ **
+ ** 2021-03-15: ticket 1c24a659e6d7f3a1
+ ** Do not do the ID-to-STRING conversion when doing the schema
+ ** sanity check following a DROP COLUMN if the identifer name matches
+ ** the name of the column being dropped.
*/
sqlite3_log(SQLITE_WARNING,
"double-quoted string literal: \"%w\"", zCol);
diff -Nru sqlite3-3.35.0/src/select.c sqlite3-3.35.0-1/src/select.c
--- sqlite3-3.35.0/src/select.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/select.c 2021-04-04 17:23:21.000000000 +0000
@@ -741,155 +741,31 @@
}
/*
-** Add code that will check to make sure the array of registers starting at
-** iMem form a distinct entry. This is used by both "SELECT DISTINCT ..." and
-** distinct aggregates ("SELECT count(DISTINCT ) ..."). Three strategies
-** are available. Which is used depends on the value of parameter eTnctType,
-** as follows:
-**
-** WHERE_DISTINCT_UNORDERED/WHERE_DISTINCT_NOOP:
-** Build an ephemeral table that contains all entries seen before and
-** skip entries which have been seen before.
-**
-** Parameter iTab is the cursor number of an ephemeral table that must
-** be opened before the VM code generated by this routine is executed.
-** The ephemeral cursor table is queried for a record identical to the
-** record formed by the current array of registers. If one is found,
-** jump to VM address addrRepeat. Otherwise, insert a new record into
-** the ephemeral cursor and proceed.
-**
-** The returned value in this case is a copy of parameter iTab.
-**
-** WHERE_DISTINCT_ORDERED:
-** In this case rows are being delivered sorted order. The ephermal
-** table is not required. Instead, the current set of values
-** is compared against previous row. If they match, the new row
-** is not distinct and control jumps to VM address addrRepeat. Otherwise,
-** the VM program proceeds with processing the new row.
-**
-** The returned value in this case is the register number of the first
-** in an array of registers used to store the previous result row so that
-** it can be compared to the next. The caller must ensure that this
-** register is initialized to NULL. (The fixDistinctOpenEph() routine
-** will take care of this initialization.)
-**
-** WHERE_DISTINCT_UNIQUE:
-** In this case it has already been determined that the rows are distinct.
-** No special action is required. The return value is zero.
-**
-** Parameter pEList is the list of expressions used to generated the
-** contents of each row. It is used by this routine to determine (a)
-** how many elements there are in the array of registers and (b) the
-** collation sequences that should be used for the comparisons if
-** eTnctType is WHERE_DISTINCT_ORDERED.
+** Add code that will check to make sure the N registers starting at iMem
+** form a distinct entry. iTab is a sorting index that holds previously
+** seen combinations of the N values. A new entry is made in iTab
+** if the current N values are new.
+**
+** A jump to addrRepeat is made and the N+1 values are popped from the
+** stack if the top N elements are not distinct.
*/
-static int codeDistinct(
+static void codeDistinct(
Parse *pParse, /* Parsing and code generating context */
- int eTnctType, /* WHERE_DISTINCT_* value */
int iTab, /* A sorting index used to test for distinctness */
int addrRepeat, /* Jump to here if not distinct */
- ExprList *pEList, /* Expression for each element */
- int regElem /* First element */
+ int N, /* Number of elements */
+ int iMem /* First element */
){
- int iRet = 0;
- int nResultCol = pEList->nExpr;
- Vdbe *v = pParse->pVdbe;
-
- switch( eTnctType ){
- case WHERE_DISTINCT_ORDERED: {
- int i;
- int iJump; /* Jump destination */
- int regPrev; /* Previous row content */
-
- /* Allocate space for the previous row */
- iRet = regPrev = pParse->nMem+1;
- pParse->nMem += nResultCol;
-
- iJump = sqlite3VdbeCurrentAddr(v) + nResultCol;
- for(i=0; ia[i].pExpr);
- if( idb->mallocFailed );
- sqlite3VdbeAddOp3(v, OP_Copy, regElem, regPrev, nResultCol-1);
- break;
- }
-
- case WHERE_DISTINCT_UNIQUE: {
- /* nothing to do */
- break;
- }
-
- default: {
- int r1 = sqlite3GetTempReg(pParse);
- sqlite3VdbeAddOp4Int(v, OP_Found, iTab, addrRepeat, regElem, nResultCol);
- VdbeCoverage(v);
- sqlite3VdbeAddOp3(v, OP_MakeRecord, regElem, nResultCol, r1);
- sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iTab, r1, regElem, nResultCol);
- sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
- sqlite3ReleaseTempReg(pParse, r1);
- iRet = iTab;
- break;
- }
- }
-
- return iRet;
-}
+ Vdbe *v;
+ int r1;
-/*
-** This routine runs after codeDistinct(). It makes necessary
-** adjustments to the OP_OpenEphemeral opcode that the codeDistinct()
-** routine made use of. This processing must be done separately since
-** sometimes codeDistinct is called before the OP_OpenEphemeral is actually
-** laid down.
-**
-** WHERE_DISTINCT_NOOP:
-** WHERE_DISTINCT_UNORDERED:
-**
-** No adjustments necessary. This function is a no-op.
-**
-** WHERE_DISTINCT_UNIQUE:
-**
-** The ephemeral table is not needed. So change the
-** OP_OpenEphemeral opcode into an OP_Noop.
-**
-** WHERE_DISTINCT_ORDERED:
-**
-** The ephemeral table is not needed. But we do need register
-** iVal to be initialized to NULL. So change the OP_OpenEphemeral
-** into an OP_Null on the iVal register.
-*/
-static void fixDistinctOpenEph(
- Parse *pParse, /* Parsing and code generating context */
- int eTnctType, /* WHERE_DISTINCT_* value */
- int iVal, /* Value returned by codeDistinct() */
- int iOpenEphAddr /* Address of OP_OpenEphemeral instruction for iTab */
-){
- if( eTnctType==WHERE_DISTINCT_UNIQUE || eTnctType==WHERE_DISTINCT_ORDERED ){
- Vdbe *v = pParse->pVdbe;
- sqlite3VdbeChangeToNoop(v, iOpenEphAddr);
- if( sqlite3VdbeGetOp(v, iOpenEphAddr+1)->opcode==OP_Explain ){
- sqlite3VdbeChangeToNoop(v, iOpenEphAddr+1);
- }
- if( eTnctType==WHERE_DISTINCT_ORDERED ){
- /* Change the OP_OpenEphemeral to an OP_Null that sets the MEM_Cleared
- ** bit on the first register of the previous value. This will cause the
- ** OP_Ne added in codeDistinct() to always fail on the first iteration of
- ** the loop even if the first row is all NULLs. */
- VdbeOp *pOp = sqlite3VdbeGetOp(v, iOpenEphAddr);
- pOp->opcode = OP_Null;
- pOp->p1 = 1;
- pOp->p2 = iVal;
- }
- }
+ v = pParse->pVdbe;
+ r1 = sqlite3GetTempReg(pParse);
+ sqlite3VdbeAddOp4Int(v, OP_Found, iTab, addrRepeat, iMem, N); VdbeCoverage(v);
+ sqlite3VdbeAddOp3(v, OP_MakeRecord, iMem, N, r1);
+ sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iTab, r1, iMem, N);
+ sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
+ sqlite3ReleaseTempReg(pParse, r1);
}
#ifdef SQLITE_ENABLE_SORTER_REFERENCES
@@ -1137,11 +1013,59 @@
** part of the result.
*/
if( hasDistinct ){
- int eType = pDistinct->eTnctType;
- int iTab = pDistinct->tabTnct;
- assert( nResultCol==p->pEList->nExpr );
- iTab = codeDistinct(pParse, eType, iTab, iContinue, p->pEList, regResult);
- fixDistinctOpenEph(pParse, eType, iTab, pDistinct->addrTnct);
+ switch( pDistinct->eTnctType ){
+ case WHERE_DISTINCT_ORDERED: {
+ VdbeOp *pOp; /* No longer required OpenEphemeral instr. */
+ int iJump; /* Jump destination */
+ int regPrev; /* Previous row content */
+
+ /* Allocate space for the previous row */
+ regPrev = pParse->nMem+1;
+ pParse->nMem += nResultCol;
+
+ /* Change the OP_OpenEphemeral coded earlier to an OP_Null
+ ** sets the MEM_Cleared bit on the first register of the
+ ** previous value. This will cause the OP_Ne below to always
+ ** fail on the first iteration of the loop even if the first
+ ** row is all NULLs.
+ */
+ sqlite3VdbeChangeToNoop(v, pDistinct->addrTnct);
+ pOp = sqlite3VdbeGetOp(v, pDistinct->addrTnct);
+ pOp->opcode = OP_Null;
+ pOp->p1 = 1;
+ pOp->p2 = regPrev;
+ pOp = 0; /* Ensure pOp is not used after sqlite3VdbeAddOp() */
+
+ iJump = sqlite3VdbeCurrentAddr(v) + nResultCol;
+ for(i=0; ipEList->a[i].pExpr);
+ if( idb->mallocFailed );
+ sqlite3VdbeAddOp3(v, OP_Copy, regResult, regPrev, nResultCol-1);
+ break;
+ }
+
+ case WHERE_DISTINCT_UNIQUE: {
+ sqlite3VdbeChangeToNoop(v, pDistinct->addrTnct);
+ break;
+ }
+
+ default: {
+ assert( pDistinct->eTnctType==WHERE_DISTINCT_UNORDERED );
+ codeDistinct(pParse, pDistinct->tabTnct, iContinue, nResultCol,
+ regResult);
+ break;
+ }
+ }
if( pSort==0 ){
codeOffset(v, p->iOffset, iContinue);
}
@@ -5721,10 +5645,8 @@
pFunc->iDistinct = -1;
}else{
KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pE->x.pList,0,0);
- pFunc->iDistAddr = sqlite3VdbeAddOp4(v, OP_OpenEphemeral,
- pFunc->iDistinct, 0, 0, (char*)pKeyInfo, P4_KEYINFO);
- ExplainQueryPlan((pParse, 0, "USE TEMP B-TREE FOR %s(DISTINCT)",
- pFunc->pFunc->zName));
+ sqlite3VdbeAddOp4(v, OP_OpenEphemeral, pFunc->iDistinct, 0, 0,
+ (char*)pKeyInfo, P4_KEYINFO);
}
}
}
@@ -5756,12 +5678,7 @@
** registers if register regAcc contains 0. The caller will take care
** of setting and clearing regAcc.
*/
-static void updateAccumulator(
- Parse *pParse,
- int regAcc,
- AggInfo *pAggInfo,
- int eDistinctType
-){
+static void updateAccumulator(Parse *pParse, int regAcc, AggInfo *pAggInfo){
Vdbe *v = pParse->pVdbe;
int i;
int regHit = 0;
@@ -5807,12 +5724,13 @@
nArg = 0;
regAgg = 0;
}
- if( pF->iDistinct>=0 && pList ){
+ if( pF->iDistinct>=0 ){
if( addrNext==0 ){
addrNext = sqlite3VdbeMakeLabel(pParse);
}
- pF->iDistinct = codeDistinct(pParse, eDistinctType,
- pF->iDistinct, addrNext, pList, regAgg);
+ testcase( nArg==0 ); /* Error condition */
+ testcase( nArg>1 ); /* Also an error */
+ codeDistinct(pParse, pF->iDistinct, addrNext, 1, regAgg);
}
if( pF->pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL ){
CollSeq *pColl = 0;
@@ -5864,7 +5782,7 @@
){
if( pParse->explain==2 ){
int bCover = (pIdx!=0 && (HasRowid(pTab) || !IsPrimaryKeyIndex(pIdx)));
- sqlite3VdbeExplain(pParse, 0, "SCAN %s%s%s",
+ sqlite3VdbeExplain(pParse, 0, "SCAN TABLE %s%s%s",
pTab->zName,
bCover ? " USING COVERING INDEX " : "",
bCover ? pIdx->zName : ""
@@ -6437,10 +6355,10 @@
pItem->regReturn = ++pParse->nMem;
sqlite3VdbeAddOp3(v, OP_InitCoroutine, pItem->regReturn, 0, addrTop);
- VdbeComment((v, "%!S", pItem));
+ VdbeComment((v, "%s", pItem->pTab->zName));
pItem->addrFillSub = addrTop;
sqlite3SelectDestInit(&dest, SRT_Coroutine, pItem->regReturn);
- ExplainQueryPlan((pParse, 1, "CO-ROUTINE %!S", pItem));
+ ExplainQueryPlan((pParse, 1, "CO-ROUTINE %u", pSub->selId));
sqlite3Select(pParse, pSub, &dest);
pItem->pTab->nRowLogEst = pSub->nSelectRow;
pItem->fg.viaCoroutine = 1;
@@ -6484,17 +6402,17 @@
** a trigger, then we only need to compute the value of the subquery
** once. */
onceAddr = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v);
- VdbeComment((v, "materialize %!S", pItem));
+ VdbeComment((v, "materialize \"%s\"", pItem->pTab->zName));
}else{
- VdbeNoopComment((v, "materialize %!S", pItem));
+ VdbeNoopComment((v, "materialize \"%s\"", pItem->pTab->zName));
}
sqlite3SelectDestInit(&dest, SRT_EphemTab, pItem->iCursor);
- ExplainQueryPlan((pParse, 1, "MATERIALIZE %!S", pItem));
+ ExplainQueryPlan((pParse, 1, "MATERIALIZE %u", pSub->selId));
sqlite3Select(pParse, pSub, &dest);
pItem->pTab->nRowLogEst = pSub->nSelectRow;
if( onceAddr ) sqlite3VdbeJumpHere(v, onceAddr);
retAddr = sqlite3VdbeAddOp1(v, OP_Return, pItem->regReturn);
- VdbeComment((v, "end %!S", pItem));
+ VdbeComment((v, "end %s", pItem->pTab->zName));
sqlite3VdbeChangeP1(v, topAddr, retAddr);
sqlite3ClearTempRegCache(pParse);
if( pItem->fg.isCte && pItem->fg.isCorrelated==0 ){
@@ -6844,20 +6762,6 @@
int addrSortingIdx; /* The OP_OpenEphemeral for the sorting index */
int addrReset; /* Subroutine for resetting the accumulator */
int regReset; /* Return address register for reset subroutine */
- ExprList *pDistinct = 0;
- u16 distFlag = 0;
- int eDist = WHERE_DISTINCT_NOOP;
-
- if( pAggInfo->nFunc==1
- && pAggInfo->aFunc[0].iDistinct>=0
- && pAggInfo->aFunc[0].pFExpr->x.pList
- ){
- Expr *pExpr = pAggInfo->aFunc[0].pFExpr->x.pList->a[0].pExpr;
- pExpr = sqlite3ExprDup(db, pExpr, 0);
- pDistinct = sqlite3ExprListDup(db, pGroupBy, 0);
- pDistinct = sqlite3ExprListAppend(pParse, pDistinct, pExpr);
- distFlag = pDistinct ? WHERE_WANT_DISTINCT : 0;
- }
/* If there is a GROUP BY clause we might need a sorting index to
** implement it. Allocate that sorting index now. If it turns out
@@ -6894,12 +6798,10 @@
*/
sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset);
SELECTTRACE(1,pParse,p,("WhereBegin\n"));
- pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pGroupBy, pDistinct,
- WHERE_GROUPBY | (orderByGrp ? WHERE_SORTBYGROUP : 0) | distFlag, 0
+ pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pGroupBy, 0,
+ WHERE_GROUPBY | (orderByGrp ? WHERE_SORTBYGROUP : 0), 0
);
- sqlite3ExprListDelete(db, pDistinct);
if( pWInfo==0 ) goto select_end;
- eDist = sqlite3WhereIsDistinct(pWInfo);
SELECTTRACE(1,pParse,p,("WhereBegin returns\n"));
if( sqlite3WhereIsOrdered(pWInfo)==pGroupBy->nExpr ){
/* The optimizer is able to deliver rows in group by order so
@@ -7017,7 +6919,7 @@
** the current row
*/
sqlite3VdbeJumpHere(v, addr1);
- updateAccumulator(pParse, iUseFlag, pAggInfo, eDist);
+ updateAccumulator(pParse, iUseFlag, pAggInfo);
sqlite3VdbeAddOp2(v, OP_Integer, 1, iUseFlag);
VdbeComment((v, "indicate data in accumulator"));
@@ -7073,11 +6975,7 @@
sqlite3VdbeAddOp2(v, OP_Integer, 0, iUseFlag);
VdbeComment((v, "indicate accumulator empty"));
sqlite3VdbeAddOp1(v, OP_Return, regReset);
-
- if( eDist!=WHERE_DISTINCT_NOOP ){
- struct AggInfo_func *pF = &pAggInfo->aFunc[0];
- fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr);
- }
+
} /* endif pGroupBy. Begin aggregate queries without GROUP BY: */
else {
Table *pTab;
@@ -7141,9 +7039,6 @@
explainSimpleCount(pParse, pTab, pBest);
}else{
int regAcc = 0; /* "populate accumulators" flag */
- ExprList *pDistinct = 0;
- u16 distFlag = 0;
- int eDist;
/* If there are accumulator registers but no min() or max() functions
** without FILTER clauses, allocate register regAcc. Register regAcc
@@ -7167,9 +7062,6 @@
regAcc = ++pParse->nMem;
sqlite3VdbeAddOp2(v, OP_Integer, 0, regAcc);
}
- }else if( pAggInfo->nFunc==1 && pAggInfo->aFunc[0].iDistinct>=0 ){
- pDistinct = pAggInfo->aFunc[0].pFExpr->x.pList;
- distFlag = pDistinct ? WHERE_WANT_DISTINCT : 0;
}
/* This case runs if the aggregate has no GROUP BY clause. The
@@ -7189,18 +7081,12 @@
SELECTTRACE(1,pParse,p,("WhereBegin\n"));
pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pMinMaxOrderBy,
- pDistinct, minMaxFlag|distFlag, 0);
+ 0, minMaxFlag, 0);
if( pWInfo==0 ){
goto select_end;
}
SELECTTRACE(1,pParse,p,("WhereBegin returns\n"));
- eDist = sqlite3WhereIsDistinct(pWInfo);
- updateAccumulator(pParse, regAcc, pAggInfo, eDist);
- if( eDist!=WHERE_DISTINCT_NOOP ){
- struct AggInfo_func *pF = &pAggInfo->aFunc[0];
- fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr);
- }
-
+ updateAccumulator(pParse, regAcc, pAggInfo);
if( regAcc ) sqlite3VdbeAddOp2(v, OP_Integer, 1, regAcc);
if( minMaxFlag ){
sqlite3WhereMinMaxOptEarlyOut(v, pWInfo);
diff -Nru sqlite3-3.35.0/src/shell.c.in sqlite3-3.35.0-1/src/shell.c.in
--- sqlite3-3.35.0/src/shell.c.in 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/shell.c.in 2021-04-04 17:23:21.000000000 +0000
@@ -5779,7 +5779,7 @@
" || fkey_collate_clause("
" f.[table], COALESCE(f.[to], p.[name]), s.name, f.[from]),' AND ')"
", "
- " 'SEARCH ' || s.name || ' USING COVERING INDEX*('"
+ " 'SEARCH TABLE ' || s.name || ' USING COVERING INDEX*('"
" || group_concat('*=?', ' AND ') || ')'"
", "
" s.name || '(' || group_concat(f.[from], ', ') || ')'"
@@ -5799,7 +5799,7 @@
"GROUP BY s.name, f.id "
"ORDER BY (CASE WHEN ? THEN f.[table] ELSE s.name END)"
;
- const char *zGlobIPK = "SEARCH * USING INTEGER PRIMARY KEY (rowid=?)";
+ const char *zGlobIPK = "SEARCH TABLE * USING INTEGER PRIMARY KEY (rowid=?)";
for(i=2; i
-**
-** [[SQLITE_FCNTL_EXTERNAL_READER]]
-** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
-** whether or not there is a database client in another process with a wal-mode
-** transaction open on the database or not. It is only available on unix.The
-** (void*) argument passed with this file-control should be a pointer to a
-** value of type (int). The integer value is set to 1 if the database is a wal
-** mode database and there exists at least one client in another process that
-** currently has an SQL transaction open on the database. It is set to 0 if
-** the database is not a wal-mode db, or if there is no such connection in any
-** other process. This opcode cannot be used to detect transactions opened
-** by clients within the current process, only within other processes.
-**
*/
#define SQLITE_FCNTL_LOCKSTATE 1
#define SQLITE_FCNTL_GET_LOCKPROXYFILE 2
@@ -1181,8 +1168,6 @@
#define SQLITE_FCNTL_RESERVE_BYTES 38
#define SQLITE_FCNTL_CKPT_START 39
-#define SQLITE_FCNTL_EXTERNAL_READER 40
-
/* deprecated names */
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
#define SQLITE_SET_LOCKPROXYFILE SQLITE_FCNTL_SET_LOCKPROXYFILE
diff -Nru sqlite3-3.35.0/src/sqliteInt.h sqlite3-3.35.0-1/src/sqliteInt.h
--- sqlite3-3.35.0/src/sqliteInt.h 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/sqliteInt.h 2021-04-04 17:23:21.000000000 +0000
@@ -1533,7 +1533,10 @@
unsigned orphanTrigger : 1; /* Last statement is orphaned TEMP trigger */
unsigned imposterTable : 1; /* Building an imposter table */
unsigned reopenMemdb : 1; /* ATTACH is really a reopen using MemDB */
+ unsigned bDropColumn : 1; /* Doing schema check after DROP COLUMN */
char **azInit; /* "type", "name", and "tbl_name" columns */
+ /* or if bDropColumn, then azInit[0] is the */
+ /* name of the column being dropped */
} init;
int nVdbeActive; /* Number of VDBEs currently running */
int nVdbeRead; /* Number of active VDBEs that read or write */
@@ -2104,7 +2107,9 @@
** operator is NULL. It is added to certain comparison operators to
** prove that the operands are always NOT NULL.
*/
+#define SQLITE_KEEPNULL 0x08 /* Used by vector == or <> */
#define SQLITE_JUMPIFNULL 0x10 /* jumps if either operand is NULL */
+#define SQLITE_STOREP2 0x20 /* Store result in reg[P2] rather than jump */
#define SQLITE_NULLEQ 0x80 /* NULL=NULL */
#define SQLITE_NOTNULL 0x90 /* Assert that operands are never NULL */
@@ -2601,7 +2606,6 @@
FuncDef *pFunc; /* The aggregate function implementation */
int iMem; /* Memory location that acts as accumulator */
int iDistinct; /* Ephemeral table used to enforce DISTINCT */
- int iDistAddr; /* Address of OP_OpenEphemeral */
} *aFunc;
int nFunc; /* Number of entries in aFunc[] */
u32 selId; /* Select to which this AggInfo belongs */
@@ -2874,7 +2878,6 @@
*/
struct ExprList {
int nExpr; /* Number of expressions on the list */
- int nAlloc; /* Number of a[] slots allocated */
struct ExprList_item { /* For each expression in the list */
Expr *pExpr; /* The parse tree for this expression */
char *zEName; /* Token associated with this expression */
@@ -4738,9 +4741,6 @@
extern const unsigned char sqlite3OpcodeProperty[];
extern const char sqlite3StrBINARY[];
extern const unsigned char sqlite3UpperToLower[];
-extern const unsigned char *sqlite3aLTb;
-extern const unsigned char *sqlite3aEQb;
-extern const unsigned char *sqlite3aGTb;
extern const unsigned char sqlite3CtypeMap[];
extern SQLITE_WSD struct Sqlite3Config sqlite3Config;
extern FuncDefHash sqlite3BuiltinFunctions;
diff -Nru sqlite3-3.35.0/src/test1.c sqlite3-3.35.0-1/src/test1.c
--- sqlite3-3.35.0/src/test1.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/test1.c 2021-04-04 17:23:21.000000000 +0000
@@ -3825,11 +3825,9 @@
){
sqlite3_stmt *pStmt;
int idx;
- int trueLength = 0;
int bytes;
char *value;
int rc;
- char *toFree = 0;
if( objc!=5 ){
Tcl_AppendResult(interp, "wrong # args: should be \"",
@@ -3839,23 +3837,13 @@
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
if( Tcl_GetIntFromObj(interp, objv[2], &idx) ) return TCL_ERROR;
- value = (char*)Tcl_GetByteArrayFromObj(objv[3], &trueLength);
+ value = (char*)Tcl_GetByteArrayFromObj(objv[3], &bytes);
if( Tcl_GetIntFromObj(interp, objv[4], &bytes) ) return TCL_ERROR;
- if( bytes<0 ){
- toFree = malloc( trueLength + 1 );
- if( toFree==0 ){
- Tcl_AppendResult(interp, "out of memory", (void*)0);
- return TCL_ERROR;
- }
- memcpy(toFree, value, trueLength);
- toFree[trueLength] = 0;
- value = toFree;
- }
+
rc = sqlite3_bind_text(pStmt, idx, value, bytes, SQLITE_TRANSIENT);
- free(toFree);
if( sqlite3TestErrCode(interp, StmtToDb(pStmt), rc) ) return TCL_ERROR;
if( rc!=SQLITE_OK ){
- Tcl_AppendResult(interp, sqlite3ErrName(rc), (void*)0);
+ Tcl_AppendResult(interp, sqlite3ErrName(rc), 0);
return TCL_ERROR;
}
@@ -3881,9 +3869,7 @@
int idx;
int bytes;
char *value;
- char *toFree = 0;
int rc;
- int trueLength = 0;
void (*xDel)(void*) = (objc==6?SQLITE_STATIC:SQLITE_TRANSIENT);
Tcl_Obj *oStmt = objv[objc-4];
@@ -3899,20 +3885,10 @@
if( getStmtPointer(interp, Tcl_GetString(oStmt), &pStmt) ) return TCL_ERROR;
if( Tcl_GetIntFromObj(interp, oN, &idx) ) return TCL_ERROR;
- value = (char*)Tcl_GetByteArrayFromObj(oString, &trueLength);
+ value = (char*)Tcl_GetByteArrayFromObj(oString, 0);
if( Tcl_GetIntFromObj(interp, oBytes, &bytes) ) return TCL_ERROR;
- if( bytes<0 && xDel==SQLITE_TRANSIENT ){
- toFree = malloc( trueLength + 3 );
- if( toFree==0 ){
- Tcl_AppendResult(interp, "out of memory", (void*)0);
- return TCL_ERROR;
- }
- memcpy(toFree, value, trueLength);
- memset(toFree+trueLength, 0, 3);
- value = toFree;
- }
+
rc = sqlite3_bind_text16(pStmt, idx, (void *)value, bytes, xDel);
- free(toFree);
if( sqlite3TestErrCode(interp, StmtToDb(pStmt), rc) ) return TCL_ERROR;
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, sqlite3ErrName(rc), 0);
@@ -6514,42 +6490,6 @@
return TCL_OK;
}
-/*
-** tclcmd: file_control_external_reader DB ?AUXDB?
-**
-** Return a string that is a temporary filename
-*/
-static int SQLITE_TCLAPI file_control_external_reader(
- ClientData clientData, /* Pointer to sqlite3_enable_XXX function */
- Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
- int objc, /* Number of arguments */
- Tcl_Obj *CONST objv[] /* Command arguments */
-){
- sqlite3 *db;
- const char *zName = "main";
- int iRes = 0;
- int rc = SQLITE_OK;
-
- if( objc!=2 && objc!=3 ){
- Tcl_AppendResult(interp, "wrong # args: should be \"",
- Tcl_GetStringFromObj(objv[0], 0), " DB ?AUXDB?", 0);
- return TCL_ERROR;
- }
- if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ){
- return TCL_ERROR;
- }
- if( objc==3 ){
- zName = Tcl_GetString(objv[2]);
- }
- rc = sqlite3_file_control(db, zName, SQLITE_FCNTL_EXTERNAL_READER, &iRes);
- if( rc!=SQLITE_OK ){
- Tcl_SetResult(interp, (char *)t1ErrorName(rc), TCL_STATIC);
- return TCL_ERROR;
- }
- Tcl_SetObjResult(interp, Tcl_NewIntObj(iRes));
- return TCL_OK;
-}
-
/*
** tclcmd: sqlite3_vfs_list
@@ -8488,7 +8428,6 @@
{ "file_control_vfsname", file_control_vfsname, 0 },
{ "file_control_reservebytes", file_control_reservebytes, 0 },
{ "file_control_tempfilename", file_control_tempfilename, 0 },
- { "file_control_external_reader", file_control_external_reader, 0 },
{ "sqlite3_vfs_list", vfs_list, 0 },
{ "sqlite3_create_function_v2", test_create_function_v2, 0 },
diff -Nru sqlite3-3.35.0/src/treeview.c sqlite3-3.35.0-1/src/treeview.c
--- sqlite3-3.35.0/src/treeview.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/treeview.c 2021-04-04 17:23:21.000000000 +0000
@@ -134,11 +134,19 @@
StrAccum x;
char zLine[100];
sqlite3StrAccumInit(&x, 0, zLine, sizeof(zLine), 0);
- sqlite3_str_appendf(&x, "{%d:*} %!S", pItem->iCursor, pItem);
+ sqlite3_str_appendf(&x, "{%d:*}", pItem->iCursor);
+ if( pItem->zDatabase ){
+ sqlite3_str_appendf(&x, " %s.%s", pItem->zDatabase, pItem->zName);
+ }else if( pItem->zName ){
+ sqlite3_str_appendf(&x, " %s", pItem->zName);
+ }
if( pItem->pTab ){
sqlite3_str_appendf(&x, " tab=%Q nCol=%d ptr=%p used=%llx",
pItem->pTab->zName, pItem->pTab->nCol, pItem->pTab, pItem->colUsed);
}
+ if( pItem->zAlias ){
+ sqlite3_str_appendf(&x, " (AS %s)", pItem->zAlias);
+ }
if( pItem->fg.jointype & JT_LEFT ){
sqlite3_str_appendf(&x, " LEFT-JOIN");
}
diff -Nru sqlite3-3.35.0/src/trigger.c sqlite3-3.35.0-1/src/trigger.c
--- sqlite3-3.35.0/src/trigger.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/trigger.c 2021-04-04 17:23:21.000000000 +0000
@@ -69,7 +69,7 @@
){
pTrig->pNext = pList;
pList = pTrig;
- }else if( pTrig->op==TK_RETURNING && pParse->db->pVtabCtx==0 ){
+ }else if( pTrig->op==TK_RETURNING ){
assert( pParse->bReturning );
assert( &(pParse->u1.pReturning->retTrig) == pTrig );
pTrig->table = pTab->zName;
@@ -209,12 +209,12 @@
*/
if( pTab->pSelect && tr_tm!=TK_INSTEAD ){
sqlite3ErrorMsg(pParse, "cannot create %s trigger on view: %S",
- (tr_tm == TK_BEFORE)?"BEFORE":"AFTER", pTableName->a);
+ (tr_tm == TK_BEFORE)?"BEFORE":"AFTER", pTableName, 0);
goto trigger_orphan_error;
}
if( !pTab->pSelect && tr_tm==TK_INSTEAD ){
sqlite3ErrorMsg(pParse, "cannot create INSTEAD OF"
- " trigger on table: %S", pTableName->a);
+ " trigger on table: %S", pTableName, 0);
goto trigger_orphan_error;
}
@@ -611,7 +611,7 @@
}
if( !pTrigger ){
if( !noErr ){
- sqlite3ErrorMsg(pParse, "no such trigger: %S", pName->a);
+ sqlite3ErrorMsg(pParse, "no such trigger: %S", pName, 0);
}else{
sqlite3CodeVerifyNamedSchema(pParse, zDb);
}
diff -Nru sqlite3-3.35.0/src/vdbeaux.c sqlite3-3.35.0-1/src/vdbeaux.c
--- sqlite3-3.35.0/src/vdbeaux.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/vdbeaux.c 2021-04-04 17:23:21.000000000 +0000
@@ -1487,7 +1487,11 @@
char c;
zSynopsis = zOpName += nOpName + 1;
if( strncmp(zSynopsis,"IF ",3)==0 ){
- sqlite3_snprintf(sizeof(zAlt), zAlt, "if %s goto P2", zSynopsis+3);
+ if( pOp->p5 & SQLITE_STOREP2 ){
+ sqlite3_snprintf(sizeof(zAlt), zAlt, "r[P2] = (%s)", zSynopsis+3);
+ }else{
+ sqlite3_snprintf(sizeof(zAlt), zAlt, "if %s goto P2", zSynopsis+3);
+ }
zSynopsis = zAlt;
}
for(ii=0; (c = zSynopsis[ii])!=0; ii++){
diff -Nru sqlite3-3.35.0/src/vdbe.c sqlite3-3.35.0-1/src/vdbe.c
--- sqlite3-3.35.0/src/vdbe.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/vdbe.c 2021-04-04 17:23:21.000000000 +0000
@@ -1915,7 +1915,8 @@
** Synopsis: IF r[P3]==r[P1]
**
** Compare the values in register P1 and P3. If reg(P3)==reg(P1) then
-** jump to address P2.
+** jump to address P2. Or if the SQLITE_STOREP2 flag is set in P5, then
+** store the result of comparison in register P2.
**
** The SQLITE_AFF_MASK portion of P5 must be an affinity character -
** SQLITE_AFF_TEXT, SQLITE_AFF_INTEGER, and so forth. An attempt is made
@@ -1941,8 +1942,9 @@
** If neither operand is NULL the result is the same as it would be if
** the SQLITE_NULLEQ flag were omitted from P5.
**
-** This opcode saves the result of comparison for use by the new
-** OP_Jump opcode.
+** If both SQLITE_STOREP2 and SQLITE_KEEPNULL flags are set then the
+** content of r[P2] is only changed if the new value is NULL or 0 (false).
+** In other words, a prior r[P2] value will not be overwritten by 1 (true).
*/
/* Opcode: Ne P1 P2 P3 P4 P5
** Synopsis: IF r[P3]!=r[P1]
@@ -1950,12 +1952,17 @@
** This works just like the Eq opcode except that the jump is taken if
** the operands in registers P1 and P3 are not equal. See the Eq opcode for
** additional information.
+**
+** If both SQLITE_STOREP2 and SQLITE_KEEPNULL flags are set then the
+** content of r[P2] is only changed if the new value is NULL or 1 (true).
+** In other words, a prior r[P2] value will not be overwritten by 0 (false).
*/
/* Opcode: Lt P1 P2 P3 P4 P5
** Synopsis: IF r[P3]p5 & SQLITE_JUMPIFNULL ){
- goto jump_to_p2;
+ if( pOp->p5 & SQLITE_STOREP2 ){
+ pOut = &aMem[pOp->p2];
+ iCompare = 1; /* Operands are not equal */
+ memAboutToChange(p, pOut);
+ MemSetTypeFlag(pOut, MEM_Null);
+ REGISTER_TRACE(pOp->p2, pOut);
+ }else{
+ VdbeBranchTaken(2,3);
+ if( pOp->p5 & SQLITE_JUMPIFNULL ){
+ goto jump_to_p2;
+ }
}
break;
}
@@ -2100,14 +2111,16 @@
** order: NE, EQ, GT, LE, LT, GE */
assert( OP_Eq==OP_Ne+1 ); assert( OP_Gt==OP_Ne+2 ); assert( OP_Le==OP_Ne+3 );
assert( OP_Lt==OP_Ne+4 ); assert( OP_Ge==OP_Ne+5 );
- if( res<0 ){
- res2 = sqlite3aLTb[pOp->opcode];
+ if( res<0 ){ /* ne, eq, gt, le, lt, ge */
+ static const unsigned char aLTb[] = { 1, 0, 0, 1, 1, 0 };
+ res2 = aLTb[pOp->opcode - OP_Ne];
}else if( res==0 ){
- res2 = sqlite3aEQb[pOp->opcode];
+ static const unsigned char aEQb[] = { 0, 1, 0, 1, 0, 1 };
+ res2 = aEQb[pOp->opcode - OP_Ne];
}else{
- res2 = sqlite3aGTb[pOp->opcode];
+ static const unsigned char aGTb[] = { 1, 0, 1, 0, 0, 1 };
+ res2 = aGTb[pOp->opcode - OP_Ne];
}
- iCompare = res;
/* Undo any changes made by applyAffinity() to the input registers. */
assert( (pIn3->flags & MEM_Dyn) == (flags3 & MEM_Dyn) );
@@ -2115,39 +2128,67 @@
assert( (pIn1->flags & MEM_Dyn) == (flags1 & MEM_Dyn) );
pIn1->flags = flags1;
- VdbeBranchTaken(res2!=0, (pOp->p5 & SQLITE_NULLEQ)?2:3);
- if( res2 ){
- goto jump_to_p2;
+ if( pOp->p5 & SQLITE_STOREP2 ){
+ pOut = &aMem[pOp->p2];
+ iCompare = res;
+ if( (pOp->p5 & SQLITE_KEEPNULL)!=0 ){
+ /* The KEEPNULL flag prevents OP_Eq from overwriting a NULL with 1
+ ** and prevents OP_Ne from overwriting NULL with 0. This flag
+ ** is only used in contexts where either:
+ ** (1) op==OP_Eq && (r[P2]==NULL || r[P2]==0)
+ ** (2) op==OP_Ne && (r[P2]==NULL || r[P2]==1)
+ ** Therefore it is not necessary to check the content of r[P2] for
+ ** NULL. */
+ assert( pOp->opcode==OP_Ne || pOp->opcode==OP_Eq );
+ assert( res2==0 || res2==1 );
+ testcase( res2==0 && pOp->opcode==OP_Eq );
+ testcase( res2==1 && pOp->opcode==OP_Eq );
+ testcase( res2==0 && pOp->opcode==OP_Ne );
+ testcase( res2==1 && pOp->opcode==OP_Ne );
+ if( (pOp->opcode==OP_Eq)==res2 ) break;
+ }
+ memAboutToChange(p, pOut);
+ MemSetTypeFlag(pOut, MEM_Int);
+ pOut->u.i = res2;
+ REGISTER_TRACE(pOp->p2, pOut);
+ }else{
+ VdbeBranchTaken(res2!=0, (pOp->p5 & SQLITE_NULLEQ)?2:3);
+ if( res2 ){
+ goto jump_to_p2;
+ }
}
break;
}
-/* Opcode: ElseEq * P2 * * *
+/* Opcode: ElseNotEq * P2 * * *
**
** This opcode must follow an OP_Lt or OP_Gt comparison operator. There
** can be zero or more OP_ReleaseReg opcodes intervening, but no other
** opcodes are allowed to occur between this instruction and the previous
-** OP_Lt or OP_Gt.
+** OP_Lt or OP_Gt. Furthermore, the prior OP_Lt or OP_Gt must have the
+** SQLITE_STOREP2 bit set in the P5 field.
**
** If result of an OP_Eq comparison on the same two operands as the
-** prior OP_Lt or OP_Gt would have been true, then jump to P2.
-** If the result of an OP_Eq comparison on the two previous
-** operands would have been false or NULL, then fall through.
+** prior OP_Lt or OP_Gt would have been NULL or false (0), then then
+** jump to P2. If the result of an OP_Eq comparison on the two previous
+** operands would have been true (1), then fall through.
*/
-case OP_ElseEq: { /* same as TK_ESCAPE, jump */
+case OP_ElseNotEq: { /* same as TK_ESCAPE, jump */
#ifdef SQLITE_DEBUG
/* Verify the preconditions of this opcode - that it follows an OP_Lt or
- ** OP_Gt with zero or more intervening OP_ReleaseReg opcodes */
+ ** OP_Gt with the SQLITE_STOREP2 flag set, with zero or more intervening
+ ** OP_ReleaseReg opcodes */
int iAddr;
for(iAddr = (int)(pOp - aOp) - 1; ALWAYS(iAddr>=0); iAddr--){
if( aOp[iAddr].opcode==OP_ReleaseReg ) continue;
assert( aOp[iAddr].opcode==OP_Lt || aOp[iAddr].opcode==OP_Gt );
+ assert( aOp[iAddr].p5 & SQLITE_STOREP2 );
break;
}
#endif /* SQLITE_DEBUG */
- VdbeBranchTaken(iCompare==0, 2);
- if( iCompare==0 ) goto jump_to_p2;
+ VdbeBranchTaken(iCompare!=0, 2);
+ if( iCompare!=0 ) goto jump_to_p2;
break;
}
@@ -2457,24 +2498,6 @@
}
break;
}
-
-/* Opcode: ZeroOrNull P1 P2 P3 * *
-** Synopsis: r[P2] = 0 OR NULL
-**
-** If all both registers P1 and P3 are NOT NULL, then store a zero in
-** register P2. If either registers P1 or P3 are NULL then put
-** a NULL in register P2.
-*/
-case OP_ZeroOrNull: { /* in1, in2, out2, in3 */
- if( (aMem[pOp->p1].flags & MEM_Null)!=0
- || (aMem[pOp->p3].flags & MEM_Null)!=0
- ){
- sqlite3VdbeMemSetNull(aMem + pOp->p2);
- }else{
- sqlite3VdbeMemSetInt64(aMem + pOp->p2, 0);
- }
- break;
-}
/* Opcode: NotNull P1 P2 * * *
** Synopsis: if r[P1]!=NULL goto P2
diff -Nru sqlite3-3.35.0/src/where.c sqlite3-3.35.0-1/src/where.c
--- sqlite3-3.35.0/src/where.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/where.c 2021-04-04 17:23:21.000000000 +0000
@@ -492,7 +492,7 @@
for(i=0; inExpr; i++){
Expr *p = sqlite3ExprSkipCollateAndLikely(pList->a[i].pExpr);
if( ALWAYS(p!=0)
- && (p->op==TK_COLUMN || p->op==TK_AGG_COLUMN)
+ && p->op==TK_COLUMN
&& p->iColumn==pIdx->aiColumn[iCol]
&& p->iTable==iBase
){
@@ -557,8 +557,7 @@
for(i=0; inExpr; i++){
Expr *p = sqlite3ExprSkipCollateAndLikely(pDistinct->a[i].pExpr);
if( NEVER(p==0) ) continue;
- if( p->op!=TK_COLUMN && p->op!=TK_AGG_COLUMN ) continue;
- if( p->iTable==iBase && p->iColumn<0 ) return 1;
+ if( p->op==TK_COLUMN && p->iTable==iBase && p->iColumn<0 ) return 1;
}
/* Loop through all indices on the table, checking each to see if it makes
@@ -3823,7 +3822,7 @@
if( MASKBIT(i) & obSat ) continue;
pOBExpr = sqlite3ExprSkipCollateAndLikely(pOrderBy->a[i].pExpr);
if( NEVER(pOBExpr==0) ) continue;
- if( pOBExpr->op!=TK_COLUMN && pOBExpr->op!=TK_AGG_COLUMN ) continue;
+ if( pOBExpr->op!=TK_COLUMN ) continue;
if( pOBExpr->iTable!=iCur ) continue;
pTerm = sqlite3WhereFindTerm(&pWInfo->sWC, iCur, pOBExpr->iColumn,
~ready, eqOpMask, 0);
@@ -3952,7 +3951,7 @@
if( NEVER(pOBExpr==0) ) continue;
if( (wctrlFlags & (WHERE_GROUPBY|WHERE_DISTINCTBY))==0 ) bOnce = 0;
if( iColumn>=XN_ROWID ){
- if( pOBExpr->op!=TK_COLUMN && pOBExpr->op!=TK_AGG_COLUMN ) continue;
+ if( pOBExpr->op!=TK_COLUMN ) continue;
if( pOBExpr->iTable!=iCur ) continue;
if( pOBExpr->iColumn!=iColumn ) continue;
}else{
@@ -5025,9 +5024,7 @@
/* Attempt to omit tables from the join that do not affect the result.
** For a table to not affect the result, the following must be true:
**
- ** 1) The query must not be an aggregate. Or it must be an aggregate
- ** that contains only one aggregate function with the DISTINCT
- ** qualifier. e.g. "SELECT count(DISTINCT ...) FROM".
+ ** 1) The query must not be an aggregate.
** 2) The table must be the RHS of a LEFT JOIN.
** 3) Either the query must be DISTINCT, or else the ON or USING clause
** must contain a constraint that limits the scan of the table to
diff -Nru sqlite3-3.35.0/src/wherecode.c sqlite3-3.35.0-1/src/wherecode.c
--- sqlite3-3.35.0/src/wherecode.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/src/wherecode.c 2021-04-04 17:23:21.000000000 +0000
@@ -148,8 +148,16 @@
|| (wctrlFlags&(WHERE_ORDERBY_MIN|WHERE_ORDERBY_MAX));
sqlite3StrAccumInit(&str, db, zBuf, sizeof(zBuf), SQLITE_MAX_LENGTH);
- str.printfFlags = SQLITE_PRINTF_INTERNAL;
- sqlite3_str_appendf(&str, "%s %S", isSearch ? "SEARCH" : "SCAN", pItem);
+ sqlite3_str_appendall(&str, isSearch ? "SEARCH" : "SCAN");
+ if( pItem->pSelect ){
+ sqlite3_str_appendf(&str, " SUBQUERY %u", pItem->pSelect->selId);
+ }else{
+ sqlite3_str_appendf(&str, " TABLE %s", pItem->zName);
+ }
+
+ if( pItem->zAlias ){
+ sqlite3_str_appendf(&str, " AS %s", pItem->zAlias);
+ }
if( (flags & (WHERE_IPK|WHERE_VIRTUALTABLE))==0 ){
const char *zFmt = 0;
Index *pIdx;
diff -Nru sqlite3-3.35.0/test/alterauth2.test sqlite3-3.35.0-1/test/alterauth2.test
--- sqlite3-3.35.0/test/alterauth2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/alterauth2.test 2021-04-04 17:23:21.000000000 +0000
@@ -82,7 +82,6 @@
{SQLITE_ALTER_TABLE main t2 {} {}}
{SQLITE_FUNCTION {} like {} {}}
{SQLITE_FUNCTION {} sqlite_rename_column {} {}}
- {SQLITE_FUNCTION {} sqlite_rename_quotefix {} {}}
{SQLITE_FUNCTION {} sqlite_rename_test {} {}}
{SQLITE_READ sqlite_master name main {}}
{SQLITE_READ sqlite_master sql main {}}
@@ -101,7 +100,6 @@
} {
{SQLITE_FUNCTION {} like {} {}}
{SQLITE_FUNCTION {} sqlite_drop_column {} {}}
- {SQLITE_FUNCTION {} sqlite_rename_quotefix {} {}}
{SQLITE_FUNCTION {} sqlite_rename_test {} {}}
{SQLITE_READ sqlite_master name main {}}
{SQLITE_READ sqlite_master sql main {}}
@@ -112,7 +110,6 @@
{SQLITE_READ sqlite_temp_master type temp {}}
{SQLITE_SELECT {} {} {} {}}
{SQLITE_UPDATE sqlite_master sql main {}}
- {SQLITE_UPDATE sqlite_temp_master sql temp {}}
}
finish_test
diff -Nru sqlite3-3.35.0/test/altercol.test sqlite3-3.35.0-1/test/altercol.test
--- sqlite3-3.35.0/test/altercol.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/altercol.test 2021-04-04 17:23:21.000000000 +0000
@@ -567,7 +567,7 @@
do_catchsql_test 13.1.7 {
ALTER TABLE x1 RENAME COLUMN t TO ttt;
-} {1 {error in index x1i: }}
+} {1 {database disk image is malformed}}
do_execsql_test 13.1.8 {
DELETE FROM sqlite_master WHERE name = 'x1i';
@@ -835,29 +835,5 @@
{CREATE TABLE t2(c, othername, extra AS (c + 1))}
}
-#-------------------------------------------------------------------------
-#
-reset_db
-do_execsql_test 22.0 {
- CREATE TABLE t1(a, b);
- CREATE INDEX x1 on t1("c"=b);
- INSERT INTO t1 VALUES('a', 'a');
- INSERT INTO t1 VALUES('b', 'b');
- INSERT INTO t1 VALUES('c', 'c');
- ALTER TABLE t1 RENAME COLUMN a TO "c";
- PRAGMA integrity_check;
-} {ok}
-
-reset_db
-do_execsql_test 23.0 {
- CREATE TABLE t1('a'"b",c);
- CREATE INDEX i1 ON t1('a');
- INSERT INTO t1 VALUES(1,2), (3,4);
- ALTER TABLE t1 RENAME COLUMN a TO x;
- PRAGMA integrity_check;
- SELECT sql FROM sqlite_schema WHERE name='t1';
-
-} {ok {CREATE TABLE t1("x" "b",c)}}
-
finish_test
diff -Nru sqlite3-3.35.0/test/altermalloc3.test sqlite3-3.35.0-1/test/altermalloc3.test
--- sqlite3-3.35.0/test/altermalloc3.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/altermalloc3.test 2021-04-04 17:23:21.000000000 +0000
@@ -22,14 +22,6 @@
}
do_execsql_test 1.0 {
- CREATE TABLE x1(
- one, two, three, PRIMARY KEY(one),
- CHECK (three!="xyz"), CHECK (two!="one")
- ) WITHOUT ROWID;
- CREATE INDEX x1i ON x1(one+"two"+"four") WHERE "five";
- CREATE TEMP TRIGGER AFTER INSERT ON x1 BEGIN
- UPDATE x1 SET two=new.three || "new" WHERE one=new.one||"";
- END;
CREATE TABLE t1(a, b, c, d, PRIMARY KEY(d, b)) WITHOUT ROWID;
INSERT INTO t1 VALUES(1, 2, 3, 4);
}
@@ -45,3 +37,4 @@
finish_test
+
diff -Nru sqlite3-3.35.0/test/alterqf.test sqlite3-3.35.0-1/test/alterqf.test
--- sqlite3-3.35.0/test/alterqf.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/alterqf.test 1970-01-01 00:00:00.000000000 +0000
@@ -1,111 +0,0 @@
-# 2021 March 16
-#
-# The author disclaims copyright to this source code. In place of
-# a legal notice, here is a blessing:
-#
-# May you do good and not evil.
-# May you find forgiveness for yourself and forgive others.
-# May you share freely, never taking more than you give.
-#
-#***********************************************************************
-# This file implements regression tests for SQLite library. This
-# script focuses on testing internal function sqlite_rename_quotefix().
-#
-
-
-set testdir [file dirname $argv0]
-source $testdir/tester.tcl
-set testprefix alterqf
-
-sqlite3_test_control SQLITE_TESTCTRL_INTERNAL_FUNCTIONS db
-
-do_execsql_test 1.0 {
- CREATE TABLE t1(a, b, c);
-}
-
-foreach {tn before after} {
- 1 {CREATE VIEW v1 AS SELECT "a", "b", "notacolumn!", "c" FROM t1}
- {CREATE VIEW v1 AS SELECT "a", "b", 'notacolumn!', "c" FROM t1}
-
- 2 {CREATE VIEW v1 AS SELECT "a", "b", "not'a'column!", "c" FROM t1}
- {CREATE VIEW v1 AS SELECT "a", "b", 'not''a''column!', "c" FROM t1}
-
- 3 {CREATE VIEW v1 AS SELECT "a", "b", "not""a""column!", "c" FROM t1}
- {CREATE VIEW v1 AS SELECT "a", "b", 'not"a"column!', "c" FROM t1}
-
- 4 {CREATE VIEW v1 AS SELECT "val", count("b") FROM t1 GROUP BY "abc"}
- {CREATE VIEW v1 AS SELECT 'val', count("b") FROM t1 GROUP BY 'abc'}
-
- 5 {CREATE TABLE xyz(a CHECK (a!="str"), b AS (a||"str"))}
- {CREATE TABLE xyz(a CHECK (a!='str'), b AS (a||'str'))}
-
- 6 {CREATE INDEX i1 ON t1(a || "str", "b", "val")}
- {CREATE INDEX i1 ON t1(a || 'str', "b", 'val')}
-
- 7 {CREATE TRIGGER tr AFTER INSERT ON t1 BEGIN SELECT "abcd"; END}
- {CREATE TRIGGER tr AFTER INSERT ON t1 BEGIN SELECT 'abcd'; END}
-
- 8 {CREATE VIEW v1 AS SELECT "string"'alias' FROM t1}
- {CREATE VIEW v1 AS SELECT 'string' 'alias' FROM t1}
-
- 9 {CREATE INDEX i1 ON t1(a) WHERE "b"="bb"}
- {CREATE INDEX i1 ON t1(a) WHERE "b"='bb'}
-
- 10 {CREATE TABLE t2(abc, xyz CHECK (xyz != "123"))}
- {CREATE TABLE t2(abc, xyz CHECK (xyz != '123'))}
-
- 11 {
- CREATE TRIGGER ott AFTER UPDATE ON t1 BEGIN
- SELECT max("str", new."a") FROM t1
- WHERE group_concat("b", ",") OVER (ORDER BY c||"str");
- UPDATE t1 SET c= b + "str";
- DELETE FROM t1 WHERE EXISTS (
- SELECT 1 FROM t1 AS o WHERE o."a" = "o.a" AND t1.b IN("t1.b")
- );
- END;
- } {
- CREATE TRIGGER ott AFTER UPDATE ON t1 BEGIN
- SELECT max('str', new."a") FROM t1
- WHERE group_concat("b", ',') OVER (ORDER BY c||'str');
- UPDATE t1 SET c= b + 'str';
- DELETE FROM t1 WHERE EXISTS (
- SELECT 1 FROM t1 AS o WHERE o."a" = 'o.a' AND t1.b IN('t1.b')
- );
- END;
- }
-
-} {
- do_execsql_test 1.$tn {
- SELECT sqlite_rename_quotefix('main', $before)
- } [list $after]
-}
-
-#-------------------------------------------------------------------------
-reset_db
-do_execsql_test 2.0 {
- CREATE TABLE x1(
- one, two, three, PRIMARY KEY(one),
- CHECK (three!="xyz"), CHECK (two!="one")
- ) WITHOUT ROWID;
- CREATE INDEX x1i ON x1(one+"two"+"four") WHERE "five";
- CREATE TEMP TRIGGER AFTER INSERT ON x1 BEGIN
- UPDATE x1 SET two=new.three || "new" WHERE one=new.one||"";
- END;
-}
-
-do_execsql_test 2.1 {
- ALTER TABLE x1 RENAME two TO 'four';
- SELECT sql FROM sqlite_schema;
- SELECT sql FROM sqlite_temp_schema;
-} {{CREATE TABLE x1(
- one, "four", three, PRIMARY KEY(one),
- CHECK (three!='xyz'), CHECK ("four"!="one")
- ) WITHOUT ROWID}
- {CREATE INDEX x1i ON x1(one+"four"+'four') WHERE 'five'}
- {CREATE TRIGGER AFTER INSERT ON x1 BEGIN
- UPDATE x1 SET "four"=new.three || 'new' WHERE one=new.one||'';
- END}
-}
-
-
-finish_test
diff -Nru sqlite3-3.35.0/test/altertab.test sqlite3-3.35.0-1/test/altertab.test
--- sqlite3-3.35.0/test/altertab.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/altertab.test 2021-04-04 17:23:21.000000000 +0000
@@ -738,3 +738,4 @@
finish_test
+
diff -Nru sqlite3-3.35.0/test/analyze3.test sqlite3-3.35.0-1/test/analyze3.test
--- sqlite3-3.35.0/test/analyze3.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyze3.test 2021-04-04 17:23:21.000000000 +0000
@@ -124,10 +124,10 @@
#
do_eqp_test analyze3-1.1.2 {
SELECT sum(y) FROM t1 WHERE x>200 AND x<300
-} {SEARCH t1 USING INDEX i1 (x>? AND x)}
+} {SEARCH TABLE t1 USING INDEX i1 (x>? AND x)}
do_eqp_test analyze3-1.1.3 {
SELECT sum(y) FROM t1 WHERE x>0 AND x<1100
-} {SCAN t1}
+} {SCAN TABLE t1}
# 2017-06-26: Verify that the SQLITE_DBCONFIG_ENABLE_QPSG setting disables
# the use of bound parameters by STAT4
@@ -137,27 +137,27 @@
unset -nocomplain u
do_eqp_test analyze3-1.1.3.100 {
SELECT sum(y) FROM t1 WHERE x>$l AND x<$u
-} {SEARCH t1 USING INDEX i1 (x>? AND x)}
+} {SEARCH TABLE t1 USING INDEX i1 (x>? AND x)}
set l 200
set u 300
do_eqp_test analyze3-1.1.3.101 {
SELECT sum(y) FROM t1 WHERE x>$l AND x<$u
-} {SEARCH t1 USING INDEX i1 (x>? AND x)}
+} {SEARCH TABLE t1 USING INDEX i1 (x>? AND x)}
set l 0
set u 1100
do_eqp_test analyze3-1.1.3.102 {
SELECT sum(y) FROM t1 WHERE x>$l AND x<$u
-} {SCAN t1}
+} {SCAN TABLE t1}
db cache flush
sqlite3_db_config db ENABLE_QPSG 1
do_eqp_test analyze3-1.1.3.103 {
SELECT sum(y) FROM t1 WHERE x>$l AND x<$u
-} {SEARCH t1 USING INDEX i1 (x>? AND x)}
+} {SEARCH TABLE t1 USING INDEX i1 (x>? AND x)}
db cache flush
sqlite3_db_config db ENABLE_QPSG 0
do_eqp_test analyze3-1.1.3.104 {
SELECT sum(y) FROM t1 WHERE x>$l AND x<$u
-} {SCAN t1}
+} {SCAN TABLE t1}
do_test analyze3-1.1.4 {
sf_execsql { SELECT sum(y) FROM t1 WHERE x>200 AND x<300 }
@@ -207,10 +207,10 @@
} {200 990}
do_eqp_test analyze3-1.2.2 {
SELECT sum(y) FROM t2 WHERE x>1 AND x<2
-} {SEARCH t2 USING INDEX i2 (x>? AND x)}
+} {SEARCH TABLE t2 USING INDEX i2 (x>? AND x)}
do_eqp_test analyze3-1.2.3 {
SELECT sum(y) FROM t2 WHERE x>0 AND x<99
-} {SCAN t2}
+} {SCAN TABLE t2}
do_test analyze3-1.2.4 {
sf_execsql { SELECT sum(y) FROM t2 WHERE x>12 AND x<20 }
@@ -259,10 +259,10 @@
} {99 1000}
do_eqp_test analyze3-1.3.2 {
SELECT sum(y) FROM t3 WHERE x>200 AND x<300
-} {SEARCH t3 USING INDEX i3 (x>? AND x)}
+} {SEARCH TABLE t3 USING INDEX i3 (x>? AND x)}
do_eqp_test analyze3-1.3.3 {
SELECT sum(y) FROM t3 WHERE x>0 AND x<1100
-} {SCAN t3}
+} {SCAN TABLE t3}
do_test analyze3-1.3.4 {
sf_execsql { SELECT sum(y) FROM t3 WHERE x>200 AND x<300 }
@@ -314,10 +314,10 @@
} {}
do_eqp_test analyze3-2.2 {
SELECT count(a) FROM t1 WHERE b LIKE 'a%'
-} {SEARCH t1 USING INDEX i1 (b>? AND b)}
+} {SEARCH TABLE t1 USING INDEX i1 (b>? AND b)}
do_eqp_test analyze3-2.3 {
SELECT count(a) FROM t1 WHERE b LIKE '%a'
-} {SCAN t1}
+} {SCAN TABLE t1}
# Return the first argument if like_match_blobs is true (the default)
# or the second argument if not
@@ -704,11 +704,11 @@
do_eqp_test analyze3-6-3 {
SELECT * FROM t1 WHERE a = 5 AND c = 13;
-} {SEARCH t1 USING INDEX i2 (c=?)}
+} {SEARCH TABLE t1 USING INDEX i2 (c=?)}
do_eqp_test analyze3-6-2 {
SELECT * FROM t1 WHERE a = 5 AND b > 'w' AND c = 13;
-} {SEARCH t1 USING INDEX i2 (c=?)}
+} {SEARCH TABLE t1 USING INDEX i2 (c=?)}
#-----------------------------------------------------------------------------
# 2015-04-20.
diff -Nru sqlite3-3.35.0/test/analyze4.test sqlite3-3.35.0-1/test/analyze4.test
--- sqlite3-3.35.0/test/analyze4.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyze4.test 2021-04-04 17:23:21.000000000 +0000
@@ -38,7 +38,7 @@
# Should choose the t1a index since it is more specific than t1b.
db eval {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=5 AND b IS NULL}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
# Verify that the t1b index shows that it does not narrow down the
# search any at all.
diff -Nru sqlite3-3.35.0/test/analyze6.test sqlite3-3.35.0-1/test/analyze6.test
--- sqlite3-3.35.0/test/analyze6.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyze6.test 2021-04-04 17:23:21.000000000 +0000
@@ -61,7 +61,7 @@
#
do_test analyze6-1.1 {
eqp {SELECT count(*) FROM ev, cat WHERE x=y}
-} {/*SCAN cat USING COVERING INDEX catx*SEARCH ev USING COVERING INDEX evy (y=?)*/}
+} {/*SCAN TABLE cat USING COVERING INDEX catx*SEARCH TABLE ev USING COVERING INDEX evy (y=?)*/}
# The same plan is chosen regardless of the order of the tables in the
# FROM clause.
@@ -70,8 +70,8 @@
SELECT count(*) FROM cat, ev WHERE x=y
} {
QUERY PLAN
- |--SCAN cat USING COVERING INDEX catx
- `--SEARCH ev USING COVERING INDEX evy (y=?)
+ |--SCAN TABLE cat USING COVERING INDEX catx
+ `--SEARCH TABLE ev USING COVERING INDEX evy (y=?)
}
@@ -86,26 +86,26 @@
ANALYZE;
}
eqp {SELECT * FROM t201 WHERE z=5}
-} {/*SEARCH t201 USING INDEX t201z (z=?)*/}
+} {/*SEARCH TABLE t201 USING INDEX t201z (z=?)*/}
do_test analyze6-2.2 {
eqp {SELECT * FROM t201 WHERE y=5}
-} {/*SEARCH t201 USING INDEX sqlite_autoindex_t201_1 (y=?)*/}
+} {/*SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)*/}
do_test analyze6-2.3 {
eqp {SELECT * FROM t201 WHERE x=5}
-} {/*SEARCH t201 USING INTEGER PRIMARY KEY (rowid=?)*/}
+} {/*SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)*/}
do_test analyze6-2.4 {
execsql {
INSERT INTO t201 VALUES(1,2,3),(2,3,4),(3,4,5);
ANALYZE t201;
}
eqp {SELECT * FROM t201 WHERE z=5}
-} {/*SEARCH t201 USING INDEX t201z (z=?)*/}
+} {/*SEARCH TABLE t201 USING INDEX t201z (z=?)*/}
do_test analyze6-2.5 {
eqp {SELECT * FROM t201 WHERE y=5}
-} {/*SEARCH t201 USING INDEX sqlite_autoindex_t201_1 (y=?)*/}
+} {/*SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)*/}
do_test analyze6-2.6 {
eqp {SELECT * FROM t201 WHERE x=5}
-} {/*SEARCH t201 USING INTEGER PRIMARY KEY (rowid=?)*/}
+} {/*SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)*/}
do_test analyze6-2.7 {
execsql {
INSERT INTO t201 VALUES(4,5,7);
@@ -115,12 +115,12 @@
ANALYZE t201;
}
eqp {SELECT * FROM t201 WHERE z=5}
-} {/*SEARCH t201 USING INDEX t201z (z=?)*/}
+} {/*SEARCH TABLE t201 USING INDEX t201z (z=?)*/}
do_test analyze6-2.8 {
eqp {SELECT * FROM t201 WHERE y=5}
-} {/*SEARCH t201 USING INDEX sqlite_autoindex_t201_1 (y=?)*/}
+} {/*SEARCH TABLE t201 USING INDEX sqlite_autoindex_t201_1 (y=?)*/}
do_test analyze6-2.9 {
eqp {SELECT * FROM t201 WHERE x=5}
-} {/*SEARCH t201 USING INTEGER PRIMARY KEY (rowid=?)*/}
+} {/*SEARCH TABLE t201 USING INTEGER PRIMARY KEY (rowid=?)*/}
finish_test
diff -Nru sqlite3-3.35.0/test/analyze7.test sqlite3-3.35.0-1/test/analyze7.test
--- sqlite3-3.35.0/test/analyze7.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyze7.test 2021-04-04 17:23:21.000000000 +0000
@@ -37,13 +37,13 @@
WHERE value BETWEEN 1 AND 256;
EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123;
}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
do_test analyze7-1.1 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=123;}
-} {/*SEARCH t1 USING INDEX t1b (b=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
do_test analyze7-1.2 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
-} {/*SEARCH t1 USING INDEX t1cd (c=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
# Run an analyze on one of the three indices. Verify that this
# effects the row-count estimate on the one query that uses that
@@ -53,20 +53,20 @@
execsql {ANALYZE t1a;}
db cache flush
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123;}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
do_test analyze7-2.1 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=123;}
-} {/*SEARCH t1 USING INDEX t1b (b=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
do_test analyze7-2.2 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
-} {/*SEARCH t1 USING INDEX t1cd (c=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
# Verify that since the query planner now things that t1a is more
# selective than t1b, it prefers to use t1a.
#
do_test analyze7-2.3 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123 AND b=123}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
# Run an analysis on another of the three indices. Verify that this
# new analysis works and does not disrupt the previous analysis.
@@ -75,40 +75,40 @@
execsql {ANALYZE t1cd;}
db cache flush;
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123;}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
do_test analyze7-3.1 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b=123;}
-} {/*SEARCH t1 USING INDEX t1b (b=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
do_test analyze7-3.2.1 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=?;}
-} {/*SEARCH t1 USING INDEX t1cd (c=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
ifcapable stat4 {
# If ENABLE_STAT4 is defined, SQLite comes up with a different estimated
# row count for (c=2) than it does for (c=?).
do_test analyze7-3.2.2 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
- } {/*SEARCH t1 USING INDEX t1cd (c=?)*/}
+ } {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
} else {
# If ENABLE_STAT4 is not defined, the expected row count for (c=2) is the
# same as that for (c=?).
do_test analyze7-3.2.3 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=2;}
- } {/*SEARCH t1 USING INDEX t1cd (c=?)*/}
+ } {/*SEARCH TABLE t1 USING INDEX t1cd (c=?)*/}
}
do_test analyze7-3.3 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123 AND b=123}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
ifcapable {!stat4} {
do_test analyze7-3.4 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=123 AND b=123}
- } {/*SEARCH t1 USING INDEX t1b (b=?)*/}
+ } {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
do_test analyze7-3.5 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=123 AND c=123}
- } {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+ } {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
}
do_test analyze7-3.6 {
execsql {EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE c=123 AND d=123 AND b=123}
-} {/*SEARCH t1 USING INDEX t1cd (c=? AND d=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1cd (c=? AND d=?)*/}
finish_test
diff -Nru sqlite3-3.35.0/test/analyze8.test sqlite3-3.35.0-1/test/analyze8.test
--- sqlite3-3.35.0/test/analyze8.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyze8.test 2021-04-04 17:23:21.000000000 +0000
@@ -61,25 +61,25 @@
#
do_test 1.1 {
eqp {SELECT * FROM t1 WHERE a=100 AND b=55}
-} {/*SEARCH t1 USING INDEX t1b (b=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
do_test 1.2 {
eqp {SELECT * FROM t1 WHERE a=99 AND b=55}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
do_test 1.3 {
eqp {SELECT * FROM t1 WHERE a=101 AND b=55}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
do_test 1.4 {
eqp {SELECT * FROM t1 WHERE a=100 AND b=56}
-} {/*SEARCH t1 USING INDEX t1b (b=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b=?)*/}
do_test 1.5 {
eqp {SELECT * FROM t1 WHERE a=99 AND b=56}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
do_test 1.6 {
eqp {SELECT * FROM t1 WHERE a=101 AND b=56}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
do_test 2.1 {
eqp {SELECT * FROM t1 WHERE a=100 AND b BETWEEN 50 AND 54}
-} {/*SEARCH t1 USING INDEX t1b (b>? AND b)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b>? AND b)*/}
# There are many more values of c between 0 and 100000 than there are
# between 800000 and 900000. So t1c is more selective for the latter
@@ -99,17 +99,17 @@
} {50 376 32}
do_test 3.1 {
eqp {SELECT * FROM t1 WHERE b BETWEEN 30 AND 34 AND c BETWEEN 0 AND 100000}
-} {/*SEARCH t1 USING INDEX t1b (b>? AND b)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1b (b>? AND b)*/}
do_test 3.2 {
eqp {SELECT * FROM t1
WHERE b BETWEEN 30 AND 34 AND c BETWEEN 800000 AND 900000}
-} {/*SEARCH t1 USING INDEX t1c (c>? AND c)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1c (c>? AND c)*/}
do_test 3.3 {
eqp {SELECT * FROM t1 WHERE a=100 AND c BETWEEN 0 AND 100000}
-} {/*SEARCH t1 USING INDEX t1a (a=?)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1a (a=?)*/}
do_test 3.4 {
eqp {SELECT * FROM t1
WHERE a=100 AND c BETWEEN 800000 AND 900000}
-} {/*SEARCH t1 USING INDEX t1c (c>? AND c)*/}
+} {/*SEARCH TABLE t1 USING INDEX t1c (c>? AND c)*/}
finish_test
diff -Nru sqlite3-3.35.0/test/analyze9.test sqlite3-3.35.0-1/test/analyze9.test
--- sqlite3-3.35.0/test/analyze9.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyze9.test 2021-04-04 17:23:21.000000000 +0000
@@ -578,16 +578,16 @@
} {}
do_eqp_test 13.2.1 {
SELECT * FROM t1 WHERE a='abc' AND rowid<15 AND b<12
-} {/SEARCH t1 USING INDEX i1/}
+} {/SEARCH TABLE t1 USING INDEX i1/}
do_eqp_test 13.2.2 {
SELECT * FROM t1 WHERE a='abc' AND rowid<'15' AND b<12
-} {/SEARCH t1 USING INDEX i1/}
+} {/SEARCH TABLE t1 USING INDEX i1/}
do_eqp_test 13.3.1 {
SELECT * FROM t1 WHERE a='abc' AND rowid<100 AND b<12
-} {/SEARCH t1 USING INDEX i2/}
+} {/SEARCH TABLE t1 USING INDEX i2/}
do_eqp_test 13.3.2 {
SELECT * FROM t1 WHERE a='abc' AND rowid<'100' AND b<12
-} {/SEARCH t1 USING INDEX i2/}
+} {/SEARCH TABLE t1 USING INDEX i2/}
#-------------------------------------------------------------------------
# Check also that affinities are taken into account when using stat4 data
@@ -609,10 +609,10 @@
} {}
do_eqp_test 13.2.1 {
SELECT * FROM t1 WHERE a='ott' AND b<10 AND c=1
-} {/SEARCH t1 USING INDEX i1/}
+} {/SEARCH TABLE t1 USING INDEX i1/}
do_eqp_test 13.2.2 {
SELECT * FROM t1 WHERE a='ott' AND b<'10' AND c=1
-} {/SEARCH t1 USING INDEX i1/}
+} {/SEARCH TABLE t1 USING INDEX i1/}
#-------------------------------------------------------------------------
# By default, 16 non-periodic samples are collected for the stat4 table.
@@ -1056,11 +1056,11 @@
-- Formerly used index i41. But i41 is not a covering index whereas
-- the PRIMARY KEY is a covering index, and so as of 2017-10-15, the
-- PRIMARY KEY is preferred.
-} {SEARCH t4 USING PRIMARY KEY (c=? AND b=? AND a)}
+} {SEARCH TABLE t4 USING PRIMARY KEY (c=? AND b=? AND a)}
do_eqp_test 23.2 {
SELECT * FROM t4 WHERE
(e=1 AND b='xyz' AND c='zyx' AND a<'JJJ') AND f<300
-} {SEARCH t4 USING INDEX i42 (f)}
+} {SEARCH TABLE t4 USING INDEX i42 (f)}
do_execsql_test 24.0 {
CREATE TABLE t5(c, d, b, e, a, PRIMARY KEY(a, b, c)) WITHOUT ROWID;
@@ -1106,25 +1106,25 @@
# Term (b) is estimated at 25%. Better than (a<30) but not as
# good as (a<20).
do_eqp_test 25.2.1 { SELECT * FROM t6 WHERE a<30 AND b } \
- {SEARCH t6 USING INDEX bb (b)}
+ {SEARCH TABLE t6 USING INDEX bb (b)}
do_eqp_test 25.2.2 { SELECT * FROM t6 WHERE a<20 AND b } \
- {SEARCH t6 USING INDEX aa (a)}
+ {SEARCH TABLE t6 USING INDEX aa (a)}
# Term (b BETWEEN ? AND ?) is estimated at 1/64.
do_eqp_test 25.3.1 {
SELECT * FROM t6 WHERE a BETWEEN 5 AND 10 AND b BETWEEN ? AND ?
- } {SEARCH t6 USING INDEX bb (b>? AND b)}
+ } {SEARCH TABLE t6 USING INDEX bb (b>? AND b)}
# Term (b BETWEEN ? AND 60) is estimated to return roughly 15 rows -
# 60 from (b<=60) multiplied by 0.25 for the b>=? term. Better than
# (a<20) but not as good as (a<10).
do_eqp_test 25.4.1 {
SELECT * FROM t6 WHERE a < 10 AND (b BETWEEN ? AND 60)
- } {SEARCH t6 USING INDEX aa (a)}
+ } {SEARCH TABLE t6 USING INDEX aa (a)}
do_eqp_test 25.4.2 {
SELECT * FROM t6 WHERE a < 20 AND (b BETWEEN ? AND 60)
- } {SEARCH t6 USING INDEX bb (b>? AND b)}
+ } {SEARCH TABLE t6 USING INDEX bb (b>? AND b)}
}
#-------------------------------------------------------------------------
@@ -1180,7 +1180,7 @@
#
do_eqp_test 26.1.4 {
SELECT * FROM t1 WHERE x = 10000 AND y < 50 AND z = 444;
-} {SEARCH t1 USING INDEX t1z (z=?)}
+} {SEARCH TABLE t1 USING INDEX t1z (z=?)}
# This test - 26.2.* - tests that another manifestation of the same problem
@@ -1229,7 +1229,7 @@
do_eqp_test 26.2.2 {
SELECT * FROM t1 WHERE x='B' AND y>25 AND z=?;
-} {SEARCH t1 USING INDEX i1 (x=? AND y>?)}
+} {SEARCH TABLE t1 USING INDEX i1 (x=? AND y>?)}
finish_test
diff -Nru sqlite3-3.35.0/test/analyzeC.test sqlite3-3.35.0-1/test/analyzeC.test
--- sqlite3-3.35.0/test/analyzeC.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyzeC.test 2021-04-04 17:23:21.000000000 +0000
@@ -50,7 +50,7 @@
do_execsql_test 1.3 {
EXPLAIN QUERY PLAN
SELECT c FROM t1 ORDER BY a;
-} {/.*SCAN t1 USING INDEX t1a.*/}
+} {/.*SCAN TABLE t1 USING INDEX t1a.*/}
do_execsql_test 1.3x {
EXPLAIN QUERY PLAN
SELECT c FROM t1 ORDER BY a;
diff -Nru sqlite3-3.35.0/test/analyzeD.test sqlite3-3.35.0-1/test/analyzeD.test
--- sqlite3-3.35.0/test/analyzeD.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyzeD.test 2021-04-04 17:23:21.000000000 +0000
@@ -63,7 +63,7 @@
#
do_eqp_test 1.2 {
SELECT * FROM t1 WHERE a=3001 AND c=150;
-} {SEARCH t1 USING INDEX t1_c (c=?)}
+} {SEARCH TABLE t1 USING INDEX t1_c (c=?)}
do_test 1.3 {
execsql { DELETE FROM sqlite_stat1 }
@@ -78,7 +78,7 @@
#
do_eqp_test 1.4 {
SELECT * FROM t1 WHERE a=3001 AND c=150;
-} {SEARCH t1 USING INDEX t1_ab (a=?)}
+} {SEARCH TABLE t1 USING INDEX t1_ab (a=?)}
do_test 1.5 {
execsql {
@@ -89,7 +89,7 @@
do_eqp_test 1.6 {
SELECT * FROM t1 WHERE a=13 AND c=150;
-} {SEARCH t1 USING INDEX t1_c (c=?)}
+} {SEARCH TABLE t1 USING INDEX t1_c (c=?)}
do_test 1.7 {
execsql { DELETE FROM sqlite_stat1 }
@@ -102,6 +102,6 @@
# gets this right, even without stat1 data.
do_eqp_test 1.8 {
SELECT * FROM t1 WHERE a=13 AND c=150;
-} {SEARCH t1 USING INDEX t1_c (c=?)}
+} {SEARCH TABLE t1 USING INDEX t1_c (c=?)}
finish_test
diff -Nru sqlite3-3.35.0/test/analyzeE.test sqlite3-3.35.0-1/test/analyzeE.test
--- sqlite3-3.35.0/test/analyzeE.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyzeE.test 2021-04-04 17:23:21.000000000 +0000
@@ -36,47 +36,47 @@
do_execsql_test analyzeE-1.1 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 500 AND 2500;
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
do_execsql_test analyzeE-1.2 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 2900 AND 3000;
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-1.3 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 1700 AND 1750;
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-1.4 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 1 AND 500
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-1.5 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 3000 AND 3000000
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-1.6 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<500
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-1.7 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>2500
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-1.8 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>1900
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-1.9 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>1100
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
do_execsql_test analyzeE-1.10 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<1100
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-1.11 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<1900
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
# Verify that everything works the same on a DESCENDING index.
#
@@ -88,47 +88,47 @@
do_execsql_test analyzeE-2.1 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 500 AND 2500;
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
do_execsql_test analyzeE-2.2 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 2900 AND 3000;
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-2.3 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 1700 AND 1750;
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-2.4 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 1 AND 500
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-2.5 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 3000 AND 3000000
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-2.6 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<500
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-2.7 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>2500
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-2.8 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>1900
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-2.9 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>1100
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
do_execsql_test analyzeE-2.10 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<1100
-} {/SEARCH t1 USING INDEX t1a/}
+} {/SEARCH TABLE t1 USING INDEX t1a/}
do_execsql_test analyzeE-2.11 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<1900
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
# Now do a range query on the second term of an ASCENDING index
# where the first term is constrained by equality.
@@ -145,47 +145,47 @@
do_execsql_test analyzeE-3.1 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 500 AND 2500 AND c=123;
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
do_execsql_test analyzeE-3.2 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 2900 AND 3000 AND c=123;
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-3.3 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 1700 AND 1750 AND c=123;
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-3.4 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 1 AND 500 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-3.5 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 3000 AND 3000000 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-3.6 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<500 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-3.7 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>2500 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-3.8 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>1900 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-3.9 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>1100 AND c=123
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
do_execsql_test analyzeE-3.10 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<1100 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-3.11 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<1900 AND c=123
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
# Repeat the 3.x tests using a DESCENDING index
#
@@ -197,46 +197,46 @@
do_execsql_test analyzeE-4.1 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 500 AND 2500 AND c=123;
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
do_execsql_test analyzeE-4.2 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 2900 AND 3000 AND c=123;
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-4.3 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 1700 AND 1750 AND c=123;
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-4.4 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 1 AND 500 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-4.5 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a BETWEEN 3000 AND 3000000 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-4.6 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<500 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-4.7 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>2500 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-4.8 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>1900 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-4.9 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a>1100 AND c=123
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
do_execsql_test analyzeE-4.10 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<1100 AND c=123
-} {/SEARCH t1 USING INDEX t1ca/}
+} {/SEARCH TABLE t1 USING INDEX t1ca/}
do_execsql_test analyzeE-4.11 {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a<1900 AND c=123
-} {/SCAN t1/}
+} {/SCAN TABLE t1/}
finish_test
diff -Nru sqlite3-3.35.0/test/analyzeF.test sqlite3-3.35.0-1/test/analyzeF.test
--- sqlite3-3.35.0/test/analyzeF.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyzeF.test 2021-04-04 17:23:21.000000000 +0000
@@ -62,7 +62,7 @@
11 "x = nullif('19', 0) AND y = nullif('4', 0)" {t1y (y=?)}
12 "x = nullif('4', 0) AND y = nullif('19', 0)" {t1y (y=?)}
} {
- set res "SEARCH t1 USING INDEX $idx"
+ set res "SEARCH TABLE t1 USING INDEX $idx"
do_eqp_test 1.$tn "SELECT * FROM t1 WHERE $where" $res
}
@@ -92,7 +92,7 @@
3 "x = nondet4() AND y = nondet19()" {t1y (y=?)}
4 "x = nondet19() AND y = nondet4()" {t1y (y=?)}
} {
- set res "SEARCH t1 USING INDEX $idx"
+ set res "SEARCH TABLE t1 USING INDEX $idx"
do_eqp_test 3.$tn "SELECT * FROM t1 WHERE $where" $res
}
diff -Nru sqlite3-3.35.0/test/analyzeG.test sqlite3-3.35.0-1/test/analyzeG.test
--- sqlite3-3.35.0/test/analyzeG.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/analyzeG.test 2021-04-04 17:23:21.000000000 +0000
@@ -20,6 +20,16 @@
}
set testprefix analyzeG
+proc do_scan_order_test {tn sql expect} {
+ uplevel [list do_test $tn [subst -nocommands {
+ set res ""
+ db eval "explain query plan $sql" {
+ lappend res [set detail]
+ }
+ set res
+ }] [list {*}$expect]]
+}
+
#-------------------------------------------------------------------------
# Test cases 1.* seek to verify that even if an index is not used, its
# stat4 data may be used by the planner to estimate the number of
@@ -44,17 +54,15 @@
# know this, so it has no preference as to which order the tables are
# scanned in. In practice this means that tables are scanned in the order
# they are specified in in the FROM clause.
-do_eqp_test 1.1.1 {
+do_scan_order_test 1.1.1 {
SELECT * FROM t1, t2 WHERE a=44 AND b=44;
} {
-
+ {SCAN TABLE t1} {SCAN TABLE t2}
}
-do_eqp_test 1.1.2 {
+do_scan_order_test 1.1.2 {
SELECT * FROM t2, t1 WHERE a=44 AND b=44
} {
- QUERY PLAN
- |--SCAN t2
- `--SCAN t1
+ {SCAN TABLE t2} {SCAN TABLE t1}
}
do_execsql_test 1.2 {
@@ -65,19 +73,15 @@
# Now, with the ANALYZE data, the planner knows that (b=44) matches a
# large number of rows. So it elects to scan table "t1" first, regardless
# of the order in which the tables are specified in the FROM clause.
-do_eqp_test 1.3.1 {
+do_scan_order_test 1.3.1 {
SELECT * FROM t1, t2 WHERE a=44 AND b=44;
} {
- QUERY PLAN
- |--SCAN t1
- `--SCAN t2
+ {SCAN TABLE t1} {SCAN TABLE t2}
}
-do_eqp_test 1.3.2 {
+do_scan_order_test 1.3.2 {
SELECT * FROM t2, t1 WHERE a=44 AND b=44
} {
- QUERY PLAN
- |--SCAN t1
- `--SCAN t2
+ {SCAN TABLE t1} {SCAN TABLE t2}
}
diff -Nru sqlite3-3.35.0/test/attach4.test sqlite3-3.35.0-1/test/attach4.test
--- sqlite3-3.35.0/test/attach4.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/attach4.test 2021-04-04 17:23:21.000000000 +0000
@@ -135,3 +135,4 @@
}
finish_test
+
diff -Nru sqlite3-3.35.0/test/autoindex1.test sqlite3-3.35.0-1/test/autoindex1.test
--- sqlite3-3.35.0/test/autoindex1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/autoindex1.test 2021-04-04 17:23:21.000000000 +0000
@@ -183,18 +183,18 @@
WHERE t501.a IN (SELECT x FROM t502 WHERE y=?);
} {
QUERY PLAN
- |--SEARCH t501 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?)
`--LIST SUBQUERY xxxxxx
- `--SCAN t502
+ `--SCAN TABLE t502
}
do_eqp_test autoindex1-501 {
SELECT b FROM t501
WHERE t501.a IN (SELECT x FROM t502 WHERE y=t501.b);
} {
QUERY PLAN
- |--SCAN t501
+ |--SCAN TABLE t501
`--CORRELATED LIST SUBQUERY xxxxxx
- `--SEARCH t502 USING AUTOMATIC COVERING INDEX (y=?)
+ `--SEARCH TABLE t502 USING AUTOMATIC COVERING INDEX (y=?)
}
do_eqp_test autoindex1-502 {
SELECT b FROM t501
@@ -202,9 +202,9 @@
AND t501.a IN (SELECT x FROM t502 WHERE y=t501.b);
} {
QUERY PLAN
- |--SEARCH t501 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE t501 USING INTEGER PRIMARY KEY (rowid=?)
`--CORRELATED LIST SUBQUERY xxxxxx
- `--SCAN t502
+ `--SCAN TABLE t502
}
# The following code checks a performance regression reported on the
@@ -277,13 +277,13 @@
ORDER BY x.registering_flock;
} {
QUERY PLAN
- |--MATERIALIZE y
- | |--SCAN s
- | |--SEARCH prev USING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date)
+ |--MATERIALIZE xxxxxx
+ | |--SCAN TABLE sheep AS s
+ | |--SEARCH TABLE flock_owner AS prev USING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date)
| `--CORRELATED SCALAR SUBQUERY xxxxxx
- | `--SEARCH later USING COVERING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date>? AND owner_change_date)
- |--SCAN x USING INDEX sheep_reg_flock_index
- `--SEARCH y USING AUTOMATIC COVERING INDEX (sheep_no=?)
+ | `--SEARCH TABLE flock_owner AS later USING COVERING INDEX sqlite_autoindex_flock_owner_1 (flock_no=? AND owner_change_date>? AND owner_change_date)
+ |--SCAN TABLE sheep AS x USING INDEX sheep_reg_flock_index
+ `--SEARCH SUBQUERY xxxxxx AS y USING AUTOMATIC COVERING INDEX (sheep_no=?)
}
@@ -294,7 +294,7 @@
SELECT a FROM t5 WHERE b=10 ORDER BY c;
} {
QUERY PLAN
- |--SCAN t5
+ |--SCAN TABLE t5
`--USE TEMP B-TREE FOR ORDER BY
}
@@ -413,7 +413,7 @@
JOIN raw_contacts ON (data.raw_contact_id=raw_contacts._id)
JOIN accounts ON (raw_contacts.account_id=accounts._id)
WHERE mimetype_id=10 AND data14 IS NOT NULL;
-} {/SEARCH data .*SEARCH raw_contacts/}
+} {/SEARCH TABLE data .*SEARCH TABLE raw_contacts/}
do_execsql_test autoindex1-801 {
EXPLAIN QUERY PLAN
SELECT * FROM
@@ -421,7 +421,7 @@
JOIN raw_contacts ON (data.raw_contact_id=raw_contacts._id)
JOIN accounts ON (raw_contacts.account_id=accounts._id)
WHERE mimetypes._id=10 AND data14 IS NOT NULL;
-} {/SEARCH data .*SEARCH raw_contacts/}
+} {/SEARCH TABLE data .*SEARCH TABLE raw_contacts/}
# Another test case from an important user of SQLite. The key feature of
# this test is that the "aggindex" subquery should make use of an
diff -Nru sqlite3-3.35.0/test/autoindex3.test sqlite3-3.35.0-1/test/autoindex3.test
--- sqlite3-3.35.0/test/autoindex3.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/autoindex3.test 2021-04-04 17:23:21.000000000 +0000
@@ -74,8 +74,8 @@
# At one point, SQLite was using the inferior plan:
#
-# 0|0|1|SEARCH v USING INDEX ve (e>?)
-# 0|1|0|SEARCH u USING COVERING INDEX uab (ANY(a) AND b=?)
+# 0|0|1|SEARCH TABLE v USING INDEX ve (e>?)
+# 0|1|0|SEARCH TABLE u USING COVERING INDEX uab (ANY(a) AND b=?)
#
# on the basis that the real index "uab" must be better than the automatic
# index. This is not right - a skip-scan is not necessarily better than an
@@ -85,8 +85,8 @@
select count(*) from u, v where u.b = v.b and v.e > 34;
} {
QUERY PLAN
- |--SEARCH v USING INDEX ve (e>?)
- `--SEARCH u USING AUTOMATIC COVERING INDEX (b=?)
+ |--SEARCH TABLE v USING INDEX ve (e>?)
+ `--SEARCH TABLE u USING AUTOMATIC COVERING INDEX (b=?)
}
diff -Nru sqlite3-3.35.0/test/autoindex5.test sqlite3-3.35.0-1/test/autoindex5.test
--- sqlite3-3.35.0/test/autoindex5.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/autoindex5.test 2021-04-04 17:23:21.000000000 +0000
@@ -102,7 +102,7 @@
AND ( sp.release = 'sid' OR sp.release = 'stretch' OR sp.release = 'jessie'
OR sp.release = 'wheezy' OR sp.release = 'squeeze' )
ORDER BY sp.name, st.bug_name, sp.release, sp.subrelease;
-} {SEARCH debian_cve USING AUTOMATIC COVERING INDEX (bug_name=?)}
+} {SEARCH SUBQUERY * USING AUTOMATIC COVERING INDEX (bug_name=?)}
#-------------------------------------------------------------------------
# Test that ticket [8a2adec1] has been fixed.
diff -Nru sqlite3-3.35.0/test/bestindex1.test sqlite3-3.35.0-1/test/bestindex1.test
--- sqlite3-3.35.0/test/bestindex1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/bestindex1.test 2021-04-04 17:23:21.000000000 +0000
@@ -51,11 +51,11 @@
do_eqp_test 1.1 {
SELECT * FROM x1 WHERE a = 'abc'
-} {SCAN x1 VIRTUAL TABLE INDEX 555:eq!}
+} {SCAN TABLE x1 VIRTUAL TABLE INDEX 555:eq!}
do_eqp_test 1.2 {
SELECT * FROM x1 WHERE a IN ('abc', 'def');
-} {SCAN x1 VIRTUAL TABLE INDEX 555:eq!}
+} {SCAN TABLE x1 VIRTUAL TABLE INDEX 555:eq!}
#-------------------------------------------------------------------------
#
@@ -141,17 +141,17 @@
set plan(use) {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 0:SELECT * FROM t1x WHERE a='%1%'
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:SELECT * FROM t1x WHERE a='%1%'
`--USE TEMP B-TREE FOR ORDER BY
}
set plan(omit) {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 0:SELECT * FROM t1x WHERE a='%1%'
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:SELECT * FROM t1x WHERE a='%1%'
`--USE TEMP B-TREE FOR ORDER BY
}
set plan(use2) {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 0:SELECT * FROM t1x
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:SELECT * FROM t1x
`--USE TEMP B-TREE FOR ORDER BY
}
diff -Nru sqlite3-3.35.0/test/bestindex2.test sqlite3-3.35.0-1/test/bestindex2.test
--- sqlite3-3.35.0/test/bestindex2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/bestindex2.test 2021-04-04 17:23:21.000000000 +0000
@@ -89,40 +89,40 @@
do_eqp_test 1.1 {
SELECT * FROM t1 WHERE a='abc'
-} {SCAN t1 VIRTUAL TABLE INDEX 0:indexed(a=?)}
+} {SCAN TABLE t1 VIRTUAL TABLE INDEX 0:indexed(a=?)}
do_eqp_test 1.2 {
SELECT * FROM t1 WHERE a='abc' AND b='def'
-} {SCAN t1 VIRTUAL TABLE INDEX 0:indexed(a=? AND b=?)}
+} {SCAN TABLE t1 VIRTUAL TABLE INDEX 0:indexed(a=? AND b=?)}
do_eqp_test 1.3 {
SELECT * FROM t1 WHERE a='abc' AND a='def'
-} {SCAN t1 VIRTUAL TABLE INDEX 0:indexed(a=?)}
+} {SCAN TABLE t1 VIRTUAL TABLE INDEX 0:indexed(a=?)}
do_eqp_test 1.4 {
SELECT * FROM t1,t2 WHERE c=a
} {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 0:
- `--SCAN t2 VIRTUAL TABLE INDEX 0:indexed(c=?)
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:
+ `--SCAN TABLE t2 VIRTUAL TABLE INDEX 0:indexed(c=?)
}
do_eqp_test 1.5 {
SELECT * FROM t1, t2 CROSS JOIN t3 WHERE t2.c = +t1.b AND t3.e=t2.d
} {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 0:
- |--SCAN t2 VIRTUAL TABLE INDEX 0:indexed(c=?)
- `--SCAN t3 VIRTUAL TABLE INDEX 0:indexed(e=?)
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:
+ |--SCAN TABLE t2 VIRTUAL TABLE INDEX 0:indexed(c=?)
+ `--SCAN TABLE t3 VIRTUAL TABLE INDEX 0:indexed(e=?)
}
do_eqp_test 1.6 {
SELECT * FROM t1, t2, t3 WHERE t2.c = +t1.b AND t3.e = t2.d
} {
QUERY PLAN
- |--SCAN t1 VIRTUAL TABLE INDEX 0:
- |--SCAN t2 VIRTUAL TABLE INDEX 0:indexed(c=?)
- `--SCAN t3 VIRTUAL TABLE INDEX 0:indexed(e=?)
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:
+ |--SCAN TABLE t2 VIRTUAL TABLE INDEX 0:indexed(c=?)
+ `--SCAN TABLE t3 VIRTUAL TABLE INDEX 0:indexed(e=?)
}
do_execsql_test 1.7.1 {
@@ -133,10 +133,10 @@
WHERE t1.a = t2.c AND t1.b = t3.e
} {
QUERY PLAN
- |--SCAN x1
- |--SCAN t1 VIRTUAL TABLE INDEX 0:
- |--SCAN t2 VIRTUAL TABLE INDEX 0:indexed(c=?)
- `--SCAN t3 VIRTUAL TABLE INDEX 0:indexed(e=?)
+ |--SCAN TABLE x1
+ |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:
+ |--SCAN TABLE t2 VIRTUAL TABLE INDEX 0:indexed(c=?)
+ `--SCAN TABLE t3 VIRTUAL TABLE INDEX 0:indexed(e=?)
}
finish_test
diff -Nru sqlite3-3.35.0/test/bestindex3.test sqlite3-3.35.0-1/test/bestindex3.test
--- sqlite3-3.35.0/test/bestindex3.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/bestindex3.test 2021-04-04 17:23:21.000000000 +0000
@@ -79,11 +79,11 @@
do_eqp_test 1.1 {
SELECT * FROM t1 WHERE a LIKE 'abc';
-} {SCAN t1 VIRTUAL TABLE INDEX 0:a LIKE ?}
+} {SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a LIKE ?}
do_eqp_test 1.2 {
SELECT * FROM t1 WHERE a = 'abc';
-} {SCAN t1 VIRTUAL TABLE INDEX 0:a EQ ?}
+} {SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a EQ ?}
do_eqp_test 1.3 {
SELECT * FROM t1 WHERE a = 'abc' OR b = 'def';
@@ -91,9 +91,9 @@
QUERY PLAN
`--MULTI-INDEX OR
|--INDEX 1
- | `--SCAN t1 VIRTUAL TABLE INDEX 0:a EQ ?
+ | `--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a EQ ?
`--INDEX 2
- `--SCAN t1 VIRTUAL TABLE INDEX 0:b EQ ?
+ `--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:b EQ ?
}
do_eqp_test 1.4 {
@@ -102,9 +102,9 @@
QUERY PLAN
`--MULTI-INDEX OR
|--INDEX 1
- | `--SCAN t1 VIRTUAL TABLE INDEX 0:a LIKE ?
+ | `--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a LIKE ?
`--INDEX 2
- `--SCAN t1 VIRTUAL TABLE INDEX 0:b EQ ?
+ `--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:b EQ ?
}
do_execsql_test 1.5 {
@@ -155,9 +155,9 @@
QUERY PLAN
`--MULTI-INDEX OR
|--INDEX 1
- | `--SEARCH t2 USING INDEX t2x (x>? AND x)
+ | `--SEARCH TABLE t2 USING INDEX t2x (x>? AND x)
`--INDEX 2
- `--SEARCH t2 USING INDEX t2y (y=?)
+ `--SEARCH TABLE t2 USING INDEX t2y (y=?)
}]
}
diff -Nru sqlite3-3.35.0/test/bestindex4.test sqlite3-3.35.0-1/test/bestindex4.test
--- sqlite3-3.35.0/test/bestindex4.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/bestindex4.test 2021-04-04 17:23:21.000000000 +0000
@@ -159,16 +159,16 @@
SELECT * FROM t1, x1 WHERE x1.d=t1.x;
} {
QUERY PLAN
- |--SCAN x1 VIRTUAL TABLE INDEX 0:
- `--SEARCH t1 USING COVERING INDEX sqlite_autoindex_t1_1 (x=?)
+ |--SCAN TABLE x1 VIRTUAL TABLE INDEX 0:
+ `--SEARCH TABLE t1 USING COVERING INDEX sqlite_autoindex_t1_1 (x=?)
}
do_eqp_test 2.2 {
SELECT * FROM t1, x1(t1.x)
} {
QUERY PLAN
- |--SCAN t1
- `--SCAN x1 VIRTUAL TABLE INDEX 555:
+ |--SCAN TABLE t1
+ `--SCAN TABLE x1 VIRTUAL TABLE INDEX 555:
}
diff -Nru sqlite3-3.35.0/test/bestindex7.test sqlite3-3.35.0-1/test/bestindex7.test
--- sqlite3-3.35.0/test/bestindex7.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/bestindex7.test 2021-04-04 17:23:21.000000000 +0000
@@ -76,3 +76,4 @@
do_execsql_test 1.12 { select * from vt1 WHERE a IN (NULL) } {}
finish_test
+
diff -Nru sqlite3-3.35.0/test/between.test sqlite3-3.35.0-1/test/between.test
--- sqlite3-3.35.0/test/between.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/between.test 2021-04-04 17:23:21.000000000 +0000
@@ -58,10 +58,10 @@
set eqp [execsql "EXPLAIN QUERY PLAN $sql"]
# puts eqp=$eqp
foreach {a b c x} $eqp {
- if {[regexp {(SCAN|SEARCH) (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
- $x all ss as tab idx]} {
+ if {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
+ $x all as tab idx]} {
lappend data $tab $idx
- } elseif {[regexp {(SCAN|SEARCH) (\w+ AS )?(\w+)\y} $x all ss as tab]} {
+ } elseif {[regexp { TABLE (\w+ AS )?(\w+)\y} $x all as tab]} {
lappend data $tab *
}
}
diff -Nru sqlite3-3.35.0/test/bigmmap.test sqlite3-3.35.0-1/test/bigmmap.test
--- sqlite3-3.35.0/test/bigmmap.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/bigmmap.test 2021-04-04 17:23:21.000000000 +0000
@@ -94,9 +94,9 @@
ORDER BY b, c;
" [string map {"\n " "\n"} "
QUERY PLAN
- |--SCAN o USING COVERING INDEX sqlite_autoindex_t${t}_1
+ |--SCAN TABLE t$t AS o USING COVERING INDEX sqlite_autoindex_t${t}_1
`--CORRELATED SCALAR SUBQUERY xxxxxx
- `--SEARCH i USING INTEGER PRIMARY KEY (rowid=?)
+ `--SEARCH TABLE t$t AS i USING INTEGER PRIMARY KEY (rowid=?)
"]
}
}
diff -Nru sqlite3-3.35.0/test/busy2.test sqlite3-3.35.0-1/test/busy2.test
--- sqlite3-3.35.0/test/busy2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/busy2.test 2021-04-04 17:23:21.000000000 +0000
@@ -168,3 +168,4 @@
}
finish_test
+
diff -Nru sqlite3-3.35.0/test/columncount.test sqlite3-3.35.0-1/test/columncount.test
--- sqlite3-3.35.0/test/columncount.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/columncount.test 2021-04-04 17:23:21.000000000 +0000
@@ -54,3 +54,4 @@
finish_test
+
diff -Nru sqlite3-3.35.0/test/cost.test sqlite3-3.35.0-1/test/cost.test
--- sqlite3-3.35.0/test/cost.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/cost.test 2021-04-04 17:23:21.000000000 +0000
@@ -25,8 +25,8 @@
SELECT e FROM t3, t4 WHERE b=c ORDER BY b, d;
} {
QUERY PLAN
- |--SCAN t3 USING COVERING INDEX i3
- `--SEARCH t4 USING INDEX i4 (c=?)
+ |--SCAN TABLE t3 USING COVERING INDEX i3
+ `--SEARCH TABLE t4 USING INDEX i4 (c=?)
}
@@ -39,7 +39,7 @@
# if the index is a non-covering index.
do_eqp_test 2.2 {
SELECT * FROM t1 ORDER BY a;
-} {SCAN t1 USING INDEX i1}
+} {SCAN TABLE t1 USING INDEX i1}
do_execsql_test 3.1 {
CREATE TABLE t5(a INTEGER PRIMARY KEY,b,c,d,e,f,g);
@@ -59,11 +59,11 @@
QUERY PLAN
|--MULTI-INDEX OR
| |--INDEX 1
- | | `--SEARCH t5 USING INDEX t5b (b=?)
+ | | `--SEARCH TABLE t5 USING INDEX t5b (b=?)
| |--INDEX 2
- | | `--SEARCH t5 USING INDEX t5c (c=?)
+ | | `--SEARCH TABLE t5 USING INDEX t5c (c=?)
| `--INDEX 3
- | `--SEARCH t5 USING INDEX t5d (d=?)
+ | `--SEARCH TABLE t5 USING INDEX t5d (d=?)
`--USE TEMP B-TREE FOR ORDER BY
}
@@ -83,11 +83,11 @@
}
do_eqp_test 4.2 {
SELECT * FROM t1 WHERE likelihood(a=?, 0.014) AND b BETWEEN ? AND ?;
-} {SEARCH t1 USING INDEX i1 (a=?)}
+} {SEARCH TABLE t1 USING INDEX i1 (a=?)}
do_eqp_test 4.3 {
SELECT * FROM t1 WHERE likelihood(a=?, 0.016) AND b BETWEEN ? AND ?;
-} {SEARCH t1 USING INDEX i2 (b>? AND b)}
+} {SEARCH TABLE t1 USING INDEX i2 (b>? AND b)}
#-------------------------------------------------------------------------
@@ -102,7 +102,7 @@
SELECT * FROM t2 ORDER BY x, y;
} {
QUERY PLAN
- |--SCAN t2 USING INDEX t2i1
+ |--SCAN TABLE t2 USING INDEX t2i1
`--USE TEMP B-TREE FOR RIGHT PART OF ORDER BY
}
@@ -110,7 +110,7 @@
SELECT * FROM t2 WHERE x BETWEEN ? AND ? ORDER BY rowid;
} {
QUERY PLAN
- |--SEARCH t2 USING INDEX t2i1 (x>? AND x)
+ |--SEARCH TABLE t2 USING INDEX t2i1 (x>? AND x)
`--USE TEMP B-TREE FOR ORDER BY
}
@@ -128,9 +128,9 @@
QUERY PLAN
|--MULTI-INDEX OR
| |--INDEX 1
- | | `--SEARCH t3 USING INDEX t3i1 (b>? AND b)
+ | | `--SEARCH TABLE t3 USING INDEX t3i1 (b>? AND b)
| `--INDEX 2
- | `--SEARCH t3 USING INDEX t3i2 (c=?)
+ | `--SEARCH TABLE t3 USING INDEX t3i2 (c=?)
`--USE TEMP B-TREE FOR ORDER BY
}
@@ -155,9 +155,9 @@
QUERY PLAN
|--MULTI-INDEX OR
| |--INDEX 1
- | | `--SEARCH t1 USING INDEX t1b (b>? AND b)
+ | | `--SEARCH TABLE t1 USING INDEX t1b (b>? AND b)
| `--INDEX 2
- | `--SEARCH t1 USING INDEX t1b (b=?)
+ | `--SEARCH TABLE t1 USING INDEX t1b (b=?)
`--USE TEMP B-TREE FOR ORDER BY
}
@@ -166,11 +166,11 @@
WHERE (+b IS NULL AND c NOT NULL AND d NOT NULL)
OR (b NOT NULL AND c IS NULL AND d NOT NULL)
OR (b NOT NULL AND c NOT NULL AND d IS NULL)
-} {SCAN t1}
+} {SCAN TABLE t1}
do_eqp_test 7.4 {
SELECT rowid FROM t1 WHERE (+b IS NULL AND c NOT NULL) OR c IS NULL
-} {SCAN t1}
+} {SCAN TABLE t1}
#-------------------------------------------------------------------------
#
@@ -202,9 +202,9 @@
AND unlikely(album.aid=track.aid);
} {
QUERY PLAN
- |--SCAN track
- |--SEARCH album USING INTEGER PRIMARY KEY (rowid=?)
- |--SEARCH composer USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE track
+ |--SEARCH TABLE album USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE composer USING INTEGER PRIMARY KEY (rowid=?)
`--USE TEMP B-TREE FOR DISTINCT
}
@@ -271,19 +271,19 @@
do_eqp_test 10.3 {
SELECT rowid FROM t6 WHERE a=0 AND c=0
- } {SEARCH t6 USING INDEX t6i2 (c=?)}
+ } {SEARCH TABLE t6 USING INDEX t6i2 (c=?)}
do_eqp_test 10.4 {
SELECT rowid FROM t6 WHERE a=0 AND b='xyz' AND c=0
- } {SEARCH t6 USING INDEX t6i2 (c=?)}
+ } {SEARCH TABLE t6 USING INDEX t6i2 (c=?)}
do_eqp_test 10.5 {
SELECT rowid FROM t6 WHERE likelihood(a=0, 0.1) AND c=0
- } {SEARCH t6 USING INDEX t6i1 (a=?)}
+ } {SEARCH TABLE t6 USING INDEX t6i1 (a=?)}
do_eqp_test 10.6 {
SELECT rowid FROM t6 WHERE likelihood(a=0, 0.1) AND b='xyz' AND c=0
- } {SEARCH t6 USING INDEX t6i1 (a=? AND b=?)}
+ } {SEARCH TABLE t6 USING INDEX t6i1 (a=? AND b=?)}
}
finish_test
diff -Nru sqlite3-3.35.0/test/count.test sqlite3-3.35.0-1/test/count.test
--- sqlite3-3.35.0/test/count.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/count.test 2021-04-04 17:23:21.000000000 +0000
@@ -212,25 +212,25 @@
SELECT count(1) FROM t1;
} {
QUERY PLAN
- `--SCAN t1 USING COVERING INDEX t1b
+ `--SCAN TABLE t1 USING COVERING INDEX t1b
}
do_eqp_test count-7.3 {
SELECT count(1) FROM t1 NOT INDEXED
} {
QUERY PLAN
- `--SCAN t1
+ `--SCAN TABLE t1
}
do_eqp_test count-7.3 {
SELECT count(*) FROM t1;
} {
QUERY PLAN
- `--SCAN t1 USING COVERING INDEX t1b
+ `--SCAN TABLE t1 USING COVERING INDEX t1b
}
do_eqp_test count-7.4 {
SELECT count(*) FROM t1 NOT INDEXED
} {
QUERY PLAN
- `--SCAN t1
+ `--SCAN TABLE t1
}
diff -Nru sqlite3-3.35.0/test/coveridxscan.test sqlite3-3.35.0-1/test/coveridxscan.test
--- sqlite3-3.35.0/test/coveridxscan.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/coveridxscan.test 2021-04-04 17:23:21.000000000 +0000
@@ -109,11 +109,11 @@
do_eqp_test 5.1.1 {
SELECT * FROM t1 ORDER BY c1, c2;
-} {SCAN t1 USING COVERING INDEX i1}
+} {SCAN TABLE t1 USING COVERING INDEX i1}
do_eqp_test 5.1.2 {
SELECT * FROM t2 ORDER BY c1, c2;
-} {SCAN t2 USING COVERING INDEX i2}
+} {SCAN TABLE t2 USING COVERING INDEX i2}
finish_test
diff -Nru sqlite3-3.35.0/test/distinctagg.test sqlite3-3.35.0-1/test/distinctagg.test
--- sqlite3-3.35.0/test/distinctagg.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/distinctagg.test 2021-04-04 17:23:21.000000000 +0000
@@ -16,7 +16,6 @@
set testdir [file dirname $argv0]
source $testdir/tester.tcl
-set testprefix distinctagg
do_test distinctagg-1.1 {
execsql {
@@ -32,7 +31,7 @@
} {1 2 3 3}
do_test distinctagg-1.2 {
execsql {
- SELECT b, count(distinct c) FROM t1 GROUP BY b
+ SELECT b, count(distinct c) FROM t1 GROUP BY b ORDER BY b
}
} {2 1 3 2}
do_test distinctagg-1.3 {
@@ -60,135 +59,4 @@
}
} {1 {DISTINCT aggregates must have exactly one argument}}
-#--------------------------------------------------------------------------
-reset_db
-do_execsql_test 3.0 {
- CREATE TABLE t1(a, b, c);
- CREATE TABLE t2(d, e, f);
-
- INSERT INTO t1 VALUES (1, 1, 1);
- INSERT INTO t1 VALUES (2, 2, 2);
- INSERT INTO t1 VALUES (3, 3, 3);
- INSERT INTO t1 VALUES (4, 1, 4);
- INSERT INTO t1 VALUES (5, 2, 1);
- INSERT INTO t1 VALUES (5, 3, 2);
- INSERT INTO t1 VALUES (4, 1, 3);
- INSERT INTO t1 VALUES (3, 2, 4);
- INSERT INTO t1 VALUES (2, 3, 1);
- INSERT INTO t1 VALUES (1, 1, 2);
-
- INSERT INTO t2 VALUES('a', 'a', 'a');
- INSERT INTO t2 VALUES('b', 'b', 'b');
- INSERT INTO t2 VALUES('c', 'c', 'c');
-
- CREATE INDEX t1a ON t1(a);
- CREATE INDEX t1bc ON t1(b, c);
-}
-
-foreach {tn use_eph sql res} {
- 1 0 "SELECT count(DISTINCT a) FROM t1" 5
- 2 0 "SELECT count(DISTINCT b) FROM t1" 3
- 3 1 "SELECT count(DISTINCT c) FROM t1" 4
- 4 0 "SELECT count(DISTINCT c) FROM t1 WHERE b=3" 3
- 5 0 "SELECT count(DISTINCT rowid) FROM t1" 10
- 6 0 "SELECT count(DISTINCT a) FROM t1, t2" 5
- 7 0 "SELECT count(DISTINCT a) FROM t2, t1" 5
- 8 1 "SELECT count(DISTINCT a+b) FROM t1, t2, t2, t2" 6
- 9 0 "SELECT count(DISTINCT c) FROM t1 WHERE c=2" 1
- 10 1 "SELECT count(DISTINCT t1.rowid) FROM t1, t2" 10
-} {
- do_test 3.$tn.1 {
- set prg [db eval "EXPLAIN $sql"]
- set idx [lsearch $prg OpenEphemeral]
- expr {$idx>=0}
- } $use_eph
-
- do_execsql_test 3.$tn.2 $sql $res
-}
-
-do_execsql_test 3.10 {
- SELECT a, count(DISTINCT b) FROM t1 GROUP BY a;
-} {
- 1 1 2 2 3 2 4 1 5 2
-}
-
-#--------------------------------------------------------------------------
-reset_db
-do_execsql_test 3.0 {
- CREATE TABLE t1(a, b, c);
- CREATE INDEX t1a ON t1(a);
- CREATE INDEX t1bc ON t1(b, c);
-
- INSERT INTO t1 VALUES(1, 'A', 1);
- INSERT INTO t1 VALUES(1, 'A', 1);
- INSERT INTO t1 VALUES(2, 'A', 2);
- INSERT INTO t1 VALUES(2, 'A', 2);
- INSERT INTO t1 VALUES(1, 'B', 1);
- INSERT INTO t1 VALUES(2, 'B', 2);
- INSERT INTO t1 VALUES(3, 'B', 3);
- INSERT INTO t1 VALUES(NULL, 'B', NULL);
- INSERT INTO t1 VALUES(NULL, 'C', NULL);
- INSERT INTO t1 VALUES('d', 'D', 'd');
-
- CREATE TABLE t2(d, e, f);
- CREATE INDEX t2def ON t2(d, e, f);
-
- INSERT INTO t2 VALUES(1, 1, 'a');
- INSERT INTO t2 VALUES(1, 1, 'a');
- INSERT INTO t2 VALUES(1, 2, 'a');
- INSERT INTO t2 VALUES(1, 2, 'a');
- INSERT INTO t2 VALUES(1, 2, 'b');
- INSERT INTO t2 VALUES(1, 3, 'b');
- INSERT INTO t2 VALUES(1, 3, 'a');
- INSERT INTO t2 VALUES(1, 3, 'b');
- INSERT INTO t2 VALUES(2, 3, 'x');
- INSERT INTO t2 VALUES(2, 3, 'y');
- INSERT INTO t2 VALUES(2, 3, 'z');
-
- CREATE TABLE t3(x, y, z);
- INSERT INTO t3 VALUES(1,1,1);
- INSERT INTO t3 VALUES(2,2,2);
-}
-
-foreach {tn use_eph sql res} {
- 1 0 "SELECT count(DISTINCT c) FROM t1 GROUP BY b" {2 3 0 1}
- 2 1 "SELECT count(DISTINCT a) FROM t1 GROUP BY b" {2 3 0 1}
- 3 1 "SELECT count(DISTINCT a) FROM t1 GROUP BY b+c" {0 1 1 1 1}
-
- 4 0 "SELECT count(DISTINCT f) FROM t2 GROUP BY d, e" {1 2 2 3}
- 5 1 "SELECT count(DISTINCT f) FROM t2 GROUP BY d" {2 3}
- 6 0 "SELECT count(DISTINCT f) FROM t2 WHERE d IS 1 GROUP BY e" {1 2 2}
-} {
- do_test 4.$tn.1 {
- set prg [db eval "EXPLAIN $sql"]
- set idx [lsearch $prg OpenEphemeral]
- expr {$idx>=0}
- } $use_eph
-
- do_execsql_test 4.$tn.2 $sql $res
-}
-
-
-set t3root [db one {SELECT rootpage FROM sqlite_schema WHERE name='t3'}]
-foreach {tn use_t3 sql res} {
- 1 1 "SELECT count(*) FROM t3" 2
- 2 0 "SELECT count(*) FROM t1" 10
- 2 1 "SELECT count(DISTINCT a) FROM t1, t3" 4
- 3 0 "SELECT count(DISTINCT a) FROM t1 LEFT JOIN t3" 4
- 4 1 "SELECT count(DISTINCT a) FROM t1 LEFT JOIN t3 WHERE t3.x=1" 4
- 5 1 "SELECT count(DISTINCT a) FROM t1 LEFT JOIN t3 WHERE t3.x=0" 0
- 6 0 "SELECT count(DISTINCT a) FROM t1 LEFT JOIN t3 ON (t3.x=0)" 4
-} {
- do_test 5.$tn.1 {
- set bUse 0
- db eval "EXPLAIN $sql" a {
- if {$a(opcode)=="OpenRead" && $a(p2)==$t3root} {set bUse 1}
- }
- set bUse
- } $use_t3
-
- do_execsql_test 5.$tn.2 $sql $res
-}
-
finish_test
-
diff -Nru sqlite3-3.35.0/test/distinct.test sqlite3-3.35.0-1/test/distinct.test
--- sqlite3-3.35.0/test/distinct.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/distinct.test 2021-04-04 17:23:21.000000000 +0000
@@ -30,11 +30,12 @@
set program1 [list]
set program2 [list]
db eval "EXPLAIN $sql1" {
- if {$opcode != "Noop" && $opcode != "Explain"} { lappend program1 $opcode }
+ if {$opcode != "Noop"} { lappend program1 $opcode }
}
db eval "EXPLAIN $sql2" {
- if {$opcode != "Noop" && $opcode != "Explain"} { lappend program2 $opcode }
+ if {$opcode != "Noop"} { lappend program2 $opcode }
}
+
return [expr {$program1==$program2}]
}
diff -Nru sqlite3-3.35.0/test/e_createtable.test sqlite3-3.35.0-1/test/e_createtable.test
--- sqlite3-3.35.0/test/e_createtable.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/e_createtable.test 2021-04-04 17:23:21.000000000 +0000
@@ -1393,13 +1393,13 @@
}
do_createtable_tests 4.10 {
1 "EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE b = 5"
- {/*SEARCH t1 USING INDEX sqlite_autoindex_t1_1 (b=?)*/}
+ {/*SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (b=?)*/}
2 "EXPLAIN QUERY PLAN SELECT * FROM t2 ORDER BY b, c"
- {/*SCAN t2 USING INDEX sqlite_autoindex_t2_1*/}
+ {/*SCAN TABLE t2 USING INDEX sqlite_autoindex_t2_1*/}
3 "EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE b=10 AND c>10"
- {/*SEARCH t2 USING INDEX sqlite_autoindex_t2_1 (b=? AND c>?)*/}
+ {/*SEARCH TABLE t2 USING INDEX sqlite_autoindex_t2_1 (b=? AND c>?)*/}
}
# EVIDENCE-OF: R-45493-35653 A CHECK constraint may be attached to a
diff -Nru sqlite3-3.35.0/test/e_fkey.test sqlite3-3.35.0-1/test/e_fkey.test
--- sqlite3-3.35.0/test/e_fkey.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/e_fkey.test 2021-04-04 17:23:21.000000000 +0000
@@ -992,15 +992,15 @@
EXPLAIN QUERY PLAN DELETE FROM artist WHERE 1;
EXPLAIN QUERY PLAN SELECT rowid FROM track WHERE trackartist = ?;
} {
- {SCAN artist}
- {SCAN track}
+ {SCAN TABLE artist}
+ {SCAN TABLE track}
}
do_detail_test e_fkey-25.3 {
PRAGMA foreign_keys = ON;
EXPLAIN QUERY PLAN DELETE FROM artist WHERE 1;
} {
- {SCAN artist}
- {SCAN track}
+ {SCAN TABLE artist}
+ {SCAN TABLE track}
}
do_test e_fkey-25.4 {
execsql {
@@ -1117,15 +1117,15 @@
do_detail_test e_fkey-27.3 {
EXPLAIN QUERY PLAN UPDATE artist SET artistid = ?, artistname = ?
} {
- {SCAN artist}
- {SEARCH track USING COVERING INDEX trackindex (trackartist=?)}
- {SEARCH track USING COVERING INDEX trackindex (trackartist=?)}
+ {SCAN TABLE artist}
+ {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?)}
+ {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?)}
}
do_detail_test e_fkey-27.4 {
EXPLAIN QUERY PLAN DELETE FROM artist
} {
- {SCAN artist}
- {SEARCH track USING COVERING INDEX trackindex (trackartist=?)}
+ {SCAN TABLE artist}
+ {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?)}
}
###########################################################################
diff -Nru sqlite3-3.35.0/test/eqp.test sqlite3-3.35.0-1/test/eqp.test
--- sqlite3-3.35.0/test/eqp.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/eqp.test 2021-04-04 17:23:21.000000000 +0000
@@ -46,131 +46,111 @@
QUERY PLAN
|--MULTI-INDEX OR
| |--INDEX 1
- | | `--SEARCH t1 USING INDEX i1 (a=?)
+ | | `--SEARCH TABLE t1 USING INDEX i1 (a=?)
| `--INDEX 2
- | `--SEARCH t1 USING INDEX i2 (b=?)
- `--SCAN t2
+ | `--SEARCH TABLE t1 USING INDEX i2 (b=?)
+ `--SCAN TABLE t2
}
do_eqp_test 1.3 {
SELECT * FROM t2 CROSS JOIN t1 WHERE t1.a=1 OR t1.b=2;
} {
QUERY PLAN
- |--SCAN t2
+ |--SCAN TABLE t2
`--MULTI-INDEX OR
|--INDEX 1
- | `--SEARCH t1 USING INDEX i1 (a=?)
+ | `--SEARCH TABLE t1 USING INDEX i1 (a=?)
`--INDEX 2
- `--SEARCH t1 USING INDEX i2 (b=?)
+ `--SEARCH TABLE t1 USING INDEX i2 (b=?)
}
do_eqp_test 1.3 {
SELECT a FROM t1 ORDER BY a
} {
QUERY PLAN
- `--SCAN t1 USING COVERING INDEX i1
+ `--SCAN TABLE t1 USING COVERING INDEX i1
}
do_eqp_test 1.4 {
SELECT a FROM t1 ORDER BY +a
} {
QUERY PLAN
- |--SCAN t1 USING COVERING INDEX i1
+ |--SCAN TABLE t1 USING COVERING INDEX i1
`--USE TEMP B-TREE FOR ORDER BY
}
do_eqp_test 1.5 {
SELECT a FROM t1 WHERE a=4
} {
QUERY PLAN
- `--SEARCH t1 USING COVERING INDEX i1 (a=?)
+ `--SEARCH TABLE t1 USING COVERING INDEX i1 (a=?)
}
do_eqp_test 1.6 {
SELECT DISTINCT count(*) FROM t3 GROUP BY a;
} {
QUERY PLAN
- |--SCAN t3
+ |--SCAN TABLE t3
|--USE TEMP B-TREE FOR GROUP BY
`--USE TEMP B-TREE FOR DISTINCT
}
-do_eqp_test 1.7.1 {
+do_eqp_test 1.7 {
SELECT * FROM t3 JOIN (SELECT 1)
} {
QUERY PLAN
- |--MATERIALIZE SUBQUERY xxxxxx
+ |--MATERIALIZE xxxxxx
| `--SCAN CONSTANT ROW
|--SCAN SUBQUERY xxxxxx
- `--SCAN t3
+ `--SCAN TABLE t3
}
-do_eqp_test 1.7.2 {
- SELECT * FROM t3 JOIN (SELECT 1) AS v1
-} {
- QUERY PLAN
- |--MATERIALIZE v1
- | `--SCAN CONSTANT ROW
- |--SCAN v1
- `--SCAN t3
-}
-do_eqp_test 1.7.3 {
- SELECT * FROM t3 AS xx JOIN (SELECT 1) AS yy
-} {
- QUERY PLAN
- |--MATERIALIZE yy
- | `--SCAN CONSTANT ROW
- |--SCAN yy
- `--SCAN xx
-}
-
-
do_eqp_test 1.8 {
SELECT * FROM t3 JOIN (SELECT 1 UNION SELECT 2)
} {
QUERY PLAN
- |--MATERIALIZE SUBQUERY xxxxxx
+ |--MATERIALIZE xxxxxx
| `--COMPOUND QUERY
| |--LEFT-MOST SUBQUERY
| | `--SCAN CONSTANT ROW
| `--UNION USING TEMP B-TREE
| `--SCAN CONSTANT ROW
|--SCAN SUBQUERY xxxxxx
- `--SCAN t3
+ `--SCAN TABLE t3
}
do_eqp_test 1.9 {
- SELECT * FROM t3 JOIN (SELECT 1 EXCEPT SELECT a FROM t3 LIMIT 17) AS abc
+ SELECT * FROM t3 JOIN (SELECT 1 EXCEPT SELECT a FROM t3 LIMIT 17)
} {
QUERY PLAN
- |--MATERIALIZE abc
+ |--MATERIALIZE xxxxxx
| `--COMPOUND QUERY
| |--LEFT-MOST SUBQUERY
| | `--SCAN CONSTANT ROW
| `--EXCEPT USING TEMP B-TREE
- | `--SCAN t3
- |--SCAN abc
- `--SCAN t3
+ | `--SCAN TABLE t3
+ |--SCAN SUBQUERY xxxxxx
+ `--SCAN TABLE t3
}
do_eqp_test 1.10 {
- SELECT * FROM t3 JOIN (SELECT 1 INTERSECT SELECT a FROM t3 LIMIT 17) AS abc
+ SELECT * FROM t3 JOIN (SELECT 1 INTERSECT SELECT a FROM t3 LIMIT 17)
} {
QUERY PLAN
- |--MATERIALIZE abc
+ |--MATERIALIZE xxxxxx
| `--COMPOUND QUERY
| |--LEFT-MOST SUBQUERY
| | `--SCAN CONSTANT ROW
| `--INTERSECT USING TEMP B-TREE
- | `--SCAN t3
- |--SCAN abc
- `--SCAN t3
+ | `--SCAN TABLE t3
+ |--SCAN SUBQUERY xxxxxx
+ `--SCAN TABLE t3
}
do_eqp_test 1.11 {
- SELECT * FROM t3 JOIN (SELECT 1 UNION ALL SELECT a FROM t3 LIMIT 17) abc
+ SELECT * FROM t3 JOIN (SELECT 1 UNION ALL SELECT a FROM t3 LIMIT 17)
} {
QUERY PLAN
- |--MATERIALIZE abc
+ |--MATERIALIZE xxxxxx
| `--COMPOUND QUERY
| |--LEFT-MOST SUBQUERY
| | `--SCAN CONSTANT ROW
| `--UNION ALL
- | `--SCAN t3
- |--SCAN abc
- `--SCAN t3
+ | `--SCAN TABLE t3
+ |--SCAN SUBQUERY xxxxxx
+ `--SCAN TABLE t3
}
#-------------------------------------------------------------------------
@@ -186,57 +166,57 @@
det 2.2.1 "SELECT DISTINCT min(x), max(x) FROM t1 GROUP BY x ORDER BY 1" {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
|--USE TEMP B-TREE FOR GROUP BY
|--USE TEMP B-TREE FOR DISTINCT
`--USE TEMP B-TREE FOR ORDER BY
}
det 2.2.2 "SELECT DISTINCT min(x), max(x) FROM t2 GROUP BY x ORDER BY 1" {
QUERY PLAN
- |--SCAN t2 USING COVERING INDEX t2i1
+ |--SCAN TABLE t2 USING COVERING INDEX t2i1
|--USE TEMP B-TREE FOR DISTINCT
`--USE TEMP B-TREE FOR ORDER BY
}
det 2.2.3 "SELECT DISTINCT * FROM t1" {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
`--USE TEMP B-TREE FOR DISTINCT
}
det 2.2.4 "SELECT DISTINCT * FROM t1, t2" {
QUERY PLAN
- |--SCAN t1
- |--SCAN t2
+ |--SCAN TABLE t1
+ |--SCAN TABLE t2
`--USE TEMP B-TREE FOR DISTINCT
}
det 2.2.5 "SELECT DISTINCT * FROM t1, t2 ORDER BY t1.x" {
QUERY PLAN
- |--SCAN t1
- |--SCAN t2
+ |--SCAN TABLE t1
+ |--SCAN TABLE t2
|--USE TEMP B-TREE FOR DISTINCT
`--USE TEMP B-TREE FOR ORDER BY
}
det 2.2.6 "SELECT DISTINCT t2.x FROM t1, t2 ORDER BY t2.x" {
QUERY PLAN
- |--SCAN t2 USING COVERING INDEX t2i1
- `--SCAN t1
+ |--SCAN TABLE t2 USING COVERING INDEX t2i1
+ `--SCAN TABLE t1
}
det 2.3.1 "SELECT max(x) FROM t2" {
QUERY PLAN
- `--SEARCH t2 USING COVERING INDEX t2i1
+ `--SEARCH TABLE t2 USING COVERING INDEX t2i1
}
det 2.3.2 "SELECT min(x) FROM t2" {
QUERY PLAN
- `--SEARCH t2 USING COVERING INDEX t2i1
+ `--SEARCH TABLE t2 USING COVERING INDEX t2i1
}
det 2.3.3 "SELECT min(x), max(x) FROM t2" {
QUERY PLAN
- `--SCAN t2 USING COVERING INDEX t2i1
+ `--SCAN TABLE t2 USING COVERING INDEX t2i1
}
det 2.4.1 "SELECT * FROM t1 WHERE rowid=?" {
QUERY PLAN
- `--SEARCH t1 USING INTEGER PRIMARY KEY (rowid=?)
+ `--SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
}
@@ -248,42 +228,42 @@
SELECT (SELECT x FROM t1 AS sub) FROM t1;
} {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
`--SCALAR SUBQUERY xxxxxx
- `--SCAN sub
+ `--SCAN TABLE t1 AS sub
}
do_eqp_test 3.1.2 {
SELECT * FROM t1 WHERE (SELECT x FROM t1 AS sub);
} {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
`--SCALAR SUBQUERY xxxxxx
- `--SCAN sub
+ `--SCAN TABLE t1 AS sub
}
do_eqp_test 3.1.3 {
SELECT * FROM t1 WHERE (SELECT x FROM t1 AS sub ORDER BY y);
} {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
`--SCALAR SUBQUERY xxxxxx
- |--SCAN sub
+ |--SCAN TABLE t1 AS sub
`--USE TEMP B-TREE FOR ORDER BY
}
do_eqp_test 3.1.4 {
SELECT * FROM t1 WHERE (SELECT x FROM t2 ORDER BY x);
} {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
`--SCALAR SUBQUERY xxxxxx
- `--SCAN t2 USING COVERING INDEX t2i1
+ `--SCAN TABLE t2 USING COVERING INDEX t2i1
}
det 3.2.1 {
SELECT * FROM (SELECT * FROM t1 ORDER BY x LIMIT 10) ORDER BY y LIMIT 5
} {
QUERY PLAN
- |--CO-ROUTINE SUBQUERY xxxxxx
- | |--SCAN t1
+ |--CO-ROUTINE xxxxxx
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
|--SCAN SUBQUERY xxxxxx
`--USE TEMP B-TREE FOR ORDER BY
@@ -295,13 +275,13 @@
ORDER BY x2.y LIMIT 5
} {
QUERY PLAN
- |--MATERIALIZE x1
- | |--SCAN t1
+ |--MATERIALIZE xxxxxx
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
- |--MATERIALIZE x2
- | `--SCAN t2 USING INDEX t2i1
- |--SCAN x1
- |--SCAN x2
+ |--MATERIALIZE xxxxxx
+ | `--SCAN TABLE t2 USING INDEX t2i1
+ |--SCAN SUBQUERY xxxxxx AS x1
+ |--SCAN SUBQUERY xxxxxx AS x2
`--USE TEMP B-TREE FOR ORDER BY
}
@@ -309,25 +289,25 @@
SELECT * FROM t1 WHERE y IN (SELECT y FROM t2)
} {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
`--LIST SUBQUERY xxxxxx
- `--SCAN t2
+ `--SCAN TABLE t2
}
det 3.3.2 {
SELECT * FROM t1 WHERE y IN (SELECT y FROM t2 WHERE t1.x!=t2.x)
} {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
`--CORRELATED LIST SUBQUERY xxxxxx
- `--SCAN t2
+ `--SCAN TABLE t2
}
det 3.3.3 {
SELECT * FROM t1 WHERE EXISTS (SELECT y FROM t2 WHERE t1.x!=t2.x)
} {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
`--CORRELATED SCALAR SUBQUERY xxxxxx
- `--SCAN t2
+ `--SCAN TABLE t2
}
#-------------------------------------------------------------------------
@@ -339,9 +319,9 @@
QUERY PLAN
`--COMPOUND QUERY
|--LEFT-MOST SUBQUERY
- | `--SCAN t1
+ | `--SCAN TABLE t1
`--UNION ALL
- `--SCAN t2
+ `--SCAN TABLE t2
}
do_eqp_test 4.1.2 {
SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY 2
@@ -349,10 +329,10 @@
QUERY PLAN
`--MERGE (UNION ALL)
|--LEFT
- | |--SCAN t1
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
`--RIGHT
- |--SCAN t2
+ |--SCAN TABLE t2
`--USE TEMP B-TREE FOR ORDER BY
}
do_eqp_test 4.1.3 {
@@ -361,10 +341,10 @@
QUERY PLAN
`--MERGE (UNION)
|--LEFT
- | |--SCAN t1
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
`--RIGHT
- |--SCAN t2
+ |--SCAN TABLE t2
`--USE TEMP B-TREE FOR ORDER BY
}
do_eqp_test 4.1.4 {
@@ -373,10 +353,10 @@
QUERY PLAN
`--MERGE (INTERSECT)
|--LEFT
- | |--SCAN t1
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
`--RIGHT
- |--SCAN t2
+ |--SCAN TABLE t2
`--USE TEMP B-TREE FOR ORDER BY
}
do_eqp_test 4.1.5 {
@@ -385,10 +365,10 @@
QUERY PLAN
`--MERGE (EXCEPT)
|--LEFT
- | |--SCAN t1
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
`--RIGHT
- |--SCAN t2
+ |--SCAN TABLE t2
`--USE TEMP B-TREE FOR ORDER BY
}
@@ -398,10 +378,10 @@
QUERY PLAN
`--MERGE (UNION ALL)
|--LEFT
- | |--SCAN t1
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
`--RIGHT
- `--SCAN t2 USING INDEX t2i1
+ `--SCAN TABLE t2 USING INDEX t2i1
}
do_eqp_test 4.2.3 {
SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY 1
@@ -409,10 +389,10 @@
QUERY PLAN
`--MERGE (UNION)
|--LEFT
- | |--SCAN t1
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
`--RIGHT
- |--SCAN t2 USING INDEX t2i1
+ |--SCAN TABLE t2 USING INDEX t2i1
`--USE TEMP B-TREE FOR RIGHT PART OF ORDER BY
}
do_eqp_test 4.2.4 {
@@ -421,10 +401,10 @@
QUERY PLAN
`--MERGE (INTERSECT)
|--LEFT
- | |--SCAN t1
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
`--RIGHT
- |--SCAN t2 USING INDEX t2i1
+ |--SCAN TABLE t2 USING INDEX t2i1
`--USE TEMP B-TREE FOR RIGHT PART OF ORDER BY
}
do_eqp_test 4.2.5 {
@@ -433,10 +413,10 @@
QUERY PLAN
`--MERGE (EXCEPT)
|--LEFT
- | |--SCAN t1
+ | |--SCAN TABLE t1
| `--USE TEMP B-TREE FOR ORDER BY
`--RIGHT
- |--SCAN t2 USING INDEX t2i1
+ |--SCAN TABLE t2 USING INDEX t2i1
`--USE TEMP B-TREE FOR RIGHT PART OF ORDER BY
}
@@ -446,9 +426,9 @@
QUERY PLAN
`--COMPOUND QUERY
|--LEFT-MOST SUBQUERY
- | `--SCAN t1
+ | `--SCAN TABLE t1
`--UNION USING TEMP B-TREE
- `--SCAN t2 USING COVERING INDEX t2i1
+ `--SCAN TABLE t2 USING COVERING INDEX t2i1
}
do_eqp_test 4.3.2 {
@@ -457,11 +437,11 @@
QUERY PLAN
`--COMPOUND QUERY
|--LEFT-MOST SUBQUERY
- | `--SCAN t1
+ | `--SCAN TABLE t1
|--UNION USING TEMP B-TREE
- | `--SCAN t2 USING COVERING INDEX t2i1
+ | `--SCAN TABLE t2 USING COVERING INDEX t2i1
`--UNION USING TEMP B-TREE
- `--SCAN t1
+ `--SCAN TABLE t1
}
do_eqp_test 4.3.3 {
SELECT x FROM t1 UNION SELECT x FROM t2 UNION SELECT x FROM t1 ORDER BY 1
@@ -471,12 +451,12 @@
|--LEFT
| `--MERGE (UNION)
| |--LEFT
- | | |--SCAN t1
+ | | |--SCAN TABLE t1
| | `--USE TEMP B-TREE FOR ORDER BY
| `--RIGHT
- | `--SCAN t2 USING COVERING INDEX t2i1
+ | `--SCAN TABLE t2 USING COVERING INDEX t2i1
`--RIGHT
- |--SCAN t1
+ |--SCAN TABLE t1
`--USE TEMP B-TREE FOR ORDER BY
}
@@ -489,145 +469,145 @@
# XVIDENCE-OF: R-47779-47605 sqlite> EXPLAIN QUERY PLAN SELECT a, b
# FROM t1 WHERE a=1;
-# 0|0|0|SCAN t1
+# 0|0|0|SCAN TABLE t1
#
do_execsql_test 5.1.0 { CREATE TABLE t1(a INT, b INT, ex TEXT) }
det 5.1.1 "SELECT a, b FROM t1 WHERE a=1" {
- 0 0 0 {SCAN t1}
+ 0 0 0 {SCAN TABLE t1}
}
# XVIDENCE-OF: R-55852-17599 sqlite> CREATE INDEX i1 ON t1(a);
# sqlite> EXPLAIN QUERY PLAN SELECT a, b FROM t1 WHERE a=1;
-# 0|0|0|SEARCH t1 USING INDEX i1
+# 0|0|0|SEARCH TABLE t1 USING INDEX i1
#
do_execsql_test 5.2.0 { CREATE INDEX i1 ON t1(a) }
det 5.2.1 "SELECT a, b FROM t1 WHERE a=1" {
- 0 0 0 {SEARCH t1 USING INDEX i1 (a=?)}
+ 0 0 0 {SEARCH TABLE t1 USING INDEX i1 (a=?)}
}
# XVIDENCE-OF: R-21179-11011 sqlite> CREATE INDEX i2 ON t1(a, b);
# sqlite> EXPLAIN QUERY PLAN SELECT a, b FROM t1 WHERE a=1;
-# 0|0|0|SEARCH t1 USING COVERING INDEX i2 (a=?)
+# 0|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)
#
do_execsql_test 5.3.0 { CREATE INDEX i2 ON t1(a, b) }
det 5.3.1 "SELECT a, b FROM t1 WHERE a=1" {
- 0 0 0 {SEARCH t1 USING COVERING INDEX i2 (a=?)}
+ 0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)}
}
# XVIDENCE-OF: R-09991-48941 sqlite> EXPLAIN QUERY PLAN
# SELECT t1.*, t2.* FROM t1, t2 WHERE t1.a=1 AND t1.b>2;
-# 0|0|0|SEARCH t1 USING COVERING INDEX i2 (a=? AND b>?)
-# 0|1|1|SCAN t2
+# 0|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=? AND b>?)
+# 0|1|1|SCAN TABLE t2
#
do_execsql_test 5.4.0 {CREATE TABLE t2(c INT, d INT, ex TEXT)}
det 5.4.1 "SELECT t1.a, t2.c FROM t1, t2 WHERE t1.a=1 AND t1.b>2" {
- 0 0 0 {SEARCH t1 USING COVERING INDEX i2 (a=? AND b>?)}
- 0 1 1 {SCAN t2}
+ 0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=? AND b>?)}
+ 0 1 1 {SCAN TABLE t2}
}
# XVIDENCE-OF: R-33626-61085 sqlite> EXPLAIN QUERY PLAN
# SELECT t1.*, t2.* FROM t2, t1 WHERE t1.a=1 AND t1.b>2;
-# 0|0|1|SEARCH t1 USING COVERING INDEX i2 (a=? AND b>?)
-# 0|1|0|SCAN t2
+# 0|0|1|SEARCH TABLE t1 USING COVERING INDEX i2 (a=? AND b>?)
+# 0|1|0|SCAN TABLE t2
#
det 5.5 "SELECT t1.a, t2.c FROM t2, t1 WHERE t1.a=1 AND t1.b>2" {
- 0 0 1 {SEARCH t1 USING COVERING INDEX i2 (a=? AND b>?)}
- 0 1 0 {SCAN t2}
+ 0 0 1 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=? AND b>?)}
+ 0 1 0 {SCAN TABLE t2}
}
# XVIDENCE-OF: R-04002-25654 sqlite> CREATE INDEX i3 ON t1(b);
# sqlite> EXPLAIN QUERY PLAN SELECT * FROM t1 WHERE a=1 OR b=2;
-# 0|0|0|SEARCH t1 USING COVERING INDEX i2 (a=?)
-# 0|0|0|SEARCH t1 USING INDEX i3 (b=?)
+# 0|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)
+# 0|0|0|SEARCH TABLE t1 USING INDEX i3 (b=?)
#
do_execsql_test 5.5.0 {CREATE INDEX i3 ON t1(b)}
det 5.6.1 "SELECT a, b FROM t1 WHERE a=1 OR b=2" {
- 0 0 0 {SEARCH t1 USING COVERING INDEX i2 (a=?)}
- 0 0 0 {SEARCH t1 USING INDEX i3 (b=?)}
+ 0 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)}
+ 0 0 0 {SEARCH TABLE t1 USING INDEX i3 (b=?)}
}
# XVIDENCE-OF: R-24577-38891 sqlite> EXPLAIN QUERY PLAN
# SELECT c, d FROM t2 ORDER BY c;
-# 0|0|0|SCAN t2
+# 0|0|0|SCAN TABLE t2
# 0|0|0|USE TEMP B-TREE FOR ORDER BY
#
det 5.7 "SELECT c, d FROM t2 ORDER BY c" {
- 0 0 0 {SCAN t2}
+ 0 0 0 {SCAN TABLE t2}
0 0 0 {USE TEMP B-TREE FOR ORDER BY}
}
# XVIDENCE-OF: R-58157-12355 sqlite> CREATE INDEX i4 ON t2(c);
# sqlite> EXPLAIN QUERY PLAN SELECT c, d FROM t2 ORDER BY c;
-# 0|0|0|SCAN t2 USING INDEX i4
+# 0|0|0|SCAN TABLE t2 USING INDEX i4
#
do_execsql_test 5.8.0 {CREATE INDEX i4 ON t2(c)}
det 5.8.1 "SELECT c, d FROM t2 ORDER BY c" {
- 0 0 0 {SCAN t2 USING INDEX i4}
+ 0 0 0 {SCAN TABLE t2 USING INDEX i4}
}
# XVIDENCE-OF: R-13931-10421 sqlite> EXPLAIN QUERY PLAN SELECT
# (SELECT b FROM t1 WHERE a=0), (SELECT a FROM t1 WHERE b=t2.c) FROM t2;
-# 0|0|0|SCAN t2
+# 0|0|0|SCAN TABLE t2
# 0|0|0|EXECUTE SCALAR SUBQUERY 1
-# 1|0|0|SEARCH t1 USING COVERING INDEX i2 (a=?)
+# 1|0|0|SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)
# 0|0|0|EXECUTE CORRELATED SCALAR SUBQUERY 2
-# 2|0|0|SEARCH t1 USING INDEX i3 (b=?)
+# 2|0|0|SEARCH TABLE t1 USING INDEX i3 (b=?)
#
det 5.9 {
SELECT (SELECT b FROM t1 WHERE a=0), (SELECT a FROM t1 WHERE b=t2.c) FROM t2
} {
- 0 0 0 {SCAN t2 USING COVERING INDEX i4}
+ 0 0 0 {SCAN TABLE t2 USING COVERING INDEX i4}
0 0 0 {EXECUTE SCALAR SUBQUERY 1}
- 1 0 0 {SEARCH t1 USING COVERING INDEX i2 (a=?)}
+ 1 0 0 {SEARCH TABLE t1 USING COVERING INDEX i2 (a=?)}
0 0 0 {EXECUTE CORRELATED SCALAR SUBQUERY 2}
- 2 0 0 {SEARCH t1 USING INDEX i3 (b=?)}
+ 2 0 0 {SEARCH TABLE t1 USING INDEX i3 (b=?)}
}
# XVIDENCE-OF: R-50892-45943 sqlite> EXPLAIN QUERY PLAN
# SELECT count(*) FROM (SELECT max(b) AS x FROM t1 GROUP BY a) GROUP BY x;
-# 1|0|0|SCAN t1 USING COVERING INDEX i2
+# 1|0|0|SCAN TABLE t1 USING COVERING INDEX i2
# 0|0|0|SCAN SUBQUERY 1
# 0|0|0|USE TEMP B-TREE FOR GROUP BY
#
det 5.10 {
SELECT count(*) FROM (SELECT max(b) AS x FROM t1 GROUP BY a) GROUP BY x
} {
- 1 0 0 {SCAN t1 USING COVERING INDEX i2}
+ 1 0 0 {SCAN TABLE t1 USING COVERING INDEX i2}
0 0 0 {SCAN SUBQUERY 1}
0 0 0 {USE TEMP B-TREE FOR GROUP BY}
}
# XVIDENCE-OF: R-46219-33846 sqlite> EXPLAIN QUERY PLAN
# SELECT * FROM (SELECT * FROM t2 WHERE c=1), t1;
-# 0|0|0|SEARCH t2 USING INDEX i4 (c=?)
-# 0|1|1|SCAN t1
+# 0|0|0|SEARCH TABLE t2 USING INDEX i4 (c=?)
+# 0|1|1|SCAN TABLE t1
#
det 5.11 "SELECT a, b FROM (SELECT * FROM t2 WHERE c=1), t1" {
- 0 0 0 {SEARCH t2 USING INDEX i4 (c=?)}
- 0 1 1 {SCAN t1 USING COVERING INDEX i2}
+ 0 0 0 {SEARCH TABLE t2 USING INDEX i4 (c=?)}
+ 0 1 1 {SCAN TABLE t1 USING COVERING INDEX i2}
}
# XVIDENCE-OF: R-37879-39987 sqlite> EXPLAIN QUERY PLAN
# SELECT a FROM t1 UNION SELECT c FROM t2;
-# 1|0|0|SCAN t1
-# 2|0|0|SCAN t2
+# 1|0|0|SCAN TABLE t1
+# 2|0|0|SCAN TABLE t2
# 0|0|0|COMPOUND SUBQUERIES 1 AND 2 USING TEMP B-TREE (UNION)
#
det 5.12 "SELECT a,b FROM t1 UNION SELECT c, 99 FROM t2" {
- 1 0 0 {SCAN t1 USING COVERING INDEX i2}
- 2 0 0 {SCAN t2 USING COVERING INDEX i4}
+ 1 0 0 {SCAN TABLE t1 USING COVERING INDEX i2}
+ 2 0 0 {SCAN TABLE t2 USING COVERING INDEX i4}
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 USING TEMP B-TREE (UNION)}
}
# XVIDENCE-OF: R-44864-63011 sqlite> EXPLAIN QUERY PLAN
# SELECT a FROM t1 EXCEPT SELECT d FROM t2 ORDER BY 1;
-# 1|0|0|SCAN t1 USING COVERING INDEX i2
-# 2|0|0|SCAN t2 2|0|0|USE TEMP B-TREE FOR ORDER BY
+# 1|0|0|SCAN TABLE t1 USING COVERING INDEX i2
+# 2|0|0|SCAN TABLE t2 2|0|0|USE TEMP B-TREE FOR ORDER BY
# 0|0|0|COMPOUND SUBQUERIES 1 AND 2 (EXCEPT)
#
det 5.13 "SELECT a FROM t1 EXCEPT SELECT d FROM t2 ORDER BY 1" {
- 1 0 0 {SCAN t1 USING COVERING INDEX i1}
- 2 0 0 {SCAN t2}
+ 1 0 0 {SCAN TABLE t1 USING COVERING INDEX i1}
+ 2 0 0 {SCAN TABLE t2}
2 0 0 {USE TEMP B-TREE FOR ORDER BY}
0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (EXCEPT)}
}
@@ -667,8 +647,8 @@
do_peqp_test 6.1 {
SELECT a, b FROM t1 EXCEPT SELECT d, 99 FROM t2 ORDER BY 1
} [string trimleft {
-1 0 0 SCAN t1 USING COVERING INDEX i2
-2 0 0 SCAN t2
+1 0 0 SCAN TABLE t1 USING COVERING INDEX i2
+2 0 0 SCAN TABLE t2
2 0 0 USE TEMP B-TREE FOR ORDER BY
0 0 0 COMPOUND SUBQUERIES 1 AND 2 (EXCEPT)
}]
@@ -689,12 +669,12 @@
det 7.1 "SELECT count(*) FROM t1" {
QUERY PLAN
- `--SCAN t1
+ `--SCAN TABLE t1
}
det 7.2 "SELECT count(*) FROM t2" {
QUERY PLAN
- `--SCAN t2 USING COVERING INDEX i1
+ `--SCAN TABLE t2 USING COVERING INDEX i1
}
do_execsql_test 7.3 {
@@ -713,12 +693,12 @@
det 7.4 "SELECT count(*) FROM t1" {
QUERY PLAN
- `--SCAN t1
+ `--SCAN TABLE t1
}
det 7.5 "SELECT count(*) FROM t2" {
QUERY PLAN
- `--SCAN t2 USING COVERING INDEX i1
+ `--SCAN TABLE t2 USING COVERING INDEX i1
}
#-------------------------------------------------------------------------
@@ -734,37 +714,37 @@
det 8.1.1 "SELECT * FROM t2" {
QUERY PLAN
- `--SCAN t2
+ `--SCAN TABLE t2
}
det 8.1.2 "SELECT * FROM t2 WHERE rowid=?" {
QUERY PLAN
- `--SEARCH t2 USING INTEGER PRIMARY KEY (rowid=?)
+ `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
}
det 8.1.3 "SELECT count(*) FROM t2" {
QUERY PLAN
- `--SCAN t2
+ `--SCAN TABLE t2
}
det 8.2.1 "SELECT * FROM t1" {
QUERY PLAN
- `--SCAN t1
+ `--SCAN TABLE t1
}
det 8.2.2 "SELECT * FROM t1 WHERE b=?" {
QUERY PLAN
- `--SEARCH t1 USING PRIMARY KEY (b=?)
+ `--SEARCH TABLE t1 USING PRIMARY KEY (b=?)
}
det 8.2.3 "SELECT * FROM t1 WHERE b=? AND c=?" {
QUERY PLAN
- `--SEARCH t1 USING PRIMARY KEY (b=? AND c=?)
+ `--SEARCH TABLE t1 USING PRIMARY KEY (b=? AND c=?)
}
det 8.2.4 "SELECT count(*) FROM t1" {
QUERY PLAN
- `--SCAN t1
+ `--SCAN TABLE t1
}
# 2018-08-16: While working on Fossil I discovered that EXPLAIN QUERY PLAN
@@ -834,16 +814,16 @@
ORDER BY 1;
} {
QUERY PLAN
- |--MATERIALIZE thread
- | |--SCAN x USING INDEX forumthread
+ |--MATERIALIZE xxxxxx
+ | |--SCAN TABLE forumpost AS x USING INDEX forumthread
| |--USING ROWID SEARCH ON TABLE private FOR IN-OPERATOR
| |--CORRELATED SCALAR SUBQUERY xxxxxx
- | | |--SEARCH forumpost USING COVERING INDEX forumthread (froot=?)
+ | | |--SEARCH TABLE forumpost USING COVERING INDEX forumthread (froot=?)
| | `--USING ROWID SEARCH ON TABLE private FOR IN-OPERATOR
| `--USE TEMP B-TREE FOR ORDER BY
- |--SCAN thread
- |--SEARCH blob USING INTEGER PRIMARY KEY (rowid=?)
- |--SEARCH event USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN SUBQUERY xxxxxx
+ |--SEARCH TABLE blob USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE event USING INTEGER PRIMARY KEY (rowid=?)
`--USE TEMP B-TREE FOR ORDER BY
}
diff -Nru sqlite3-3.35.0/test/exists2.test sqlite3-3.35.0-1/test/exists2.test
--- sqlite3-3.35.0/test/exists2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/exists2.test 2021-04-04 17:23:21.000000000 +0000
@@ -50,7 +50,7 @@
do_execsql_eqp_test 1.2 {
SELECT t1.* FROM t1 WHERE EXISTS(SELECT * FROM t2 WHERE t2.c=t1.a);
} {
- SEARCH t1 USING INTEGER PRIMARY KEY
+ SEARCH TABLE t1 USING INTEGER PRIMARY KEY
} {
1 one 3 three 5 five 7 seven
}
@@ -58,7 +58,7 @@
do_execsql_eqp_test 1.3 {
SELECT t1.* FROM t1 WHERE EXISTS(SELECT * FROM t2 WHERE t2.c+1=t1.a);
} {
- SEARCH t1 USING INTEGER PRIMARY KEY
+ SEARCH TABLE t1 USING INTEGER PRIMARY KEY
} {
2 two 4 four 6 six
}
@@ -66,7 +66,7 @@
do_execsql_eqp_test 1.4 {
SELECT t1.* FROM t1 WHERE EXISTS(SELECT * FROM t2 WHERE t2.c+1=t1.a+1);
} {
- SCAN t1
+ SCAN TABLE t1
} {
1 one 3 three 5 five 7 seven
}
@@ -76,7 +76,7 @@
SELECT * FROM t2 WHERE t1.a=t2.c AND d IN (1, 2, 3)
);
} {
- SEARCH t1 USING INTEGER PRIMARY KEY
+ SEARCH TABLE t1 USING INTEGER PRIMARY KEY
} {
1 one 3 three 5 five
}
@@ -86,7 +86,7 @@
SELECT * FROM t2 WHERE d IN (1, 2, 3)AND t1.a=t2.c
);
} {
- SEARCH t1 USING INTEGER PRIMARY KEY
+ SEARCH TABLE t1 USING INTEGER PRIMARY KEY
} {
1 one 3 three 5 five
}
@@ -96,7 +96,7 @@
SELECT * FROM t2 WHERE d IN (1, 2, 3)AND t1.a=t2.c
);
} {
- SEARCH t1 USING INTEGER PRIMARY KEY
+ SEARCH TABLE t1 USING INTEGER PRIMARY KEY
} {
1 one 3 three 5 five
}
@@ -123,7 +123,7 @@
do_execsql_eqp_test 2.3 {
SELECT a FROM t3 WHERE EXISTS (SELECT 1 FROM t4 WHERE a=c)
} {
- SEARCH t3 USING PRIMARY KEY
+ SEARCH TABLE t3 USING PRIMARY KEY
} {
four one
}
@@ -131,7 +131,7 @@
do_execsql_eqp_test 2.4 {
SELECT a FROM t3 WHERE EXISTS (SELECT 1 FROM t4 WHERE c=a)
} {
- SCAN t3
+ SCAN TABLE t3
} {
five four one two
}
@@ -143,7 +143,7 @@
do_execsql_eqp_test 2.6 {
SELECT a FROM t3 WHERE EXISTS (SELECT 1 FROM t4 WHERE c=a)
} {
- SEARCH t3 USING COVERING INDEX t3anc
+ SEARCH TABLE t3 USING COVERING INDEX t3anc
} {
five four one two
}
@@ -154,7 +154,7 @@
do_execsql_eqp_test 2.7 {
SELECT a FROM t3 WHERE EXISTS (SELECT 1 FROM t4 WHERE a=c)
} {
- SEARCH t3 USING PRIMARY KEY
+ SEARCH TABLE t3 USING PRIMARY KEY
} {
four one
}
diff -Nru sqlite3-3.35.0/test/existsfault.test sqlite3-3.35.0-1/test/existsfault.test
--- sqlite3-3.35.0/test/existsfault.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/existsfault.test 2021-04-04 17:23:21.000000000 +0000
@@ -49,3 +49,4 @@
finish_test
+
diff -Nru sqlite3-3.35.0/test/external_reader.test sqlite3-3.35.0-1/test/external_reader.test
--- sqlite3-3.35.0/test/external_reader.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/external_reader.test 1970-01-01 00:00:00.000000000 +0000
@@ -1,74 +0,0 @@
-# 2021 April 2
-#
-# The author disclaims copyright to this source code. In place of
-# a legal notice, here is a blessing:
-#
-# May you do good and not evil.
-# May you find forgiveness for yourself and forgive others.
-# May you share freely, never taking more than you give.
-#
-#***********************************************************************
-#
-
-set testdir [file dirname $argv0]
-source $testdir/tester.tcl
-source $testdir/lock_common.tcl
-set testprefix external_reader
-
-ifcapable !wal {
- finish_test
- return
-}
-if {$::tcl_platform(platform)!="unix"} {
- finish_test
- return
-}
-
-do_multiclient_test tn {
-
- set bExternal 1
- if {[info commands db3]!=""} { set bExternal 0 }
-
- do_test 1.$tn.0 {
- sql1 {
- PRAGMA journal_mode = wal;
- CREATE TABLE t1(a, b);
- INSERT INTO t1 VALUES(1, 2);
- }
- } {wal}
-
- do_test 1.$tn.1 {
- sql2 { SELECT * FROM t1 }
- } {1 2}
-
- do_test 1.$tn.2 {
- code1 {
- file_control_external_reader db
- }
- } {0}
-
- do_test 1.$tn.3 {
- sql2 {
- BEGIN;
- SELECT * FROM t1;
- }
- } {1 2}
-
- do_test 1.$tn.4 {
- code1 {
- file_control_external_reader db
- }
- } $bExternal
-
- do_test 1.$tn.5 {
- sql2 { COMMIT }
- } {}
-
- do_test 1.$tn.6 {
- code1 { file_control_external_reader db }
- } 0
-
-}
-
-
-finish_test
diff -Nru sqlite3-3.35.0/test/fts3aux1.test sqlite3-3.35.0-1/test/fts3aux1.test
--- sqlite3-3.35.0/test/fts3aux1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/fts3aux1.test 2021-04-04 17:23:21.000000000 +0000
@@ -105,10 +105,10 @@
#
do_execsql_test 2.1.1.1 {
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term='braid'
-} {/*SCAN terms VIRTUAL TABLE INDEX 1:*/}
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 1:*/}
do_execsql_test 2.1.1.2 {
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term='braid'
-} {/*SCAN terms VIRTUAL TABLE INDEX 0:*/}
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 0:*/}
# Now show that using "term='braid'" means the virtual table returns
# only 1 row to SQLite, but "+term='braid'" means all 19 are returned.
@@ -154,24 +154,24 @@
do_execsql_test 2.2.1.1 {
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term>'brain'
-} {/*SCAN terms VIRTUAL TABLE INDEX 2:*/}
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 2:*/}
do_execsql_test 2.2.1.2 {
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term>'brain'
-} {/*SCAN terms VIRTUAL TABLE INDEX 0:*/}
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 0:*/}
do_execsql_test 2.2.1.3 {
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term<'brain'
-} {/*SCAN terms VIRTUAL TABLE INDEX 4:*/}
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 4:*/}
do_execsql_test 2.2.1.4 {
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term<'brain'
-} {/*SCAN terms VIRTUAL TABLE INDEX 0:*/}
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 0:*/}
do_execsql_test 2.2.1.5 {
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE term BETWEEN 'brags' AND 'brain'
-} {/*SCAN terms VIRTUAL TABLE INDEX 6:*/}
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 6:*/}
do_execsql_test 2.2.1.6 {
EXPLAIN QUERY PLAN SELECT * FROM terms WHERE +term BETWEEN 'brags' AND 'brain'
-} {/*SCAN terms VIRTUAL TABLE INDEX 0:*/}
+} {/*SCAN TABLE terms VIRTUAL TABLE INDEX 0:*/}
do_test 2.2.2.1 {
set cnt 0
@@ -335,7 +335,7 @@
9 1 "ORDER BY occurrences DESC"
} {
- set res {SCAN terms VIRTUAL TABLE INDEX 0:}
+ set res {SCAN TABLE terms VIRTUAL TABLE INDEX 0:}
if {$sort} { append res {*USE TEMP B-TREE FOR ORDER BY} }
set res "/*$res*/"
@@ -413,8 +413,8 @@
SELECT y FROM x2, terms WHERE y = term AND col = '*'
} {
QUERY PLAN
- |--SCAN x2
- `--SCAN terms VIRTUAL TABLE INDEX 1:
+ |--SCAN TABLE x2
+ `--SCAN TABLE terms VIRTUAL TABLE INDEX 1:
} {
a b c d e f g h i j k l
}
@@ -423,8 +423,8 @@
SELECT y FROM terms, x2 WHERE y = term AND col = '*'
} {
QUERY PLAN
- |--SCAN x2
- `--SCAN terms VIRTUAL TABLE INDEX 1:
+ |--SCAN TABLE x2
+ `--SCAN TABLE terms VIRTUAL TABLE INDEX 1:
} {
a b c d e f g h i j k l
}
@@ -433,8 +433,8 @@
SELECT y FROM x3, terms WHERE y = term AND col = '*'
} {
QUERY PLAN
- |--SCAN terms VIRTUAL TABLE INDEX 0:
- `--SEARCH x3 USING COVERING INDEX i1 (y=?)
+ |--SCAN TABLE terms VIRTUAL TABLE INDEX 0:
+ `--SEARCH TABLE x3 USING COVERING INDEX i1 (y=?)
} {
a b c d e f g h i j k l
}
@@ -443,8 +443,8 @@
SELECT y FROM terms, x3 WHERE y = term AND occurrences>1 AND col = '*'
} {
QUERY PLAN
- |--SCAN terms VIRTUAL TABLE INDEX 0:
- `--SEARCH x3 USING COVERING INDEX i1 (y=?)
+ |--SCAN TABLE terms VIRTUAL TABLE INDEX 0:
+ `--SEARCH TABLE x3 USING COVERING INDEX i1 (y=?)
} {
a k l
}
diff -Nru sqlite3-3.35.0/test/fts3corrupt6.test sqlite3-3.35.0-1/test/fts3corrupt6.test
--- sqlite3-3.35.0/test/fts3corrupt6.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/fts3corrupt6.test 2021-04-04 17:23:21.000000000 +0000
@@ -64,3 +64,5 @@
set sqlite_fts3_enable_parentheses $saved_sqlite_fts3_enable_parentheses
finish_test
+
+
diff -Nru sqlite3-3.35.0/test/fts3join.test sqlite3-3.35.0-1/test/fts3join.test
--- sqlite3-3.35.0/test/fts3join.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/fts3join.test 2021-04-04 17:23:21.000000000 +0000
@@ -97,10 +97,10 @@
WHERE t4.y = ?;
} {
QUERY PLAN
- |--MATERIALIZE rr
- | `--SCAN ft4 VIRTUAL TABLE INDEX 3:
- |--SCAN t4
- `--SEARCH rr USING AUTOMATIC COVERING INDEX (docid=?)
+ |--MATERIALIZE xxxxxx
+ | `--SCAN TABLE ft4 VIRTUAL TABLE INDEX 3:
+ |--SCAN TABLE t4
+ `--SEARCH SUBQUERY xxxxxx AS rr USING AUTOMATIC COVERING INDEX (docid=?)
}
finish_test
diff -Nru sqlite3-3.35.0/test/fts3query.test sqlite3-3.35.0-1/test/fts3query.test
--- sqlite3-3.35.0/test/fts3query.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/fts3query.test 2021-04-04 17:23:21.000000000 +0000
@@ -119,29 +119,29 @@
SELECT t1.number FROM t1, ft WHERE t1.number=ft.rowid ORDER BY t1.date
} {
QUERY PLAN
- |--SCAN t1 USING COVERING INDEX i1
- `--SCAN ft VIRTUAL TABLE INDEX 1:
+ |--SCAN TABLE t1 USING COVERING INDEX i1
+ `--SCAN TABLE ft VIRTUAL TABLE INDEX 1:
}
do_eqp_test fts3query-4.3 {
SELECT t1.number FROM ft, t1 WHERE t1.number=ft.rowid ORDER BY t1.date
} {
QUERY PLAN
- |--SCAN t1 USING COVERING INDEX i1
- `--SCAN ft VIRTUAL TABLE INDEX 1:
+ |--SCAN TABLE t1 USING COVERING INDEX i1
+ `--SCAN TABLE ft VIRTUAL TABLE INDEX 1:
}
do_eqp_test fts3query-4.4 {
SELECT t1.number FROM t1, bt WHERE t1.number=bt.rowid ORDER BY t1.date
} {
QUERY PLAN
- |--SCAN t1 USING COVERING INDEX i1
- `--SEARCH bt USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE t1 USING COVERING INDEX i1
+ `--SEARCH TABLE bt USING INTEGER PRIMARY KEY (rowid=?)
}
do_eqp_test fts3query-4.5 {
SELECT t1.number FROM bt, t1 WHERE t1.number=bt.rowid ORDER BY t1.date
} {
QUERY PLAN
- |--SCAN t1 USING COVERING INDEX i1
- `--SEARCH bt USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE t1 USING COVERING INDEX i1
+ `--SEARCH TABLE bt USING INTEGER PRIMARY KEY (rowid=?)
}
diff -Nru sqlite3-3.35.0/test/fts3snippet2.test sqlite3-3.35.0-1/test/fts3snippet2.test
--- sqlite3-3.35.0/test/fts3snippet2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/fts3snippet2.test 2021-04-04 17:23:21.000000000 +0000
@@ -57,3 +57,4 @@
set sqlite_fts3_enable_parentheses 0
finish_test
+
diff -Nru sqlite3-3.35.0/test/fts4upfrom.test sqlite3-3.35.0-1/test/fts4upfrom.test
--- sqlite3-3.35.0/test/fts4upfrom.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/fts4upfrom.test 2021-04-04 17:23:21.000000000 +0000
@@ -137,3 +137,4 @@
}
finish_test
+
diff -Nru sqlite3-3.35.0/test/hook.test sqlite3-3.35.0-1/test/hook.test
--- sqlite3-3.35.0/test/hook.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/hook.test 2021-04-04 17:23:22.000000000 +0000
@@ -1015,3 +1015,4 @@
} {1 {UNIQUE constraint failed: t4.a}}
finish_test
+
diff -Nru sqlite3-3.35.0/test/in4.test sqlite3-3.35.0-1/test/in4.test
--- sqlite3-3.35.0/test/in4.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/in4.test 2021-04-04 17:23:22.000000000 +0000
@@ -330,7 +330,7 @@
do_execsql_test in4-6.1-eqp {
EXPLAIN QUERY PLAN
SELECT * FROM t6a, t6b WHERE a=3 AND b IN (c);
-} {~/SCAN t6a/}
+} {~/SCAN TABLE t6a/}
do_execsql_test in4-6.2 {
SELECT * FROM t6a, t6b WHERE a=3 AND c IN (b);
} {3 4 4 44}
diff -Nru sqlite3-3.35.0/test/index6.test sqlite3-3.35.0-1/test/index6.test
--- sqlite3-3.35.0/test/index6.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/index6.test 2021-04-04 17:23:22.000000000 +0000
@@ -158,7 +158,7 @@
EXPLAIN QUERY PLAN
SELECT * FROM t2 WHERE a=5;
}
-} {/(SEARCH|SCAN) t2 USING INDEX t2a1 /}
+} {/.* TABLE t2 USING INDEX t2a1 .*/}
ifcapable stat4 {
execsql ANALYZE
do_test index6-2.3stat4 {
@@ -166,21 +166,21 @@
EXPLAIN QUERY PLAN
SELECT * FROM t2 WHERE a IS NOT NULL;
}
- } {/(SEARCH|SCAN) t2 USING INDEX t2a1 /}
+ } {/.* TABLE t2 USING INDEX t2a1 .*/}
} else {
do_test index6-2.3stat4 {
execsql {
EXPLAIN QUERY PLAN
SELECT * FROM t2 WHERE a IS NOT NULL AND a>0;
}
- } {/(SEARCH|SCANE) t2 USING INDEX t2a1 /}
+ } {/.* TABLE t2 USING INDEX t2a1 .*/}
}
do_test index6-2.4 {
execsql {
EXPLAIN QUERY PLAN
SELECT * FROM t2 WHERE a IS NULL;
}
-} {~/INDEX t2a1/}
+} {~/.*INDEX t2a1.*/}
do_execsql_test index6-2.101 {
DROP INDEX t2a1;
@@ -319,8 +319,8 @@
SELECT * FROM t8a LEFT JOIN t8b ON (x = 'value' AND y = a)
} {
QUERY PLAN
- |--SCAN t8a
- `--SEARCH t8b USING INDEX i8c (y=?)
+ |--SCAN TABLE t8a
+ `--SEARCH TABLE t8b USING INDEX i8c (y=?)
}
do_execsql_test index6-8.2 {
diff -Nru sqlite3-3.35.0/test/index7.test sqlite3-3.35.0-1/test/index7.test
--- sqlite3-3.35.0/test/index7.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/index7.test 2021-04-04 17:23:22.000000000 +0000
@@ -113,7 +113,7 @@
do_execsql_test index7-1.7eqp {
EXPLAIN QUERY PLAN
SELECT b FROM t1 WHERE a NOT LIKE 'abc%' AND a=7 ORDER BY +b;
-} {/SEARCH t1 USING COVERING INDEX bad1 /}
+} {/SEARCH TABLE t1 USING COVERING INDEX bad1 /}
do_execsql_test index7-1.8 {
DELETE FROM t1 WHERE c>=101;
DROP INDEX IF EXISTS bad1;
@@ -202,28 +202,28 @@
EXPLAIN QUERY PLAN
SELECT * FROM t2 WHERE a=5;
}
-} {/(SCAN|SEARCH) t2 USING COVERING INDEX t2a1 /}
+} {/.* TABLE t2 USING COVERING INDEX t2a1 .*/}
ifcapable stat4 {
do_test index7-2.3stat4 {
execsql {
EXPLAIN QUERY PLAN
SELECT * FROM t2 WHERE a IS NOT NULL;
}
- } {/(SCAN|SEARCH) t2 USING COVERING INDEX t2a1 /}
+ } {/.* TABLE t2 USING COVERING INDEX t2a1 .*/}
} else {
do_test index7-2.3stat4 {
execsql {
EXPLAIN QUERY PLAN
SELECT * FROM t2 WHERE a IS NOT NULL AND a>0;
}
- } {/(SCAN|SEARCH) t2 USING COVERING INDEX t2a1 /}
+ } {/.* TABLE t2 USING COVERING INDEX t2a1 .*/}
}
do_test index7-2.4 {
execsql {
EXPLAIN QUERY PLAN
SELECT * FROM t2 WHERE a IS NULL;
}
-} {~/INDEX t2a1/}
+} {~/.*INDEX t2a1.*/}
do_execsql_test index7-2.101 {
DROP INDEX t2a1;
@@ -321,7 +321,7 @@
}
do_eqp_test index7-6.4 {
SELECT * FROM v4 WHERE d='xyz' AND c='def'
-} {SEARCH t4 USING INDEX i4 (c=?)}
+} {SEARCH TABLE t4 USING INDEX i4 (c=?)}
do_catchsql_test index7-6.5 {
CREATE INDEX t5a ON t5(a) WHERE a=#1;
@@ -349,7 +349,7 @@
INSERT INTO t1(x) VALUES(1),(2);
ANALYZE;
EXPLAIN QUERY PLAN SELECT 1 FROM t1 WHERE y=5;
-} {/SEARCH t1 USING COVERING INDEX t1y/}
+} {/SEARCH TABLE t1 USING COVERING INDEX t1y/}
finish_test
diff -Nru sqlite3-3.35.0/test/index8.test sqlite3-3.35.0-1/test/index8.test
--- sqlite3-3.35.0/test/index8.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/index8.test 2021-04-04 17:23:22.000000000 +0000
@@ -41,7 +41,7 @@
do_execsql_test 1.0eqp {
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE c=4 ORDER BY a, b LIMIT 2;
-} {/SCAN t1 USING INDEX t1abc/}
+} {/SCAN TABLE t1 USING INDEX t1abc/}
# If we change the index so that it no longer covers the WHERE clause,
# then we should (correctly) revert to using a table scan.
diff -Nru sqlite3-3.35.0/test/indexedby.test sqlite3-3.35.0-1/test/indexedby.test
--- sqlite3-3.35.0/test/indexedby.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/indexedby.test 2021-04-04 17:23:22.000000000 +0000
@@ -42,16 +42,16 @@
#
do_eqp_test indexedby-1.2 {
select * from t1 WHERE a = 10;
-} {SEARCH t1 USING INDEX i1 (a=?)}
+} {SEARCH TABLE t1 USING INDEX i1 (a=?)}
do_eqp_test indexedby-1.3 {
select * from t1 ;
-} {SCAN t1}
+} {SCAN TABLE t1}
do_eqp_test indexedby-1.4 {
select * from t1, t2 WHERE c = 10;
} {
QUERY PLAN
- |--SEARCH t2 USING INDEX i3 (c=?)
- `--SCAN t1
+ |--SEARCH TABLE t2 USING INDEX i3 (c=?)
+ `--SCAN TABLE t1
}
# Parser tests. Test that an INDEXED BY or NOT INDEX clause can be
@@ -118,21 +118,21 @@
#
do_eqp_test indexedby-3.1 {
SELECT * FROM t1 WHERE a = 'one' AND b = 'two'
-} {/SEARCH t1 USING INDEX/}
+} {/SEARCH TABLE t1 USING INDEX/}
do_eqp_test indexedby-3.1.1 {
SELECT * FROM t1 NOT INDEXED WHERE a = 'one' AND b = 'two'
-} {SCAN t1}
+} {SCAN TABLE t1}
do_eqp_test indexedby-3.1.2 {
SELECT * FROM t1 NOT INDEXED WHERE rowid=1
-} {/SEARCH t1 USING INTEGER PRIMARY KEY .rowid=/}
+} {/SEARCH TABLE t1 USING INTEGER PRIMARY KEY .rowid=/}
do_eqp_test indexedby-3.2 {
SELECT * FROM t1 INDEXED BY i1 WHERE a = 'one' AND b = 'two'
-} {SEARCH t1 USING INDEX i1 (a=?)}
+} {SEARCH TABLE t1 USING INDEX i1 (a=?)}
do_eqp_test indexedby-3.3 {
SELECT * FROM t1 INDEXED BY i2 WHERE a = 'one' AND b = 'two'
-} {SEARCH t1 USING INDEX i2 (b=?)}
+} {SEARCH TABLE t1 USING INDEX i2 (b=?)}
do_test indexedby-3.4 {
catchsql { SELECT * FROM t1 INDEXED BY i2 WHERE a = 'one' }
} {0 {}}
@@ -148,10 +148,10 @@
do_eqp_test indexedby-3.8 {
SELECT * FROM t3 INDEXED BY sqlite_autoindex_t3_1 ORDER BY e
-} {SCAN t3 USING INDEX sqlite_autoindex_t3_1}
+} {SCAN TABLE t3 USING INDEX sqlite_autoindex_t3_1}
do_eqp_test indexedby-3.9 {
SELECT * FROM t3 INDEXED BY sqlite_autoindex_t3_1 WHERE e = 10
-} {SEARCH t3 USING INDEX sqlite_autoindex_t3_1 (e=?)}
+} {SEARCH TABLE t3 USING INDEX sqlite_autoindex_t3_1 (e=?)}
do_test indexedby-3.10 {
catchsql { SELECT * FROM t3 INDEXED BY sqlite_autoindex_t3_1 WHERE f = 10 }
} {0 {}}
@@ -165,15 +165,15 @@
SELECT * FROM t1, t2 WHERE a = c
} {
QUERY PLAN
- |--SCAN t1
- `--SEARCH t2 USING INDEX i3 (c=?)
+ |--SCAN TABLE t1
+ `--SEARCH TABLE t2 USING INDEX i3 (c=?)
}
do_eqp_test indexedby-4.2 {
SELECT * FROM t1 INDEXED BY i1, t2 WHERE a = c
} {
QUERY PLAN
- |--SCAN t1 USING INDEX i1
- `--SEARCH t2 USING INDEX i3 (c=?)
+ |--SCAN TABLE t1 USING INDEX i1
+ `--SEARCH TABLE t2 USING INDEX i3 (c=?)
}
do_test indexedby-4.3 {
catchsql {
@@ -193,10 +193,10 @@
do_execsql_test indexedby-5.1 {
CREATE VIEW v2 AS SELECT * FROM t1 INDEXED BY i1 WHERE a > 5;
EXPLAIN QUERY PLAN SELECT * FROM v2
-} {/*SEARCH t1 USING INDEX i1 (a>?)*/}
+} {/*SEARCH TABLE t1 USING INDEX i1 (a>?)*/}
do_execsql_test indexedby-5.2 {
EXPLAIN QUERY PLAN SELECT * FROM v2 WHERE b = 10
-} {/*SEARCH t1 USING INDEX i1 (a>?)*/}
+} {/*SEARCH TABLE t1 USING INDEX i1 (a>?)*/}
do_test indexedby-5.3 {
execsql { DROP INDEX i1 }
catchsql { SELECT * FROM v2 }
@@ -217,10 +217,10 @@
#
do_eqp_test indexedby-6.1 {
SELECT * FROM t1 WHERE b = 10 ORDER BY rowid
-} {SEARCH t1 USING INDEX i2 (b=?)}
+} {SEARCH TABLE t1 USING INDEX i2 (b=?)}
do_eqp_test indexedby-6.2 {
SELECT * FROM t1 NOT INDEXED WHERE b = 10 ORDER BY rowid
-} {SCAN t1}
+} {SCAN TABLE t1}
# EVIDENCE-OF: R-40297-14464 The INDEXED BY phrase forces the SQLite
# query planner to use a particular named index on a DELETE, SELECT, or
@@ -230,19 +230,19 @@
#
do_eqp_test indexedby-7.1 {
DELETE FROM t1 WHERE a = 5
-} {SEARCH t1 USING INDEX i1 (a=?)}
+} {SEARCH TABLE t1 USING INDEX i1 (a=?)}
do_eqp_test indexedby-7.2 {
DELETE FROM t1 NOT INDEXED WHERE a = 5
-} {SCAN t1}
+} {SCAN TABLE t1}
do_eqp_test indexedby-7.3 {
DELETE FROM t1 INDEXED BY i1 WHERE a = 5
-} {SEARCH t1 USING INDEX i1 (a=?)}
+} {SEARCH TABLE t1 USING INDEX i1 (a=?)}
do_eqp_test indexedby-7.4 {
DELETE FROM t1 INDEXED BY i1 WHERE a = 5 AND b = 10
-} {SEARCH t1 USING INDEX i1 (a=?)}
+} {SEARCH TABLE t1 USING INDEX i1 (a=?)}
do_eqp_test indexedby-7.5 {
DELETE FROM t1 INDEXED BY i2 WHERE a = 5 AND b = 10
-} {SEARCH t1 USING INDEX i2 (b=?)}
+} {SEARCH TABLE t1 USING INDEX i2 (b=?)}
do_test indexedby-7.6 {
catchsql { DELETE FROM t1 INDEXED BY i2 WHERE a = 5}
} {0 {}}
@@ -251,19 +251,19 @@
#
do_eqp_test indexedby-8.1 {
UPDATE t1 SET rowid=rowid+1 WHERE a = 5
-} {SEARCH t1 USING COVERING INDEX i1 (a=?)}
+} {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?)}
do_eqp_test indexedby-8.2 {
UPDATE t1 NOT INDEXED SET rowid=rowid+1 WHERE a = 5
-} {SCAN t1}
+} {SCAN TABLE t1}
do_eqp_test indexedby-8.3 {
UPDATE t1 INDEXED BY i1 SET rowid=rowid+1 WHERE a = 5
-} {SEARCH t1 USING COVERING INDEX i1 (a=?)}
+} {SEARCH TABLE t1 USING COVERING INDEX i1 (a=?)}
do_eqp_test indexedby-8.4 {
UPDATE t1 INDEXED BY i1 SET rowid=rowid+1 WHERE a = 5 AND b = 10
-} {SEARCH t1 USING INDEX i1 (a=?)}
+} {SEARCH TABLE t1 USING INDEX i1 (a=?)}
do_eqp_test indexedby-8.5 {
UPDATE t1 INDEXED BY i2 SET rowid=rowid+1 WHERE a = 5 AND b = 10
-} {SEARCH t1 USING INDEX i2 (b=?)}
+} {SEARCH TABLE t1 USING INDEX i2 (b=?)}
do_test indexedby-8.6 {
catchsql { UPDATE t1 INDEXED BY i2 SET rowid=rowid+1 WHERE a = 5}
} {0 {}}
@@ -338,7 +338,7 @@
} {1 1 3}
do_eqp_test 11.5 {
SELECT a,b,rowid FROM x1 INDEXED BY x1i WHERE a=1 AND b=1 AND rowid='3.0';
-} {SEARCH x1 USING COVERING INDEX x1i (a=? AND b=? AND rowid=?)}
+} {SEARCH TABLE x1 USING COVERING INDEX x1i (a=? AND b=? AND rowid=?)}
do_execsql_test 11.6 {
CREATE TABLE x2(c INTEGER PRIMARY KEY, a, b TEXT);
@@ -359,7 +359,7 @@
} {1 1 3}
do_eqp_test 11.10 {
SELECT a,b,c FROM x2 INDEXED BY x2i WHERE a=1 AND b=1 AND c='3.0';
-} {SEARCH x2 USING COVERING INDEX x2i (a=? AND b=? AND rowid=?)}
+} {SEARCH TABLE x2 USING COVERING INDEX x2i (a=? AND b=? AND rowid=?)}
#-------------------------------------------------------------------------
# Check INDEXED BY works (throws an exception) with partial indexes that
diff -Nru sqlite3-3.35.0/test/indexexpr1.test sqlite3-3.35.0-1/test/indexexpr1.test
--- sqlite3-3.35.0/test/indexexpr1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/indexexpr1.test 2021-04-04 17:23:22.000000000 +0000
@@ -97,14 +97,14 @@
do_execsql_test indexexpr1-170eqp {
EXPLAIN QUERY PLAN
SELECT length(a) FROM t1 ORDER BY length(a);
-} {/SCAN t1 USING INDEX t1alen/}
+} {/SCAN TABLE t1 USING INDEX t1alen/}
do_execsql_test indexexpr1-171 {
SELECT length(a) FROM t1 ORDER BY length(a) DESC;
} {52 38 29 27 25 20}
do_execsql_test indexexpr1-171eqp {
EXPLAIN QUERY PLAN
SELECT length(a) FROM t1 ORDER BY length(a) DESC;
-} {/SCAN t1 USING INDEX t1alen/}
+} {/SCAN TABLE t1 USING INDEX t1alen/}
do_execsql_test indexexpr1-200 {
DROP TABLE t1;
diff -Nru sqlite3-3.35.0/test/indexexpr2.test sqlite3-3.35.0-1/test/indexexpr2.test
--- sqlite3-3.35.0/test/indexexpr2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/indexexpr2.test 2021-04-04 17:23:22.000000000 +0000
@@ -93,7 +93,7 @@
ORDER BY json_extract(x, '$.b') COLLATE nocase;
} [string map {"\n " \n} {
QUERY PLAN
- |--SCAN t2
+ |--SCAN TABLE t2
`--USE TEMP B-TREE FOR GROUP BY
}]
@@ -108,7 +108,7 @@
ORDER BY json_extract(x, '$.b') COLLATE nocase;
} [string map {"\n " \n} {
QUERY PLAN
- |--SEARCH t3 USING INDEX i3 (=?)
+ |--SEARCH TABLE t3 USING INDEX i3 (=?)
`--USE TEMP B-TREE FOR GROUP BY
}]
}
@@ -154,7 +154,7 @@
do_execsql_test 3.4.5eqp {
EXPLAIN QUERY PLAN
SELECT * FROM t4 ORDER BY Substr(a,-2) COLLATE nocase;
-} {/SCAN t4 USING INDEX i4/}
+} {/SCAN TABLE t4 USING INDEX i4/}
do_execsql_test 3.4.6 {
SELECT * FROM t4 ORDER BY Substr(a,-2) COLLATE binary;
} {.ABC1 1 .ABC3 3 .abc2 2 .abc4 4}
@@ -265,7 +265,7 @@
} {1 123 2 123 3 123abc 4 123.0}
do_eqp_test 6.1.3 {
SELECT a, b FROM x1 WHERE CAST(b AS INTEGER) = 123;
-} {SEARCH x1 USING INDEX x1i (=?)}
+} {SEARCH TABLE x1 USING INDEX x1i (=?)}
do_execsql_test 6.2.1 {
SELECT a, b FROM x1 WHERE CAST(b AS TEXT) = 123;
@@ -276,7 +276,7 @@
} {1 123 2 123}
do_eqp_test 6.2.3 {
SELECT a, b FROM x1 WHERE CAST(b AS TEXT) = 123;
-} {SEARCH x1 USING INDEX x1i2 (=?)}
+} {SEARCH TABLE x1 USING INDEX x1i2 (=?)}
do_execsql_test 7.0 {
CREATE TABLE IF NOT EXISTS t0(c0);
diff -Nru sqlite3-3.35.0/test/intpkey.test sqlite3-3.35.0-1/test/intpkey.test
--- sqlite3-3.35.0/test/intpkey.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/intpkey.test 2021-04-04 17:23:22.000000000 +0000
@@ -129,7 +129,7 @@
EXPLAIN QUERY PLAN
SELECT * FROM t1 WHERE a==4;
}
-} {/SEARCH t1 /}
+} {/SEARCH TABLE t1 /}
# Try to insert a non-integer value into the primary key field. This
# should result in a data type mismatch.
diff -Nru sqlite3-3.35.0/test/join2.test sqlite3-3.35.0-1/test/join2.test
--- sqlite3-3.35.0/test/join2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/join2.test 2021-04-04 17:23:22.000000000 +0000
@@ -113,16 +113,16 @@
SELECT v2 FROM t1 LEFT JOIN t2 USING (k2) LEFT JOIN t3_1 USING (k3);
} {
QUERY PLAN
- |--SCAN t1
- `--SEARCH t2 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE t1
+ `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
}
do_eqp_test 3.2 {
SELECT v2 FROM t1 LEFT JOIN t2 USING (k2) LEFT JOIN t3_2 USING (k3);
} {
QUERY PLAN
- |--SCAN t1
- `--SEARCH t2 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE t1
+ `--SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid=?)
}
#-------------------------------------------------------------------------
@@ -161,16 +161,16 @@
SELECT v1, v3 FROM c1 LEFT JOIN c2 ON (c2.k=v1) LEFT JOIN c3 ON (c3.k=v2);
} {
QUERY PLAN
- |--SCAN c1
- |--SEARCH c2 USING INTEGER PRIMARY KEY (rowid=?)
- `--SEARCH c3 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE c1
+ |--SEARCH TABLE c2 USING INTEGER PRIMARY KEY (rowid=?)
+ `--SEARCH TABLE c3 USING INTEGER PRIMARY KEY (rowid=?)
}
do_eqp_test 4.1.6 {
SELECT v1, v3 FROM c1 LEFT JOIN c2 ON (c2.k=v1) LEFT JOIN c3 ON (c3.k=v1+1);
} {
QUERY PLAN
- |--SCAN c1
- `--SEARCH c3 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE c1
+ `--SEARCH TABLE c3 USING INTEGER PRIMARY KEY (rowid=?)
}
do_execsql_test 4.2.0 {
@@ -208,16 +208,16 @@
SELECT v1, v3 FROM c1 LEFT JOIN c2 ON (c2.k=v1) LEFT JOIN c3 ON (c3.k=v2);
} {
QUERY PLAN
- |--SCAN c1
- |--SEARCH c2 USING INDEX sqlite_autoindex_c2_1 (k=?)
- `--SEARCH c3 USING INDEX sqlite_autoindex_c3_1 (k=?)
+ |--SCAN TABLE c1
+ |--SEARCH TABLE c2 USING INDEX sqlite_autoindex_c2_1 (k=?)
+ `--SEARCH TABLE c3 USING INDEX sqlite_autoindex_c3_1 (k=?)
}
do_eqp_test 4.2.6 {
SELECT v1, v3 FROM c1 LEFT JOIN c2 ON (c2.k=v1) LEFT JOIN c3 ON (c3.k=v1+1);
} {
QUERY PLAN
- |--SCAN c1
- `--SEARCH c3 USING INDEX sqlite_autoindex_c3_1 (k=?)
+ |--SCAN TABLE c1
+ `--SEARCH TABLE c3 USING INDEX sqlite_autoindex_c3_1 (k=?)
}
# 2017-11-23 (Thanksgiving day)
@@ -251,11 +251,11 @@
}
do_eqp_test 5.1 {
SELECT s1.a FROM s1 left join s2 using (a);
-} {SCAN s1}
+} {SCAN TABLE s1}
do_eqp_test 5.2 {
SELECT s1.a FROM s1 left join s3 using (a);
-} {SCAN s1}
+} {SCAN TABLE s1}
do_execsql_test 6.0 {
CREATE TABLE u1(a INTEGER PRIMARY KEY, b, c);
@@ -264,7 +264,7 @@
}
do_eqp_test 6.1 {
SELECT u2.* FROM u2 LEFT JOIN u1 ON( u1.a=u2.a AND u1.b=u2.b AND u1.c=u2.c );
-} {SCAN u2}
+} {SCAN TABLE u2}
db close
sqlite3 db :memory:
diff -Nru sqlite3-3.35.0/test/join5.test sqlite3-3.35.0-1/test/join5.test
--- sqlite3-3.35.0/test/join5.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/join5.test 2021-04-04 17:23:22.000000000 +0000
@@ -277,12 +277,12 @@
);
} {
QUERY PLAN
- |--SCAN t1
+ |--SCAN TABLE t1
`--MULTI-INDEX OR
|--INDEX 1
- | `--SEARCH t2 USING INDEX t2xy (x=? AND y=?)
+ | `--SEARCH TABLE t2 USING INDEX t2xy (x=? AND y=?)
`--INDEX 2
- `--SEARCH t2 USING INDEX t2xy (x=? AND y=?)
+ `--SEARCH TABLE t2 USING INDEX t2xy (x=? AND y=?)
}
do_execsql_test 7.3 {
@@ -302,8 +302,8 @@
SELECT * FROM t3 LEFT JOIN t4 ON (t4.x = t3.x) WHERE (t4.y = ? OR t4.z = ?);
} {
QUERY PLAN
- |--SCAN t3
- `--SEARCH t4 USING INDEX t4xz (x=?)
+ |--SCAN TABLE t3
+ `--SEARCH TABLE t4 USING INDEX t4xz (x=?)
}
reset_db
diff -Nru sqlite3-3.35.0/test/like3.test sqlite3-3.35.0-1/test/like3.test
--- sqlite3-3.35.0/test/like3.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/like3.test 2021-04-04 17:23:22.000000000 +0000
@@ -125,7 +125,7 @@
SELECT x FROM t5a WHERE x LIKE '/%';
} {
QUERY PLAN
- `--SCAN t5a
+ `--SCAN TABLE t5a
}
do_execsql_test like3-5.110 {
SELECT x FROM t5a WHERE x LIKE '/a%';
@@ -135,7 +135,7 @@
SELECT x FROM t5a WHERE x LIKE '/a%';
} {
QUERY PLAN
- `--SEARCH t5a USING COVERING INDEX sqlite_autoindex_t5a_1 (x>? AND x)
+ `--SEARCH TABLE t5a USING COVERING INDEX sqlite_autoindex_t5a_1 (x>? AND x)
}
}
do_execsql_test like3-5.120 {
@@ -145,7 +145,7 @@
SELECT x FROM t5a WHERE x LIKE '^12%' ESCAPE '^';
} {
QUERY PLAN
- `--SCAN t5a
+ `--SCAN TABLE t5a
}
do_execsql_test like3-5.122 {
SELECT x FROM t5a WHERE x LIKE '^-2%' ESCAPE '^';
@@ -154,7 +154,7 @@
SELECT x FROM t5a WHERE x LIKE '^12%' ESCAPE '^';
} {
QUERY PLAN
- `--SCAN t5a
+ `--SCAN TABLE t5a
}
do_execsql_test like3-5.200 {
@@ -166,7 +166,7 @@
SELECT x FROM t5b WHERE x GLOB '/*';
} {
QUERY PLAN
- `--SCAN t5b
+ `--SCAN TABLE t5b
}
do_execsql_test like3-5.210 {
SELECT x FROM t5b WHERE x GLOB '/a*';
@@ -175,7 +175,7 @@
SELECT x FROM t5b WHERE x GLOB '/a*';
} {
QUERY PLAN
- `--SEARCH t5b USING COVERING INDEX sqlite_autoindex_t5b_1 (x>? AND x)
+ `--SEARCH TABLE t5b USING COVERING INDEX sqlite_autoindex_t5b_1 (x>? AND x)
}
# 2019-05-01
@@ -234,13 +234,13 @@
SELECT * FROM t1 WHERE path LIKE 'a%';
} {
QUERY PLAN
- `--SEARCH t1 USING PRIMARY KEY (path>? AND path)
+ `--SEARCH TABLE t1 USING PRIMARY KEY (path>? AND path)
}
do_eqp_test like3-6.120 {
SELECT * FROM t1 WHERE path LIKE 'a%' ESCAPE 'x';
} {
QUERY PLAN
- `--SEARCH t1 USING PRIMARY KEY (path>? AND path)
+ `--SEARCH TABLE t1 USING PRIMARY KEY (path>? AND path)
}
do_execsql_test like3-6.200 {
DROP TABLE IF EXISTS t2;
@@ -252,26 +252,26 @@
SELECT * FROM t2 WHERE path LIKE 'a%';
} {
QUERY PLAN
- `--SEARCH t2 USING INDEX t2path (path>? AND path)
+ `--SEARCH TABLE t2 USING INDEX t2path (path>? AND path)
}
do_eqp_test like3-6.220 {
SELECT * FROM t2 WHERE path LIKE 'a%' ESCAPE '\';
} {
QUERY PLAN
- `--SEARCH t2 USING INDEX t2path (path>? AND path)
+ `--SEARCH TABLE t2 USING INDEX t2path (path>? AND path)
}
db eval {PRAGMA case_sensitive_like=ON}
do_eqp_test like3-6.230 {
SELECT * FROM t2 WHERE path LIKE 'a%';
} {
QUERY PLAN
- `--SEARCH t2 USING INDEX t2path2 (path>? AND path)
+ `--SEARCH TABLE t2 USING INDEX t2path2 (path>? AND path)
}
do_eqp_test like3-6.240 {
SELECT * FROM t2 WHERE path LIKE 'a%' ESCAPE '\';
} {
QUERY PLAN
- `--SEARCH t2 USING INDEX t2path2 (path>? AND path)
+ `--SEARCH TABLE t2 USING INDEX t2path2 (path>? AND path)
}
}
diff -Nru sqlite3-3.35.0/test/like.test sqlite3-3.35.0-1/test/like.test
--- sqlite3-3.35.0/test/like.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/like.test 2021-04-04 17:23:22.000000000 +0000
@@ -168,13 +168,13 @@
set eqp [execsql "EXPLAIN QUERY PLAN $sql"]
# puts eqp=$eqp
foreach {a b c x} $eqp {
- if {[regexp {(SCAN|SEARCH) (\w+ AS )?(\w+) USING COVERING INDEX (\w+)\y} \
- $x all ss as tab idx]} {
+ if {[regexp { TABLE (\w+ AS )?(\w+) USING COVERING INDEX (\w+)\y} \
+ $x all as tab idx]} {
lappend data {} $idx
- } elseif {[regexp {(SCAN|SEARCH) (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
- $x all ss as tab idx]} {
+ } elseif {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
+ $x all as tab idx]} {
lappend data $tab $idx
- } elseif {[regexp {(SCAN|SEARCH) (\w+ AS )?(\w+)\y} $x all ss as tab]} {
+ } elseif {[regexp { TABLE (\w+ AS )?(\w+)\y} $x all as tab]} {
lappend data $tab *
}
}
@@ -726,7 +726,7 @@
set res [sqlite3_exec_hex db {
EXPLAIN QUERY PLAN SELECT x FROM t2 WHERE x LIKE '%ff%25'
}]
- regexp {SCAN t2} $res
+ regexp {SCAN TABLE t2} $res
} {1}
}
do_test like-9.5.1 {
diff -Nru sqlite3-3.35.0/test/mallocK.test sqlite3-3.35.0-1/test/mallocK.test
--- sqlite3-3.35.0/test/mallocK.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/mallocK.test 2021-04-04 17:23:22.000000000 +0000
@@ -123,7 +123,7 @@
SELECT DISTINCT c FROM t3 WHERE b BETWEEN '.xx..' AND '.xxxx';
} [string map {"\n " \n} {
QUERY PLAN
- |--SEARCH t3 USING INDEX i3 (ANY(a) AND b>? AND b)
+ |--SEARCH TABLE t3 USING INDEX i3 (ANY(a) AND b>? AND b)
`--USE TEMP B-TREE FOR DISTINCT
}]
}
diff -Nru sqlite3-3.35.0/test/misc7.test sqlite3-3.35.0-1/test/misc7.test
--- sqlite3-3.35.0/test/misc7.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/misc7.test 2021-04-04 17:23:22.000000000 +0000
@@ -280,19 +280,19 @@
SELECT * FROM abc AS t2 WHERE rowid = 1;
} {
QUERY PLAN
- `--SEARCH t2 USING INTEGER PRIMARY KEY (rowid=?)
+ `--SEARCH TABLE abc AS t2 USING INTEGER PRIMARY KEY (rowid=?)
}
do_eqp_test misc7-14.2 {
SELECT * FROM abc AS t2 WHERE a = 1;
} {
QUERY PLAN
- `--SEARCH t2 USING INDEX sqlite_autoindex_abc_1 (a=?)
+ `--SEARCH TABLE abc AS t2 USING INDEX sqlite_autoindex_abc_1 (a=?)
}
do_eqp_test misc7-14.3 {
SELECT * FROM abc AS t2 ORDER BY a;
} {
QUERY PLAN
- `--SCAN t2 USING INDEX sqlite_autoindex_abc_1
+ `--SCAN TABLE abc AS t2 USING INDEX sqlite_autoindex_abc_1
}
}
diff -Nru sqlite3-3.35.0/test/notnull2.test sqlite3-3.35.0-1/test/notnull2.test
--- sqlite3-3.35.0/test/notnull2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/notnull2.test 2021-04-04 17:23:22.000000000 +0000
@@ -98,3 +98,4 @@
}
finish_test
+
diff -Nru sqlite3-3.35.0/test/notnullfault.test sqlite3-3.35.0-1/test/notnullfault.test
--- sqlite3-3.35.0/test/notnullfault.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/notnullfault.test 2021-04-04 17:23:22.000000000 +0000
@@ -53,3 +53,4 @@
}
finish_test
+
diff -Nru sqlite3-3.35.0/test/nulls1.test sqlite3-3.35.0-1/test/nulls1.test
--- sqlite3-3.35.0/test/nulls1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/nulls1.test 2021-04-04 17:23:22.000000000 +0000
@@ -184,7 +184,7 @@
SELECT * FROM t4 WHERE a IN (1, 2, 3) ORDER BY a, b NULLS LAST
} {
QUERY PLAN
- `--SEARCH t4 USING INDEX t4ab (a=?)
+ `--SEARCH TABLE t4 USING INDEX t4ab (a=?)
}
do_execsql_test 5.4 {
@@ -198,7 +198,7 @@
SELECT * FROM t4 WHERE a IN (1, 2, 3) ORDER BY a DESC, b DESC NULLS FIRST
} {
QUERY PLAN
- `--SEARCH t4 USING INDEX t4ab (a=?)
+ `--SEARCH TABLE t4 USING INDEX t4ab (a=?)
}
#-------------------------------------------------------------------------
@@ -224,7 +224,7 @@
SELECT a,b FROM t5 WHERE a=1 ORDER BY b NULLS LAST, c;
} {
QUERY PLAN
- `--SEARCH t5 USING COVERING INDEX t5ab (a=?)
+ `--SEARCH TABLE t5 USING COVERING INDEX t5ab (a=?)
}
do_execsql_test 6.2.1 {
SELECT a,b FROM t5 WHERE a=1 ORDER BY b DESC NULLS FIRST, c DESC
@@ -233,7 +233,7 @@
SELECT a,b FROM t5 WHERE a=1 ORDER BY b DESC NULLS FIRST, c DESC
} {
QUERY PLAN
- `--SEARCH t5 USING COVERING INDEX t5ab (a=?)
+ `--SEARCH TABLE t5 USING COVERING INDEX t5ab (a=?)
}
#-------------------------------------------------------------------------
@@ -294,7 +294,7 @@
do_eqp_test 9.4 {
SELECT c1, c2, ifnull(c3, 'NULL') FROM v0
WHERE c2=10 ORDER BY c1, c3 NULLS LAST
-} {SEARCH v0 USING COVERING INDEX v3 (ANY(c1) AND c2=?)}
+} {SEARCH TABLE v0 USING COVERING INDEX v3 (ANY(c1) AND c2=?)}
# 2020-03-01 ticket e12a0ae526bb51c7
diff -Nru sqlite3-3.35.0/test/orderby1.test sqlite3-3.35.0-1/test/orderby1.test
--- sqlite3-3.35.0/test/orderby1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/orderby1.test 2021-04-04 17:23:22.000000000 +0000
@@ -516,7 +516,7 @@
SELECT * FROM t1 ORDER BY a, b;
} {
QUERY PLAN
- |--SCAN t1 USING INDEX i1
+ |--SCAN TABLE t1 USING INDEX i1
`--USE TEMP B-TREE FOR RIGHT PART OF ORDER BY
}
diff -Nru sqlite3-3.35.0/test/returning1.test sqlite3-3.35.0-1/test/returning1.test
--- sqlite3-3.35.0/test/returning1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/returning1.test 2021-04-04 17:23:22.000000000 +0000
@@ -184,9 +184,5 @@
INSERT INTO t1 VALUES(3) RETURNING a, (SELECT c FROM t2 WHERE t1.a=t2.b) AS x;
} {0 {3 40}}
-# dbsqlfuzz finds/crash-486f791cbe2dc45839310073e71367a1d8ad22dd
-do_catchsql_test 9.1 {
- UPDATE pragma_encoding SET encoding='UTF-8' RETURNING a, b, *;
-} {1 {table pragma_encoding may not be modified}}
-
finish_test
+
diff -Nru sqlite3-3.35.0/test/rollback2.test sqlite3-3.35.0-1/test/rollback2.test
--- sqlite3-3.35.0/test/rollback2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/rollback2.test 2021-04-04 17:23:22.000000000 +0000
@@ -101,7 +101,7 @@
#
do_eqp_test 3.1 {
SELECT i FROM t1 WHERE (i%2)==0 ORDER BY h DESC;
-} {SCAN t1 USING INDEX i1}
+} {SCAN TABLE t1 USING INDEX i1}
do_rollback_test 3.2 -setup {
BEGIN;
DELETE FROM t1 WHERE (i%2)==1;
@@ -131,7 +131,7 @@
do_eqp_test 4.2 {
SELECT i FROM t1 WHERE (i%2)==0 ORDER BY h ASC;
-} {SCAN t1 USING INDEX i1}
+} {SCAN TABLE t1 USING INDEX i1}
do_rollback_test 4.3 -setup {
BEGIN;
DELETE FROM t1 WHERE (i%2)==1;
diff -Nru sqlite3-3.35.0/test/rowvalue4.test sqlite3-3.35.0-1/test/rowvalue4.test
--- sqlite3-3.35.0/test/rowvalue4.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/rowvalue4.test 2021-04-04 17:23:22.000000000 +0000
@@ -185,31 +185,31 @@
}
do_eqp_test 3.1.1 { SELECT * FROM c1 WHERE a=1 AND c=2 } \
- {SEARCH c1 USING INDEX c1cd (c=?)}
+ {SEARCH TABLE c1 USING INDEX c1cd (c=?)}
do_eqp_test 3.1.2 { SELECT * FROM c1 WHERE a=1 AND b>'d' AND c=2 } \
- {SEARCH c1 USING INDEX c1cd (c=?)}
+ {SEARCH TABLE c1 USING INDEX c1cd (c=?)}
do_eqp_test 3.1.3 { SELECT * FROM c1 WHERE a=1 AND b>'l' AND c=2 } \
- {SEARCH c1 USING INDEX c1ab (a=? AND b>?)}
+ {SEARCH TABLE c1 USING INDEX c1ab (a=? AND b>?)}
do_eqp_test 3.2.1 { SELECT * FROM c1 WHERE a=1 AND c>1 } \
- {SEARCH c1 USING INDEX c1cd (c>?)}
+ {SEARCH TABLE c1 USING INDEX c1cd (c>?)}
do_eqp_test 3.2.2 { SELECT * FROM c1 WHERE a=1 AND c>0 } \
- {SEARCH c1 USING INDEX c1ab (a=?)}
+ {SEARCH TABLE c1 USING INDEX c1ab (a=?)}
do_eqp_test 3.2.3 { SELECT * FROM c1 WHERE a=1 AND c>=1 } \
- {SEARCH c1 USING INDEX c1ab (a=?)}
+ {SEARCH TABLE c1 USING INDEX c1ab (a=?)}
do_eqp_test 3.2.4 { SELECT * FROM c1 WHERE a=1 AND (c, d)>(1, 'c') } \
- {SEARCH c1 USING INDEX c1ab (a=?)}
+ {SEARCH TABLE c1 USING INDEX c1ab (a=?)}
do_eqp_test 3.2.5 { SELECT * FROM c1 WHERE a=1 AND (c, d)>(1, 'o') } \
- {SEARCH c1 USING INDEX c1cd ((c,d)>(?,?))}
+ {SEARCH TABLE c1 USING INDEX c1cd ((c,d)>(?,?))}
do_eqp_test 3.2.6 { SELECT * FROM c1 WHERE a=1 AND (c, +b)>(1, 'c') } \
- {SEARCH c1 USING INDEX c1ab (a=?)}
+ {SEARCH TABLE c1 USING INDEX c1ab (a=?)}
}
@@ -234,11 +234,11 @@
(c) IN (SELECT y FROM d1)
} {
QUERY PLAN
- |--SEARCH d2 USING INDEX d2ab (a=? AND b=?)
+ |--SEARCH TABLE d2 USING INDEX d2ab (a=? AND b=?)
|--LIST SUBQUERY xxxxxx
- | `--SCAN d1
+ | `--SCAN TABLE d1
`--LIST SUBQUERY xxxxxx
- `--SCAN d1
+ `--SCAN TABLE d1
}
do_execsql_test 6.0 {
@@ -249,23 +249,23 @@
do_eqp_test 6.1 {
SELECT * FROM e1 WHERE (a, b) > (?, ?)
-} {SEARCH e1 USING INDEX e1ab ((a,b)>(?,?))}
+} {SEARCH TABLE e1 USING INDEX e1ab ((a,b)>(?,?))}
do_eqp_test 6.2 {
SELECT * FROM e1 WHERE (a, b) < (?, ?)
-} {SEARCH e1 USING INDEX e1ab ((a,b)<(?,?))}
+} {SEARCH TABLE e1 USING INDEX e1ab ((a,b)<(?,?))}
do_eqp_test 6.3 {
SELECT * FROM e1 WHERE c = ? AND (d, e) > (?, ?)
-} {SEARCH e1 USING INDEX e1cde (c=? AND (d,e)>(?,?))}
+} {SEARCH TABLE e1 USING INDEX e1cde (c=? AND (d,e)>(?,?))}
do_eqp_test 6.4 {
SELECT * FROM e1 WHERE c = ? AND (d, e) < (?, ?)
-} {SEARCH e1 USING INDEX e1cde (c=? AND (d,e)<(?,?))}
+} {SEARCH TABLE e1 USING INDEX e1cde (c=? AND (d,e)<(?,?))}
do_eqp_test 6.5 {
SELECT * FROM e1 WHERE (d, e) BETWEEN (?, ?) AND (?, ?) AND c = ?
-} {SEARCH e1 USING INDEX e1cde (c=? AND (d,e)>(?,?) AND (d,e)<(?,?))}
+} {SEARCH TABLE e1 USING INDEX e1cde (c=? AND (d,e)>(?,?) AND (d,e)<(?,?))}
#-------------------------------------------------------------------------
diff -Nru sqlite3-3.35.0/test/rowvalue.test sqlite3-3.35.0-1/test/rowvalue.test
--- sqlite3-3.35.0/test/rowvalue.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/rowvalue.test 2021-04-04 17:23:22.000000000 +0000
@@ -175,19 +175,19 @@
foreach {tn sql res eqp} {
1 "SELECT * FROM xy WHERE (i, j) IS (2, 2)" {2 2 2}
- "SEARCH xy USING INTEGER PRIMARY KEY (rowid=?)"
+ "SEARCH TABLE xy USING INTEGER PRIMARY KEY (rowid=?)"
2 "SELECT * FROM xy WHERE (k, j) < (2, 3)" {1 1 1 2 2 2}
- "SCAN xy"
+ "SCAN TABLE xy"
3 "SELECT * FROM xy WHERE (i, j) < (2, 3)" {1 1 1 2 2 2}
- "SEARCH xy USING INTEGER PRIMARY KEY (rowid)"
+ "SEARCH TABLE xy USING INTEGER PRIMARY KEY (rowid)"
4 "SELECT * FROM xy WHERE (i, j) > (2, 1)" {2 2 2 3 3 3 4 4 4}
- "SEARCH xy USING INTEGER PRIMARY KEY (rowid>?)"
+ "SEARCH TABLE xy USING INTEGER PRIMARY KEY (rowid>?)"
5 "SELECT * FROM xy WHERE (i, j) > ('2', 1)" {2 2 2 3 3 3 4 4 4}
- "SEARCH xy USING INTEGER PRIMARY KEY (rowid>?)"
+ "SEARCH TABLE xy USING INTEGER PRIMARY KEY (rowid>?)"
} {
do_eqp_test 7.$tn.1 $sql $eqp
diff -Nru sqlite3-3.35.0/test/scanstatus.test sqlite3-3.35.0-1/test/scanstatus.test
--- sqlite3-3.35.0/test/scanstatus.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/scanstatus.test 2021-04-04 17:23:22.000000000 +0000
@@ -45,8 +45,8 @@
do_execsql_test 1.1 { SELECT count(*) FROM t1, t2; } 6
do_scanstatus_test 1.2 {
- nLoop 1 nVisit 2 nEst 1048576.0 zName t1 zExplain {SCAN t1}
- nLoop 2 nVisit 6 nEst 1048576.0 zName t2 zExplain {SCAN t2}
+ nLoop 1 nVisit 2 nEst 1048576.0 zName t1 zExplain {SCAN TABLE t1}
+ nLoop 2 nVisit 6 nEst 1048576.0 zName t2 zExplain {SCAN TABLE t2}
}
do_execsql_test 1.3 {
@@ -54,8 +54,8 @@
SELECT count(*) FROM t1, t2;
} 6
do_scanstatus_test 1.4 {
- nLoop 1 nVisit 2 nEst 2.0 zName t1 zExplain {SCAN t1}
- nLoop 2 nVisit 6 nEst 3.0 zName t2 zExplain {SCAN t2}
+ nLoop 1 nVisit 2 nEst 2.0 zName t1 zExplain {SCAN TABLE t1}
+ nLoop 2 nVisit 6 nEst 3.0 zName t2 zExplain {SCAN TABLE t2}
}
do_execsql_test 1.5 { ANALYZE }
@@ -64,8 +64,8 @@
} 4
do_scanstatus_test 1.7 {
nLoop 1 nVisit 2 nEst 2.0 zName t2 zExplain
- {SEARCH t2 USING INTEGER PRIMARY KEY (rowid>?)}
- nLoop 2 nVisit 4 nEst 2.0 zName t1 zExplain {SCAN t1}
+ {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid>?)}
+ nLoop 2 nVisit 4 nEst 2.0 zName t1 zExplain {SCAN TABLE t1}
}
do_execsql_test 1.8 {
@@ -74,8 +74,8 @@
do_scanstatus_test 1.9 {
nLoop 2 nVisit 4 nEst 2.0 zName t2 zExplain
- {SEARCH t2 USING INTEGER PRIMARY KEY (rowid>?)}
- nLoop 4 nVisit 8 nEst 2.0 zName t1 zExplain {SCAN t1}
+ {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid>?)}
+ nLoop 4 nVisit 8 nEst 2.0 zName t1 zExplain {SCAN TABLE t1}
}
do_test 1.9 {
@@ -84,8 +84,8 @@
do_scanstatus_test 1.10 {
nLoop 0 nVisit 0 nEst 2.0 zName t2 zExplain
- {SEARCH t2 USING INTEGER PRIMARY KEY (rowid>?)}
- nLoop 0 nVisit 0 nEst 2.0 zName t1 zExplain {SCAN t1}
+ {SEARCH TABLE t2 USING INTEGER PRIMARY KEY (rowid>?)}
+ nLoop 0 nVisit 0 nEst 2.0 zName t1 zExplain {SCAN TABLE t1}
}
#-------------------------------------------------------------------------
@@ -105,7 +105,7 @@
do_scanstatus_test 2.2 {
nLoop 1 nVisit 1 nEst 1.0 zName x1
- zExplain {SEARCH x1 USING INTEGER PRIMARY KEY (rowid=?)}
+ zExplain {SEARCH TABLE x1 USING INTEGER PRIMARY KEY (rowid=?)}
}
do_execsql_test 2.3.1 {
@@ -113,7 +113,7 @@
} {2 two}
do_scanstatus_test 2.3.2 {
nLoop 1 nVisit 1 nEst 10.0 zName x1j
- zExplain {SEARCH x1 USING COVERING INDEX x1j (j=?)}
+ zExplain {SEARCH TABLE x1 USING COVERING INDEX x1j (j=?)}
}
do_execsql_test 2.4.1 {
@@ -121,7 +121,7 @@
} {4 four 1 one 3 three}
do_scanstatus_test 2.4.2 {
nLoop 1 nVisit 3 nEst 262144.0 zName x1j
- zExplain {SEARCH x1 USING COVERING INDEX x1j (j)}
+ zExplain {SEARCH TABLE x1 USING COVERING INDEX x1j (j)}
}
do_execsql_test 2.5.1 {
@@ -129,7 +129,7 @@
} {2 two}
do_scanstatus_test 2.5.2 {
nLoop 1 nVisit 1 nEst 262144.0 zName x1j
- zExplain {SEARCH x1 USING COVERING INDEX x1j (j>?)}
+ zExplain {SEARCH TABLE x1 USING COVERING INDEX x1j (j>?)}
}
do_execsql_test 2.6.1 {
@@ -137,7 +137,7 @@
} {3 three 2 two}
do_scanstatus_test 2.6.2 {
nLoop 1 nVisit 2 nEst 16384.0 zName x1j
- zExplain {SEARCH x1 USING COVERING INDEX x1j (j>? AND j)}
+ zExplain {SEARCH TABLE x1 USING COVERING INDEX x1j (j>? AND j)}
}
do_execsql_test 2.7.1 {
@@ -150,7 +150,7 @@
do_scanstatus_test 2.7.2 {
nLoop 1 nVisit 2 nEst 16384.0 zName x2j
- zExplain {SEARCH x2 USING INDEX x2j (j>? AND j)}
+ zExplain {SEARCH TABLE x2 USING INDEX x2j (j>? AND j)}
}
do_execsql_test 2.8.1 {
@@ -158,7 +158,7 @@
}
do_scanstatus_test 2.8.2 {
nLoop 1 nVisit 0 nEst 8.0 zName x2ij
- zExplain {SEARCH x2 USING INDEX x2ij (i=? AND j=?)}
+ zExplain {SEARCH TABLE x2 USING INDEX x2ij (i=? AND j=?)}
}
do_execsql_test 2.9.1 {
@@ -166,7 +166,7 @@
}
do_scanstatus_test 2.9.2 {
nLoop 1 nVisit 0 nEst 8.0 zName x2ij
- zExplain {SEARCH x2 USING INDEX x2ij (i=? AND j=?)}
+ zExplain {SEARCH TABLE x2 USING INDEX x2ij (i=? AND j=?)}
}
do_execsql_test 2.10.1 {
@@ -174,7 +174,7 @@
} {3 three {3 three}}
do_scanstatus_test 2.10.2 {
nLoop 1 nVisit 1 nEst 8.0 zName x2ij
- zExplain {SEARCH x2 USING INDEX x2ij (i=? AND j=?)}
+ zExplain {SEARCH TABLE x2 USING INDEX x2ij (i=? AND j=?)}
}
#-------------------------------------------------------------------------
@@ -194,9 +194,9 @@
} {4 13}
do_scanstatus_test 3.2.2 {
nLoop 1 nVisit 1 nEst 10.0 zName a1a
- zExplain {SEARCH a1 USING INDEX a1a (a=?)}
+ zExplain {SEARCH TABLE a1 USING INDEX a1a (a=?)}
nLoop 1 nVisit 1 nEst 10.0 zName a1bc
- zExplain {SEARCH a1 USING INDEX a1bc (b=?)}
+ zExplain {SEARCH TABLE a1 USING INDEX a1bc (b=?)}
}
do_execsql_test 3.2.1 {
@@ -204,9 +204,9 @@
} {30}
do_scanstatus_test 3.2.2 {
nLoop 1 nVisit 9 nEst 16384.0 zName a1a
- zExplain {SEARCH a1 USING INDEX a1a (a>? AND a)}
+ zExplain {SEARCH TABLE a1 USING INDEX a1a (a>? AND a)}
nLoop 1 nVisit 21 nEst 16384.0 zName a1bc
- zExplain {SEARCH a1 USING INDEX a1bc (b>? AND b)}
+ zExplain {SEARCH TABLE a1 USING INDEX a1bc (b>? AND b)}
}
do_execsql_test 3.3.1 {
@@ -215,9 +215,9 @@
} {90}
do_scanstatus_test 3.2.2 {
nLoop 1 nVisit 10 nEst 16384.0 zName a1bc
- zExplain {SEARCH y USING COVERING INDEX a1bc (b>? AND b)}
+ zExplain {SEARCH TABLE a1 AS y USING COVERING INDEX a1bc (b>? AND b)}
nLoop 10 nVisit 90 nEst 16384.0 zName a1a
- zExplain {SEARCH x USING COVERING INDEX a1a (a>? AND a)}
+ zExplain {SEARCH TABLE a1 AS x USING COVERING INDEX a1a (a>? AND a)}
}
do_execsql_test 3.4.1 {
@@ -225,7 +225,7 @@
} {4}
do_scanstatus_test 3.4.2 {
nLoop 1 nVisit 4 nEst 40.0 zName a1a
- zExplain {SEARCH a1 USING COVERING INDEX a1a (a=?)}
+ zExplain {SEARCH TABLE a1 USING COVERING INDEX a1a (a=?)}
}
do_execsql_test 3.4.1 {
@@ -233,7 +233,7 @@
} {4}
do_scanstatus_test 3.4.2 {
nLoop 1 nVisit 4 nEst 4.0 zName a1
- zExplain {SEARCH a1 USING INTEGER PRIMARY KEY (rowid=?)}
+ zExplain {SEARCH TABLE a1 USING INTEGER PRIMARY KEY (rowid=?)}
}
#-------------------------------------------------------------------------
@@ -266,9 +266,9 @@
do_execsql_test 4.2.1 { DELETE FROM p1 WHERE x=4 }
do_scanstatus_test 4.2.2 {
nLoop 1 nVisit 1 nEst 1.0 zName sqlite_autoindex_p1_1
- zExplain {SEARCH p1 USING INDEX sqlite_autoindex_p1_1 (x=?)}
+ zExplain {SEARCH TABLE p1 USING INDEX sqlite_autoindex_p1_1 (x=?)}
- nLoop 1 nVisit 3 nEst 262144.0 zName c1 zExplain {SCAN c1}
+ nLoop 1 nVisit 3 nEst 262144.0 zName c1 zExplain {SCAN TABLE c1}
}
#-------------------------------------------------------------------------
@@ -313,9 +313,9 @@
} {2}
do_scanstatus_test 5.1.2 {
nLoop 1 nVisit 10 nEst 10.0 zName t1bc
- zExplain {SCAN ii USING COVERING INDEX t1bc}
+ zExplain {SCAN TABLE t1 AS ii USING COVERING INDEX t1bc}
nLoop 1 nVisit 2 nEst 8.0 zName sqlite_autoindex_t1_1
- zExplain {SEARCH t1 USING COVERING INDEX sqlite_autoindex_t1_1 (a=?)}
+ zExplain {SEARCH TABLE t1 USING COVERING INDEX sqlite_autoindex_t1_1 (a=?)}
}
do_execsql_test 5.2.1 {
@@ -323,51 +323,51 @@
} {2}
do_scanstatus_test 5.2.2 {
nLoop 1 nVisit 2 nEst 2.0 zName sqlite_autoindex_t1_1
- zExplain {SEARCH t1 USING COVERING INDEX sqlite_autoindex_t1_1 (a=?)}
+ zExplain {SEARCH TABLE t1 USING COVERING INDEX sqlite_autoindex_t1_1 (a=?)}
}
do_eqp_test 5.3.1 {
SELECT count(*) FROM t2 WHERE y = 'j';
-} {SEARCH t2 USING COVERING INDEX t2xy (ANY(x) AND y=?)}
+} {SEARCH TABLE t2 USING COVERING INDEX t2xy (ANY(x) AND y=?)}
do_execsql_test 5.3.2 {
SELECT count(*) FROM t2 WHERE y = 'j';
} {19}
do_scanstatus_test 5.3.3 {
nLoop 1 nVisit 19 nEst 56.0 zName t2xy zExplain
- {SEARCH t2 USING COVERING INDEX t2xy (ANY(x) AND y=?)}
+ {SEARCH TABLE t2 USING COVERING INDEX t2xy (ANY(x) AND y=?)}
}
do_eqp_test 5.4.1 {
SELECT count(*) FROM t1, t2 WHERE y = c;
} {
QUERY PLAN
- |--SCAN t1 USING COVERING INDEX t1bc
- `--SEARCH t2 USING COVERING INDEX t2xy (ANY(x) AND y=?)
+ |--SCAN TABLE t1 USING COVERING INDEX t1bc
+ `--SEARCH TABLE t2 USING COVERING INDEX t2xy (ANY(x) AND y=?)
}
do_execsql_test 5.4.2 {
SELECT count(*) FROM t1, t2 WHERE y = c;
} {200}
do_scanstatus_test 5.4.3 {
nLoop 1 nVisit 10 nEst 10.0 zName t1bc
- zExplain {SCAN t1 USING COVERING INDEX t1bc}
+ zExplain {SCAN TABLE t1 USING COVERING INDEX t1bc}
nLoop 10 nVisit 200 nEst 56.0 zName t2xy
- zExplain {SEARCH t2 USING COVERING INDEX t2xy (ANY(x) AND y=?)}
+ zExplain {SEARCH TABLE t2 USING COVERING INDEX t2xy (ANY(x) AND y=?)}
}
do_eqp_test 5.5.1 {
SELECT count(*) FROM t1, t3 WHERE y = c;
} {
QUERY PLAN
- |--SCAN t3
- `--SEARCH t1 USING AUTOMATIC COVERING INDEX (c=?)
+ |--SCAN TABLE t3
+ `--SEARCH TABLE t1 USING AUTOMATIC COVERING INDEX (c=?)
}
do_execsql_test 5.5.2 {
SELECT count(*) FROM t1, t3 WHERE y = c;
} {200}
do_scanstatus_test 5.5.3 {
- nLoop 1 nVisit 501 nEst 480.0 zName t3 zExplain {SCAN t3}
+ nLoop 1 nVisit 501 nEst 480.0 zName t3 zExplain {SCAN TABLE t3}
nLoop 501 nVisit 200 nEst 20.0 zName auto-index zExplain
- {SEARCH t1 USING AUTOMATIC COVERING INDEX (c=?)}
+ {SEARCH TABLE t1 USING AUTOMATIC COVERING INDEX (c=?)}
}
#-------------------------------------------------------------------------
@@ -392,7 +392,7 @@
} {6}
do_scanstatus_test 6.1.2 {
nLoop 1 nVisit 6 nEst 24.0 zName ft1 zExplain
- {SCAN ft1 VIRTUAL TABLE INDEX 3:}
+ {SCAN TABLE ft1 VIRTUAL TABLE INDEX 3:}
}
}
diff -Nru sqlite3-3.35.0/test/select9.test sqlite3-3.35.0-1/test/select9.test
--- sqlite3-3.35.0/test/select9.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/select9.test 2021-04-04 17:23:22.000000000 +0000
@@ -436,19 +436,19 @@
EXPLAIN QUERY PLAN
SELECT * FROM v5 WHERE x='12345' ORDER BY y;
}
-} {~/SCAN/} ;# Uses indices with "*"
+} {~/SCAN TABLE/} ;# Uses indices with "*"
do_test select9-5.2 {
db eval {
EXPLAIN QUERY PLAN
SELECT x, y FROM v5 WHERE x='12345' ORDER BY y;
}
-} {~/SCAN/} ;# Uses indices with "x, y"
+} {~/SCAN TABLE/} ;# Uses indices with "x, y"
do_test select9-5.3 {
db eval {
EXPLAIN QUERY PLAN
SELECT x, y FROM v5 WHERE +x='12345' ORDER BY y;
}
-} {/SCAN/} ;# Full table scan if the "+x" prevents index usage.
+} {/SCAN TABLE/} ;# Full table scan if the "+x" prevents index usage.
# 2013-07-09: Ticket [490a4b7235624298]:
# "WHERE 0" on the first element of a UNION causes an assertion fault
diff -Nru sqlite3-3.35.0/test/selectA.test sqlite3-3.35.0-1/test/selectA.test
--- sqlite3-3.35.0/test/selectA.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/selectA.test 2021-04-04 17:23:22.000000000 +0000
@@ -1339,10 +1339,10 @@
QUERY PLAN
`--MERGE (UNION ALL)
|--LEFT
- | |--SCAN t5 USING INDEX i2
+ | |--SCAN TABLE t5 USING INDEX i2
| `--USE TEMP B-TREE FOR RIGHT PART OF ORDER BY
`--RIGHT
- |--SCAN t4 USING INDEX i1
+ |--SCAN TABLE t4 USING INDEX i1
`--USE TEMP B-TREE FOR RIGHT PART OF ORDER BY
}
diff -Nru sqlite3-3.35.0/test/selectD.test sqlite3-3.35.0-1/test/selectD.test
--- sqlite3-3.35.0/test/selectD.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/selectD.test 2021-04-04 17:23:22.000000000 +0000
@@ -169,6 +169,6 @@
WHERE x1.d>5
GROUP BY x1.d) AS x2
ON t41.b=x2.d;
-} {/SEARCH x2 USING AUTOMATIC/}
+} {/*SEARCH SUBQUERY * AS x2 USING AUTOMATIC*/}
finish_test
diff -Nru sqlite3-3.35.0/test/skipscan1.test sqlite3-3.35.0-1/test/skipscan1.test
--- sqlite3-3.35.0/test/skipscan1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/skipscan1.test 2021-04-04 17:23:22.000000000 +0000
@@ -341,7 +341,7 @@
do_execsql_test skipscan1-9.3 {
EXPLAIN QUERY PLAN
SELECT * FROM t9a WHERE b IN (SELECT x FROM t9b WHERE y!=5);
-} {/{SCAN t9a}/}
+} {/{SCAN TABLE t9a}/}
optimization_control db skip-scan 1
do_execsql_test skipscan1-2.1 {
@@ -394,7 +394,7 @@
FROM t1 WHERE t1.c3 = 1;
} {
QUERY PLAN
- |--SEARCH t1 USING INDEX sqlite_autoindex_t1_1 (ANY(c4) AND c3=?)
+ |--SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (ANY(c4) AND c3=?)
`--USE TEMP B-TREE FOR DISTINCT
}
diff -Nru sqlite3-3.35.0/test/skipscan2.test sqlite3-3.35.0-1/test/skipscan2.test
--- sqlite3-3.35.0/test/skipscan2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/skipscan2.test 2021-04-04 17:23:22.000000000 +0000
@@ -199,7 +199,7 @@
} {}
do_eqp_test skipscan2-3.3eqp {
SELECT * FROM t3 WHERE b=42;
-} {SEARCH t3 USING PRIMARY KEY (ANY(a) AND b=?)}
+} {SEARCH TABLE t3 USING PRIMARY KEY (ANY(a) AND b=?)}
diff -Nru sqlite3-3.35.0/test/skipscan5.test sqlite3-3.35.0-1/test/skipscan5.test
--- sqlite3-3.35.0/test/skipscan5.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/skipscan5.test 2021-04-04 17:23:22.000000000 +0000
@@ -41,20 +41,20 @@
foreach {tn q res} {
1 "b = 5" {/*ANY(a) AND b=?*/}
2 "b > 12 AND b < 16" {/*ANY(a) AND b>? AND b*/}
- 3 "b > 2 AND b < 16" {/*SCAN t1*/}
+ 3 "b > 2 AND b < 16" {/*SCAN TABLE t1*/}
4 "b > 18 AND b < 25" {/*ANY(a) AND b>? AND b*/}
5 "b > 16" {/*ANY(a) AND b>?*/}
- 6 "b > 5" {/*SCAN t1*/}
- 7 "b < 15" {/*SCAN t1*/}
+ 6 "b > 5" {/*SCAN TABLE t1*/}
+ 7 "b < 15" {/*SCAN TABLE t1*/}
8 "b < 5" {/*ANY(a) AND b*/}
9 "5 > b" {/*ANY(a) AND b*/}
10 "b = '5'" {/*ANY(a) AND b=?*/}
11 "b > '12' AND b < '16'" {/*ANY(a) AND b>? AND b*/}
- 12 "b > '2' AND b < '16'" {/*SCAN t1*/}
+ 12 "b > '2' AND b < '16'" {/*SCAN TABLE t1*/}
13 "b > '18' AND b < '25'" {/*ANY(a) AND b>? AND b*/}
14 "b > '16'" {/*ANY(a) AND b>?*/}
- 15 "b > '5'" {/*SCAN t1*/}
- 16 "b < '15'" {/*SCAN t1*/}
+ 15 "b > '5'" {/*SCAN TABLE t1*/}
+ 16 "b < '15'" {/*SCAN TABLE t1*/}
17 "b < '5'" {/*ANY(a) AND b*/}
18 "'5' > b" {/*ANY(a) AND b*/}
} {
@@ -104,10 +104,10 @@
foreach {tn2 q res} {
1 { c BETWEEN 'd' AND 'e' } {/*ANY(a) AND ANY(b) AND c>? AND c*/}
- 2 { c BETWEEN 'b' AND 'r' } {/*SCAN t2*/}
+ 2 { c BETWEEN 'b' AND 'r' } {/*SCAN TABLE t2*/}
3 { c > 'q' } {/*ANY(a) AND ANY(b) AND c>?*/}
- 4 { c > 'e' } {/*SCAN t2*/}
- 5 { c < 'q' } {/*SCAN t2*/}
+ 4 { c > 'e' } {/*SCAN TABLE t2*/}
+ 5 { c < 'q' } {/*SCAN TABLE t2*/}
6 { c < 'b' } {/*ANY(a) AND ANY(b) AND c*/}
} {
set sql "EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE $q"
@@ -169,11 +169,11 @@
foreach {tn q res} {
1 "b BETWEEN -10000 AND -8000" {/*ANY(a) AND b>? AND b*/}
- 2 "b BETWEEN -10000 AND 'qqq'" {/*SCAN t3*/}
- 3 "b < X'5555'" {/*SCAN t3*/}
+ 2 "b BETWEEN -10000 AND 'qqq'" {/*SCAN TABLE t3*/}
+ 3 "b < X'5555'" {/*SCAN TABLE t3*/}
4 "b > X'5555'" {/*ANY(a) AND b>?*/}
5 "b > 'zzz'" {/*ANY(a) AND b>?*/}
- 6 "b < 'zzz'" {/*SCAN t3*/}
+ 6 "b < 'zzz'" {/*SCAN TABLE t3*/}
} {
set sql "EXPLAIN QUERY PLAN SELECT * FROM t3 WHERE $q"
do_execsql_test 3.3.$tn $sql $res
diff -Nru sqlite3-3.35.0/test/skipscan6.test sqlite3-3.35.0-1/test/skipscan6.test
--- sqlite3-3.35.0/test/skipscan6.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/skipscan6.test 2021-04-04 17:23:22.000000000 +0000
@@ -179,13 +179,13 @@
#
do_eqp_test 3.1 {
SELECT * FROM t3 WHERE a = ? AND c = ?
-} {SEARCH t3 USING INDEX t3_a (a=?)}
+} {SEARCH TABLE t3 USING INDEX t3_a (a=?)}
# The same query on table t2. This should use index "t2_a", for the
# same reason. At one point though, it was mistakenly using a skip-scan.
#
do_eqp_test 3.2 {
SELECT * FROM t2 WHERE a = ? AND c = ?
-} {SEARCH t2 USING INDEX t2_a (a=?)}
+} {SEARCH TABLE t2 USING INDEX t2_a (a=?)}
finish_test
diff -Nru sqlite3-3.35.0/test/tkt3442.test sqlite3-3.35.0-1/test/tkt3442.test
--- sqlite3-3.35.0/test/tkt3442.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/tkt3442.test 2021-04-04 17:23:22.000000000 +0000
@@ -40,17 +40,17 @@
#
do_eqp_test tkt3442-1.2 {
SELECT node FROM listhash WHERE id='5000' LIMIT 1;
-} {SEARCH listhash USING INDEX ididx (id=?)}
+} {SEARCH TABLE listhash USING INDEX ididx (id=?)}
do_eqp_test tkt3442-1.3 {
SELECT node FROM listhash WHERE id="5000" LIMIT 1;
-} {SEARCH listhash USING INDEX ididx (id=?)}
+} {SEARCH TABLE listhash USING INDEX ididx (id=?)}
# Some extra tests testing other permutations of 5000.
#
do_eqp_test tkt3442-1.4 {
SELECT node FROM listhash WHERE id=5000 LIMIT 1;
-} {SEARCH listhash USING INDEX ididx (id=?)}
+} {SEARCH TABLE listhash USING INDEX ididx (id=?)}
do_test tkt3442-1.5 {
catchsql {
diff -Nru sqlite3-3.35.0/test/tkt-385a5b56b9.test sqlite3-3.35.0-1/test/tkt-385a5b56b9.test
--- sqlite3-3.35.0/test/tkt-385a5b56b9.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/tkt-385a5b56b9.test 2021-04-04 17:23:22.000000000 +0000
@@ -35,16 +35,16 @@
}
do_eqp_test 2.1 { SELECT DISTINCT x FROM t2 } \
- {SCAN t2 USING COVERING INDEX t2x}
+ {SCAN TABLE t2 USING COVERING INDEX t2x}
do_eqp_test 2.2 { SELECT DISTINCT y FROM t2 } \
- {SCAN t2 USING COVERING INDEX t2y}
+ {SCAN TABLE t2 USING COVERING INDEX t2y}
do_eqp_test 2.3 { SELECT DISTINCT x, y FROM t2 WHERE y=10 } \
- {SEARCH t2 USING INDEX t2y (y=?)}
+ {SEARCH TABLE t2 USING INDEX t2y (y=?)}
do_eqp_test 2.4 { SELECT DISTINCT x, y FROM t2 WHERE x=10 } \
- {SEARCH t2 USING INDEX t2x (x=?)}
+ {SEARCH TABLE t2 USING INDEX t2x (x=?)}
finish_test
diff -Nru sqlite3-3.35.0/test/tkt-78e04e52ea.test sqlite3-3.35.0-1/test/tkt-78e04e52ea.test
--- sqlite3-3.35.0/test/tkt-78e04e52ea.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/tkt-78e04e52ea.test 2021-04-04 17:23:22.000000000 +0000
@@ -42,7 +42,7 @@
} {}
do_test tkt-78e04-1.4 {
db eval {EXPLAIN QUERY PLAN SELECT "" FROM "" WHERE "" LIKE '1e5%';}
-} {/*SCAN USING COVERING INDEX i1*/}
+} {/*SCAN TABLE USING COVERING INDEX i1*/}
do_test tkt-78e04-1.5 {
execsql {
DROP TABLE "";
@@ -55,12 +55,12 @@
CREATE INDEX "" ON t2(x);
EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE x=5;
}
-} {/*SEARCH t2 USING COVERING INDEX (x=?)*/}
+} {/*SEARCH TABLE t2 USING COVERING INDEX (x=?)*/}
do_test tkt-78e04-2.2 {
execsql {
DROP INDEX "";
EXPLAIN QUERY PLAN SELECT * FROM t2 WHERE x=2;
}
-} {/*SCAN t2*/}
+} {/*SCAN TABLE t2*/}
finish_test
diff -Nru sqlite3-3.35.0/test/tkt-b75a9ca6b0.test sqlite3-3.35.0-1/test/tkt-b75a9ca6b0.test
--- sqlite3-3.35.0/test/tkt-b75a9ca6b0.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/tkt-b75a9ca6b0.test 2021-04-04 17:23:22.000000000 +0000
@@ -32,8 +32,8 @@
CREATE INDEX i1 ON t1(x, y);
}
-set idxscan {SCAN t1 USING COVERING INDEX i1}
-set tblscan {SCAN t1}
+set idxscan {SCAN TABLE t1 USING COVERING INDEX i1}
+set tblscan {SCAN TABLE t1}
set grpsort {USE TEMP B-TREE FOR GROUP BY}
set sort {USE TEMP B-TREE FOR ORDER BY}
diff -Nru sqlite3-3.35.0/test/tpch01.test sqlite3-3.35.0-1/test/tpch01.test
--- sqlite3-3.35.0/test/tpch01.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/tpch01.test 2021-04-04 17:23:22.000000000 +0000
@@ -165,13 +165,13 @@
order by
o_year;}]
set ::eqpres
-} {/*SEARCH part USING INDEX bootleg_pti *SEARCH lineitem USING INDEX lpki2*/}
+} {/*SEARCH TABLE part USING INDEX bootleg_pti *SEARCH TABLE lineitem USING INDEX lpki2*/}
do_test tpch01-1.1b {
set ::eqpres
-} {/.* customer .* n1 .*/}
+} {/.* customer .* nation AS n1 .*/}
do_test tpch01-1.1c {
set ::eqpres
-} {/.* supplier .* n2 .*/}
+} {/.* supplier .* nation AS n2 .*/}
do_eqp_test tpch01-1.2 {
select
@@ -189,10 +189,10 @@
revenue desc;
} {
QUERY PLAN
- |--SEARCH orders USING INDEX odi (O_ORDERDATE>? AND O_ORDERDATE)
- |--SEARCH customer USING INDEX cpki (C_CUSTKEY=?)
- |--SEARCH nation USING INDEX npki (N_NATIONKEY=?)
- |--SEARCH lineitem USING INDEX lpki (L_ORDERKEY=?)
+ |--SEARCH TABLE orders USING INDEX odi (O_ORDERDATE>? AND O_ORDERDATE)
+ |--SEARCH TABLE customer USING INDEX cpki (C_CUSTKEY=?)
+ |--SEARCH TABLE nation USING INDEX npki (N_NATIONKEY=?)
+ |--SEARCH TABLE lineitem USING INDEX lpki (L_ORDERKEY=?)
|--USE TEMP B-TREE FOR GROUP BY
`--USE TEMP B-TREE FOR ORDER BY
}
diff -Nru sqlite3-3.35.0/test/transitive1.test sqlite3-3.35.0-1/test/transitive1.test
--- sqlite3-3.35.0/test/transitive1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/transitive1.test 2021-04-04 17:23:22.000000000 +0000
@@ -344,13 +344,13 @@
do_execsql_test transitive1-560eqp {
EXPLAIN QUERY PLAN
SELECT * FROM c1 WHERE x=y AND y=z AND z='abc';
-} {/SCAN c1/}
+} {/SCAN TABLE c1/}
do_execsql_test transitive1-570 {
SELECT * FROM c1 WHERE x=y AND z=y AND z='abc';
} {}
do_execsql_test transitive1-570eqp {
EXPLAIN QUERY PLAN
SELECT * FROM c1 WHERE x=y AND z=y AND z='abc';
-} {/SEARCH c1 USING INDEX c1x/}
+} {/SEARCH TABLE c1 USING INDEX c1x/}
finish_test
diff -Nru sqlite3-3.35.0/test/triggerupfrom.test sqlite3-3.35.0-1/test/triggerupfrom.test
--- sqlite3-3.35.0/test/triggerupfrom.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/triggerupfrom.test 2021-04-04 17:23:22.000000000 +0000
@@ -171,3 +171,4 @@
finish_test
+
diff -Nru sqlite3-3.35.0/test/unordered.test sqlite3-3.35.0-1/test/unordered.test
--- sqlite3-3.35.0/test/unordered.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/unordered.test 2021-04-04 17:23:22.000000000 +0000
@@ -40,27 +40,27 @@
sqlite3 db test.db
foreach {tn sql r(ordered) r(unordered)} {
1 "SELECT * FROM t1 ORDER BY a"
- {SCAN t1 USING INDEX i1}
- {SCAN t1*USE TEMP B-TREE FOR ORDER BY}
+ {SCAN TABLE t1 USING INDEX i1}
+ {SCAN TABLE t1*USE TEMP B-TREE FOR ORDER BY}
2 "SELECT * FROM t1 WHERE a > 100"
- {SEARCH t1 USING INDEX i1 (a>?)}
- {SCAN t1}
+ {SEARCH TABLE t1 USING INDEX i1 (a>?)}
+ {SCAN TABLE t1}
3 "SELECT * FROM t1 WHERE a = ? ORDER BY rowid"
- {SEARCH t1 USING INDEX i1 (a=?)}
- {SEARCH t1 USING INDEX i1 (a=?)*USE TEMP B-TREE FOR ORDER BY}
+ {SEARCH TABLE t1 USING INDEX i1 (a=?)}
+ {SEARCH TABLE t1 USING INDEX i1 (a=?)*USE TEMP B-TREE FOR ORDER BY}
4 "SELECT max(a) FROM t1"
- {SEARCH t1 USING COVERING INDEX i1}
- {SEARCH t1}
+ {SEARCH TABLE t1 USING COVERING INDEX i1}
+ {SEARCH TABLE t1}
5 "SELECT group_concat(b) FROM t1 GROUP BY a"
- {SCAN t1 USING INDEX i1}
- {SCAN t1*USE TEMP B-TREE FOR GROUP BY}
+ {SCAN TABLE t1 USING INDEX i1}
+ {SCAN TABLE t1*USE TEMP B-TREE FOR GROUP BY}
6 "SELECT * FROM t1 WHERE a = ?"
- {SEARCH t1 USING INDEX i1 (a=?)}
- {SEARCH t1 USING INDEX i1 (a=?)}
+ {SEARCH TABLE t1 USING INDEX i1 (a=?)}
+ {SEARCH TABLE t1 USING INDEX i1 (a=?)}
7 "SELECT count(*) FROM t1"
- {SCAN t1 USING COVERING INDEX i1}
- {SCAN t1}
+ {SCAN TABLE t1 USING COVERING INDEX i1}
+ {SCAN TABLE t1}
} {
do_eqp_test 1.$idxmode.$tn $sql $r($idxmode)
}
diff -Nru sqlite3-3.35.0/test/upfrom2.test sqlite3-3.35.0-1/test/upfrom2.test
--- sqlite3-3.35.0/test/upfrom2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/upfrom2.test 2021-04-04 17:23:22.000000000 +0000
@@ -367,3 +367,5 @@
finish_test
+
+
diff -Nru sqlite3-3.35.0/test/upfrom3.test sqlite3-3.35.0-1/test/upfrom3.test
--- sqlite3-3.35.0/test/upfrom3.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/upfrom3.test 2021-04-04 17:23:22.000000000 +0000
@@ -259,3 +259,4 @@
}
finish_test
+
diff -Nru sqlite3-3.35.0/test/upfromfault.test sqlite3-3.35.0-1/test/upfromfault.test
--- sqlite3-3.35.0/test/upfromfault.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/upfromfault.test 2021-04-04 17:23:22.000000000 +0000
@@ -137,3 +137,4 @@
finish_test
+
diff -Nru sqlite3-3.35.0/test/walsetlk.test sqlite3-3.35.0-1/test/walsetlk.test
--- sqlite3-3.35.0/test/walsetlk.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/walsetlk.test 2021-04-04 17:23:22.000000000 +0000
@@ -195,3 +195,4 @@
} {1 {database is locked}}
finish_test
+
diff -Nru sqlite3-3.35.0/test/where2.test sqlite3-3.35.0-1/test/where2.test
--- sqlite3-3.35.0/test/where2.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/where2.test 2021-04-04 17:23:22.000000000 +0000
@@ -76,12 +76,10 @@
set eqp [execsql "EXPLAIN QUERY PLAN $sql"]
# puts eqp=$eqp
foreach {a b c x} $eqp {
- if {[regexp {SCAN CONSTANT} $x]} {
- # noop
- } elseif {[regexp {(SCAN|SEARCH) (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
- $x all ss as tab idx]} {
+ if {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
+ $x all as tab idx]} {
lappend data $tab $idx
- } elseif {[regexp {(SCAN|SEARCH) (\w+ AS )?(\w+)\y} $x all ss as tab]} {
+ } elseif {[regexp { TABLE (\w+ AS )?(\w+)\y} $x all as tab]} {
lappend data $tab *
}
}
@@ -755,7 +753,7 @@
SELECT a.x, b.x
FROM t12 AS a JOIN t12 AS b ON a.y=b.x
WHERE (b.x=$abc OR b.y=$abc);
-} {/SEARCH b .*SEARCH b /}
+} {/.*SEARCH TABLE t12 AS b .*SEARCH TABLE t12 AS b .*/}
}
# Verify that all necessary OP_OpenRead opcodes occur in the OR optimization.
diff -Nru sqlite3-3.35.0/test/where3.test sqlite3-3.35.0-1/test/where3.test
--- sqlite3-3.35.0/test/where3.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/where3.test 2021-04-04 17:23:22.000000000 +0000
@@ -111,12 +111,10 @@
set eqp [execsql "EXPLAIN QUERY PLAN $sql"]
# puts eqp=$eqp
foreach {a b c x} $eqp {
- if {[regexp {SCAN CONSTANT} $x]} {
- # noop
- } elseif {[regexp {(SCAN|SEARCH) (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
- $x all ss as tab idx]} {
+ if {[regexp { TABLE (\w+ AS )?(\w+) USING.* INDEX (\w+)\y} \
+ $x all as tab idx]} {
lappend data $tab $idx
- } elseif {[regexp {(SCAN|SEARCH) (\w+ AS )?(\w+)\y} $x all ss as tab]} {
+ } elseif {[regexp { TABLE (\w+ AS )?(\w+)\y} $x all as tab]} {
lappend data $tab *
}
}
@@ -242,15 +240,15 @@
SELECT * FROM t302, t301 WHERE t302.x=5 AND t301.a=t302.y;
} {
QUERY PLAN
- |--SCAN t302
- `--SEARCH t301 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE t302
+ `--SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)
}
do_eqp_test where3-3.1 {
SELECT * FROM t301, t302 WHERE t302.x=5 AND t301.a=t302.y;
} {
QUERY PLAN
- |--SCAN t302
- `--SEARCH t301 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SCAN TABLE t302
+ `--SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)
}
do_execsql_test where3-3.2 {
SELECT * FROM t301 WHERE c=3 AND a IS NULL;
@@ -271,25 +269,25 @@
EXPLAIN QUERY PLAN
SELECT * FROM t400, t401, t402 WHERE t402.z GLOB 'abc*';
} {
- 0 0 2 {SCAN t402}
- 0 1 0 {SCAN t400}
- 0 2 1 {SCAN t401}
+ 0 0 2 {SCAN TABLE t402}
+ 0 1 0 {SCAN TABLE t400}
+ 0 2 1 {SCAN TABLE t401}
}
do_execsql_test where3-4.1 {
EXPLAIN QUERY PLAN
SELECT * FROM t400, t401, t402 WHERE t401.r GLOB 'abc*';
} {
- 0 0 1 {SCAN t401}
- 0 1 0 {SCAN t400}
- 0 2 2 {SCAN t402}
+ 0 0 1 {SCAN TABLE t401}
+ 0 1 0 {SCAN TABLE t400}
+ 0 2 2 {SCAN TABLE t402}
}
do_execsql_test where3-4.2 {
EXPLAIN QUERY PLAN
SELECT * FROM t400, t401, t402 WHERE t400.c GLOB 'abc*';
} {
- 0 0 0 {SCAN t400}
- 0 1 1 {SCAN t401}
- 0 2 2 {SCAN t402}
+ 0 0 0 {SCAN TABLE t400}
+ 0 1 1 {SCAN TABLE t401}
+ 0 2 2 {SCAN TABLE t402}
}
} ;# endif
@@ -323,8 +321,8 @@
ORDER BY bbb.title COLLATE NOCASE ASC;
} {
QUERY PLAN
- |--SEARCH aaa USING INDEX aaa_333 (fk=?)
- |--SEARCH bbb USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)
+ |--SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?)
`--USE TEMP B-TREE FOR ORDER BY
}
do_eqp_test where3-5.1 {
@@ -336,8 +334,8 @@
ORDER BY bbb.title COLLATE NOCASE ASC;
} {
QUERY PLAN
- |--SEARCH aaa USING INDEX aaa_333 (fk=?)
- |--SEARCH bbb USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)
+ |--SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?)
`--USE TEMP B-TREE FOR ORDER BY
}
do_eqp_test where3-5.2 {
@@ -349,8 +347,8 @@
ORDER BY bbb.title COLLATE NOCASE ASC;
} {
QUERY PLAN
- |--SEARCH aaa USING INDEX aaa_333 (fk=?)
- |--SEARCH bbb USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)
+ |--SEARCH TABLE bbb USING INTEGER PRIMARY KEY (rowid=?)
`--USE TEMP B-TREE FOR ORDER BY
}
do_eqp_test where3-5.3 {
@@ -362,8 +360,8 @@
ORDER BY bbb.title COLLATE NOCASE ASC;
} {
QUERY PLAN
- |--SEARCH aaa USING INDEX aaa_333 (fk=?)
- |--SEARCH bbb USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE aaa USING INDEX aaa_333 (fk=?)
+ |--SEARCH TABLE aaa AS bbb USING INTEGER PRIMARY KEY (rowid=?)
`--USE TEMP B-TREE FOR ORDER BY
}
diff -Nru sqlite3-3.35.0/test/where7.test sqlite3-3.35.0-1/test/where7.test
--- sqlite3-3.35.0/test/where7.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/where7.test 2021-04-04 17:23:22.000000000 +0000
@@ -23354,10 +23354,10 @@
QUERY PLAN
|--MULTI-INDEX OR
| |--INDEX 1
- | | `--SEARCH t301 USING COVERING INDEX t301_c4 (c4=?)
+ | | `--SEARCH TABLE t301 USING COVERING INDEX t301_c4 (c4=?)
| `--INDEX 2
- | `--SEARCH t301 USING INTEGER PRIMARY KEY (rowid=?)
- |--SEARCH t302 USING INDEX t302_c8_c3 (c8=? AND c3>?)
+ | `--SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE t302 USING INDEX t302_c8_c3 (c8=? AND c3>?)
`--USE TEMP B-TREE FOR ORDER BY
}
diff -Nru sqlite3-3.35.0/test/where9.test sqlite3-3.35.0-1/test/where9.test
--- sqlite3-3.35.0/test/where9.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/where9.test 2021-04-04 17:23:22.000000000 +0000
@@ -362,12 +362,12 @@
WHERE t1.a=80 AND ((t1.c=t2.c AND t1.d=t2.d) OR t1.f=t2.f)
} [string map {"\n " \n} {
QUERY PLAN
- |--SEARCH t1 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
`--MULTI-INDEX OR
|--INDEX 1
- | `--SEARCH t2 USING INDEX t2d (d=?)
+ | `--SEARCH TABLE t2 USING INDEX t2d (d=?)
`--INDEX 3
- `--SEARCH t2 USING COVERING INDEX t2f (f=?)
+ `--SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)
}]
do_eqp_test where9-3.2 {
SELECT coalesce(t2.a,9999)
@@ -375,12 +375,12 @@
WHERE t1.a=80
} [string map {"\n " \n} {
QUERY PLAN
- |--SEARCH t1 USING INTEGER PRIMARY KEY (rowid=?)
+ |--SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
`--MULTI-INDEX OR
|--INDEX 1
- | `--SEARCH t2 USING INDEX t2d (d=?)
+ | `--SEARCH TABLE t2 USING INDEX t2d (d=?)
`--INDEX 2
- `--SEARCH t2 USING COVERING INDEX t2f (f=?)
+ `--SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)
}]
}
@@ -461,23 +461,23 @@
QUERY PLAN
`--MULTI-INDEX OR
|--INDEX 1
- | `--SEARCH t1 USING INDEX t1c (c=?)
+ | `--SEARCH TABLE t1 USING INDEX t1c (c=?)
`--INDEX 2
- `--SEARCH t1 USING INDEX t1d (d=?)
+ `--SEARCH TABLE t1 USING INDEX t1d (d=?)
}
# In contrast, b=1000 is preferred over any OR-clause.
#
do_eqp_test where9-5.2 {
SELECT a FROM t1 WHERE b=1000 AND (c=31031 OR d IS NULL)
-} {SEARCH t1 USING INDEX t1b (b=?)}
+} {SEARCH TABLE t1 USING INDEX t1b (b=?)}
# Likewise, inequalities in an AND are preferred over inequalities in
# an OR.
#
do_eqp_test where9-5.3 {
SELECT a FROM t1 WHERE b>1000 AND (c>=31031 OR d IS NULL)
-} {SEARCH t1 USING INDEX t1b (b>?)}
+} {SEARCH TABLE t1 USING INDEX t1b (b>?)}
############################################################################
# Make sure OR-clauses work correctly on UPDATE and DELETE statements.
diff -Nru sqlite3-3.35.0/test/whereE.test sqlite3-3.35.0-1/test/whereE.test
--- sqlite3-3.35.0/test/whereE.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/whereE.test 2021-04-04 17:23:22.000000000 +0000
@@ -47,16 +47,16 @@
CREATE UNIQUE INDEX t2zx ON t2(z,x);
EXPLAIN QUERY PLAN SELECT x FROM t1, t2 WHERE a=z AND c=x;
-} {/.*SCAN t1.*SEARCH t2.*/}
+} {/.*SCAN TABLE t1.*SEARCH TABLE t2.*/}
do_execsql_test 1.2 {
EXPLAIN QUERY PLAN SELECT x FROM t2, t1 WHERE a=z AND c=x;
-} {/.*SCAN t1.*SEARCH t2.*/}
+} {/.*SCAN TABLE t1.*SEARCH TABLE t2.*/}
do_execsql_test 1.3 {
ANALYZE;
EXPLAIN QUERY PLAN SELECT x FROM t1, t2 WHERE a=z AND c=x;
-} {/.*SCAN t1.*SEARCH t2.*/}
+} {/.*SCAN TABLE t1.*SEARCH TABLE t2.*/}
do_execsql_test 1.4 {
EXPLAIN QUERY PLAN SELECT x FROM t2, t1 WHERE a=z AND c=x;
-} {/.*SCAN t1.*SEARCH t2.*/}
+} {/.*SCAN TABLE t1.*SEARCH TABLE t2.*/}
finish_test
diff -Nru sqlite3-3.35.0/test/whereF.test sqlite3-3.35.0-1/test/whereF.test
--- sqlite3-3.35.0/test/whereF.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/whereF.test 2021-04-04 17:23:22.000000000 +0000
@@ -63,7 +63,7 @@
} {
do_test 1.$tn {
db eval "EXPLAIN QUERY PLAN $sql"
- } {/.*SCAN t2\y.*SEARCH t1\y.*/}
+ } {/.*SCAN TABLE t2\y.*SEARCH TABLE t1\y.*/}
}
do_execsql_test 2.0 {
@@ -84,7 +84,7 @@
} {
do_test 2.$tn {
db eval "EXPLAIN QUERY PLAN $sql"
- } {/.*SCAN t2\y.*SEARCH t1\y.*/}
+ } {/.*SCAN TABLE t2\y.*SEARCH TABLE t1\y.*/}
}
do_execsql_test 3.0 {
@@ -109,7 +109,7 @@
} {
do_test 3.$tn {
db eval "EXPLAIN QUERY PLAN $sql"
- } {/.*SCAN t2\y.*SEARCH t1\y.*/}
+ } {/.*SCAN TABLE t2\y.*SEARCH TABLE t1\y.*/}
}
do_execsql_test 4.0 {
diff -Nru sqlite3-3.35.0/test/whereG.test sqlite3-3.35.0-1/test/whereG.test
--- sqlite3-3.35.0/test/whereG.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/whereG.test 2021-04-04 17:23:22.000000000 +0000
@@ -156,16 +156,16 @@
} {}
do_eqp_test whereG-3.1 {
SELECT * FROM a, b WHERE b1=a1 AND a2=5;
-} {/.*SCAN a.*SEARCH b USING INDEX .*b_1 .b1=..*/}
+} {/.*SCAN TABLE a.*SEARCH TABLE b USING INDEX .*b_1 .b1=..*/}
do_eqp_test whereG-3.2 {
SELECT * FROM a, b WHERE a1=b1 AND a2=5;
-} {/.*SCAN a.*SEARCH b USING INDEX .*b_1 .b1=..*/}
+} {/.*SCAN TABLE a.*SEARCH TABLE b USING INDEX .*b_1 .b1=..*/}
do_eqp_test whereG-3.3 {
SELECT * FROM a, b WHERE a2=5 AND b1=a1;
-} {/.*SCAN a.*SEARCH b USING INDEX .*b_1 .b1=..*/}
+} {/.*SCAN TABLE a.*SEARCH TABLE b USING INDEX .*b_1 .b1=..*/}
do_eqp_test whereG-3.4 {
SELECT * FROM a, b WHERE a2=5 AND a1=b1;
-} {/.*SCAN a.*SEARCH b USING INDEX .*b_1 .b1=..*/}
+} {/.*SCAN TABLE a.*SEARCH TABLE b USING INDEX .*b_1 .b1=..*/}
# Ticket [1e64dd782a126f48d78c43a664844a41d0e6334e]:
# Incorrect result in a nested GROUP BY/DISTINCT due to the use of an OP_SCopy
@@ -195,13 +195,13 @@
}
do_eqp_test 5.1.2 {
SELECT * FROM t1 WHERE a>?
-} {SEARCH t1 USING INDEX i1 (a>?)}
+} {SEARCH TABLE t1 USING INDEX i1 (a>?)}
do_eqp_test 5.1.3 {
SELECT * FROM t1 WHERE likelihood(a>?, 0.9)
-} {SCAN t1}
+} {SCAN TABLE t1}
do_eqp_test 5.1.4 {
SELECT * FROM t1 WHERE likely(a>?)
-} {SCAN t1}
+} {SCAN TABLE t1}
do_test 5.2 {
for {set i 0} {$i < 100} {incr i} {
@@ -212,29 +212,29 @@
} {}
do_eqp_test 5.2.2 {
SELECT * FROM t1 WHERE likelihood(b>?, 0.01)
-} {SEARCH t1 USING INDEX i1 (ANY(a) AND b>?)}
+} {SEARCH TABLE t1 USING INDEX i1 (ANY(a) AND b>?)}
do_eqp_test 5.2.3 {
SELECT * FROM t1 WHERE likelihood(b>?, 0.9)
-} {SCAN t1}
+} {SCAN TABLE t1}
do_eqp_test 5.2.4 {
SELECT * FROM t1 WHERE likely(b>?)
-} {SCAN t1}
+} {SCAN TABLE t1}
ifcapable stat4 {
do_eqp_test 5.3.1.stat4 {
SELECT * FROM t1 WHERE a=?
- } {SCAN t1}
+ } {SCAN TABLE t1}
} else {
do_eqp_test 5.3.1 {
SELECT * FROM t1 WHERE a=?
- } {SEARCH t1 USING INDEX i1}
+ } {SEARCH TABLE t1 USING INDEX i1}
}
do_eqp_test 5.3.2 {
SELECT * FROM t1 WHERE likelihood(a=?, 0.9)
-} {SCAN t1}
+} {SCAN TABLE t1}
do_eqp_test 5.3.3 {
SELECT * FROM t1 WHERE likely(a=?)
-} {SCAN t1}
+} {SCAN TABLE t1}
# 2015-06-18
# Ticket [https://www.sqlite.org/see/tktview/472f0742a1868fb58862bc588ed70]
diff -Nru sqlite3-3.35.0/test/whereI.test sqlite3-3.35.0-1/test/whereI.test
--- sqlite3-3.35.0/test/whereI.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/whereI.test 2021-04-04 17:23:22.000000000 +0000
@@ -32,9 +32,9 @@
QUERY PLAN
`--MULTI-INDEX OR
|--INDEX 1
- | `--SEARCH t1 USING INDEX i1 (b=?)
+ | `--SEARCH TABLE t1 USING INDEX i1 (b=?)
`--INDEX 2
- `--SEARCH t1 USING INDEX i2 (c=?)
+ `--SEARCH TABLE t1 USING INDEX i2 (c=?)
}
do_execsql_test 1.2 {
@@ -64,9 +64,9 @@
QUERY PLAN
`--MULTI-INDEX OR
|--INDEX 1
- | `--SEARCH t2 USING INDEX i3 (b=?)
+ | `--SEARCH TABLE t2 USING INDEX i3 (b=?)
`--INDEX 2
- `--SEARCH t2 USING INDEX i4 (c=?)
+ `--SEARCH TABLE t2 USING INDEX i4 (c=?)
}
do_execsql_test 2.2 {
diff -Nru sqlite3-3.35.0/test/whereJ.test sqlite3-3.35.0-1/test/whereJ.test
--- sqlite3-3.35.0/test/whereJ.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/whereJ.test 2021-04-04 17:23:22.000000000 +0000
@@ -402,7 +402,7 @@
a = 4 AND b BETWEEN 20 AND 80 -- Matches 80 rows
AND
c BETWEEN 150 AND 160 -- Matches 10 rows
-} {SEARCH t1 USING INDEX idx_c (c>? AND c)}
+} {SEARCH TABLE t1 USING INDEX idx_c (c>? AND c)}
# This one should use index "idx_ab".
do_eqp_test 3.5 {
@@ -410,7 +410,7 @@
a = 5 AND b BETWEEN 20 AND 80 -- Matches 1 row
AND
c BETWEEN 150 AND 160 -- Matches 10 rows
-} {SEARCH t1 USING INDEX idx_ab (a=? AND b>? AND b)}
+} {SEARCH TABLE t1 USING INDEX idx_ab (a=? AND b>? AND b)}
###########################################################################################
@@ -633,7 +633,7 @@
AND px.cx_id = cx.cx_id
AND px.px_tid = 0
AND px.le_id = le.le_id;
-} {/.*SCAN cx.*SEARCH px.*SEARCH le.*/}
+} {/.*SCAN TABLE cx.*SEARCH TABLE px.*SEARCH TABLE le.*/}
# The following test is derived from a performance problem reported from
diff -Nru sqlite3-3.35.0/test/whereK.test sqlite3-3.35.0-1/test/whereK.test
--- sqlite3-3.35.0/test/whereK.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/whereK.test 2021-04-04 17:23:22.000000000 +0000
@@ -33,7 +33,7 @@
do_execsql_test 1.1eqp {
EXPLAIN QUERY PLAN
SELECT a FROM t1 WHERE b>9 OR b=9 ORDER BY +a;
-} {/SEARCH t1 USING INDEX t1bc/}
+} {/SEARCH TABLE t1 USING INDEX t1bc/}
do_execsql_test 1.2 {
SELECT a FROM t1 WHERE b>8 OR (b=8 AND c>7) ORDER BY +a;
@@ -41,7 +41,7 @@
do_execsql_test 1.2eqp {
EXPLAIN QUERY PLAN
SELECT a FROM t1 WHERE b>8 OR (b=8 AND c>7) ORDER BY +a;
-} {/SEARCH t1 USING INDEX t1bc/}
+} {/SEARCH TABLE t1 USING INDEX t1bc/}
do_execsql_test 1.3 {
SELECT a FROM t1 WHERE (b=8 AND c>7) OR b>8 ORDER BY +a;
@@ -49,7 +49,7 @@
do_execsql_test 1.3eqp {
EXPLAIN QUERY PLAN
SELECT a FROM t1 WHERE (b=8 AND c>7) OR b>8 ORDER BY +a;
-} {/SEARCH t1 USING INDEX t1bc/}
+} {/SEARCH TABLE t1 USING INDEX t1bc/}
do_execsql_test 1.4 {
SELECT a FROM t1 WHERE (b=8 AND c>7) OR 87) OR 87) OR (b>8 AND c NOT IN (4,5,6))
@@ -67,6 +67,6 @@
EXPLAIN QUERY PLAN
SELECT a FROM t1 WHERE (b=8 AND c>7) OR (b>8 AND c NOT IN (4,5,6))
ORDER BY +a;
-} {/SEARCH t1 USING INDEX t1bc/}
+} {/SEARCH TABLE t1 USING INDEX t1bc/}
finish_test
diff -Nru sqlite3-3.35.0/test/wherelimit.test sqlite3-3.35.0-1/test/wherelimit.test
--- sqlite3-3.35.0/test/wherelimit.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/wherelimit.test 2021-04-04 17:23:22.000000000 +0000
@@ -237,8 +237,8 @@
} {11}
create_test_data 6
do_test wherelimit-3.2 {
- execsql {UPDATE t1 SET y=1 WHERE x=1 RETURNING x, old.y, '|' LIMIT 5}
- } {1 1 | 1 2 | 1 3 | 1 4 | 1 5 |}
+ execsql {UPDATE t1 SET y=1 WHERE x=1 RETURNING x, y, '|' LIMIT 5}
+ } {1 1 | 1 1 | 1 1 | 1 1 | 1 1 |}
do_test wherelimit-3.2cnt {
execsql {SELECT count(*) FROM t1 WHERE y=1}
} {10}
diff -Nru sqlite3-3.35.0/test/whereL.test sqlite3-3.35.0-1/test/whereL.test
--- sqlite3-3.35.0/test/whereL.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/whereL.test 2021-04-04 17:23:22.000000000 +0000
@@ -28,11 +28,11 @@
QUERY PLAN
`--COMPOUND QUERY
|--LEFT-MOST SUBQUERY
- | |--SEARCH t2 USING INDEX sqlite_autoindex_t2_1 (a=?)
- | `--SEARCH t1 USING INDEX sqlite_autoindex_t1_1 (a=?)
+ | |--SEARCH TABLE t2 USING INDEX sqlite_autoindex_t2_1 (a=?)
+ | `--SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (a=?)
`--UNION ALL
- |--SEARCH t3 USING INDEX sqlite_autoindex_t3_1 (a=?)
- `--SEARCH t1 USING INDEX sqlite_autoindex_t1_1 (a=?)
+ |--SEARCH TABLE t3 USING INDEX sqlite_autoindex_t3_1 (a=?)
+ `--SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (a=?)
}
# The scan of the t1 table goes first since that enables the ORDER BY
@@ -45,9 +45,9 @@
ORDER BY t1.a;
} {
QUERY PLAN
- |--SEARCH t1 USING INDEX sqlite_autoindex_t1_1 (a=?)
- |--SEARCH t2 USING INDEX sqlite_autoindex_t2_1 (a=?)
- `--SCAN t3
+ |--SEARCH TABLE t1 USING INDEX sqlite_autoindex_t1_1 (a=?)
+ |--SEARCH TABLE t2 USING INDEX sqlite_autoindex_t2_1 (a=?)
+ `--SCAN TABLE t3
}
# Constant propagation in the face of collating sequences:
diff -Nru sqlite3-3.35.0/test/where.test sqlite3-3.35.0-1/test/where.test
--- sqlite3-3.35.0/test/where.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/where.test 2021-04-04 17:23:22.000000000 +0000
@@ -70,10 +70,10 @@
} {3 121 10 3}
do_eqp_test where-1.1.2 {
SELECT x, y, w FROM t1 WHERE w=10
-} {*SEARCH t1 USING INDEX i1w (w=?)*}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
do_eqp_test where-1.1.2b {
SELECT x, y, w FROM t1 WHERE w IS 10
-} {*SEARCH t1 USING INDEX i1w (w=?)*}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
do_test where-1.1.3 {
db status step
} {0}
@@ -85,13 +85,13 @@
} {99}
do_eqp_test where-1.1.6 {
SELECT x, y, w FROM t1 WHERE +w=10
-} {*SCAN t1*}
+} {*SCAN TABLE t1*}
do_test where-1.1.7 {
count {SELECT x, y, w AS abc FROM t1 WHERE abc=10}
} {3 121 10 3}
do_eqp_test where-1.1.8 {
SELECT x, y, w AS abc FROM t1 WHERE abc=10
-} {*SEARCH t1 USING INDEX i1w (w=?)*}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
do_test where-1.1.9 {
db status step
} {0}
@@ -118,22 +118,22 @@
} {11 3 144 3}
do_eqp_test where-1.4.2 {
SELECT w, x, y FROM t1 WHERE 11=w AND x>2
-} {*SEARCH t1 USING INDEX i1w (w=?)*}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
do_eqp_test where-1.4.2b {
SELECT w, x, y FROM t1 WHERE 11 IS w AND x>2
-} {*SEARCH t1 USING INDEX i1w (w=?)*}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
do_test where-1.4.3 {
count {SELECT w AS a, x AS b, y FROM t1 WHERE 11=a AND b>2}
} {11 3 144 3}
do_eqp_test where-1.4.4 {
SELECT w AS a, x AS b, y FROM t1 WHERE 11=a AND b>2
-} {*SEARCH t1 USING INDEX i1w (w=?)*}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
do_test where-1.5 {
count {SELECT x, y FROM t1 WHERE y<200 AND w=11 AND x>2}
} {3 144 3}
do_eqp_test where-1.5.2 {
SELECT x, y FROM t1 WHERE y<200 AND w=11 AND x>2
-} {*SEARCH t1 USING INDEX i1w (w=?)*}
+} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
do_test where-1.6 {
count {SELECT x, y FROM t1 WHERE y<200 AND x>2 AND w=11}
} {3 144 3}
@@ -145,10 +145,10 @@
} {3 144 3}
do_eqp_test where-1.8.2 {
SELECT x, y FROM t1 WHERE w>10 AND y=144 AND x=3
-} {*SEARCH t1 USING INDEX i1xy (x=? AND y=?)*}
+} {*SEARCH TABLE t1 USING INDEX i1xy (x=? AND y=?)*}
do_eqp_test where-1.8.3 {
SELECT x, y FROM t1 WHERE y=144 AND x=3
-} {*SEARCH t1 USING COVERING INDEX i1xy (x=? AND y=?)*}
+} {*SEARCH TABLE t1 USING COVERING INDEX i1xy (x=? AND y=?)*}
do_test where-1.9 {
count {SELECT x, y FROM t1 WHERE y=144 AND w>10 AND x=3}
} {3 144 3}
diff -Nru sqlite3-3.35.0/test/windowpushd.test sqlite3-3.35.0-1/test/windowpushd.test
--- sqlite3-3.35.0/test/windowpushd.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/windowpushd.test 2021-04-04 17:23:22.000000000 +0000
@@ -51,7 +51,7 @@
do_eqp_test 1.4 {
SELECT * FROM lll WHERE grp_id=2
-} {SEARCH t1 USING COVERING INDEX i1 (grp_id=?)}
+} {SEARCH TABLE t1 USING COVERING INDEX i1 (grp_id=?)}
#-------------------------------------------------------------------------
reset_db
@@ -158,10 +158,10 @@
if {$tn==1} {
do_eqp_test 2.$tn.3.3 {
SELECT * FROM v3 WHERE b='E'
- } {SEARCH t1 USING INDEX i2 (b=?)}
+ } {SEARCH TABLE t1 USING INDEX i2 (b=?)}
do_eqp_test 2.$tn.3.4 {
SELECT * FROM v3 WHERE b>'C'
- } {SEARCH t1 USING INDEX i2 (b>?)}
+ } {SEARCH TABLE t1 USING INDEX i2 (b>?)}
}
do_execsql_test 2.$tn.3.5 { SELECT * FROM v3 WHERE d<0.55; } {
@@ -172,7 +172,7 @@
if {$tn==1} {
do_eqp_test 2.$tn.3.6 {
SELECT * FROM v3 WHERE d<0.55
- } {SCAN t1 USING INDEX i2}
+ } {SCAN TABLE t1 USING INDEX i2}
}
do_execsql_test 2.$tn.4.1 {
@@ -234,3 +234,4 @@
finish_test
+
diff -Nru sqlite3-3.35.0/test/with1.test sqlite3-3.35.0-1/test/with1.test
--- sqlite3-3.35.0/test/with1.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/with1.test 2021-04-04 17:23:22.000000000 +0000
@@ -1025,10 +1025,10 @@
SELECT * FROM t1;
} {
QUERY PLAN
- |--MATERIALIZE x1
+ |--MATERIALIZE xxxxxx
| `--SCAN CONSTANT ROW
- |--SCAN x1
- `--SCAN x1
+ |--SCAN SUBQUERY xxxxxx
+ `--SCAN SUBQUERY xxxxxx
}
# 2017-10-28.
diff -Nru sqlite3-3.35.0/test/with3.test sqlite3-3.35.0-1/test/with3.test
--- sqlite3-3.35.0/test/with3.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/with3.test 2021-04-04 17:23:22.000000000 +0000
@@ -89,13 +89,13 @@
SELECT * FROM cnt, y1 WHERE i=a
} [string map {"\n " \n} {
QUERY PLAN
- |--MATERIALIZE cnt
+ |--MATERIALIZE xxxxxx
| |--SETUP
| | `--SCAN CONSTANT ROW
| `--RECURSIVE STEP
- | `--SCAN cnt
- |--SCAN cnt
- `--SEARCH y1 USING INDEX y1a (a=?)
+ | `--SCAN TABLE cnt
+ |--SCAN SUBQUERY xxxxxx
+ `--SEARCH TABLE y1 USING INDEX y1a (a=?)
}]
do_eqp_test 3.1.3 {
@@ -103,13 +103,13 @@
SELECT * FROM cnt, y1 WHERE i=a
} [string map {"\n " \n} {
QUERY PLAN
- |--MATERIALIZE cnt
+ |--MATERIALIZE xxxxxx
| |--SETUP
| | `--SCAN CONSTANT ROW
| `--RECURSIVE STEP
- | `--SCAN cnt
- |--SCAN y1
- `--SEARCH cnt USING AUTOMATIC COVERING INDEX (i=?)
+ | `--SCAN TABLE cnt
+ |--SCAN TABLE y1
+ `--SEARCH SUBQUERY xxxxxx USING AUTOMATIC COVERING INDEX (i=?)
}]
}
@@ -125,17 +125,17 @@
WHERE c.id=w2.pk AND c.id=w1.pk;
} {
QUERY PLAN
- |--MATERIALIZE c
+ |--MATERIALIZE xxxxxx
| |--SETUP
| | |--SCAN CONSTANT ROW
| | `--SCALAR SUBQUERY xxxxxx
- | | `--SCAN w2
+ | | `--SCAN TABLE w2
| `--RECURSIVE STEP
- | |--SCAN w1
- | `--SCAN c
- |--SCAN c
- |--SEARCH w2 USING INTEGER PRIMARY KEY (rowid=?)
- `--SEARCH w1 USING INTEGER PRIMARY KEY (rowid=?)
+ | |--SCAN TABLE w1
+ | `--SCAN TABLE c
+ |--SCAN SUBQUERY xxxxxx
+ |--SEARCH TABLE w2 USING INTEGER PRIMARY KEY (rowid=?)
+ `--SEARCH TABLE w1 USING INTEGER PRIMARY KEY (rowid=?)
}
do_execsql_test 4.0 {
@@ -207,15 +207,15 @@
ORDER BY 1;
} {
QUERY PLAN
- |--MATERIALIZE c
+ |--MATERIALIZE xxxxxx
| |--SETUP
| | `--SCAN CONSTANT ROW
| `--RECURSIVE STEP
- | `--SCAN c
- |--SCAN x1
- |--SCAN x2
- |--SCAN x3
- |--SCAN x4
+ | `--SCAN TABLE c
+ |--SCAN SUBQUERY xxxxxx AS x1
+ |--SCAN SUBQUERY xxxxxx AS x2
+ |--SCAN SUBQUERY xxxxxx AS x3
+ |--SCAN SUBQUERY xxxxxx AS x4
`--USE TEMP B-TREE FOR ORDER BY
}
do_execsql_test 5.2 {
diff -Nru sqlite3-3.35.0/test/with6.test sqlite3-3.35.0-1/test/with6.test
--- sqlite3-3.35.0/test/with6.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/with6.test 2021-04-04 17:23:22.000000000 +0000
@@ -30,11 +30,11 @@
SELECT c1.x||c2.x||c3.x FROM c c1, c c2, c c3;
} {
QUERY PLAN
- |--MATERIALIZE c
+ |--MATERIALIZE xxxxxx
| `--SCAN 2 CONSTANT ROWS
- |--SCAN c1
- |--SCAN c2
- `--SCAN c3
+ |--SCAN SUBQUERY xxxxxx AS c1
+ |--SCAN SUBQUERY xxxxxx AS c2
+ `--SCAN SUBQUERY xxxxxx AS c3
}
do_execsql_test 110 {
@@ -46,11 +46,11 @@
SELECT c1.x||c2.x||c3.x FROM c c1, c c2, c c3;
} {
QUERY PLAN
- |--MATERIALIZE c
+ |--MATERIALIZE xxxxxx
| `--SCAN 2 CONSTANT ROWS
- |--SCAN c1
- |--SCAN c2
- `--SCAN c3
+ |--SCAN SUBQUERY xxxxxx AS c1
+ |--SCAN SUBQUERY xxxxxx AS c2
+ `--SCAN SUBQUERY xxxxxx AS c3
}
# Even though the CTE is not materialized, the self-join optimization
@@ -65,11 +65,11 @@
SELECT c1.x||c2.x||c3.x FROM c c1, c c2, c c3;
} {
QUERY PLAN
- |--MATERIALIZE c
+ |--MATERIALIZE xxxxxx
| `--SCAN 2 CONSTANT ROWS
- |--SCAN c1
- |--SCAN c2
- `--SCAN c3
+ |--SCAN SUBQUERY xxxxxx AS c1
+ |--SCAN SUBQUERY xxxxxx AS c2
+ `--SCAN SUBQUERY xxxxxx AS c3
}
do_execsql_test 130 {
@@ -87,21 +87,21 @@
(SELECT x FROM c LIMIT 5) AS c3;
} {
QUERY PLAN
- |--MATERIALIZE c1
- | |--CO-ROUTINE c
+ |--MATERIALIZE xxxxxx
+ | |--CO-ROUTINE xxxxxx
| | `--SCAN 2 CONSTANT ROWS
- | `--SCAN c
- |--MATERIALIZE c2
- | |--CO-ROUTINE c
+ | `--SCAN SUBQUERY xxxxxx
+ |--MATERIALIZE xxxxxx
+ | |--CO-ROUTINE xxxxxx
| | `--SCAN 2 CONSTANT ROWS
- | `--SCAN c
- |--MATERIALIZE c3
- | |--CO-ROUTINE c
+ | `--SCAN SUBQUERY xxxxxx
+ |--MATERIALIZE xxxxxx
+ | |--CO-ROUTINE xxxxxx
| | `--SCAN 2 CONSTANT ROWS
- | `--SCAN c
- |--SCAN c1
- |--SCAN c2
- `--SCAN c3
+ | `--SCAN SUBQUERY xxxxxx
+ |--SCAN SUBQUERY xxxxxx AS c1
+ |--SCAN SUBQUERY xxxxxx AS c2
+ `--SCAN SUBQUERY xxxxxx AS c3
}
# The (SELECT x FROM c LIMIT N) subqueries get materialized once each.
@@ -123,17 +123,17 @@
(SELECT x FROM c LIMIT 7) AS c3;
} {
QUERY PLAN
- |--MATERIALIZE c1
- | |--MATERIALIZE c
+ |--MATERIALIZE xxxxxx
+ | |--MATERIALIZE xxxxxx
| | `--SCAN 2 CONSTANT ROWS
- | `--SCAN c
- |--MATERIALIZE c2
- | `--SCAN c
- |--MATERIALIZE c3
- | `--SCAN c
- |--SCAN c1
- |--SCAN c2
- `--SCAN c3
+ | `--SCAN SUBQUERY xxxxxx
+ |--MATERIALIZE xxxxxx
+ | `--SCAN SUBQUERY xxxxxx
+ |--MATERIALIZE xxxxxx
+ | `--SCAN SUBQUERY xxxxxx
+ |--SCAN SUBQUERY xxxxxx AS c1
+ |--SCAN SUBQUERY xxxxxx AS c2
+ `--SCAN SUBQUERY xxxxxx AS c3
}
do_execsql_test 150 {
@@ -151,17 +151,17 @@
(SELECT x FROM c LIMIT 7) AS c3;
} {
QUERY PLAN
- |--MATERIALIZE c1
- | |--MATERIALIZE c
+ |--MATERIALIZE xxxxxx
+ | |--MATERIALIZE xxxxxx
| | `--SCAN 2 CONSTANT ROWS
- | `--SCAN c
- |--MATERIALIZE c2
- | `--SCAN c
- |--MATERIALIZE c3
- | `--SCAN c
- |--SCAN c1
- |--SCAN c2
- `--SCAN c3
+ | `--SCAN SUBQUERY xxxxxx
+ |--MATERIALIZE xxxxxx
+ | `--SCAN SUBQUERY xxxxxx
+ |--MATERIALIZE xxxxxx
+ | `--SCAN SUBQUERY xxxxxx
+ |--SCAN SUBQUERY xxxxxx AS c1
+ |--SCAN SUBQUERY xxxxxx AS c2
+ `--SCAN SUBQUERY xxxxxx AS c3
}
do_execsql_test 160 {
@@ -175,11 +175,11 @@
FROM c AS c2 WHERE c2.x<10;
} {
QUERY PLAN
- |--MATERIALIZE c
+ |--MATERIALIZE xxxxxx
| `--SCAN 2 CONSTANT ROWS
- |--SCAN c2
+ |--SCAN SUBQUERY xxxxxx AS c2
`--CORRELATED SCALAR SUBQUERY xxxxxx
- `--SCAN c
+ `--SCAN SUBQUERY xxxxxx
}
do_execsql_test 170 {
@@ -193,13 +193,13 @@
FROM c AS c2 WHERE c2.x<10;
} {
QUERY PLAN
- |--CO-ROUTINE c
+ |--CO-ROUTINE xxxxxx
| `--SCAN 2 CONSTANT ROWS
- |--SCAN c2
+ |--SCAN SUBQUERY xxxxxx AS c2
`--CORRELATED SCALAR SUBQUERY xxxxxx
- |--CO-ROUTINE c
+ |--CO-ROUTINE xxxxxx
| `--SCAN 2 CONSTANT ROWS
- `--SCAN c
+ `--SCAN SUBQUERY xxxxxx
}
@@ -228,15 +228,15 @@
SELECT y FROM t2 ORDER BY y;
} {
QUERY PLAN
- |--MATERIALIZE c1
- | |--MATERIALIZE c
+ |--MATERIALIZE xxxxxx
+ | |--MATERIALIZE xxxxxx
| | `--SCAN 3 CONSTANT ROWS
- | `--SCAN c
- |--MATERIALIZE c2
- | `--SCAN c
- |--SCAN c1
- |--SCAN c2
- |--SCAN t1
+ | `--SCAN SUBQUERY xxxxxx
+ |--MATERIALIZE xxxxxx
+ | `--SCAN SUBQUERY xxxxxx
+ |--SCAN SUBQUERY xxxxxx AS c1
+ |--SCAN SUBQUERY xxxxxx AS c2
+ |--SCAN TABLE t1
`--USE TEMP B-TREE FOR ORDER BY
}
do_execsql_test 220 {
diff -Nru sqlite3-3.35.0/test/without_rowid6.test sqlite3-3.35.0-1/test/without_rowid6.test
--- sqlite3-3.35.0/test/without_rowid6.test 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/test/without_rowid6.test 2021-04-04 17:23:22.000000000 +0000
@@ -64,7 +64,7 @@
do_execsql_test without_rowid6-210 {
EXPLAIN QUERY PLAN
SELECT a FROM t1 WHERE b>3 ORDER BY b;
-} {/SEARCH t1 USING PRIMARY KEY .b>../}
+} {/SEARCH TABLE t1 USING PRIMARY KEY .b>../}
do_execsql_test without_rowid6-220 {
PRAGMA index_list(t1);
} {/sqlite_autoindex_t1_2 1 pk/}
@@ -83,7 +83,7 @@
do_execsql_test without_rowid6-310 {
EXPLAIN QUERY PLAN
SELECT a FROM t1 WHERE b>3 ORDER BY b;
-} {/SEARCH t1 USING PRIMARY KEY .b>../}
+} {/SEARCH TABLE t1 USING PRIMARY KEY .b>../}
do_execsql_test without_rowid6-320 {
PRAGMA index_list(t1);
} {/sqlite_autoindex_t1_2 1 pk/}
@@ -101,7 +101,7 @@
do_execsql_test without_rowid6-410 {
EXPLAIN QUERY PLAN
SELECT a FROM t1 WHERE b>3 ORDER BY b;
-} {/SEARCH t1 USING PRIMARY KEY .b>../}
+} {/SEARCH TABLE t1 USING PRIMARY KEY .b>../}
do_execsql_test without_rowid6-420 {
PRAGMA index_list(t1);
} {/sqlite_autoindex_t1_2 1 pk/}
@@ -121,7 +121,7 @@
do_execsql_test without_rowid6-510 {
EXPLAIN QUERY PLAN
SELECT a FROM t1 WHERE b>3 ORDER BY b;
-} {/SEARCH t1 USING PRIMARY KEY .b>../}
+} {/SEARCH TABLE t1 USING PRIMARY KEY .b>../}
do_execsql_test without_rowid6-520 {
PRAGMA index_list(t1);
} {/sqlite_autoindex_t1_1 1 pk/}
diff -Nru sqlite3-3.35.0/tool/lemon.c sqlite3-3.35.0-1/tool/lemon.c
--- sqlite3-3.35.0/tool/lemon.c 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/tool/lemon.c 2021-04-04 17:23:22.000000000 +0000
@@ -2708,7 +2708,7 @@
** in order to control their assigned integer number. The number for
** each token is assigned when it is first seen. So by including
**
- ** %token ONE TWO THREE.
+ ** %token ONE TWO THREE
**
** early in the grammar file, that assigns small consecutive values
** to each of the tokens ONE TWO and THREE.
diff -Nru sqlite3-3.35.0/VERSION sqlite3-3.35.0-1/VERSION
--- sqlite3-3.35.0/VERSION 2021-04-03 14:56:48.000000000 +0000
+++ sqlite3-3.35.0-1/VERSION 2021-04-04 17:23:21.000000000 +0000
@@ -1 +1 @@
-3.36.0
+3.35.4