]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add test cases to ensure correct operation of joins with a virtual table
authordrh <drh@noemail.net>
Fri, 25 Apr 2014 17:37:16 +0000 (17:37 +0000)
committerdrh <drh@noemail.net>
Fri, 25 Apr 2014 17:37:16 +0000 (17:37 +0000)
that include DISTINCT and ORDER BY clauses.  Verification for ticket
[388d01d4bb8f9].

FossilOrigin-Name: 5ada136f43ce744ae8c349eff39838eb44611b6e

manifest
manifest.uuid
test/orderby7.test [new file with mode: 0644]

index 459765f3d0b8503dfa5f51c14cdc8c8e09375c3d..4bb29e97877e72c541d031c3125fd682bd616611 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Make\ssure\sORDER\sBY\sclauses\son\sjoins\sthat\sinvolve\svirtual\stables\sand\sthat\nhave\sa\sDISTINCT\sclause\swork\scorrectly.\s\sThis\sis\sa\scandidate\sfix\sfor\nticket\s[388d01d4bb8f9].\s\sTest\scases\sfor\sthat\sticket\swill\sbe\schecked\sin\nseparately.
-D 2014-04-25T14:42:17.085
+C Add\stest\scases\sto\sensure\scorrect\soperation\sof\sjoins\swith\sa\svirtual\stable\nthat\sinclude\sDISTINCT\sand\sORDER\sBY\sclauses.\s\sVerification\sfor\sticket\n[388d01d4bb8f9].
+D 2014-04-25T17:37:16.863
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -724,6 +724,7 @@ F test/orderby3.test 8619d06a3debdcd80a27c0fdea5c40b468854b99
 F test/orderby4.test 4d39bfbaaa3ae64d026ca2ff166353d2edca4ba4
 F test/orderby5.test 2490183fef54417209d1df253633a605d46bd350
 F test/orderby6.test 8b38138ab0972588240b3fca0985d2e400432859
+F test/orderby7.test 3d1383d52ade5b9eb3a173b3147fdd296f0202da
 F test/oserror.test 50417780d0e0d7cd23cf12a8277bb44024765df3
 F test/pager1.test 1acbdb14c5952a72dd43129cabdbf69aaa3ed1fa
 F test/pager2.test 67b8f40ae98112bcdba1f2b2d03ea83266418c71
@@ -1161,7 +1162,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P 4e88042f9d3e678914da96c0eb276f3d8fca5a94
-R 1db9e5d4fb5773f03fcd55df7d35ffca
+P 171138122690faafde0dcab0201b90bdf02d3637
+R a91060e3dc13463e0dda2e961246be75
 U drh
-Z 5fd090bfe2e284c7964226b5abb1772a
+Z 5a55daa8fd800f752600937698ffd8a1
index 62175a4a6f1d16498489d55b6c668d9f9b253c29..f56246ea098c0380c02700f987c994f094509e7b 100644 (file)
@@ -1 +1 @@
-171138122690faafde0dcab0201b90bdf02d3637
\ No newline at end of file
+5ada136f43ce744ae8c349eff39838eb44611b6e
\ No newline at end of file
diff --git a/test/orderby7.test b/test/orderby7.test
new file mode 100644 (file)
index 0000000..8c5fc9a
--- /dev/null
@@ -0,0 +1,106 @@
+# 2014-04-25
+#
+# 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.  The
+# focus of this file is testing ORDER BY optimizations on joins
+# that involve virtual tables.
+#
+
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+set ::testprefix orderby7
+
+ifcapable !fts3 {
+  finish_test
+  return
+}
+
+do_execsql_test 1.0 {
+  CREATE VIRTUAL TABLE fts USING fts3(content TEXT);
+  INSERT INTO fts(rowid,content)
+     VALUES(1,'this is a test of the fts3 virtual'),
+           (2,'table used as part of a join together'),
+           (3,'with the DISTINCT keyword.  There was'),
+           (4,'a bug at one time (2013-06 through 2014-04)'),
+           (5,'that prevented this from working correctly.'),
+           (11,'a row that occurs twice'),
+           (12,'a row that occurs twice');
+  CREATE TABLE t1(x TEXT PRIMARY KEY, y);
+  INSERT OR IGNORE INTO t1 SELECT content, rowid+100 FROM fts;
+} {}
+do_execsql_test 1.1 {
+  SELECT DISTINCT fts.rowid, t1.y
+    FROM fts, t1
+   WHERE fts MATCH 'that twice'
+     AND content=x
+   ORDER BY y;
+} {11 111 12 111}
+do_execsql_test 1.2 {
+  SELECT DISTINCT fts.rowid, t1.x
+    FROM fts, t1
+   WHERE fts MATCH 'that twice'
+     AND content=x
+   ORDER BY 1;
+} {11 {a row that occurs twice} 12 {a row that occurs twice}}
+do_execsql_test 1.3 {
+  SELECT DISTINCT t1.x
+    FROM fts, t1
+   WHERE fts MATCH 'that twice'
+     AND content=x
+   ORDER BY 1;
+} {{a row that occurs twice}}
+do_execsql_test 1.4 {
+  SELECT t1.x
+    FROM fts, t1
+   WHERE fts MATCH 'that twice'
+     AND content=x
+   ORDER BY 1;
+} {{a row that occurs twice} {a row that occurs twice}}
+do_execsql_test 1.5 {
+  SELECT DISTINCT t1.x
+    FROM fts, t1
+   WHERE fts MATCH 'that twice'
+     AND content=x;
+} {{a row that occurs twice}}
+do_execsql_test 1.6 {
+  SELECT t1.x
+    FROM fts, t1
+   WHERE fts MATCH 'that twice'
+     AND content=x;
+} {{a row that occurs twice} {a row that occurs twice}}
+
+do_execsql_test 2.1 {
+  SELECT DISTINCT t1.x
+    FROM fts, t1
+   WHERE fts.rowid=11
+     AND content=x
+   ORDER BY fts.rowid;
+} {{a row that occurs twice}}
+do_execsql_test 2.2 {
+  SELECT DISTINCT t1.*
+    FROM fts, t1
+   WHERE fts.rowid=11
+     AND content=x
+   ORDER BY fts.rowid;
+} {{a row that occurs twice} 111}
+do_execsql_test 2.3 {
+  SELECT DISTINCT t1.*
+    FROM fts, t1
+   WHERE fts.rowid=11
+     AND content=x
+   ORDER BY t1.y
+} {{a row that occurs twice} 111}
+
+
+
+
+finish_test