diff options
Diffstat (limited to 'dev-db/sqlite/files')
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.41.2-perf-regression.patch | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/dev-db/sqlite/files/sqlite-3.41.2-perf-regression.patch b/dev-db/sqlite/files/sqlite-3.41.2-perf-regression.patch deleted file mode 100644 index 0bf5c41513af..000000000000 --- a/dev-db/sqlite/files/sqlite-3.41.2-perf-regression.patch +++ /dev/null @@ -1,101 +0,0 @@ -https://sqlite.org/forum/forumpost/3a180ba0d4 and https://sqlite.org/forum/forumpost/f9346b11a6 -https://sqlite.org/src/info/aa6bd6dff751223e -(-> https://sqlite.org/src/vpatch?from=71215599cd8ebb97&to=aa6bd6dff751223e) - ---- a/src/select.c -+++ b/src/select.c -@@ -4236,12 +4236,11 @@ - ** (17f) the subquery must not be the RHS of a LEFT JOIN. - ** (17g) either the subquery is the first element of the outer - ** query or there are no RIGHT or FULL JOINs in any arm - ** of the subquery. (This is a duplicate of condition (27b).) - ** (17h) The corresponding result set expressions in all arms of the --** compound must have the same affinity. (See restriction (9) --** on the push-down optimization.) -+** compound must have the same affinity. - ** - ** The parent and sub-query may contain WHERE clauses. Subject to - ** rules (11), (13) and (14), they may also contain ORDER BY, - ** LIMIT and OFFSET clauses. The subquery cannot use any compound - ** operator other than UNION ALL because all the other compound -@@ -5105,14 +5104,10 @@ - ** - ** (8) If the subquery is a compound that uses UNION, INTERSECT, - ** or EXCEPT, then all of the result set columns for all arms of - ** the compound must use the BINARY collating sequence. - ** --** (9) If the subquery is a compound, then all arms of the compound must --** have the same affinity. (This is the same as restriction (17h) --** for query flattening.) --** - ** - ** Return 0 if no changes are made and non-zero if one or more WHERE clause - ** terms are duplicated into the subquery. - */ - static int pushDownWhereTerms( -@@ -5139,13 +5134,10 @@ - } - #ifndef SQLITE_OMIT_WINDOWFUNC - if( pSel->pWin ) return 0; /* restriction (6b) */ - #endif - } -- if( compoundHasDifferentAffinities(pSubq) ){ -- return 0; /* restriction (9) */ -- } - if( notUnionAll ){ - /* If any of the compound arms are connected using UNION, INTERSECT, - ** or EXCEPT, then we must ensure that none of the columns use a - ** non-BINARY collating sequence. */ - for(pSel=pSubq; pSel; pSel=pSel->pPrior){ - ---- a/test/pushdown.test -+++ b/test/pushdown.test -@@ -120,7 +120,47 @@ - SELECT v1.a, v1.b, t0.c0 AS cd FROM t0 LEFT JOIN v0 ON v0.c0!=0, v1 - ) WHERE a=2 AND b=0 AND cd=0; - } { - 2 0 0 - } -- -+ -+# 2023-02-22 https://sqlite.org/forum/forumpost/bcc4375032 -+# Performance regression caused by check-in [1ad41840c5e0fa70] from 2022-11-25. -+# That check-in added a new restriction on push-down. The new restriction is -+# no longer necessary after check-in [27655c9353620aa5] from 2022-12-14. -+# -+do_execsql_test 3.5 { -+ DROP TABLE IF EXISTS t1; -+ CREATE TABLE t1(a INT, b INT, c TEXT, PRIMARY KEY(a,b)) WITHOUT ROWID; -+ INSERT INTO t1(a,b,c) VALUES -+ (1,100,'abc'), -+ (2,200,'def'), -+ (3,300,'abc'); -+ DROP TABLE IF EXISTS t2; -+ CREATE TABLE t2(a INT, b INT, c TEXT, PRIMARY KEY(a,b)) WITHOUT ROWID; -+ INSERT INTO t2(a,b,c) VALUES -+ (1,110,'efg'), -+ (2,200,'hij'), -+ (3,330,'klm'); -+ CREATE VIEW v3 AS -+ SELECT a, b, c FROM t1 -+ UNION ALL -+ SELECT a, b, 'xyz' FROM t2; -+ SELECT * FROM v3 WHERE a=2 AND b=200; -+} {2 200 def 2 200 xyz} -+do_eqp_test 3.6 { -+ SELECT * FROM v3 WHERE a=2 AND b=200; -+} { -+ QUERY PLAN -+ |--CO-ROUTINE v3 -+ | `--COMPOUND QUERY -+ | |--LEFT-MOST SUBQUERY -+ | | `--SEARCH t1 USING PRIMARY KEY (a=? AND b=?) -+ | `--UNION ALL -+ | `--SEARCH t2 USING PRIMARY KEY (a=? AND b=?) -+ `--SCAN v3 -+} -+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+# We want both arms of the compound subquery to use the -+# primary key. -+ - finish_test |