Annotation of embedaddon/sqlite3/test/boundary4.tcl, revision 1.1
1.1 ! misho 1: puts {# 2008 December 11
! 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 is automatically generated from a separate TCL script.
! 14: # This file seeks to exercise integer boundary values.
! 15: #
! 16: # $Id: boundary4.tcl,v 1.3 2009/01/02 15:45:48 shane Exp $
! 17:
! 18: set testdir [file dirname $argv0]
! 19: source $testdir/tester.tcl
! 20:
! 21: # Many of the boundary tests depend on a working 64-bit implementation.
! 22: if {![working_64bit_int]} { finish_test; return }
! 23: ifcapable !altertable { finish_test; return }
! 24: }
! 25:
! 26: expr srand(0)
! 27:
! 28: # Generate interesting boundary numbers
! 29: #
! 30: foreach x {
! 31: 0x7f
! 32: 0x7fff
! 33: 0x7fffff
! 34: 0x7fffffff
! 35: 0x7fffffffff
! 36: 0x7fffffffffff
! 37: 0x7fffffffffffff
! 38: 0x7fffffffffffffff
! 39: } {
! 40: set x [expr {wide($x)}]
! 41: set boundarynum($x) 1
! 42: set boundarynum([expr {$x+1}]) 1
! 43: set boundarynum([expr {-($x+1)}]) 1
! 44: set boundarynum([expr {-($x+2)}]) 1
! 45: set boundarynum([expr {$x+$x+1}]) 1
! 46: set boundarynum([expr {$x+$x+2}]) 1
! 47: }
! 48: set x [expr {wide(127)}]
! 49: for {set i 127} {$i<=9} {incr i} {
! 50: set boundarynum($x) 1
! 51: set boundarynum([expr {$x+1}]) 1
! 52: set x [expr {wide($x*128 + 127)}]
! 53: }
! 54:
! 55: # Scramble the $inlist into a random order.
! 56: #
! 57: proc scramble {inlist} {
! 58: set y {}
! 59: foreach x $inlist {
! 60: lappend y [list [expr {rand()}] $x]
! 61: }
! 62: set y [lsort $y]
! 63: set outlist {}
! 64: foreach x $y {
! 65: lappend outlist [lindex $x 1]
! 66: }
! 67: return $outlist
! 68: }
! 69:
! 70: # A simple selection sort. Not trying to be efficient.
! 71: #
! 72: proc sort {inlist} {
! 73: set outlist {}
! 74: set mn [lindex $inlist 0]
! 75: foreach x $inlist {
! 76: if {$x<$mn} {set mn $x}
! 77: }
! 78: set outlist $mn
! 79: set mx $mn
! 80: while {1} {
! 81: set valid 0
! 82: foreach x $inlist {
! 83: if {$x>$mx && (!$valid || $mn>$x)} {
! 84: set mn $x
! 85: set valid 1
! 86: }
! 87: }
! 88: if {!$valid} break
! 89: lappend outlist $mn
! 90: set mx $mn
! 91: }
! 92: return $outlist
! 93: }
! 94:
! 95: # Reverse the order of a list
! 96: #
! 97: proc reverse {inlist} {
! 98: set i [llength $inlist]
! 99: set outlist {}
! 100: for {incr i -1} {$i>=0} {incr i -1} {
! 101: lappend outlist [lindex $inlist $i]
! 102: }
! 103: return $outlist
! 104: }
! 105:
! 106: set nums1 [scramble [array names boundarynum]]
! 107: set nums2 [scramble [array names boundarynum]]
! 108:
! 109: set tname boundary4
! 110: puts "do_test $tname-1.1 \173"
! 111: puts " db eval \173"
! 112: puts " CREATE TABLE t1(a,x);"
! 113: set a 0
! 114: set all_rowid {}
! 115: set all_a {}
! 116: set all_x {}
! 117: foreach r $nums1 {
! 118: incr a
! 119: set t1ra($r) $a
! 120: set t1ar($a) $r
! 121: set x [format %08x%08x [expr {wide($r)>>32}] $r]
! 122: set t1rx($r) $x
! 123: set t1xr($x) $r
! 124: puts " INSERT INTO t1(oid,a,x) VALUES($r,$a,'$x');"
! 125: lappend all_rowid $r
! 126: lappend all_a $a
! 127: lappend all_x $x
! 128: }
! 129: puts " CREATE INDEX t1i1 ON t1(a);"
! 130: puts " CREATE INDEX t1i2 ON t1(x);"
! 131: puts " \175"
! 132: puts "\175 {}"
! 133:
! 134: puts "do_test $tname-1.2 \173"
! 135: puts " db eval \173"
! 136: puts " SELECT count(*) FROM t1"
! 137: puts " \175"
! 138: puts "\175 {[llength $nums1]}"
! 139:
! 140: proc maketest {tnum sql answer} {
! 141: puts "do_test $::tname-$tnum \173"
! 142: puts " db eval \173"
! 143: puts " $sql"
! 144: puts " \175"
! 145: puts "\175 {$answer}"
! 146: }
! 147:
! 148: set ans {}
! 149: foreach r [sort $all_rowid] {
! 150: lappend ans $r $t1ra($r) $t1rx($r)
! 151: }
! 152: maketest 1.3 {SELECT rowid, a, x FROM t1 ORDER BY +rowid} $ans
! 153: maketest 1.4 {SELECT rowid, a, x FROM t1 ORDER BY rowid} $ans
! 154:
! 155: set ans {}
! 156: foreach r [reverse [sort $all_rowid]] {
! 157: lappend ans $r $t1ra($r) $t1rx($r)
! 158: }
! 159: maketest 1.5 {SELECT rowid, a, x FROM t1 ORDER BY +rowid DESC} $ans
! 160: maketest 1.6 {SELECT rowid, a, x FROM t1 ORDER BY rowid DESC} $ans
! 161:
! 162: set ans {}
! 163: foreach a [sort $all_a] {
! 164: set r $t1ar($a)
! 165: lappend ans $r $a $t1rx($r)
! 166: }
! 167: maketest 1.7 {SELECT rowid, a, x FROM t1 ORDER BY +a} $ans
! 168: maketest 1.8 {SELECT rowid, a, x FROM t1 ORDER BY a} $ans
! 169:
! 170: set ans {}
! 171: foreach a [reverse [sort $all_a]] {
! 172: set r $t1ar($a)
! 173: lappend ans $r $a $t1rx($r)
! 174: }
! 175: maketest 1.9 {SELECT rowid, a, x FROM t1 ORDER BY +a DESC} $ans
! 176: maketest 1.10 {SELECT rowid, a, x FROM t1 ORDER BY a DESC} $ans
! 177:
! 178: set ans {}
! 179: foreach x [sort $all_x] {
! 180: set r $t1xr($x)
! 181: lappend ans $r $t1ra($r) $x
! 182: }
! 183: maketest 1.11 {SELECT rowid, a, x FROM t1 ORDER BY +x} $ans
! 184: maketest 1.12 {SELECT rowid, a, x FROM t1 ORDER BY x} $ans
! 185:
! 186: set ans {}
! 187: foreach x [reverse [sort $all_x]] {
! 188: set r $t1xr($x)
! 189: lappend ans $r $t1ra($r) $x
! 190: }
! 191: maketest 1.13 {SELECT rowid, a, x FROM t1 ORDER BY +x DESC} $ans
! 192: maketest 1.14 {SELECT rowid, a, x FROM t1 ORDER BY x DESC} $ans
! 193:
! 194: maketest 2.1 {UPDATE t1 SET rowid=a, a=rowid} {}
! 195:
! 196: set ans {}
! 197: foreach r [sort $all_rowid] {
! 198: lappend ans $r $t1ra($r) $t1rx($r)
! 199: }
! 200: maketest 2.3 {SELECT a, rowid, x FROM t1 ORDER BY +a} $ans
! 201: maketest 2.4 {SELECT a, rowid, x FROM t1 ORDER BY a} $ans
! 202:
! 203: set ans {}
! 204: foreach r [reverse [sort $all_rowid]] {
! 205: lappend ans $r $t1ra($r) $t1rx($r)
! 206: }
! 207: maketest 2.5 {SELECT a, rowid, x FROM t1 ORDER BY +a DESC} $ans
! 208: maketest 2.6 {SELECT a, rowid, x FROM t1 ORDER BY a DESC} $ans
! 209:
! 210: set ans {}
! 211: foreach a [sort $all_a] {
! 212: set r $t1ar($a)
! 213: lappend ans $r $a $t1rx($r)
! 214: }
! 215: maketest 2.7 {SELECT a, rowid, x FROM t1 ORDER BY +rowid} $ans
! 216: maketest 2.8 {SELECT a, rowid, x FROM t1 ORDER BY rowid} $ans
! 217:
! 218: set ans {}
! 219: foreach a [reverse [sort $all_a]] {
! 220: set r $t1ar($a)
! 221: lappend ans $r $a $t1rx($r)
! 222: }
! 223: maketest 2.9 {SELECT a, rowid, x FROM t1 ORDER BY +rowid DESC} $ans
! 224: maketest 2.10 {SELECT a, rowid, x FROM t1 ORDER BY rowid DESC} $ans
! 225:
! 226: set ans {}
! 227: foreach x [sort $all_x] {
! 228: set r $t1xr($x)
! 229: lappend ans $r $t1ra($r) $x
! 230: }
! 231: maketest 2.11 {SELECT a, rowid, x FROM t1 ORDER BY +x} $ans
! 232: maketest 2.12 {SELECT a, rowid, x FROM t1 ORDER BY x} $ans
! 233:
! 234: set ans {}
! 235: foreach x [reverse [sort $all_x]] {
! 236: set r $t1xr($x)
! 237: lappend ans $r $t1ra($r) $x
! 238: }
! 239: maketest 2.13 {SELECT a, rowid, x FROM t1 ORDER BY +x DESC} $ans
! 240: maketest 2.14 {SELECT a, rowid, x FROM t1 ORDER BY x DESC} $ans
! 241:
! 242: maketest 3.1 {UPDATE t1 SET rowid=a, a=rowid} {}
! 243: maketest 3.2 {ALTER TABLE t1 ADD COLUMN z; UPDATE t1 SET z=zeroblob(600)} {}
! 244:
! 245: set ans {}
! 246: foreach r [sort $all_rowid] {
! 247: lappend ans $r $t1ra($r) $t1rx($r)
! 248: }
! 249: maketest 3.3 {SELECT rowid, a, x FROM t1 ORDER BY +rowid} $ans
! 250: maketest 3.4 {SELECT rowid, a, x FROM t1 ORDER BY rowid} $ans
! 251:
! 252: set ans {}
! 253: foreach r [reverse [sort $all_rowid]] {
! 254: lappend ans $r $t1ra($r) $t1rx($r)
! 255: }
! 256: maketest 3.5 {SELECT rowid, a, x FROM t1 ORDER BY +rowid DESC} $ans
! 257: maketest 3.6 {SELECT rowid, a, x FROM t1 ORDER BY rowid DESC} $ans
! 258:
! 259: set ans {}
! 260: foreach a [sort $all_a] {
! 261: set r $t1ar($a)
! 262: lappend ans $r $a $t1rx($r)
! 263: }
! 264: maketest 3.7 {SELECT rowid, a, x FROM t1 ORDER BY +a} $ans
! 265: maketest 3.8 {SELECT rowid, a, x FROM t1 ORDER BY a} $ans
! 266:
! 267: set ans {}
! 268: foreach a [reverse [sort $all_a]] {
! 269: set r $t1ar($a)
! 270: lappend ans $r $a $t1rx($r)
! 271: }
! 272: maketest 3.9 {SELECT rowid, a, x FROM t1 ORDER BY +a DESC} $ans
! 273: maketest 3.10 {SELECT rowid, a, x FROM t1 ORDER BY a DESC} $ans
! 274:
! 275: set ans {}
! 276: foreach x [sort $all_x] {
! 277: set r $t1xr($x)
! 278: lappend ans $r $t1ra($r) $x
! 279: }
! 280: maketest 3.11 {SELECT rowid, a, x FROM t1 ORDER BY +x} $ans
! 281: maketest 3.12 {SELECT rowid, a, x FROM t1 ORDER BY x} $ans
! 282:
! 283: set ans {}
! 284: foreach x [reverse [sort $all_x]] {
! 285: set r $t1xr($x)
! 286: lappend ans $r $t1ra($r) $x
! 287: }
! 288: maketest 3.13 {SELECT rowid, a, x FROM t1 ORDER BY +x DESC} $ans
! 289: maketest 3.14 {SELECT rowid, a, x FROM t1 ORDER BY x DESC} $ans
! 290:
! 291:
! 292: maketest 4.1 {UPDATE t1 SET rowid=a, a=rowid, x=z, z=x} {}
! 293:
! 294: set ans {}
! 295: foreach r [sort $all_rowid] {
! 296: lappend ans $r $t1ra($r) $t1rx($r)
! 297: }
! 298: maketest 4.3 {SELECT a, rowid, z FROM t1 ORDER BY +a} $ans
! 299: maketest 4.4 {SELECT a, rowid, z FROM t1 ORDER BY a} $ans
! 300:
! 301: set ans {}
! 302: foreach r [reverse [sort $all_rowid]] {
! 303: lappend ans $r $t1ra($r) $t1rx($r)
! 304: }
! 305: maketest 4.5 {SELECT a, rowid, z FROM t1 ORDER BY +a DESC} $ans
! 306: maketest 4.6 {SELECT a, rowid, z FROM t1 ORDER BY a DESC} $ans
! 307:
! 308: set ans {}
! 309: foreach a [sort $all_a] {
! 310: set r $t1ar($a)
! 311: lappend ans $r $a $t1rx($r)
! 312: }
! 313: maketest 4.7 {SELECT a, rowid, z FROM t1 ORDER BY +rowid} $ans
! 314: maketest 4.8 {SELECT a, rowid, z FROM t1 ORDER BY rowid} $ans
! 315:
! 316: set ans {}
! 317: foreach a [reverse [sort $all_a]] {
! 318: set r $t1ar($a)
! 319: lappend ans $r $a $t1rx($r)
! 320: }
! 321: maketest 4.9 {SELECT a, rowid, z FROM t1 ORDER BY +rowid DESC} $ans
! 322: maketest 4.10 {SELECT a, rowid, z FROM t1 ORDER BY rowid DESC} $ans
! 323:
! 324: set ans {}
! 325: foreach x [sort $all_x] {
! 326: set r $t1xr($x)
! 327: lappend ans $r $t1ra($r) $x
! 328: }
! 329: maketest 4.11 {SELECT a, rowid, z FROM t1 ORDER BY +z} $ans
! 330: maketest 4.12 {SELECT a, rowid, z FROM t1 ORDER BY z} $ans
! 331:
! 332: set ans {}
! 333: foreach x [reverse [sort $all_x]] {
! 334: set r $t1xr($x)
! 335: lappend ans $r $t1ra($r) $x
! 336: }
! 337: maketest 4.13 {SELECT a, rowid, z FROM t1 ORDER BY +z DESC} $ans
! 338: maketest 4.14 {SELECT a, rowid, z FROM t1 ORDER BY z DESC} $ans
! 339:
! 340: puts {finish_test}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>