/ Hex Artifact Content
Login

Artifact 05c16b5d4f5d6512881dfec560cb793915932ef9:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 74 63 6c 73 68  #!/usr/bin/tclsh
0010: 0a 23 0a 23 20 52 75 6e 20 74 68 69 73 20 73 63  .#.# Run this sc
0020: 72 69 70 74 20 74 6f 20 67 65 6e 65 72 61 74 65  ript to generate
0030: 20 72 61 6e 64 6f 6d 69 7a 65 64 20 74 65 73 74   randomized test
0040: 20 63 61 73 65 73 20 66 6f 72 20 74 68 65 20 77   cases for the w
0050: 68 65 72 65 37 2e 74 65 73 74 0a 23 20 73 63 72  here7.test.# scr
0060: 69 70 74 2e 20 20 54 68 65 20 6f 75 74 70 75 74  ipt.  The output
0070: 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20 62 65   will need to be
0080: 20 6d 61 6e 75 61 6c 6c 79 20 63 6f 70 69 65 64   manually copied
0090: 20 61 6e 64 20 70 61 73 74 65 64 20 69 6e 74 6f   and pasted into
00a0: 0a 23 20 74 68 65 20 77 68 65 72 65 37 2e 74 65  .# the where7.te
00b0: 73 74 20 73 63 72 69 70 74 2e 0a 23 0a 70 75 74  st script..#.put
00c0: 73 20 22 64 6f 5f 74 65 73 74 20 77 68 65 72 65  s "do_test where
00d0: 37 2d 32 2e 31 20 5c 31 37 33 22 0a 70 75 74 73  7-2.1 \173".puts
00e0: 20 22 20 20 64 62 20 65 76 61 6c 20 5c 31 37 33   "  db eval \173
00f0: 22 0a 70 75 74 73 20 22 20 20 20 20 43 52 45 41  ".puts "    CREA
0100: 54 45 20 54 41 42 4c 45 20 74 32 28 61 20 49 4e  TE TABLE t2(a IN
0110: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
0120: 59 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 29 3b 22  Y,b,c,d,e,f,g);"
0130: 0a 73 65 74 20 4e 41 20 31 30 30 0a 66 6f 72 20  .set NA 100.for 
0140: 7b 73 65 74 20 61 20 31 7d 20 7b 24 61 3c 3d 24  {set a 1} {$a<=$
0150: 4e 41 7d 20 7b 69 6e 63 72 20 61 7d 20 7b 0a 20  NA} {incr a} {. 
0160: 20 73 65 74 20 62 20 5b 65 78 70 72 20 7b 24 61   set b [expr {$a
0170: 2a 31 31 7d 5d 0a 20 20 73 65 74 20 64 69 76 33  *11}].  set div3
0180: 20 5b 65 78 70 72 20 7b 69 6e 74 28 28 24 61 2b   [expr {int(($a+
0190: 32 29 2f 33 29 7d 5d 0a 20 20 73 65 74 20 63 20  2)/3)}].  set c 
01a0: 5b 65 78 70 72 20 7b 24 64 69 76 33 2a 31 30 30  [expr {$div3*100
01b0: 31 7d 5d 0a 20 20 73 65 74 20 64 20 5b 65 78 70  1}].  set d [exp
01c0: 72 20 7b 24 61 2a 31 2e 30 30 31 7d 5d 0a 20 20  r {$a*1.001}].  
01d0: 73 65 74 20 65 20 5b 65 78 70 72 20 7b 24 64 69  set e [expr {$di
01e0: 76 33 2a 31 30 30 2e 31 7d 5d 0a 20 20 73 65 74  v3*100.1}].  set
01f0: 20 78 20 5b 65 78 70 72 20 7b 24 61 25 32 36 7d   x [expr {$a%26}
0200: 5d 0a 20 20 73 65 74 20 66 20 5b 73 74 72 69 6e  ].  set f [strin
0210: 67 20 72 61 6e 67 65 20 7b 61 62 63 64 65 66 67  g range {abcdefg
0220: 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77  hijklmnopqrstuvw
0230: 78 79 7a 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d  xyzabcdefghijklm
0240: 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7d 20 5c  nopqrstuvwxyz} \
0250: 0a 20 20 20 20 20 20 20 20 20 20 20 24 78 20 5b  .           $x [
0260: 65 78 70 72 20 7b 24 78 2b 38 7d 5d 5d 0a 20 20  expr {$x+8}]].  
0270: 73 65 74 20 64 69 76 35 20 5b 65 78 70 72 20 7b  set div5 [expr {
0280: 69 6e 74 28 28 24 61 2b 37 29 2f 35 29 7d 5d 0a  int(($a+7)/5)}].
0290: 20 20 73 65 74 20 78 20 5b 65 78 70 72 20 7b 24    set x [expr {$
02a0: 64 69 76 35 25 32 36 7d 5d 0a 20 20 73 65 74 20  div5%26}].  set 
02b0: 67 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20  g [string range 
02c0: 7b 7a 79 78 77 76 75 74 73 72 71 70 6f 6e 6d 6c  {zyxwvutsrqponml
02d0: 6b 6a 69 68 67 66 65 64 63 62 61 7a 79 78 77 76  kjihgfedcbazyxwv
02e0: 75 74 73 72 71 70 6f 6e 6d 6c 6b 6a 69 68 67 66  utsrqponmlkjihgf
02f0: 65 64 63 62 61 7d 20 5c 0a 20 20 20 20 20 20 20  edcba} \.       
0300: 20 20 20 20 24 78 20 5b 65 78 70 72 20 7b 24 78      $x [expr {$x
0310: 2b 36 7d 5d 5d 0a 20 20 70 75 74 73 20 22 20 20  +6}]].  puts "  
0320: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
0330: 20 56 41 4c 55 45 53 28 24 61 2c 24 62 2c 24 63   VALUES($a,$b,$c
0340: 2c 24 64 2c 24 65 2c 27 24 66 27 2c 27 24 67 27  ,$d,$e,'$f','$g'
0350: 29 3b 22 0a 20 20 6c 61 70 70 65 6e 64 20 66 69  );".  lappend fi
0360: 64 78 28 24 66 29 20 24 61 0a 20 20 6c 61 70 70  dx($f) $a.  lapp
0370: 65 6e 64 20 67 69 64 78 28 24 67 29 20 24 61 0a  end gidx($g) $a.
0380: 20 20 73 65 74 20 67 6f 66 28 24 61 29 20 24 67    set gof($a) $g
0390: 0a 20 20 73 65 74 20 66 6f 66 28 24 61 29 20 24  .  set fof($a) $
03a0: 66 0a 0a 20 20 73 65 74 20 65 78 70 72 20 22 61  f..  set expr "a
03b0: 3d 24 61 22 0a 20 20 73 65 74 20 74 65 72 6d 28  =$a".  set term(
03c0: 24 65 78 70 72 29 20 24 61 0a 20 20 73 65 74 20  $expr) $a.  set 
03d0: 65 78 70 72 20 22 28 28 61 20 42 45 54 57 45 45  expr "((a BETWEE
03e0: 4e 20 5b 65 78 70 72 20 7b 24 61 2d 31 7d 5d 20  N [expr {$a-1}] 
03f0: 41 4e 44 20 5b 65 78 70 72 20 7b 24 61 2b 31 7d  AND [expr {$a+1}
0400: 5d 29 20 41 4e 44 20 61 21 3d 24 61 29 22 0a 20  ]) AND a!=$a)". 
0410: 20 73 65 74 20 78 20 7b 7d 0a 20 20 69 66 20 7b   set x {}.  if {
0420: 24 61 3e 31 7d 20 7b 73 65 74 20 78 20 5b 65 78  $a>1} {set x [ex
0430: 70 72 20 7b 24 61 2d 31 7d 5d 7d 0a 20 20 69 66  pr {$a-1}]}.  if
0440: 20 7b 24 61 3c 24 4e 41 7d 20 7b 6c 61 70 70 65   {$a<$NA} {lappe
0450: 6e 64 20 78 20 5b 65 78 70 72 20 7b 24 61 2b 31  nd x [expr {$a+1
0460: 7d 5d 7d 0a 20 20 73 65 74 20 74 65 72 6d 28 24  }]}.  set term($
0470: 65 78 70 72 29 20 24 78 0a 20 20 73 65 74 20 65  expr) $x.  set e
0480: 78 70 72 20 22 62 3d 24 62 22 0a 20 20 73 65 74  xpr "b=$b".  set
0490: 20 74 65 72 6d 28 24 65 78 70 72 29 20 24 61 0a   term($expr) $a.
04a0: 20 20 73 65 74 20 65 78 70 72 20 22 62 3d 5b 65    set expr "b=[e
04b0: 78 70 72 20 7b 24 61 2a 31 31 2b 33 7d 5d 22 0a  xpr {$a*11+3}]".
04c0: 20 20 73 65 74 20 74 65 72 6d 28 24 65 78 70 72    set term($expr
04d0: 29 20 7b 7d 0a 20 20 73 65 74 20 65 78 70 72 20  ) {}.  set expr 
04e0: 22 63 3d 24 63 22 0a 20 20 6c 61 70 70 65 6e 64  "c=$c".  lappend
04f0: 20 74 65 72 6d 28 24 65 78 70 72 29 20 24 61 0a   term($expr) $a.
0500: 20 20 73 65 74 20 65 78 70 72 20 22 28 64 3e 3d    set expr "(d>=
0510: 24 61 2e 30 20 41 4e 44 20 64 3c 5b 65 78 70 72  $a.0 AND d<[expr
0520: 20 7b 24 61 2b 31 2e 30 7d 5d 20 41 4e 44 20 64   {$a+1.0}] AND d
0530: 20 4e 4f 54 20 4e 55 4c 4c 29 22 0a 20 20 6c 61   NOT NULL)".  la
0540: 70 70 65 6e 64 20 74 65 72 6d 28 24 65 78 70 72  ppend term($expr
0550: 29 20 24 61 0a 20 20 73 65 74 20 65 78 70 72 20  ) $a.  set expr 
0560: 22 66 3d 27 24 66 27 22 0a 20 20 6c 61 70 70 65  "f='$f'".  lappe
0570: 6e 64 20 74 65 72 6d 28 24 65 78 70 72 29 20 24  nd term($expr) $
0580: 61 0a 20 20 73 65 74 20 65 78 70 72 20 5c 0a 20  a.  set expr \. 
0590: 20 20 20 20 22 28 66 20 47 4c 4f 42 20 27 3f 5b      "(f GLOB '?[
05a0: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 66 20  string range $f 
05b0: 31 20 34 5d 2a 27 20 41 4e 44 20 66 20 47 4c 4f  1 4]*' AND f GLO
05c0: 42 20 27 5b 73 74 72 69 6e 67 20 72 61 6e 67 65  B '[string range
05d0: 20 24 66 20 30 20 33 5d 2a 27 29 22 0a 20 20 6c   $f 0 3]*')".  l
05e0: 61 70 70 65 6e 64 20 74 65 72 6d 28 24 65 78 70  append term($exp
05f0: 72 29 20 24 61 0a 20 20 73 65 74 20 65 78 70 72  r) $a.  set expr
0600: 20 22 28 67 3d 27 24 67 27 20 41 4e 44 20 66 20   "(g='$g' AND f 
0610: 47 4c 4f 42 20 27 5b 73 74 72 69 6e 67 20 72 61  GLOB '[string ra
0620: 6e 67 65 20 24 66 20 30 20 34 5d 2a 27 29 22 0a  nge $f 0 4]*')".
0630: 20 20 6c 61 70 70 65 6e 64 20 74 65 72 6d 28 24    lappend term($
0640: 65 78 70 72 29 20 24 61 0a 7d 0a 70 75 74 73 20  expr) $a.}.puts 
0650: 22 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45  "    CREATE INDE
0660: 58 20 74 32 62 20 4f 4e 20 74 32 28 62 29 3b 22  X t2b ON t2(b);"
0670: 0a 70 75 74 73 20 22 20 20 20 20 43 52 45 41 54  .puts "    CREAT
0680: 45 20 49 4e 44 45 58 20 74 32 63 20 4f 4e 20 74  E INDEX t2c ON t
0690: 32 28 63 29 3b 22 0a 70 75 74 73 20 22 20 20 20  2(c);".puts "   
06a0: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 74 32   CREATE INDEX t2
06b0: 64 20 4f 4e 20 74 32 28 64 29 3b 22 0a 70 75 74  d ON t2(d);".put
06c0: 73 20 22 20 20 20 20 43 52 45 41 54 45 20 49 4e  s "    CREATE IN
06d0: 44 45 58 20 74 32 65 20 4f 4e 20 74 32 28 65 29  DEX t2e ON t2(e)
06e0: 3b 22 0a 70 75 74 73 20 22 20 20 20 20 43 52 45  ;".puts "    CRE
06f0: 41 54 45 20 49 4e 44 45 58 20 74 32 66 20 4f 4e  ATE INDEX t2f ON
0700: 20 74 32 28 66 29 3b 22 0a 70 75 74 73 20 22 20   t2(f);".puts " 
0710: 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20     CREATE INDEX 
0720: 74 32 67 20 4f 4e 20 74 32 28 67 29 3b 22 0a 70  t2g ON t2(g);".p
0730: 75 74 73 20 22 20 20 20 20 43 52 45 41 54 45 20  uts "    CREATE 
0740: 54 41 42 4c 45 20 74 33 28 61 20 49 4e 54 45 47  TABLE t3(a INTEG
0750: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 62  ER PRIMARY KEY,b
0760: 2c 63 2c 64 2c 65 2c 66 2c 67 29 3b 22 0a 70 75  ,c,d,e,f,g);".pu
0770: 74 73 20 22 20 20 20 20 49 4e 53 45 52 54 20 49  ts "    INSERT I
0780: 4e 54 4f 20 74 33 20 53 45 4c 45 43 54 20 2a 20  NTO t3 SELECT * 
0790: 46 52 4f 4d 20 74 32 3b 22 0a 70 75 74 73 20 22  FROM t2;".puts "
07a0: 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58      CREATE INDEX
07b0: 20 74 33 62 20 4f 4e 20 74 33 28 62 2c 63 29 3b   t3b ON t3(b,c);
07c0: 22 0a 70 75 74 73 20 22 20 20 20 20 43 52 45 41  ".puts "    CREA
07d0: 54 45 20 49 4e 44 45 58 20 74 33 63 20 4f 4e 20  TE INDEX t3c ON 
07e0: 74 33 28 63 2c 65 29 3b 22 0a 70 75 74 73 20 22  t3(c,e);".puts "
07f0: 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58      CREATE INDEX
0800: 20 74 33 64 20 4f 4e 20 74 33 28 64 2c 67 29 3b   t3d ON t3(d,g);
0810: 22 0a 70 75 74 73 20 22 20 20 20 20 43 52 45 41  ".puts "    CREA
0820: 54 45 20 49 4e 44 45 58 20 74 33 65 20 4f 4e 20  TE INDEX t3e ON 
0830: 74 33 28 65 2c 66 2c 67 29 3b 22 0a 70 75 74 73  t3(e,f,g);".puts
0840: 20 22 20 20 20 20 43 52 45 41 54 45 20 49 4e 44   "    CREATE IND
0850: 45 58 20 74 33 66 20 4f 4e 20 74 33 28 66 2c 62  EX t3f ON t3(f,b
0860: 2c 64 2c 63 29 3b 22 0a 70 75 74 73 20 22 20 20  ,d,c);".puts "  
0870: 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 74    CREATE INDEX t
0880: 33 67 20 4f 4e 20 74 33 28 67 2c 66 29 3b 22 0a  3g ON t3(g,f);".
0890: 0a 70 75 74 73 20 22 20 20 5c 31 37 35 22 0a 70  .puts "  \175".p
08a0: 75 74 73 20 22 5c 31 37 35 20 7b 7d 22 0a 0a 73  uts "\175 {}"..s
08b0: 65 74 20 74 65 72 6d 28 62 3c 30 29 20 7b 7d 0a  et term(b<0) {}.
08c0: 73 65 74 20 74 65 72 6d 28 31 30 30 30 30 30 30  set term(1000000
08d0: 3c 62 29 20 7b 7d 0a 73 65 74 20 74 65 72 6d 28  <b) {}.set term(
08e0: 63 3c 3d 31 30 29 20 7b 7d 0a 73 65 74 20 74 65  c<=10) {}.set te
08f0: 72 6d 28 63 3e 3d 5b 65 78 70 72 20 7b 69 6e 74  rm(c>=[expr {int
0900: 28 28 24 4e 41 2b 32 29 2f 33 29 2a 31 30 30 31  (($NA+2)/3)*1001
0910: 2b 31 7d 5d 29 20 7b 7d 0a 73 65 74 20 74 65 72  +1}]) {}.set ter
0920: 6d 28 64 3c 30 2e 30 29 20 7b 7d 0a 73 65 74 20  m(d<0.0) {}.set 
0930: 74 65 72 6d 28 64 3e 31 65 31 30 29 20 7b 7d 0a  term(d>1e10) {}.
0940: 73 65 74 20 65 78 70 72 20 7b 65 20 49 53 20 4e  set expr {e IS N
0950: 55 4c 4c 7d 0a 73 65 74 20 74 65 72 6d 28 24 65  ULL}.set term($e
0960: 78 70 72 29 20 7b 7d 0a 73 65 74 20 65 78 70 72  xpr) {}.set expr
0970: 20 7b 66 20 49 53 20 4e 55 4c 4c 7d 0a 73 65 74   {f IS NULL}.set
0980: 20 74 65 72 6d 28 24 65 78 70 72 29 20 7b 7d 0a   term($expr) {}.
0990: 73 65 74 20 65 78 70 72 20 7b 67 20 49 53 20 4e  set expr {g IS N
09a0: 55 4c 4c 7d 0a 73 65 74 20 74 65 72 6d 28 24 65  ULL}.set term($e
09b0: 78 70 72 29 20 7b 7d 0a 0a 73 65 74 20 4e 54 20  xpr) {}..set NT 
09c0: 31 30 30 30 0a 73 65 74 20 74 65 72 6d 6c 69 73  1000.set termlis
09d0: 74 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 74  t [array names t
09e0: 65 72 6d 5d 0a 73 65 74 20 6e 74 65 72 6d 20 5b  erm].set nterm [
09f0: 6c 6c 65 6e 67 74 68 20 24 74 65 72 6d 6c 69 73  llength $termlis
0a00: 74 5d 0a 66 6f 72 20 7b 73 65 74 20 69 20 32 7d  t].for {set i 2}
0a10: 20 7b 24 69 3c 3d 24 4e 54 2b 31 7d 20 7b 69 6e   {$i<=$NT+1} {in
0a20: 63 72 20 69 7d 20 7b 0a 20 20 73 65 74 20 6e 20  cr i} {.  set n 
0a30: 5b 65 78 70 72 20 7b 69 6e 74 28 72 61 6e 64 28  [expr {int(rand(
0a40: 29 2a 31 30 29 2b 32 7d 5d 0a 20 20 73 65 74 20  )*10)+2}].  set 
0a50: 77 20 7b 7d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f  w {}.  unset -no
0a60: 63 6f 6d 70 6c 61 69 6e 20 72 0a 20 20 66 6f 72  complain r.  for
0a70: 20 7b 73 65 74 20 6a 20 30 7d 20 7b 24 6a 3c 24   {set j 0} {$j<$
0a80: 6e 7d 20 7b 69 6e 63 72 20 6a 7d 20 7b 0a 20 20  n} {incr j} {.  
0a90: 20 20 73 65 74 20 6b 20 5b 65 78 70 72 20 7b 69    set k [expr {i
0aa0: 6e 74 28 72 61 6e 64 28 29 2a 24 6e 74 65 72 6d  nt(rand()*$nterm
0ab0: 29 7d 5d 0a 20 20 20 20 73 65 74 20 74 20 5b 6c  )}].    set t [l
0ac0: 69 6e 64 65 78 20 24 74 65 72 6d 6c 69 73 74 20  index $termlist 
0ad0: 24 6b 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  $k].    lappend 
0ae0: 77 20 24 74 0a 20 20 20 20 66 6f 72 65 61 63 68  w $t.    foreach
0af0: 20 61 20 24 74 65 72 6d 28 24 74 29 20 7b 0a 20   a $term($t) {. 
0b00: 20 20 20 20 20 73 65 74 20 72 28 24 61 29 20 31       set r($a) 1
0b10: 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 69 66 20  .    }.  }.  if 
0b20: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 73 65  {[info exists se
0b30: 65 6e 28 24 77 29 5d 7d 20 7b 0a 20 20 20 20 69  en($w)]} {.    i
0b40: 6e 63 72 20 69 20 2d 31 0a 20 20 20 20 63 6f 6e  ncr i -1.    con
0b50: 74 69 6e 75 65 0a 20 20 7d 0a 20 20 73 65 74 20  tinue.  }.  set 
0b60: 73 65 65 6e 28 24 77 29 20 31 0a 20 20 73 65 74  seen($w) 1.  set
0b70: 20 72 65 73 75 6c 74 20 5b 6c 73 6f 72 74 20 2d   result [lsort -
0b80: 69 6e 74 20 5b 61 72 72 61 79 20 6e 61 6d 65 73  int [array names
0b90: 20 72 5d 5d 0a 20 20 70 75 74 73 20 22 64 6f 5f   r]].  puts "do_
0ba0: 74 65 73 74 20 77 68 65 72 65 37 2d 32 2e 24 69  test where7-2.$i
0bb0: 2e 31 20 5c 31 37 33 22 0a 20 20 70 75 74 73 20  .1 \173".  puts 
0bc0: 22 20 20 63 6f 75 6e 74 5f 73 74 65 70 73 5f 73  "  count_steps_s
0bd0: 6f 72 74 20 5c 31 37 33 22 0a 20 20 70 75 74 73  ort \173".  puts
0be0: 20 22 20 20 20 20 20 53 45 4c 45 43 54 20 61 20   "     SELECT a 
0bf0: 46 52 4f 4d 20 74 32 22 0a 20 20 73 65 74 20 77  FROM t2".  set w
0c00: 63 20 5b 6a 6f 69 6e 20 24 77 20 22 5c 6e 20 20  c [join $w "\n  
0c10: 20 20 20 20 20 20 20 4f 52 20 22 5d 0a 20 20 70         OR "].  p
0c20: 75 74 73 20 22 20 20 20 20 20 20 57 48 45 52 45  uts "      WHERE
0c30: 20 24 77 63 22 0a 20 20 70 75 74 73 20 22 20 20   $wc".  puts "  
0c40: 5c 31 37 35 22 0a 20 20 70 75 74 73 20 22 5c 31  \175".  puts "\1
0c50: 37 35 20 7b 24 72 65 73 75 6c 74 20 73 63 61 6e  75 {$result scan
0c60: 20 30 20 73 6f 72 74 20 30 7d 22 0a 20 20 70 75   0 sort 0}".  pu
0c70: 74 73 20 22 64 6f 5f 74 65 73 74 20 77 68 65 72  ts "do_test wher
0c80: 65 37 2d 32 2e 24 69 2e 32 20 5c 31 37 33 22 0a  e7-2.$i.2 \173".
0c90: 20 20 70 75 74 73 20 22 20 20 63 6f 75 6e 74 5f    puts "  count_
0ca0: 73 74 65 70 73 5f 73 6f 72 74 20 5c 31 37 33 22  steps_sort \173"
0cb0: 0a 20 20 70 75 74 73 20 22 20 20 20 20 20 53 45  .  puts "     SE
0cc0: 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 33 22 0a  LECT a FROM t3".
0cd0: 20 20 73 65 74 20 77 63 20 5b 6a 6f 69 6e 20 24    set wc [join $
0ce0: 77 20 22 5c 6e 20 20 20 20 20 20 20 20 20 4f 52  w "\n         OR
0cf0: 20 22 5d 0a 20 20 70 75 74 73 20 22 20 20 20 20   "].  puts "    
0d00: 20 20 57 48 45 52 45 20 24 77 63 22 0a 20 20 70    WHERE $wc".  p
0d10: 75 74 73 20 22 20 20 5c 31 37 35 22 0a 20 20 70  uts "  \175".  p
0d20: 75 74 73 20 22 5c 31 37 35 20 7b 24 72 65 73 75  uts "\175 {$resu
0d30: 6c 74 20 73 63 61 6e 20 30 20 73 6f 72 74 20 30  lt scan 0 sort 0
0d40: 7d 22 0a 7d 0a 70 75 74 73 20 22 66 69 6e 69 73  }".}.puts "finis
0d50: 68 5f 74 65 73 74 22 0a                          h_test".