]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
New test case for ticket [ec32177c99ccac2b1] that works without the STAT4.
authordrh <drh@noemail.net>
Sat, 27 Jan 2018 13:55:56 +0000 (13:55 +0000)
committerdrh <drh@noemail.net>
Sat, 27 Jan 2018 13:55:56 +0000 (13:55 +0000)
FossilOrigin-Name: 5259d4847f2b73f26b2385f9d8cff8fe0cabc54b4deab8477c87c8d1bb5535b1

manifest
manifest.uuid
test/whereF.test

index 374e2479eb2d3188c309dfc0d0bf9bb0059ee46a..b88aeece1da06f8cdebfaf896bcb4f92f8f8f9b3 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Proposed\sfix\sfor\sthe\squery\splanner\sproblem\sof\sticket\n[ec32177c99ccac2b1].
-D 2018-01-27T05:40:10.409
+C New\stest\scase\sfor\sticket\s[ec32177c99ccac2b1]\sthat\sworks\swithout\sthe\sSTAT4.
+D 2018-01-27T13:55:56.815
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 7a3f714b4fcf793108042b7b0a5c720b0b310ec84314d61ba7f3f49f27e550ea
@@ -1574,7 +1574,7 @@ F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5
 F test/whereC.test cae295158703cb3fc23bf1a108a9ab730efff0f6
 F test/whereD.test 711d4df58d6d4fb9b3f5ce040b818564198be002
 F test/whereE.test b3a055eef928c992b0a33198a7b8dc10eea5ad2f
-F test/whereF.test 15552693e5965e096d58a325216bfcf102b6e2b38f4f5a0d64a728c2f3826714
+F test/whereF.test 3d9412b1199d3e2bed34fcb76b4c48d0bf4df95d27e3f8dd27b6f8b4716d0d89
 F test/whereG.test dde4c52a97385a55be6a7cd46be8373f0cf35501
 F test/whereH.test e4b07f7a3c2f5d31195cd33710054c78667573b2
 F test/whereI.test eab5b226bbc344ac70d7dc09b963a064860ae6d7
@@ -1702,7 +1702,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P bed610d99b5322ee209b06966c0086e8c55f8a82be8d7693cfdeb4d728679721
-R 5bfee097e7e4c4077c4171c76898db44
+P eef8cbef3c49e6331301a8f3f8a5fd12090b1e99e68487c2d405e53ef771f688
+R a57e94d6d2f924366bc9079a11d7258c
 U drh
-Z 3dd05a091b8a00a96f3fbc2c2cb36a31
+Z 5c67b72d2f152607d54502c89af32425
index 00da401ea7caa7c67b3fff6bf0358c296b2b5ed5..b2d9772040b24a1accd5063680017541814deb62 100644 (file)
@@ -1 +1 @@
-eef8cbef3c49e6331301a8f3f8a5fd12090b1e99e68487c2d405e53ef771f688
\ No newline at end of file
+5259d4847f2b73f26b2385f9d8cff8fe0cabc54b4deab8477c87c8d1bb5535b1
\ No newline at end of file
index e5028969a18690db2c57685e72f30c5ab5c964aa..121cc3cf22f7a1a7ca9669028f62c2714cd5d9de 100644 (file)
@@ -280,5 +280,33 @@ do_execsql_test 7.2 {
     FROM t1;
 } {2}
 
+# The fix for ticket ec32177c99ccac2b180fd3ea2083 only makes a difference
+# in the output when there is a TERM_VNULL entry in the WhereClause array.
+# And TERM_VNULL entries are only generated when compiling with 
+# SQLITE_ENABLE_STAT4.  Nevertheless, it is correct that TERM_VIRTUAL terms
+# should not participate in the factoring optimization.  In all cases other
+# than TERM_VNULL, participation is harmless, but it does consume a few
+# extra CPU cycles.
+#
+# The following test verifies that the TERM_VIRTUAL terms resulting from
+# a GLOB operator do not appear anywhere in the generated code.  This
+# confirms that the problem is fixed, even on builds that omit STAT4.
+#
+do_execsql_test 7.3 {
+  DROP TABLE IF EXISTS t1;
+  DROP TABLE IF EXISTS t2;
+  CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT);
+  INSERT INTO t1(a,b) VALUES(1,'abcxyz');
+  CREATE TABLE t2(aa INTEGER PRIMARY KEY, bb TEXT);
+  INSERT INTO t2(aa,bb) VALUES(1,'abc'),(2,'wxyz'),(3,'xyz');
+  CREATE INDEX t2bb ON t2(bb);
+  EXPLAIN SELECT (
+    SELECT COUNT(*) FROM t2
+     WHERE ( t1.b GLOB 'a*z' AND t2.bb='xyz' )
+        OR ( t2.bb = t1.b )
+        OR ( t2.aa = t1.a )
+    )
+    FROM t1;
+} {~/ (Lt|Ge) /}
 
 finish_test