Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add a few extra tests to select9.test. (CVS 5296) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
37b084fd7d7ad7f13fc9454fc25ca5ae |
User & Date: | danielk1977 2008-06-24 15:39:44.000 |
Context
2008-06-24
| ||
19:02 | Modify the memory allocation system in mem3.c so to fit in with the new sqlite3_mem_methods scheme. At this point it only "mostly" works. (CVS 5297) (check-in: 3febef548f user: danielk1977 tags: trunk) | |
15:39 | Add a few extra tests to select9.test. (CVS 5296) (check-in: 37b084fd7d user: danielk1977 tags: trunk) | |
12:46 | Fix a problem in sqlite3ExprIsInteger() causing failures on select1-4.9.2. Other bug fixes in compound-merge. The compound-merge is still disabled in this check-in using "#if 0" due to additional bugs. (CVS 5295) (check-in: 95037e6dbf user: drh tags: trunk) | |
Changes
Changes to test/select9.test.
1 2 3 4 5 6 7 8 9 10 11 12 | # 2008 June 24 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # | | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # 2008 June 24 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # $Id: select9.test,v 1.2 2008/06/24 15:39:44 danielk1977 Exp $ # The tests in this file are focused on test compound SELECT statements # that have any or all of an ORDER BY, LIMIT or OFFSET clauses. As of # version 3.6.0, SQLite contains code to use SQL indexes where possible # to optimize such statements. # # TODO Points: # # * Are there any "column affinity" issues to consider? set testdir [file dirname $argv0] source $testdir/tester.tcl #set ISQUICK 1 #------------------------------------------------------------------------- # test_compound_select TESTNAME SELECT RESULT # # This command is used to run multiple LIMIT/OFFSET test cases based on # the single SELECT statement passed as the second argument. The SELECT # statement may not contain a LIMIT or OFFSET clause. This proc tests |
︙ | ︙ | |||
55 56 57 58 59 60 61 | set ::compound_sql $sql do_test $testname { execsql $::compound_sql } $result #return set iLimitIncr 1 | > > > | | | > | | | | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | set ::compound_sql $sql do_test $testname { execsql $::compound_sql } $result #return set iLimitIncr 1 set iOffsetIncr 1 if {[info exists ::ISQUICK] && $::ISQUICK && $nRow>=5} { set iOffsetIncr [expr $nRow / 5] set iLimitIncr [expr $nRow / 5] } set iLimitEnd [expr $nRow+$iLimitIncr] set iOffsetEnd [expr $nRow+$iOffsetIncr] for {set iOffset 0} {$iOffset < $iOffsetEnd} {incr iOffset $iOffsetIncr} { for {set iLimit 0} {$iLimit < $iLimitEnd} {incr iLimit} { set ::compound_sql "$sql LIMIT $iLimit" if {$iOffset != 0} { append ::compound_sql " OFFSET $iOffset" } set iStart [expr {$iOffset*$nCol}] |
︙ | ︙ | |||
246 247 248 249 250 251 252 | test_compound_select select9-1.$iOuterLoop.20 { SELECT a, b FROM t1 EXCEPT SELECT d, e FROM t2 ORDER BY 2, 1 } {8 eight 5 five 4 four 1 one 7 seven 10 ten 2 two} incr iOuterLoop } | > > > > > > > > | > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 | test_compound_select select9-1.$iOuterLoop.20 { SELECT a, b FROM t1 EXCEPT SELECT d, e FROM t2 ORDER BY 2, 1 } {8 eight 5 five 4 four 1 one 7 seven 10 ten 2 two} incr iOuterLoop } do_test select9-2.0 { execsql { DROP INDEX i1; DROP INDEX i2; DROP INDEX i3; DROP INDEX i4; } } {} proc reverse {lhs rhs} { return [string compare $rhs $lhs] } db collate reverse reverse # This loop is similar to the previous one (test cases select9-1.*) # except that the simple select statements have WHERE clauses attached # to them. Sometimes the WHERE clause may be satisfied using the same # index used for ORDER BY, sometimes not. # set iOuterLoop 1 foreach indexes [list { /* Do not create any indexes. */ } { CREATE INDEX i1 ON t1(a) } { DROP INDEX i1; CREATE INDEX i1 ON t1(b, a) } { CREATE INDEX i2 ON t2(d DESC, e COLLATE REVERSE ASC); } { CREATE INDEX i3 ON t1(a DESC); }] { do_test select9-2.$iOuterLoop.1 { execsql $indexes } {} test_compound_select_flippable select9-2.$iOuterLoop.2 { SELECT * FROM t1 WHERE a<5 UNION SELECT * FROM t2 WHERE d>=5 ORDER BY 1 } {1 one I 2 two II 3 {} {} 4 four IV 5 ten XX 6 {} {} 7 fourteen XXVIII 8 sixteen XXXII 9 {} {} 10 twenty XL} test_compound_select_flippable select9-2.$iOuterLoop.2 { SELECT * FROM t1 WHERE a<5 UNION SELECT * FROM t2 WHERE d>=5 ORDER BY 2, 1 } {3 {} {} 6 {} {} 9 {} {} 4 four IV 7 fourteen XXVIII 1 one I 8 sixteen XXXII 5 ten XX 10 twenty XL 2 two II} test_compound_select_flippable select9-2.$iOuterLoop.3 { SELECT * FROM t1 WHERE a<5 UNION SELECT * FROM t2 WHERE d>=5 ORDER BY 2 COLLATE reverse, 1 } {3 {} {} 6 {} {} 9 {} {} 2 two II 10 twenty XL 5 ten XX 8 sixteen XXXII 1 one I 7 fourteen XXVIII 4 four IV} test_compound_select_flippable select9-2.$iOuterLoop.4 { SELECT * FROM t1 WHERE a<5 UNION ALL SELECT * FROM t2 WHERE d>=5 ORDER BY 1 } {1 one I 2 two II 3 {} {} 4 four IV 5 ten XX 6 {} {} 7 fourteen XXVIII 8 sixteen XXXII 9 {} {} 10 twenty XL} test_compound_select_flippable select9-2.$iOuterLoop.5 { SELECT * FROM t1 WHERE a<5 UNION ALL SELECT * FROM t2 WHERE d>=5 ORDER BY 2, 1 } {3 {} {} 6 {} {} 9 {} {} 4 four IV 7 fourteen XXVIII 1 one I 8 sixteen XXXII 5 ten XX 10 twenty XL 2 two II} test_compound_select_flippable select9-2.$iOuterLoop.6 { SELECT * FROM t1 WHERE a<5 UNION ALL SELECT * FROM t2 WHERE d>=5 ORDER BY 2 COLLATE reverse, 1 } {3 {} {} 6 {} {} 9 {} {} 2 two II 10 twenty XL 5 ten XX 8 sixteen XXXII 1 one I 7 fourteen XXVIII 4 four IV} test_compound_select select9-2.$iOuterLoop.4 { SELECT a FROM t1 WHERE a<8 EXCEPT SELECT d FROM t2 WHERE d<=3 ORDER BY 1 } {4 5 6 7} test_compound_select select9-2.$iOuterLoop.4 { SELECT a FROM t1 WHERE a<8 INTERSECT SELECT d FROM t2 WHERE d<=3 ORDER BY 1 } {1 2 3} } finish_test |