xref: /illumos-gate/usr/src/lib/libsqlite/test/join4_28.test (revision 1da57d551424de5a9d469760be7c4b4d4f10a755)
1*1da57d55SToomas Soome#
2c5c4113dSnw141292# 2002 May 24
3c5c4113dSnw141292#
4c5c4113dSnw141292# The author disclaims copyright to this source code.  In place of
5c5c4113dSnw141292# a legal notice, here is a blessing:
6c5c4113dSnw141292#
7c5c4113dSnw141292#    May you do good and not evil.
8c5c4113dSnw141292#    May you find forgiveness for yourself and forgive others.
9c5c4113dSnw141292#    May you share freely, never taking more than you give.
10c5c4113dSnw141292#
11c5c4113dSnw141292#***********************************************************************
12c5c4113dSnw141292# This file implements regression tests for SQLite library.
13c5c4113dSnw141292#
14c5c4113dSnw141292# This file implements tests for left outer joins containing WHERE
15c5c4113dSnw141292# clauses that restrict the scope of the left term of the join.
16c5c4113dSnw141292#
17c5c4113dSnw141292# $Id: join4_28.test,v 1.1.2.1 2004/07/22 16:08:39 drh Exp $
18c5c4113dSnw141292
19c5c4113dSnw141292set testdir [file dirname $argv0]
20c5c4113dSnw141292source $testdir/tester.tcl
21c5c4113dSnw141292
22c5c4113dSnw141292do_test join4-1.1 {
23c5c4113dSnw141292  execsql {
24c5c4113dSnw141292    create temp table t1(a integer, b varchar(10));
25c5c4113dSnw141292    insert into t1 values(1,'one');
26c5c4113dSnw141292    insert into t1 values(2,'two');
27c5c4113dSnw141292    insert into t1 values(3,'three');
28c5c4113dSnw141292    insert into t1 values(4,'four');
29c5c4113dSnw141292
30c5c4113dSnw141292    create temp table t2(x integer, y varchar(10), z varchar(10));
31c5c4113dSnw141292    insert into t2 values(2,'niban','ok');
32c5c4113dSnw141292    insert into t2 values(4,'yonban','err');
33c5c4113dSnw141292  }
34c5c4113dSnw141292  execsql {
35c5c4113dSnw141292    select * from t1 left outer join t2 on t1.a=t2.x where t2.z='ok'
36c5c4113dSnw141292  }
37c5c4113dSnw141292} {2 two 2 niban ok}
38c5c4113dSnw141292do_test join4-1.2 {
39c5c4113dSnw141292  execsql {
40c5c4113dSnw141292    select * from t1 left outer join t2 on t1.a=t2.x and t2.z='ok'
41c5c4113dSnw141292  }
42c5c4113dSnw141292} {1 one {} {} {} 2 two 2 niban ok 3 three {} {} {} 4 four {} {} {}}
43c5c4113dSnw141292do_test join4-1.3 {
44c5c4113dSnw141292  execsql {
45c5c4113dSnw141292    create index i2 on t2(z);
46c5c4113dSnw141292  }
47c5c4113dSnw141292  execsql {
48c5c4113dSnw141292    select * from t1 left outer join t2 on t1.a=t2.x where t2.z='ok'
49c5c4113dSnw141292  }
50c5c4113dSnw141292} {2 two 2 niban ok}
51c5c4113dSnw141292do_test join4-1.4 {
52c5c4113dSnw141292  execsql {
53c5c4113dSnw141292    select * from t1 left outer join t2 on t1.a=t2.x and t2.z='ok'
54c5c4113dSnw141292  }
55c5c4113dSnw141292} {1 one {} {} {} 2 two 2 niban ok 3 three {} {} {} 4 four {} {} {}}
56c5c4113dSnw141292do_test join4-1.5 {
57c5c4113dSnw141292  execsql {
58c5c4113dSnw141292    select * from t1 left outer join t2 on t1.a=t2.x where t2.z>='ok'
59c5c4113dSnw141292  }
60c5c4113dSnw141292} {2 two 2 niban ok}
61c5c4113dSnw141292do_test join4-1.4 {
62c5c4113dSnw141292  execsql {
63c5c4113dSnw141292    select * from t1 left outer join t2 on t1.a=t2.x and t2.z>='ok'
64c5c4113dSnw141292  }
65c5c4113dSnw141292} {1 one {} {} {} 2 two 2 niban ok 3 three {} {} {} 4 four {} {} {}}
66c5c4113dSnw141292do_test join4-1.6 {
67c5c4113dSnw141292  execsql {
68c5c4113dSnw141292    select * from t1 left outer join t2 on t1.a=t2.x where t2.z IN ('ok')
69c5c4113dSnw141292  }
70c5c4113dSnw141292} {2 two 2 niban ok}
71c5c4113dSnw141292do_test join4-1.7 {
72c5c4113dSnw141292  execsql {
73c5c4113dSnw141292    select * from t1 left outer join t2 on t1.a=t2.x and t2.z IN ('ok')
74c5c4113dSnw141292  }
75c5c4113dSnw141292} {1 one {} {} {} 2 two 2 niban ok 3 three {} {} {} 4 four {} {} {}}
76c5c4113dSnw141292
77c5c4113dSnw141292
78c5c4113dSnw141292finish_test
79