diff options
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/join3.test')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/test/join3.test | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/join3.test b/libraries/sqlite/unix/sqlite-3.5.1/test/join3.test new file mode 100644 index 0000000..f1c273d --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/join3.test | |||
@@ -0,0 +1,62 @@ | |||
1 | # 2002 May 24 | ||
2 | # | ||
3 | # The author disclaims copyright to this source code. In place of | ||
4 | # a legal notice, here is a blessing: | ||
5 | # | ||
6 | # May you do good and not evil. | ||
7 | # May you find forgiveness for yourself and forgive others. | ||
8 | # May you share freely, never taking more than you give. | ||
9 | # | ||
10 | #*********************************************************************** | ||
11 | # This file implements regression tests for SQLite library. | ||
12 | # | ||
13 | # This file implements tests for joins, including outer joins, where | ||
14 | # there are a large number of tables involved in the join. | ||
15 | # | ||
16 | # $Id: join3.test,v 1.4 2005/01/19 23:24:51 drh Exp $ | ||
17 | |||
18 | set testdir [file dirname $argv0] | ||
19 | source $testdir/tester.tcl | ||
20 | |||
21 | # An unrestricted join | ||
22 | # | ||
23 | catch {unset ::result} | ||
24 | set result {} | ||
25 | for {set N 1} {$N<=$bitmask_size} {incr N} { | ||
26 | lappend result $N | ||
27 | do_test join3-1.$N { | ||
28 | execsql "CREATE TABLE t${N}(x);" | ||
29 | execsql "INSERT INTO t$N VALUES($N)" | ||
30 | set sql "SELECT * FROM t1" | ||
31 | for {set i 2} {$i<=$N} {incr i} {append sql ", t$i"} | ||
32 | execsql $sql | ||
33 | } $result | ||
34 | } | ||
35 | |||
36 | # Joins with a comparison | ||
37 | # | ||
38 | set result {} | ||
39 | for {set N 1} {$N<=$bitmask_size} {incr N} { | ||
40 | lappend result $N | ||
41 | do_test join3-2.$N { | ||
42 | set sql "SELECT * FROM t1" | ||
43 | for {set i 2} {$i<=$N} {incr i} {append sql ", t$i"} | ||
44 | set sep WHERE | ||
45 | for {set i 1} {$i<$N} {incr i} { | ||
46 | append sql " $sep t[expr {$i+1}].x==t$i.x+1" | ||
47 | set sep AND | ||
48 | } | ||
49 | execsql $sql | ||
50 | } $result | ||
51 | } | ||
52 | |||
53 | # Error of too many tables in the join | ||
54 | # | ||
55 | do_test join3-3.1 { | ||
56 | set sql "SELECT * FROM t1 AS t0, t1" | ||
57 | for {set i 2} {$i<=$bitmask_size} {incr i} {append sql ", t$i"} | ||
58 | catchsql $sql | ||
59 | } [list 1 "at most $bitmask_size tables in a join"] | ||
60 | |||
61 | |||
62 | finish_test | ||