]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
New test cases for outer joins. Case joinE-32 currently gets an incorrect
authordrh <>
Fri, 13 May 2022 15:31:30 +0000 (15:31 +0000)
committerdrh <>
Fri, 13 May 2022 15:31:30 +0000 (15:31 +0000)
answer.  See [forum:/forumpost/41cc3851d8|forum post 41cc3851d8] for the bug
report.

FossilOrigin-Name: 02b24863e6dc617c9260f79292a96b7c861d088268e77fd17204570515eb792c

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

index e78851efcbc57b2ea662ea3b0e5c70f848f50b84..738512ea3bd3a9f52d022ebf8c1444b54aff3b18 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Improved\snames\sfor\sflags\son\sthe\sExpr\sobject:\s\sEP_FromJoin\sbecames\nEP_OuterON\sand\sEP_InnerJoin\sbecomes\sEP_InnerON.
-D 2022-05-13T14:52:04.811
+C New\stest\scases\sfor\souter\sjoins.\s\sCase\sjoinE-32\scurrently\sgets\san\sincorrect\nanswer.\s\sSee\s[forum:/forumpost/41cc3851d8|forum\spost\s41cc3851d8]\sfor\sthe\sbug\nreport.
+D 2022-05-13T15:31:30.015
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1154,6 +1154,7 @@ F test/joinA.test 7eab225dc1c1ab258a5e62513a4ed7cabbd3db971d59d5d92f4fb6fa14c12f
 F test/joinB.test 1b2ba3fc8568b49411787fccbf540570c148e9b6a53a30f80691cb6268098ded
 F test/joinC.test 1f1a602c2127f55f136e2cbd3bf2d26546614bf8cffe5902ec1ac9c07f87f207
 F test/joinD.test 7f0f4dd1f2767330bf1fda5c9cc8a437015a54bcd2355036b4d04ddfc1519d76
+F test/joinE.test b610b61c6e7484d1d93d0544da2c9821ef55c55ca0c36f465db6ac6f8a236903
 F test/journal1.test c7b768041b7f494471531e17abc2f4f5ebf9e5096984f43ed17c4eb80ba34497
 F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
 F test/journal3.test 7c3cf23ffc77db06601c1fcfc9743de8441cb77db9d1aa931863d94f5ffa140e
@@ -1953,8 +1954,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 7a2ac303d1436a423a635db63d195097c88160ff46855194f6e630f9d3b3fa82
-R 76628c449717fbf73d51bf54cb4d3e31
+P 1ffea07ff98b894729c698b681cc7433df3bbfccd8a0529a706908602a636937
+R c7a9689e86e2884096bfe487c1ca7e7e
 U drh
-Z db742fa17a2891de768f2e234d496fc9
+Z 94eee899c46b87f17cfa9d895d400453
 # Remove this line to create a well-formed Fossil manifest.
index c5b99fbd4d9614f01f3000f6d415f9673d3b5d43..ef5c015141ac7e763239853b4ccc0418b8352a6a 100644 (file)
@@ -1 +1 @@
-1ffea07ff98b894729c698b681cc7433df3bbfccd8a0529a706908602a636937
\ No newline at end of file
+02b24863e6dc617c9260f79292a96b7c861d088268e77fd17204570515eb792c
\ No newline at end of file
diff --git a/test/joinE.test b/test/joinE.test
new file mode 100644 (file)
index 0000000..0b2bcbd
--- /dev/null
@@ -0,0 +1,366 @@
+# 2022-05-13
+#
+# 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 tests for JOINs that use Bloom filters.
+#
+# The test case output is (mostly) all generated by PostgreSQL 14.  This
+# test module was created as follows:
+#
+#   1.   Run a TCL script (included at the bottom of this file) that
+#        generates an input script for "psql" that will run man
+#        diverse tests on joins.
+#
+#   2.   Run the script from step (1) through psql and collect the
+#        output.
+#
+#   3.   Make a few minor global search-and-replace operations to convert
+#        the psql output into a form suitable for this test module.
+#
+#   4.   Add this header, and the script content at the footer.
+#
+# A few extra tests that were not generated from postgresql output are
+# added at the end.
+#
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+db nullvalue -
+db eval {
+  CREATE TABLE t1(a INT);
+  INSERT INTO t1 VALUES(1),(NULL);
+  CREATE TABLE t2(b INT);
+  INSERT INTO t2 VALUES(2),(NULL);
+}
+do_execsql_test joinE-1 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON true
+  ORDER BY coalesce(a,b,3);
+} {
+  1 2
+  1 -
+  - 2
+  - -
+}
+do_execsql_test joinE-2 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON true WHERE a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  - 2
+  - -
+}
+do_execsql_test joinE-3 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  - 2
+  - -
+}
+do_execsql_test joinE-4 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON true WHERE b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+  - -
+}
+do_execsql_test joinE-5 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+  - -
+}
+do_execsql_test joinE-6 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON true
+  ORDER BY coalesce(a,b,3);
+} {
+  1 2
+  1 -
+  - 2
+  - -
+}
+do_execsql_test joinE-7 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON true WHERE a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  - 2
+  - -
+}
+do_execsql_test joinE-8 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+  - 2
+  - -
+}
+do_execsql_test joinE-9 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON true WHERE b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+  - -
+}
+do_execsql_test joinE-10 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+  - -
+}
+do_execsql_test joinE-11 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON true
+  ORDER BY coalesce(a,b,3);
+} {
+  1 2
+  1 -
+  - 2
+  - -
+}
+do_execsql_test joinE-12 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON true WHERE a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  - 2
+  - -
+}
+do_execsql_test joinE-13 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  - 2
+  - -
+}
+do_execsql_test joinE-14 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON true WHERE b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+  - -
+}
+do_execsql_test joinE-15 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+  - 2
+  - -
+}
+do_execsql_test joinE-16 {
+  SELECT a, b
+  FROM t1 FULL JOIN t2 ON true
+  ORDER BY coalesce(a,b,3);
+} {
+  1 2
+  1 -
+  - 2
+  - -
+}
+do_execsql_test joinE-17 {
+  SELECT a, b
+  FROM t1 FULL JOIN t2 ON true WHERE a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  - 2
+  - -
+}
+
+# PG-14 is unable to perform this join.  It says:  FULL JOIN is only
+# supported with merge-joinable or hash-joinable join conditions
+#   
+# do_execsql_test joinE-18 {
+#  SELECT a, b
+#  FROM t1 FULL JOIN t2 ON a IS NULL
+#  ORDER BY coalesce(a,b,3);
+# } {
+# }
+
+do_execsql_test joinE-19 {
+  SELECT a, b
+  FROM t1 FULL JOIN t2 ON true WHERE b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+  - -
+}
+
+# PG-14 is unable to perform this join.  It says:  FULL JOIN is only
+# supported with merge-joinable or hash-joinable join conditions
+#   
+# do_execsql_test joinE-20 {
+#   SELECT a, b
+#   FROM t1 FULL JOIN t2 ON b IS NULL
+#   ORDER BY coalesce(a,b,3);
+# } {
+# }
+
+db eval {
+  DELETE FROM t1;
+  INSERT INTO t1 VALUES(1);
+  DELETE FROM t2;
+  INSERT INTO t2 VALUES(NULL);
+}
+
+do_execsql_test joinE-21 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON true
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-22 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON true WHERE a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+}
+do_execsql_test joinE-23 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+}
+do_execsql_test joinE-24 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON true WHERE b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-25 {
+  SELECT a, b
+  FROM t1 INNER JOIN t2 ON b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-26 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON true
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-27 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON true WHERE a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+}
+do_execsql_test joinE-28 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-29 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON true WHERE b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-30 {
+  SELECT a, b
+  FROM t1 LEFT JOIN t2 ON b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-31 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON true
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+
+do_execsql_test joinE-32 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON true WHERE a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+}
+
+do_execsql_test joinE-33 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  - -
+}
+do_execsql_test joinE-34 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON true WHERE b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-35 {
+  SELECT a, b
+  FROM t1 RIGHT JOIN t2 ON b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-36 {
+  SELECT a, b
+  FROM t1 FULL JOIN t2 ON true
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+do_execsql_test joinE-37 {
+  SELECT a, b
+  FROM t1 FULL JOIN t2 ON true WHERE a IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+}
+
+# PG-14 is unable
+#
+# do_execsql_test joinE-38 {
+#   SELECT a, b
+#   FROM t1 FULL JOIN t2 ON a IS NULL
+#   ORDER BY coalesce(a,b,3);
+# } {
+# }
+
+do_execsql_test joinE-39 {
+  SELECT a, b
+  FROM t1 FULL JOIN t2 ON true WHERE b IS NULL
+  ORDER BY coalesce(a,b,3);
+} {
+  1 -
+}
+
+# PG-14 is unable
+# do_execsql_test joinE-40 {
+#   SELECT a, b
+#   FROM t1 FULL JOIN t2 ON b IS NULL
+#   ORDER BY coalesce(a,b,3);
+# } {
+# }
+
+finish_test