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: boundary1.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)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)expr srand(0)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generate interesting boundary numbers
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach x {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  1
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7f
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fff
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffff
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffff
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffffff
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffffffff
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffffffffff
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  0x7fffffffffffffff
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set x [expr {wide($x)}]
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum($x) 1
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {$x+1}]) 1
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {-($x+1)}]) 1
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {-($x+2)}]) 1
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {$x+$x+1}]) 1
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {$x+$x+2}]) 1
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set x [expr {wide(127)}]
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for {set i 1} {$i<=9} {incr i} {
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum($x) 1
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set boundarynum([expr {$x+1}]) 1
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set x [expr {wide($x*128 + 127)}]
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Scramble the $inlist into a random order.
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)proc scramble {inlist} {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set y {}
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  foreach x $inlist {
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lappend y [list [expr {rand()}] $x]
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set y [lsort $y]
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set outlist {}
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  foreach x $y {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lappend outlist [lindex $x 1]
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return $outlist
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# A simple selection sort.  Not trying to be efficient.
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)proc sort {inlist} {
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set outlist {}
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set mn [lindex $inlist 0]
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  foreach x $inlist {
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if {$x<$mn} {set mn $x}
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set outlist $mn
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set mx $mn
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  while {1} {
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set valid 0
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach x $inlist {
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if {$x>$mx && (!$valid || $mn>$x)} {
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        set mn $x
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        set valid 1
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if {!$valid} break
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lappend outlist $mn
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set mx $mn
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return $outlist
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Reverse the order of a list
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)proc reverse {inlist} {
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set i [llength $inlist]
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set outlist {}
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for {incr i -1} {$i>=0} {incr i -1} {
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lappend outlist [lindex $inlist $i]
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return $outlist
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set nums1 [scramble [array names boundarynum]]
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set nums2 [scramble [array names boundarynum]]
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set tname boundary1
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "do_test $tname-1.1 \173"
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "  db eval \173"
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "    CREATE TABLE t1(a,x);"
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set a 0
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r $nums1 {
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  incr a
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set t1ra($r) $a
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set t1ar($a) $r
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set x [format %08x%08x [expr {wide($r)>>32}] $r]
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set t1rx($r) $x
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set t1xr($x) $r
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  puts "    INSERT INTO t1(oid,a,x) VALUES($r,$a,'$x');"
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "    CREATE INDEX t1i1 ON t1(a);"
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "    CREATE INDEX t1i2 ON t1(x);"
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "  \175"
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "\175 {}"
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "do_test $tname-1.2 \173"
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "  db eval \173"
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "    SELECT count(*) FROM t1"
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "  \175"
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts "\175 {64}"
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set nums3 $nums2
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lappend nums3 9.22337303685477580800e+18
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lappend nums3 -9.22337303685477580800e+18
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set i 0
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach r $nums3 {
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  incr i
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if {abs($r)<9.22337203685477580800e+18} {
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set x $t1rx($r)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set a $t1ra($r)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set r5 $r.5
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set r0 $r.0
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.1 \173"
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT * FROM t1 WHERE rowid=$r"
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$a $x}"
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.2 \173"
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT rowid, a FROM t1 WHERE x='$x'"
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$r $a}"
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.3 \173"
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT rowid, x FROM t1 WHERE a=$a"
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$r $x}"
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  foreach op {> >= < <=} subno {gt ge lt le} {
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ################################################################ 2.x.y.1
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set rset {}
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set aset {}
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx $nums2 {
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if "\$rx $op \$r" {
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        lappend rset $rx
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        lappend aset $t1ra($rx)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.$subno.1 \173"
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT a FROM t1 WHERE rowid $op $r ORDER BY a"
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {[sort $aset]}"
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ################################################################ 2.x.y.2
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.$subno.2 \173"
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT a FROM t1 WHERE rowid $op $r ORDER BY a DESC"
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {[reverse [sort $aset]]}"
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ################################################################ 2.x.y.3
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set aset {}
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx [sort $rset] {
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lappend aset $t1ra($rx)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.$subno.3 \173"
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT a FROM t1 WHERE rowid $op $r ORDER BY rowid"
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$aset}"
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ################################################################ 2.x.y.4
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set aset {}
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx [reverse [sort $rset]] {
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lappend aset $t1ra($rx)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.$subno.4 \173"
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT a FROM t1 WHERE rowid $op $r ORDER BY rowid DESC"
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$aset}"
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ################################################################ 2.x.y.5
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set aset {}
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set xset {}
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx $rset {
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lappend xset $t1rx($rx)
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach x [sort $xset] {
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      set rx $t1xr($x)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lappend aset $t1ra($rx)
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.$subno.5 \173"
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT a FROM t1 WHERE rowid $op $r ORDER BY x"
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$aset}"
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ################################################################ 2.x.y.10
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if {abs($r)>9223372036854775808 || [string length $r5]>15} continue
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set rset {}
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set aset {}
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx $nums2 {
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if "\$rx $op \$r0" {
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        lappend rset $rx
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx [sort $rset] {
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lappend aset $t1ra($rx)
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.$subno.10 \173"
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT a FROM t1 WHERE rowid $op $r0 ORDER BY rowid"
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$aset}"
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ################################################################ 2.x.y.11
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set aset {}
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx [reverse [sort $rset]] {
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lappend aset $t1ra($rx)
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.$subno.11 \173"
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT a FROM t1 WHERE rowid $op $r0 ORDER BY rowid DESC"
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$aset}"
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ################################################################ 2.x.y.12
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set rset {}
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set aset {}
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx $nums2 {
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if "\$rx $op \$r5" {
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        lappend rset $rx
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx [sort $rset] {
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lappend aset $t1ra($rx)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.$subno.12 \173"
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT a FROM t1 WHERE rowid $op $r5 ORDER BY rowid"
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$aset}"
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ################################################################ 2.x.y.13
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set aset {}
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    foreach rx [reverse [sort $rset]] {
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lappend aset $t1ra($rx)
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "do_test $tname-2.$i.$subno.13 \173"
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  db eval \173"
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "    SELECT a FROM t1 WHERE rowid $op $r5 ORDER BY rowid DESC"
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "  \175"
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "\175 {$aset}"
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)puts {finish_test}
290