mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-01 06:27:03 +03:00
New test cases for outer joins. Case joinE-32 currently gets an incorrect
answer. See [forum:/forumpost/41cc3851d8|forum post 41cc3851d8] for the bug report. FossilOrigin-Name: 02b24863e6dc617c9260f79292a96b7c861d088268e77fd17204570515eb792c
This commit is contained in:
11
manifest
11
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.
|
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-13T14:52:04.811
|
D 2022-05-13T15:31:30.015
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@ -1154,6 +1154,7 @@ F test/joinA.test 7eab225dc1c1ab258a5e62513a4ed7cabbd3db971d59d5d92f4fb6fa14c12f
|
|||||||
F test/joinB.test 1b2ba3fc8568b49411787fccbf540570c148e9b6a53a30f80691cb6268098ded
|
F test/joinB.test 1b2ba3fc8568b49411787fccbf540570c148e9b6a53a30f80691cb6268098ded
|
||||||
F test/joinC.test 1f1a602c2127f55f136e2cbd3bf2d26546614bf8cffe5902ec1ac9c07f87f207
|
F test/joinC.test 1f1a602c2127f55f136e2cbd3bf2d26546614bf8cffe5902ec1ac9c07f87f207
|
||||||
F test/joinD.test 7f0f4dd1f2767330bf1fda5c9cc8a437015a54bcd2355036b4d04ddfc1519d76
|
F test/joinD.test 7f0f4dd1f2767330bf1fda5c9cc8a437015a54bcd2355036b4d04ddfc1519d76
|
||||||
|
F test/joinE.test b610b61c6e7484d1d93d0544da2c9821ef55c55ca0c36f465db6ac6f8a236903
|
||||||
F test/journal1.test c7b768041b7f494471531e17abc2f4f5ebf9e5096984f43ed17c4eb80ba34497
|
F test/journal1.test c7b768041b7f494471531e17abc2f4f5ebf9e5096984f43ed17c4eb80ba34497
|
||||||
F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
|
F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
|
||||||
F test/journal3.test 7c3cf23ffc77db06601c1fcfc9743de8441cb77db9d1aa931863d94f5ffa140e
|
F test/journal3.test 7c3cf23ffc77db06601c1fcfc9743de8441cb77db9d1aa931863d94f5ffa140e
|
||||||
@ -1953,8 +1954,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 7a2ac303d1436a423a635db63d195097c88160ff46855194f6e630f9d3b3fa82
|
P 1ffea07ff98b894729c698b681cc7433df3bbfccd8a0529a706908602a636937
|
||||||
R 76628c449717fbf73d51bf54cb4d3e31
|
R c7a9689e86e2884096bfe487c1ca7e7e
|
||||||
U drh
|
U drh
|
||||||
Z db742fa17a2891de768f2e234d496fc9
|
Z 94eee899c46b87f17cfa9d895d400453
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
1ffea07ff98b894729c698b681cc7433df3bbfccd8a0529a706908602a636937
|
02b24863e6dc617c9260f79292a96b7c861d088268e77fd17204570515eb792c
|
366
test/joinE.test
Normal file
366
test/joinE.test
Normal file
@ -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
|
Reference in New Issue
Block a user