1
0
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:
drh
2022-05-13 15:31:30 +00:00
parent 67a99dbee8
commit d383557960
3 changed files with 373 additions and 6 deletions

View File

@ -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.

View File

@ -1 +1 @@
1ffea07ff98b894729c698b681cc7433df3bbfccd8a0529a706908602a636937
02b24863e6dc617c9260f79292a96b7c861d088268e77fd17204570515eb792c

366
test/joinE.test Normal file
View 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