| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | if {![info exists testdir]} { |
| | set testdir [file join [file dirname [info script]] .. .. test] |
| | } |
| | source [file join [file dirname [info script]] rtree_util.tcl] |
| | source $testdir/tester.tcl |
| |
|
| | ifcapable !rtree { |
| | finish_test |
| | return |
| | } |
| |
|
| | set ::NROW 2500 |
| | if {[info exists G(isquick)] && $G(isquick)} { |
| | set ::NROW 250 |
| | } |
| |
|
| | ifcapable !rtree_int_only { |
| | |
| | |
| | proc rand {X} { |
| | return [expr {int((rand()-0.5)*1024.0*$X)/512.0}] |
| | } |
| | |
| | |
| | |
| | proc randincr {X} { |
| | while 1 { |
| | set r [expr {int(rand()*$X*32.0)/32.0}] |
| | if {$r>0.0} {return $r} |
| | } |
| | } |
| | } else { |
| | |
| | |
| | proc rand {X} { |
| | return [expr {int((rand()-0.5)*2*$X)}] |
| | } |
| | |
| | |
| | |
| | proc randincr {X} { |
| | while 1 { |
| | set r [expr {int(rand()*$X)+1}] |
| | if {$r>0} {return $r} |
| | } |
| | } |
| | } |
| | |
| | |
| | |
| | proc scramble {inlist} { |
| | set y {} |
| | foreach x $inlist { |
| | lappend y [list [expr {rand()}] $x] |
| | } |
| | set y [lsort $y] |
| | set outlist {} |
| | foreach x $y { |
| | lappend outlist [lindex $x 1] |
| | } |
| | return $outlist |
| | } |
| |
|
| | |
| | |
| | |
| | expr {srand(1234)} |
| |
|
| | |
| | |
| | for {set nDim 1} {$nDim<=5} {incr nDim} { |
| |
|
| | |
| | |
| | |
| | |
| | |
| | do_test rtree4-$nDim.1 { |
| | set clist {} |
| | set cklist {} |
| | for {set i 0} {$i<$nDim} {incr i} { |
| | lappend clist mn$i mx$i |
| | lappend cklist "mn$i<mx$i" |
| | } |
| | db eval "DROP TABLE IF EXISTS rx" |
| | db eval "DROP TABLE IF EXISTS bx" |
| | db eval "CREATE VIRTUAL TABLE rx USING rtree(id, [join $clist ,])" |
| | db eval "CREATE TABLE bx(id INTEGER PRIMARY KEY,\ |
| | [join $clist ,], CHECK( [join $cklist { AND }] ))" |
| | } {} |
| |
|
| | |
| | |
| | |
| | |
| | unset -nocomplain where |
| | for {set i 1} {$i<$::NROW} {incr i} { |
| | |
| | |
| | do_test rtree4-$nDim.2.$i.1 { |
| | set vlist {} |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | set mn [rand 10000] |
| | set mx [expr {$mn+[randincr 50]}] |
| | lappend vlist $mn $mx |
| | } |
| | db eval "INSERT INTO rx VALUES(NULL, [join $vlist ,])" |
| | db eval "INSERT INTO bx VALUES(NULL, [join $vlist ,])" |
| | } {} |
| |
|
| | |
| | |
| | set where {} |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | set mn [rand 10000] |
| | set mx [expr {$mn+[randincr 500]}] |
| | lappend where mn$j>=$mn mx$j<=$mx |
| | } |
| | set where "WHERE [join $where { AND }]" |
| | do_test rtree4-$nDim.2.$i.2 { |
| | list $where [db eval "SELECT id FROM rx $where ORDER BY id"] |
| | } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] |
| |
|
| | |
| | |
| | set where {} |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | set mn [rand 10000] |
| | set mx [expr {$mn+[randincr 500]}] |
| | lappend where mx$j>=$mn mn$j<=$mx |
| | } |
| | set where "WHERE [join $where { AND }]" |
| | do_test rtree4-$nDim.2.$i.3 { |
| | list $where [db eval "SELECT id FROM rx $where ORDER BY id"] |
| | } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] |
| |
|
| | |
| | |
| | |
| | set where {} |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | lappend where mn$j>-10000 mx$j<10000 |
| | } |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | set mn [rand 10000] |
| | set mx [expr {$mn+[randincr 500]}] |
| | lappend where mn$j>=$mn mx$j<=$mx |
| | } |
| | set where "WHERE [join $where { AND }]" |
| | do_test rtree4-$nDim.2.$i.3 { |
| | list $where [db eval "SELECT id FROM rx $where ORDER BY id"] |
| | } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] |
| |
|
| | |
| | |
| | |
| | set where {} |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | lappend where mn$j>=-10000 mx$j<=10000 |
| | } |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | set mn [rand 10000] |
| | set mx [expr {$mn+[randincr 500]}] |
| | lappend where mx$j>$mn mn$j<$mx |
| | } |
| | set where "WHERE [join $where { AND }]" |
| | do_test rtree4-$nDim.2.$i.4 { |
| | list $where [db eval "SELECT id FROM rx $where ORDER BY id"] |
| | } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] |
| |
|
| | |
| | |
| | set where {} |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | set mn [rand 10000] |
| | set mx [expr {$mn+[randincr 500]}] |
| | lappend where mn$j>=$mn mx$j<$mx |
| | } |
| | for {set j [expr {$nDim-1}]} {$j>=0} {incr j -1} { |
| | lappend where mn$j>=-10000 mx$j<10000 |
| | } |
| | set where "WHERE [join $where { AND }]" |
| | do_test rtree4-$nDim.2.$i.5 { |
| | list $where [db eval "SELECT id FROM rx $where ORDER BY id"] |
| | } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] |
| |
|
| | |
| | |
| | set where {} |
| | for {set j [expr {$nDim-1}]} {$j>=0} {incr j -1} { |
| | set mn [rand 10000] |
| | set mx [expr {$mn+[randincr 500]}] |
| | lappend where mx$j>$mn mn$j<=$mx |
| | } |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | lappend where mx$j>-10000 mn$j<=10000 |
| | } |
| | set where "WHERE [join $where { AND }]" |
| | do_test rtree4-$nDim.2.$i.6 { |
| | list $where [db eval "SELECT id FROM rx $where ORDER BY id"] |
| | } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] |
| |
|
| | |
| | |
| | |
| | set where {} |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | set mn1 [rand 10000] |
| | set mn2 [expr {$mn1+[randincr 100]}] |
| | set mx1 [expr {$mn2+[randincr 400]}] |
| | set mx2 [expr {$mx1+[randincr 100]}] |
| | lappend where mn$j>=$mn1 mn$j>$mn2 mx$j<$mx1 mx$j<=$mx2 |
| | } |
| | set where "WHERE [join [scramble $where] { AND }]" |
| | do_test rtree4-$nDim.2.$i.7 { |
| | list $where [db eval "SELECT id FROM rx $where ORDER BY id"] |
| | } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] |
| |
|
| | |
| | |
| | |
| | set where {} |
| | for {set j 0} {$j<$nDim} {incr j} { |
| | set mn1 [rand 10000] |
| | set mn2 [expr {$mn1+[randincr 100]}] |
| | set mx1 [expr {$mn2+[randincr 400]}] |
| | set mx2 [expr {$mx1+[randincr 100]}] |
| | lappend where mx$j>=$mn1 mx$j>$mn2 mn$j<$mx1 mn$j<=$mx2 |
| | } |
| | set where "WHERE [join [scramble $where] { AND }]" |
| | do_test rtree4-$nDim.2.$i.8 { |
| | list $where [db eval "SELECT id FROM rx $where ORDER BY id"] |
| | } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] |
| | } |
| |
|
| | do_rtree_integrity_test rtree4-$nDim.3 rx |
| | } |
| |
|
| | expand_all_sql db |
| | finish_test |
| |
|