sqlite/test/joinH.test

73 lines
1.8 KiB
Plaintext
Raw Normal View History

# 2022 May 17
#
# 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.
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix joinH
do_execsql_test 1.0 {
CREATE TABLE t1(a INT);
CREATE TABLE t2(b INT);
INSERT INTO t2(b) VALUES(NULL);
}
db nullvalue NULL
do_execsql_test 1.1 {
SELECT DISTINCT a FROM t1 FULL JOIN t2 ON true WHERE (b ISNULL);
} {NULL}
do_execsql_test 1.2 {
SELECT a FROM t1 FULL JOIN t2 ON true;
} {NULL}
do_execsql_test 1.3 {
SELECT a FROM t1 FULL JOIN t2 ON true WHERE (b ISNULL);
} {NULL}
do_execsql_test 1.4 {
SELECT DISTINCT a FROM t1 FULL JOIN t2 ON true;
} {NULL}
#-----------------------------------------------------------
reset_db
do_execsql_test 2.0 {
CREATE TABLE r3(x);
CREATE TABLE r4(y INTEGER PRIMARY KEY);
INSERT INTO r4 VALUES(55);
}
do_execsql_test 2.1 {
SELECT 'value!' FROM r3 FULL JOIN r4 ON (y=x);
} {value!}
do_execsql_test 2.2 {
SELECT 'value!' FROM r3 FULL JOIN r4 ON (y=x) WHERE +y=55;
} {value!}
#-----------------------------------------------------------
reset_db
do_execsql_test 3.1 {
CREATE TABLE t0 (c0);
CREATE TABLE t1 (c0);
CREATE TABLE t2 (c0 , c1 , c2 , UNIQUE (c0), UNIQUE (c2 DESC));
INSERT INTO t2 VALUES ('x', 'y', 'z');
ANALYZE;
CREATE VIEW v0(c0) AS SELECT FALSE;
}
do_catchsql_test 3.2 {
SELECT * FROM t0 LEFT OUTER JOIN t1 ON v0.c0 INNER JOIN v0 INNER JOIN t2 ON (t2.c2 NOT NULL);
} {1 {ON clause references tables to its right}}
finish_test