Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: third_party/sqlite/src/ext/rtree/rtree4.test

Issue 6990047: Import SQLite 3.7.6.3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # 2008 May 23 1 # 2008 May 23
2 # 2 #
3 # The author disclaims copyright to this source code. In place of 3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing: 4 # a legal notice, here is a blessing:
5 # 5 #
6 # May you do good and not evil. 6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others. 7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give. 8 # May you share freely, never taking more than you give.
9 # 9 #
10 #*********************************************************************** 10 #***********************************************************************
11 # 11 #
12 # Randomized test cases for the rtree extension. 12 # Randomized test cases for the rtree extension.
13 # 13 #
14 # $Id: rtree4.test,v 1.3 2008/06/23 15:55:52 danielk1977 Exp $
15 #
16 14
17 if {![info exists testdir]} { 15 if {![info exists testdir]} {
18 set testdir [file join [file dirname $argv0] .. .. test] 16 set testdir [file join [file dirname [info script]] .. .. test]
19 } 17 }
20 source $testdir/tester.tcl 18 source $testdir/tester.tcl
21 19
22 ifcapable !rtree { 20 ifcapable !rtree {
23 finish_test 21 finish_test
24 return 22 return
25 } 23 }
26 24
27 set ::NROW 2500 25 set ::NROW 2500
28 if {[info exists ISQUICK] && $ISQUICK} { 26 if {[info exists G(isquick)] && $G(isquick)} {
29 set ::NROW 250 27 set ::NROW 250
30 } 28 }
31 29
32 # Return a floating point number between -X and X. 30 # Return a floating point number between -X and X.
33 # 31 #
34 proc rand {X} { 32 proc rand {X} {
35 return [expr {int((rand()-0.5)*1024.0*$X)/512.0}] 33 return [expr {int((rand()-0.5)*1024.0*$X)/512.0}]
36 } 34 }
37 35
38 # Return a positive floating point number less than or equal to X 36 # Return a positive floating point number less than or equal to X
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 } {} 86 } {}
89 87
90 # Do many insertions of small objects. Do both overlapping and 88 # Do many insertions of small objects. Do both overlapping and
91 # contained-within queries after each insert to verify that all 89 # contained-within queries after each insert to verify that all
92 # is well. 90 # is well.
93 # 91 #
94 unset -nocomplain where 92 unset -nocomplain where
95 for {set i 1} {$i<$::NROW} {incr i} { 93 for {set i 1} {$i<$::NROW} {incr i} {
96 # Do a random insert 94 # Do a random insert
97 # 95 #
98 do_test rtree-$nDim.2.$i.1 { 96 do_test rtree4-$nDim.2.$i.1 {
99 set vlist {} 97 set vlist {}
100 for {set j 0} {$j<$nDim} {incr j} { 98 for {set j 0} {$j<$nDim} {incr j} {
101 set mn [rand 10000] 99 set mn [rand 10000]
102 set mx [expr {$mn+[randincr 50]}] 100 set mx [expr {$mn+[randincr 50]}]
103 lappend vlist $mn $mx 101 lappend vlist $mn $mx
104 } 102 }
105 db eval "INSERT INTO rx VALUES(NULL, [join $vlist ,])" 103 db eval "INSERT INTO rx VALUES(NULL, [join $vlist ,])"
106 db eval "INSERT INTO bx VALUES(NULL, [join $vlist ,])" 104 db eval "INSERT INTO bx VALUES(NULL, [join $vlist ,])"
107 } {} 105 } {}
108 106
109 # Do a contained-in query on all dimensions 107 # Do a contained-in query on all dimensions
110 # 108 #
111 set where {} 109 set where {}
112 for {set j 0} {$j<$nDim} {incr j} { 110 for {set j 0} {$j<$nDim} {incr j} {
113 set mn [rand 10000] 111 set mn [rand 10000]
114 set mx [expr {$mn+[randincr 500]}] 112 set mx [expr {$mn+[randincr 500]}]
115 lappend where mn$j>=$mn mx$j<=$mx 113 lappend where mn$j>=$mn mx$j<=$mx
116 } 114 }
117 set where "WHERE [join $where { AND }]" 115 set where "WHERE [join $where { AND }]"
118 do_test rtree-$nDim.2.$i.2 { 116 do_test rtree4-$nDim.2.$i.2 {
119 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] 117 list $where [db eval "SELECT id FROM rx $where ORDER BY id"]
120 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] 118 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]]
121 119
122 # Do an overlaps query on all dimensions 120 # Do an overlaps query on all dimensions
123 # 121 #
124 set where {} 122 set where {}
125 for {set j 0} {$j<$nDim} {incr j} { 123 for {set j 0} {$j<$nDim} {incr j} {
126 set mn [rand 10000] 124 set mn [rand 10000]
127 set mx [expr {$mn+[randincr 500]}] 125 set mx [expr {$mn+[randincr 500]}]
128 lappend where mx$j>=$mn mn$j<=$mx 126 lappend where mx$j>=$mn mn$j<=$mx
129 } 127 }
130 set where "WHERE [join $where { AND }]" 128 set where "WHERE [join $where { AND }]"
131 do_test rtree-$nDim.2.$i.3 { 129 do_test rtree4-$nDim.2.$i.3 {
132 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] 130 list $where [db eval "SELECT id FROM rx $where ORDER BY id"]
133 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] 131 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]]
134 132
135 # Do a contained-in query with surplus contraints at the beginning. 133 # Do a contained-in query with surplus contraints at the beginning.
136 # This should force a full-table scan on the rtree. 134 # This should force a full-table scan on the rtree.
137 # 135 #
138 set where {} 136 set where {}
139 for {set j 0} {$j<$nDim} {incr j} { 137 for {set j 0} {$j<$nDim} {incr j} {
140 lappend where mn$j>-10000 mx$j<10000 138 lappend where mn$j>-10000 mx$j<10000
141 } 139 }
142 for {set j 0} {$j<$nDim} {incr j} { 140 for {set j 0} {$j<$nDim} {incr j} {
143 set mn [rand 10000] 141 set mn [rand 10000]
144 set mx [expr {$mn+[randincr 500]}] 142 set mx [expr {$mn+[randincr 500]}]
145 lappend where mn$j>=$mn mx$j<=$mx 143 lappend where mn$j>=$mn mx$j<=$mx
146 } 144 }
147 set where "WHERE [join $where { AND }]" 145 set where "WHERE [join $where { AND }]"
148 do_test rtree-$nDim.2.$i.3 { 146 do_test rtree4-$nDim.2.$i.3 {
149 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] 147 list $where [db eval "SELECT id FROM rx $where ORDER BY id"]
150 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] 148 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]]
151 149
152 # Do an overlaps query with surplus contraints at the beginning. 150 # Do an overlaps query with surplus contraints at the beginning.
153 # This should force a full-table scan on the rtree. 151 # This should force a full-table scan on the rtree.
154 # 152 #
155 set where {} 153 set where {}
156 for {set j 0} {$j<$nDim} {incr j} { 154 for {set j 0} {$j<$nDim} {incr j} {
157 lappend where mn$j>=-10000 mx$j<=10000 155 lappend where mn$j>=-10000 mx$j<=10000
158 } 156 }
159 for {set j 0} {$j<$nDim} {incr j} { 157 for {set j 0} {$j<$nDim} {incr j} {
160 set mn [rand 10000] 158 set mn [rand 10000]
161 set mx [expr {$mn+[randincr 500]}] 159 set mx [expr {$mn+[randincr 500]}]
162 lappend where mx$j>$mn mn$j<$mx 160 lappend where mx$j>$mn mn$j<$mx
163 } 161 }
164 set where "WHERE [join $where { AND }]" 162 set where "WHERE [join $where { AND }]"
165 do_test rtree-$nDim.2.$i.4 { 163 do_test rtree4-$nDim.2.$i.4 {
166 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] 164 list $where [db eval "SELECT id FROM rx $where ORDER BY id"]
167 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] 165 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]]
168 166
169 # Do a contained-in query with surplus contraints at the end 167 # Do a contained-in query with surplus contraints at the end
170 # 168 #
171 set where {} 169 set where {}
172 for {set j 0} {$j<$nDim} {incr j} { 170 for {set j 0} {$j<$nDim} {incr j} {
173 set mn [rand 10000] 171 set mn [rand 10000]
174 set mx [expr {$mn+[randincr 500]}] 172 set mx [expr {$mn+[randincr 500]}]
175 lappend where mn$j>=$mn mx$j<$mx 173 lappend where mn$j>=$mn mx$j<$mx
176 } 174 }
177 for {set j [expr {$nDim-1}]} {$j>=0} {incr j -1} { 175 for {set j [expr {$nDim-1}]} {$j>=0} {incr j -1} {
178 lappend where mn$j>=-10000 mx$j<10000 176 lappend where mn$j>=-10000 mx$j<10000
179 } 177 }
180 set where "WHERE [join $where { AND }]" 178 set where "WHERE [join $where { AND }]"
181 do_test rtree-$nDim.2.$i.5 { 179 do_test rtree4-$nDim.2.$i.5 {
182 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] 180 list $where [db eval "SELECT id FROM rx $where ORDER BY id"]
183 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] 181 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]]
184 182
185 # Do an overlaps query with surplus contraints at the end 183 # Do an overlaps query with surplus contraints at the end
186 # 184 #
187 set where {} 185 set where {}
188 for {set j [expr {$nDim-1}]} {$j>=0} {incr j -1} { 186 for {set j [expr {$nDim-1}]} {$j>=0} {incr j -1} {
189 set mn [rand 10000] 187 set mn [rand 10000]
190 set mx [expr {$mn+[randincr 500]}] 188 set mx [expr {$mn+[randincr 500]}]
191 lappend where mx$j>$mn mn$j<=$mx 189 lappend where mx$j>$mn mn$j<=$mx
192 } 190 }
193 for {set j 0} {$j<$nDim} {incr j} { 191 for {set j 0} {$j<$nDim} {incr j} {
194 lappend where mx$j>-10000 mn$j<=10000 192 lappend where mx$j>-10000 mn$j<=10000
195 } 193 }
196 set where "WHERE [join $where { AND }]" 194 set where "WHERE [join $where { AND }]"
197 do_test rtree-$nDim.2.$i.6 { 195 do_test rtree4-$nDim.2.$i.6 {
198 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] 196 list $where [db eval "SELECT id FROM rx $where ORDER BY id"]
199 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] 197 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]]
200 198
201 # Do a contained-in query with surplus contraints where the 199 # Do a contained-in query with surplus contraints where the
202 # constraints appear in a random order. 200 # constraints appear in a random order.
203 # 201 #
204 set where {} 202 set where {}
205 for {set j 0} {$j<$nDim} {incr j} { 203 for {set j 0} {$j<$nDim} {incr j} {
206 set mn1 [rand 10000] 204 set mn1 [rand 10000]
207 set mn2 [expr {$mn1+[randincr 100]}] 205 set mn2 [expr {$mn1+[randincr 100]}]
208 set mx1 [expr {$mn2+[randincr 400]}] 206 set mx1 [expr {$mn2+[randincr 400]}]
209 set mx2 [expr {$mx1+[randincr 100]}] 207 set mx2 [expr {$mx1+[randincr 100]}]
210 lappend where mn$j>=$mn1 mn$j>$mn2 mx$j<$mx1 mx$j<=$mx2 208 lappend where mn$j>=$mn1 mn$j>$mn2 mx$j<$mx1 mx$j<=$mx2
211 } 209 }
212 set where "WHERE [join [scramble $where] { AND }]" 210 set where "WHERE [join [scramble $where] { AND }]"
213 do_test rtree-$nDim.2.$i.7 { 211 do_test rtree4-$nDim.2.$i.7 {
214 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] 212 list $where [db eval "SELECT id FROM rx $where ORDER BY id"]
215 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] 213 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]]
216 214
217 # Do an overlaps query with surplus contraints where the 215 # Do an overlaps query with surplus contraints where the
218 # constraints appear in a random order. 216 # constraints appear in a random order.
219 # 217 #
220 set where {} 218 set where {}
221 for {set j 0} {$j<$nDim} {incr j} { 219 for {set j 0} {$j<$nDim} {incr j} {
222 set mn1 [rand 10000] 220 set mn1 [rand 10000]
223 set mn2 [expr {$mn1+[randincr 100]}] 221 set mn2 [expr {$mn1+[randincr 100]}]
224 set mx1 [expr {$mn2+[randincr 400]}] 222 set mx1 [expr {$mn2+[randincr 400]}]
225 set mx2 [expr {$mx1+[randincr 100]}] 223 set mx2 [expr {$mx1+[randincr 100]}]
226 lappend where mx$j>=$mn1 mx$j>$mn2 mn$j<$mx1 mn$j<=$mx2 224 lappend where mx$j>=$mn1 mx$j>$mn2 mn$j<$mx1 mn$j<=$mx2
227 } 225 }
228 set where "WHERE [join [scramble $where] { AND }]" 226 set where "WHERE [join [scramble $where] { AND }]"
229 do_test rtree-$nDim.2.$i.8 { 227 do_test rtree4-$nDim.2.$i.8 {
230 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] 228 list $where [db eval "SELECT id FROM rx $where ORDER BY id"]
231 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] 229 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]]
232 } 230 }
233 231
234 } 232 }
235 233
236 finish_test 234 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/src/ext/rtree/rtree3.test ('k') | third_party/sqlite/src/ext/rtree/rtree5.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698