xref: /sqlite-3.40.0/test/join4.test (revision 53c0f748)
12ffb1185Sdrh# 2002 May 24
22ffb1185Sdrh#
32ffb1185Sdrh# The author disclaims copyright to this source code.  In place of
42ffb1185Sdrh# a legal notice, here is a blessing:
52ffb1185Sdrh#
62ffb1185Sdrh#    May you do good and not evil.
72ffb1185Sdrh#    May you find forgiveness for yourself and forgive others.
82ffb1185Sdrh#    May you share freely, never taking more than you give.
92ffb1185Sdrh#
102ffb1185Sdrh#***********************************************************************
112ffb1185Sdrh# This file implements regression tests for SQLite library.
122ffb1185Sdrh#
132ffb1185Sdrh# This file implements tests for left outer joins containing WHERE
142ffb1185Sdrh# clauses that restrict the scope of the left term of the join.
152ffb1185Sdrh#
16*53c0f748Sdanielk1977# $Id: join4.test,v 1.4 2005/03/29 03:11:00 danielk1977 Exp $
172ffb1185Sdrh
182ffb1185Sdrhset testdir [file dirname $argv0]
192ffb1185Sdrhsource $testdir/tester.tcl
202ffb1185Sdrh
21*53c0f748Sdanielk1977ifcapable tempdb {
222ffb1185Sdrh  do_test join4-1.1 {
232ffb1185Sdrh    execsql {
242ffb1185Sdrh      create temp table t1(a integer, b varchar(10));
252ffb1185Sdrh      insert into t1 values(1,'one');
262ffb1185Sdrh      insert into t1 values(2,'two');
272ffb1185Sdrh      insert into t1 values(3,'three');
282ffb1185Sdrh      insert into t1 values(4,'four');
292ffb1185Sdrh
302ffb1185Sdrh      create temp table t2(x integer, y varchar(10), z varchar(10));
312ffb1185Sdrh      insert into t2 values(2,'niban','ok');
322ffb1185Sdrh      insert into t2 values(4,'yonban','err');
332ffb1185Sdrh    }
342ffb1185Sdrh    execsql {
352ffb1185Sdrh      select * from t1 left outer join t2 on t1.a=t2.x where t2.z='ok'
362ffb1185Sdrh    }
372ffb1185Sdrh  } {2 two 2 niban ok}
38*53c0f748Sdanielk1977} else {
39*53c0f748Sdanielk1977  do_test join4-1.1 {
40*53c0f748Sdanielk1977    execsql {
41*53c0f748Sdanielk1977      create table t1(a integer, b varchar(10));
42*53c0f748Sdanielk1977      insert into t1 values(1,'one');
43*53c0f748Sdanielk1977      insert into t1 values(2,'two');
44*53c0f748Sdanielk1977      insert into t1 values(3,'three');
45*53c0f748Sdanielk1977      insert into t1 values(4,'four');
46*53c0f748Sdanielk1977
47*53c0f748Sdanielk1977      create table t2(x integer, y varchar(10), z varchar(10));
48*53c0f748Sdanielk1977      insert into t2 values(2,'niban','ok');
49*53c0f748Sdanielk1977      insert into t2 values(4,'yonban','err');
50*53c0f748Sdanielk1977    }
51*53c0f748Sdanielk1977    execsql {
52*53c0f748Sdanielk1977      select * from t1 left outer join t2 on t1.a=t2.x where t2.z='ok'
53*53c0f748Sdanielk1977    }
54*53c0f748Sdanielk1977  } {2 two 2 niban ok}
55*53c0f748Sdanielk1977}
562ffb1185Sdrhdo_test join4-1.2 {
572ffb1185Sdrh  execsql {
582ffb1185Sdrh    select * from t1 left outer join t2 on t1.a=t2.x and t2.z='ok'
592ffb1185Sdrh  }
602ffb1185Sdrh} {1 one {} {} {} 2 two 2 niban ok 3 three {} {} {} 4 four {} {} {}}
612ffb1185Sdrhdo_test join4-1.3 {
622ffb1185Sdrh  execsql {
632ffb1185Sdrh    create index i2 on t2(z);
642ffb1185Sdrh  }
652ffb1185Sdrh  execsql {
662ffb1185Sdrh    select * from t1 left outer join t2 on t1.a=t2.x where t2.z='ok'
672ffb1185Sdrh  }
682ffb1185Sdrh} {2 two 2 niban ok}
692ffb1185Sdrhdo_test join4-1.4 {
702ffb1185Sdrh  execsql {
712ffb1185Sdrh    select * from t1 left outer join t2 on t1.a=t2.x and t2.z='ok'
722ffb1185Sdrh  }
732ffb1185Sdrh} {1 one {} {} {} 2 two 2 niban ok 3 three {} {} {} 4 four {} {} {}}
742ffb1185Sdrhdo_test join4-1.5 {
752ffb1185Sdrh  execsql {
762ffb1185Sdrh    select * from t1 left outer join t2 on t1.a=t2.x where t2.z>='ok'
772ffb1185Sdrh  }
782ffb1185Sdrh} {2 two 2 niban ok}
792ffb1185Sdrhdo_test join4-1.4 {
802ffb1185Sdrh  execsql {
812ffb1185Sdrh    select * from t1 left outer join t2 on t1.a=t2.x and t2.z>='ok'
822ffb1185Sdrh  }
832ffb1185Sdrh} {1 one {} {} {} 2 two 2 niban ok 3 three {} {} {} 4 four {} {} {}}
843e8c37e7Sdanielk1977ifcapable subquery {
852ffb1185Sdrh  do_test join4-1.6 {
862ffb1185Sdrh    execsql {
872ffb1185Sdrh      select * from t1 left outer join t2 on t1.a=t2.x where t2.z IN ('ok')
882ffb1185Sdrh    }
892ffb1185Sdrh  } {2 two 2 niban ok}
902ffb1185Sdrh  do_test join4-1.7 {
912ffb1185Sdrh    execsql {
922ffb1185Sdrh      select * from t1 left outer join t2 on t1.a=t2.x and t2.z IN ('ok')
932ffb1185Sdrh    }
942ffb1185Sdrh  } {1 one {} {} {} 2 two 2 niban ok 3 three {} {} {} 4 four {} {} {}}
953e8c37e7Sdanielk1977}
962ffb1185Sdrh
972ffb1185Sdrh
982ffb1185Sdrhfinish_test
99