persistentstorage/sqlite3api/TEST/TclScript/join3.test
changeset 0 08ec8eefde2f
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     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