15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts {# 2008 December 11
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The author disclaims copyright to this source code.  In place of
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a legal notice, here is a blessing:
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    May you do good and not evil.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    May you find forgiveness for yourself and forgive others.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    May you share freely, never taking more than you give.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#***********************************************************************
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This file implements regression tests for SQLite library.
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This file is automatically generated from a separate TCL script.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This file seeks to exercise integer boundary values.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $Id: boundary4.tcl,v 1.3 2009/01/02 15:45:48 shane Exp $
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set testdir [file dirname $argv0]
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)source $testdir/tester.tcl
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Many of the boundary tests depend on a working 64-bit implementation.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if {![working_64bit_int]} { finish_test; return }
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ifcapable !altertable     { finish_test; return }
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)expr srand(0)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generate interesting boundary numbers
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7f
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fff
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffff
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffff
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffffff
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffffffff
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffffffffff
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffffffffffff
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set x [expr {wide($x)}]
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum($x) 1
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {$x+1}]) 1
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {-($x+1)}]) 1
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {-($x+2)}]) 1
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {$x+$x+1}]) 1
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {$x+$x+2}]) 1
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set x [expr {wide(127)}]
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for {set i 127} {$i<=9} {incr i} {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum($x) 1
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {$x+1}]) 1
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set x [expr {wide($x*128 + 127)}]
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Scramble the $inlist into a random order.
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)proc scramble {inlist} {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set y {}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  foreach x $inlist {
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lappend y [list [expr {rand()}] $x]
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set y [lsort $y]
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set outlist {}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  foreach x $y {
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lappend outlist [lindex $x 1]
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return $outlist
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# A simple selection sort.  Not trying to be efficient.
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)proc sort {inlist} {
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set outlist {}
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set mn [lindex $inlist 0]
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  foreach x $inlist {
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if {$x<$mn} {set mn $x}
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set outlist $mn
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set mx $mn
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  while {1} {
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set valid 0
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach x $inlist {
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if {$x>$mx && (!$valid || $mn>$x)} {
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        set mn $x
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        set valid 1
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if {!$valid} break
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lappend outlist $mn
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set mx $mn
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return $outlist
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Reverse the order of a list
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)proc reverse {inlist} {
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set i [llength $inlist]
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set outlist {}
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for {incr i -1} {$i>=0} {incr i -1} {
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lappend outlist [lindex $inlist $i]
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return $outlist
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set nums1 [scramble [array names boundarynum]]
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set nums2 [scramble [array names boundarynum]]
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set tname boundary4
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "do_test $tname-1.1 \173"
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "  db eval \173"
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "    CREATE TABLE t1(a,x);"
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set a 0
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set all_rowid {}
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set all_a {}
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set all_x {}
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r $nums1 {
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  incr a
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set t1ra($r) $a
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set t1ar($a) $r
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set x [format %08x%08x [expr {wide($r)>>32}] $r]
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set t1rx($r) $x
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set t1xr($x) $r
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  puts "    INSERT INTO t1(oid,a,x) VALUES($r,$a,'$x');"
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend all_rowid $r
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend all_a $a
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend all_x $x
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "    CREATE INDEX t1i1 ON t1(a);"
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "    CREATE INDEX t1i2 ON t1(x);"
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "  \175"
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "\175 {}"
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "do_test $tname-1.2 \173"
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "  db eval \173"
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "    SELECT count(*) FROM t1"
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "  \175"
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "\175 {[llength $nums1]}"
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)proc maketest {tnum sql answer} {
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  puts "do_test $::tname-$tnum \173"
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  puts "  db eval \173"
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  puts "    $sql"
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  puts "  \175"
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  puts "\175 {$answer}"
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r [sort $all_rowid] {
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $t1rx($r)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.3 {SELECT rowid, a, x FROM t1 ORDER BY +rowid} $ans
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.4 {SELECT rowid, a, x FROM t1 ORDER BY rowid} $ans
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r [reverse [sort $all_rowid]] {
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $t1rx($r)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.5 {SELECT rowid, a, x FROM t1 ORDER BY +rowid DESC} $ans
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.6 {SELECT rowid, a, x FROM t1 ORDER BY rowid DESC} $ans
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach a [sort $all_a] {
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1ar($a)
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $a $t1rx($r)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.7 {SELECT rowid, a, x FROM t1 ORDER BY +a} $ans
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.8 {SELECT rowid, a, x FROM t1 ORDER BY a} $ans
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach a [reverse [sort $all_a]] {
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1ar($a)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $a $t1rx($r)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.9 {SELECT rowid, a, x FROM t1 ORDER BY +a DESC} $ans
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.10 {SELECT rowid, a, x FROM t1 ORDER BY a DESC} $ans
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x [sort $all_x] {
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1xr($x)
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $x
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.11 {SELECT rowid, a, x FROM t1 ORDER BY +x} $ans
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.12 {SELECT rowid, a, x FROM t1 ORDER BY x} $ans
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x [reverse [sort $all_x]] {
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1xr($x)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $x
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.13 {SELECT rowid, a, x FROM t1 ORDER BY +x DESC} $ans
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 1.14 {SELECT rowid, a, x FROM t1 ORDER BY x DESC} $ans
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.1 {UPDATE t1 SET rowid=a, a=rowid} {}
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r [sort $all_rowid] {
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $t1rx($r)
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.3 {SELECT a, rowid, x FROM t1 ORDER BY +a} $ans
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.4 {SELECT a, rowid, x FROM t1 ORDER BY a} $ans
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r [reverse [sort $all_rowid]] {
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $t1rx($r)
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.5 {SELECT a, rowid, x FROM t1 ORDER BY +a DESC} $ans
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.6 {SELECT a, rowid, x FROM t1 ORDER BY a DESC} $ans
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach a [sort $all_a] {
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1ar($a)
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $a $t1rx($r)
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.7 {SELECT a, rowid, x FROM t1 ORDER BY +rowid} $ans
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.8 {SELECT a, rowid, x FROM t1 ORDER BY rowid} $ans
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach a [reverse [sort $all_a]] {
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1ar($a)
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $a $t1rx($r)
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.9 {SELECT a, rowid, x FROM t1 ORDER BY +rowid DESC} $ans
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.10 {SELECT a, rowid, x FROM t1 ORDER BY rowid DESC} $ans
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x [sort $all_x] {
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1xr($x)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $x
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.11 {SELECT a, rowid, x FROM t1 ORDER BY +x} $ans
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.12 {SELECT a, rowid, x FROM t1 ORDER BY x} $ans
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x [reverse [sort $all_x]] {
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1xr($x)
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $x
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.13 {SELECT a, rowid, x FROM t1 ORDER BY +x DESC} $ans
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 2.14 {SELECT a, rowid, x FROM t1 ORDER BY x DESC} $ans
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.1 {UPDATE t1 SET rowid=a, a=rowid} {}
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.2 {ALTER TABLE t1 ADD COLUMN z; UPDATE t1 SET z=zeroblob(600)} {}
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r [sort $all_rowid] {
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $t1rx($r)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.3 {SELECT rowid, a, x FROM t1 ORDER BY +rowid} $ans
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.4 {SELECT rowid, a, x FROM t1 ORDER BY rowid} $ans
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r [reverse [sort $all_rowid]] {
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $t1rx($r)
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.5 {SELECT rowid, a, x FROM t1 ORDER BY +rowid DESC} $ans
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.6 {SELECT rowid, a, x FROM t1 ORDER BY rowid DESC} $ans
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach a [sort $all_a] {
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1ar($a)
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $a $t1rx($r)
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.7 {SELECT rowid, a, x FROM t1 ORDER BY +a} $ans
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.8 {SELECT rowid, a, x FROM t1 ORDER BY a} $ans
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach a [reverse [sort $all_a]] {
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1ar($a)
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $a $t1rx($r)
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.9 {SELECT rowid, a, x FROM t1 ORDER BY +a DESC} $ans
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.10 {SELECT rowid, a, x FROM t1 ORDER BY a DESC} $ans
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x [sort $all_x] {
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1xr($x)
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $x
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.11 {SELECT rowid, a, x FROM t1 ORDER BY +x} $ans
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.12 {SELECT rowid, a, x FROM t1 ORDER BY x} $ans
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x [reverse [sort $all_x]] {
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1xr($x)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $x
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.13 {SELECT rowid, a, x FROM t1 ORDER BY +x DESC} $ans
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 3.14 {SELECT rowid, a, x FROM t1 ORDER BY x DESC} $ans
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.1 {UPDATE t1 SET rowid=a, a=rowid, x=z, z=x} {}
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r [sort $all_rowid] {
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $t1rx($r)
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.3 {SELECT a, rowid, z FROM t1 ORDER BY +a} $ans
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.4 {SELECT a, rowid, z FROM t1 ORDER BY a} $ans
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r [reverse [sort $all_rowid]] {
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $t1rx($r)
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.5 {SELECT a, rowid, z FROM t1 ORDER BY +a DESC} $ans
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.6 {SELECT a, rowid, z FROM t1 ORDER BY a DESC} $ans
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach a [sort $all_a] {
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1ar($a)
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $a $t1rx($r)
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.7 {SELECT a, rowid, z FROM t1 ORDER BY +rowid} $ans
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.8 {SELECT a, rowid, z FROM t1 ORDER BY rowid} $ans
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach a [reverse [sort $all_a]] {
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1ar($a)
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $a $t1rx($r)
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.9 {SELECT a, rowid, z FROM t1 ORDER BY +rowid DESC} $ans
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.10 {SELECT a, rowid, z FROM t1 ORDER BY rowid DESC} $ans
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x [sort $all_x] {
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1xr($x)
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $x
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.11 {SELECT a, rowid, z FROM t1 ORDER BY +z} $ans
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.12 {SELECT a, rowid, z FROM t1 ORDER BY z} $ans
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set ans {}
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x [reverse [sort $all_x]] {
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set r $t1xr($x)
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lappend ans $r $t1ra($r) $x
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.13 {SELECT a, rowid, z FROM t1 ORDER BY +z DESC} $ans
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maketest 4.14 {SELECT a, rowid, z FROM t1 ORDER BY z DESC} $ans
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts {finish_test}
341