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