/ Hex Artifact Content
Login

Artifact 9a5d0aaf3dd32ecf7b555049a163e2111d95a274:


0000: 23 20 32 30 30 31 20 53 65 70 74 65 6d 62 65 72  # 2001 September
0010: 20 31 35 0a 23 0a 23 20 54 68 65 20 61 75 74 68   15.#.# The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67  place of.# a leg
0060: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0070: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23  is a blessing:.#
0080: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  .#    May you do
0090: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
00a0: 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  il..#    May you
00b0: 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73   find forgivenes
00c0: 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61  s for yourself a
00d0: 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72  nd forgive other
00e0: 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  s..#    May you 
00f0: 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65  share freely, ne
0100: 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20  ver taking more 
0110: 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23  than you give..#
0120: 0a 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .#**************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73  *********.# This
0170: 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73   file implements
0180: 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74   regression test
0190: 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62  s for SQLite lib
01a0: 72 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63  rary.  The.# foc
01b0: 75 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20  us of this file 
01c0: 69 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 75  is testing the u
01d0: 73 65 20 6f 66 20 69 6e 64 69 63 65 73 20 69 6e  se of indices in
01e0: 20 57 48 45 52 45 20 63 6c 61 73 65 73 2e 0a 23   WHERE clases..#
01f0: 0a 23 20 24 49 64 3a 20 77 68 65 72 65 2e 74 65  .# $Id: where.te
0200: 73 74 2c 76 20 31 2e 33 34 20 32 30 30 35 2f 30  st,v 1.34 2005/0
0210: 39 2f 30 31 20 31 32 3a 31 36 3a 32 39 20 64 72  9/01 12:16:29 dr
0220: 68 20 45 78 70 20 24 0a 0a 73 65 74 20 74 65 73  h Exp $..set tes
0230: 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61  tdir [file dirna
0240: 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63  me $argv0].sourc
0250: 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74 65  e $testdir/teste
0260: 72 2e 74 63 6c 0a 0a 23 20 42 75 69 6c 64 20 73  r.tcl..# Build s
0270: 6f 6d 65 20 74 65 73 74 20 64 61 74 61 0a 23 0a  ome test data.#.
0280: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e  do_test where-1.
0290: 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  0 {.  execsql {.
02a0: 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45      CREATE TABLE
02b0: 20 74 31 28 77 20 69 6e 74 2c 20 78 20 69 6e 74   t1(w int, x int
02c0: 2c 20 79 20 69 6e 74 29 3b 0a 20 20 20 20 43 52  , y int);.    CR
02d0: 45 41 54 45 20 54 41 42 4c 45 20 74 32 28 70 20  EATE TABLE t2(p 
02e0: 69 6e 74 2c 20 71 20 69 6e 74 2c 20 72 20 69 6e  int, q int, r in
02f0: 74 2c 20 73 20 69 6e 74 29 3b 0a 20 20 7d 0a 20  t, s int);.  }. 
0300: 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b   for {set i 1} {
0310: 24 69 3c 3d 31 30 30 7d 20 7b 69 6e 63 72 20 69  $i<=100} {incr i
0320: 7d 20 7b 0a 20 20 20 20 73 65 74 20 77 20 24 69  } {.    set w $i
0330: 0a 20 20 20 20 73 65 74 20 78 20 5b 65 78 70 72  .    set x [expr
0340: 20 7b 69 6e 74 28 6c 6f 67 28 24 69 29 2f 6c 6f   {int(log($i)/lo
0350: 67 28 32 29 29 7d 5d 0a 20 20 20 20 73 65 74 20  g(2))}].    set 
0360: 79 20 5b 65 78 70 72 20 7b 24 69 2a 24 69 20 2b  y [expr {$i*$i +
0370: 20 32 2a 24 69 20 2b 20 31 7d 5d 0a 20 20 20 20   2*$i + 1}].    
0380: 65 78 65 63 73 71 6c 20 22 49 4e 53 45 52 54 20  execsql "INSERT 
0390: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 24  INTO t1 VALUES($
03a0: 77 2c 24 78 2c 24 79 29 22 0a 20 20 7d 0a 0a 20  w,$x,$y)".  }.. 
03b0: 20 69 66 63 61 70 61 62 6c 65 20 73 75 62 71 75   ifcapable subqu
03c0: 65 72 79 20 7b 0a 20 20 20 20 65 78 65 63 73 71  ery {.    execsq
03d0: 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52 54  l {.      INSERT
03e0: 20 49 4e 54 4f 20 74 32 20 53 45 4c 45 43 54 20   INTO t2 SELECT 
03f0: 31 30 31 2d 77 2c 20 78 2c 20 28 53 45 4c 45 43  101-w, x, (SELEC
0400: 54 20 6d 61 78 28 79 29 20 46 52 4f 4d 20 74 31  T max(y) FROM t1
0410: 29 2b 31 2d 79 2c 20 79 20 46 52 4f 4d 20 74 31  )+1-y, y FROM t1
0420: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 65 6c 73 65  ;.    }.  } else
0430: 20 7b 0a 20 20 20 20 73 65 74 20 6d 61 78 79 20   {.    set maxy 
0440: 5b 65 78 65 63 73 71 6c 20 7b 73 65 6c 65 63 74  [execsql {select
0450: 20 6d 61 78 28 79 29 20 66 72 6f 6d 20 74 31 7d   max(y) from t1}
0460: 5d 0a 20 20 20 20 65 78 65 63 73 71 6c 20 22 0a  ].    execsql ".
0470: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
0480: 4f 20 74 32 20 53 45 4c 45 43 54 20 31 30 31 2d  O t2 SELECT 101-
0490: 77 2c 20 78 2c 20 24 6d 61 78 79 2b 31 2d 79 2c  w, x, $maxy+1-y,
04a0: 20 79 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20   y FROM t1;.    
04b0: 22 0a 20 20 7d 0a 0a 20 20 65 78 65 63 73 71 6c  ".  }..  execsql
04c0: 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e   {.    CREATE IN
04d0: 44 45 58 20 69 31 77 20 4f 4e 20 74 31 28 77 29  DEX i1w ON t1(w)
04e0: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44  ;.    CREATE IND
04f0: 45 58 20 69 31 78 79 20 4f 4e 20 74 31 28 78 2c  EX i1xy ON t1(x,
0500: 79 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49  y);.    CREATE I
0510: 4e 44 45 58 20 69 32 70 20 4f 4e 20 74 32 28 70  NDEX i2p ON t2(p
0520: 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e  );.    CREATE IN
0530: 44 45 58 20 69 32 72 20 4f 4e 20 74 32 28 72 29  DEX i2r ON t2(r)
0540: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44  ;.    CREATE IND
0550: 45 58 20 69 32 71 73 20 4f 4e 20 74 32 28 71 2c  EX i2qs ON t2(q,
0560: 20 73 29 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23   s);.  }.} {}..#
0570: 20 44 6f 20 61 6e 20 53 51 4c 20 73 74 61 74 65   Do an SQL state
0580: 6d 65 6e 74 2e 20 20 41 70 70 65 6e 64 20 74 68  ment.  Append th
0590: 65 20 73 65 61 72 63 68 20 63 6f 75 6e 74 20 74  e search count t
05a0: 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65  o the end of the
05b0: 20 72 65 73 75 6c 74 2e 0a 23 0a 70 72 6f 63 20   result..#.proc 
05c0: 63 6f 75 6e 74 20 73 71 6c 20 7b 0a 20 20 73 65  count sql {.  se
05d0: 74 20 3a 3a 73 71 6c 69 74 65 5f 73 65 61 72 63  t ::sqlite_searc
05e0: 68 5f 63 6f 75 6e 74 20 30 0a 20 20 72 65 74 75  h_count 0.  retu
05f0: 72 6e 20 5b 63 6f 6e 63 61 74 20 5b 65 78 65 63  rn [concat [exec
0600: 73 71 6c 20 24 73 71 6c 5d 20 24 3a 3a 73 71 6c  sql $sql] $::sql
0610: 69 74 65 5f 73 65 61 72 63 68 5f 63 6f 75 6e 74  ite_search_count
0620: 5d 0a 7d 0a 0a 23 20 56 65 72 69 66 79 20 74 68  ].}..# Verify th
0630: 61 74 20 71 75 65 72 69 65 73 20 75 73 65 20 61  at queries use a
0640: 6e 20 69 6e 64 65 78 2e 20 20 57 65 20 61 72 65  n index.  We are
0650: 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
0660: 61 6c 20 76 61 72 69 61 62 6c 65 0a 23 20 22 73  al variable.# "s
0670: 71 6c 69 74 65 5f 73 65 61 72 63 68 5f 63 6f 75  qlite_search_cou
0680: 6e 74 22 20 77 68 69 63 68 20 74 61 6c 6c 79 73  nt" which tallys
0690: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65   the number of e
06a0: 78 65 63 75 74 69 6f 6e 73 20 6f 66 20 4d 6f 76  xecutions of Mov
06b0: 65 54 6f 0a 23 20 61 6e 64 20 4e 65 78 74 20 6f  eTo.# and Next o
06c0: 70 65 72 61 74 6f 72 73 20 69 6e 20 74 68 65 20  perators in the 
06d0: 56 44 42 45 2e 20 20 42 79 20 76 65 72 69 66 69  VDBE.  By verifi
06e0: 6e 67 20 74 68 61 74 20 74 68 65 20 73 65 61 72  ng that the sear
06f0: 63 68 20 63 6f 75 6e 74 20 69 73 0a 23 20 73 6d  ch count is.# sm
0700: 61 6c 6c 20 77 65 20 63 61 6e 20 62 65 20 61 73  all we can be as
0710: 73 75 72 65 64 20 74 68 61 74 20 69 6e 64 69 63  sured that indic
0720: 65 73 20 61 72 65 20 62 65 69 6e 67 20 75 73 65  es are being use
0730: 64 20 70 72 6f 70 65 72 6c 79 2e 0a 23 0a 64 6f  d properly..#.do
0740: 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e 31 20  _test where-1.1 
0750: 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c 45 43  {.  count {SELEC
0760: 54 20 78 2c 20 79 20 46 52 4f 4d 20 74 31 20 57  T x, y FROM t1 W
0770: 48 45 52 45 20 77 3d 31 30 7d 0a 7d 20 7b 33 20  HERE w=10}.} {3 
0780: 31 32 31 20 33 7d 0a 64 6f 5f 74 65 73 74 20 77  121 3}.do_test w
0790: 68 65 72 65 2d 31 2e 31 2e 32 20 7b 0a 20 20 73  here-1.1.2 {.  s
07a0: 65 74 20 73 71 6c 69 74 65 5f 71 75 65 72 79 5f  et sqlite_query_
07b0: 70 6c 61 6e 0a 7d 20 7b 74 31 20 69 31 77 7d 0a  plan.} {t1 i1w}.
07c0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e  do_test where-1.
07d0: 32 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c  2 {.  count {SEL
07e0: 45 43 54 20 78 2c 20 79 20 46 52 4f 4d 20 74 31  ECT x, y FROM t1
07f0: 20 57 48 45 52 45 20 77 3d 31 31 7d 0a 7d 20 7b   WHERE w=11}.} {
0800: 33 20 31 34 34 20 33 7d 0a 64 6f 5f 74 65 73 74  3 144 3}.do_test
0810: 20 77 68 65 72 65 2d 31 2e 33 20 7b 0a 20 20 63   where-1.3 {.  c
0820: 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 78 2c 20  ount {SELECT x, 
0830: 79 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  y FROM t1 WHERE 
0840: 31 31 3d 77 7d 0a 7d 20 7b 33 20 31 34 34 20 33  11=w}.} {3 144 3
0850: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
0860: 31 2e 34 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53  1.4 {.  count {S
0870: 45 4c 45 43 54 20 78 2c 20 79 20 46 52 4f 4d 20  ELECT x, y FROM 
0880: 74 31 20 57 48 45 52 45 20 31 31 3d 77 20 41 4e  t1 WHERE 11=w AN
0890: 44 20 78 3e 32 7d 0a 7d 20 7b 33 20 31 34 34 20  D x>2}.} {3 144 
08a0: 33 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  3}.do_test where
08b0: 2d 31 2e 34 2e 32 20 7b 0a 20 20 73 65 74 20 73  -1.4.2 {.  set s
08c0: 71 6c 69 74 65 5f 71 75 65 72 79 5f 70 6c 61 6e  qlite_query_plan
08d0: 0a 7d 20 7b 74 31 20 69 31 77 7d 0a 64 6f 5f 74  .} {t1 i1w}.do_t
08e0: 65 73 74 20 77 68 65 72 65 2d 31 2e 35 20 7b 0a  est where-1.5 {.
08f0: 20 20 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20    count {SELECT 
0900: 78 2c 20 79 20 46 52 4f 4d 20 74 31 20 57 48 45  x, y FROM t1 WHE
0910: 52 45 20 79 3c 32 30 30 20 41 4e 44 20 77 3d 31  RE y<200 AND w=1
0920: 31 20 41 4e 44 20 78 3e 32 7d 0a 7d 20 7b 33 20  1 AND x>2}.} {3 
0930: 31 34 34 20 33 7d 0a 64 6f 5f 74 65 73 74 20 77  144 3}.do_test w
0940: 68 65 72 65 2d 31 2e 35 2e 32 20 7b 0a 20 20 73  here-1.5.2 {.  s
0950: 65 74 20 73 71 6c 69 74 65 5f 71 75 65 72 79 5f  et sqlite_query_
0960: 70 6c 61 6e 0a 7d 20 7b 74 31 20 69 31 77 7d 0a  plan.} {t1 i1w}.
0970: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e  do_test where-1.
0980: 36 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c  6 {.  count {SEL
0990: 45 43 54 20 78 2c 20 79 20 46 52 4f 4d 20 74 31  ECT x, y FROM t1
09a0: 20 57 48 45 52 45 20 79 3c 32 30 30 20 41 4e 44   WHERE y<200 AND
09b0: 20 78 3e 32 20 41 4e 44 20 77 3d 31 31 7d 0a 7d   x>2 AND w=11}.}
09c0: 20 7b 33 20 31 34 34 20 33 7d 0a 64 6f 5f 74 65   {3 144 3}.do_te
09d0: 73 74 20 77 68 65 72 65 2d 31 2e 37 20 7b 0a 20  st where-1.7 {. 
09e0: 20 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 78   count {SELECT x
09f0: 2c 20 79 20 46 52 4f 4d 20 74 31 20 57 48 45 52  , y FROM t1 WHER
0a00: 45 20 77 3d 31 31 20 41 4e 44 20 79 3c 32 30 30  E w=11 AND y<200
0a10: 20 41 4e 44 20 78 3e 32 7d 0a 7d 20 7b 33 20 31   AND x>2}.} {3 1
0a20: 34 34 20 33 7d 0a 64 6f 5f 74 65 73 74 20 77 68  44 3}.do_test wh
0a30: 65 72 65 2d 31 2e 38 20 7b 0a 20 20 63 6f 75 6e  ere-1.8 {.  coun
0a40: 74 20 7b 53 45 4c 45 43 54 20 78 2c 20 79 20 46  t {SELECT x, y F
0a50: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 77 3e 31  ROM t1 WHERE w>1
0a60: 30 20 41 4e 44 20 79 3d 31 34 34 20 41 4e 44 20  0 AND y=144 AND 
0a70: 78 3d 33 7d 0a 7d 20 7b 33 20 31 34 34 20 33 7d  x=3}.} {3 144 3}
0a80: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31  .do_test where-1
0a90: 2e 38 2e 32 20 7b 0a 20 20 73 65 74 20 73 71 6c  .8.2 {.  set sql
0aa0: 69 74 65 5f 71 75 65 72 79 5f 70 6c 61 6e 0a 7d  ite_query_plan.}
0ab0: 20 7b 74 31 20 69 31 78 79 7d 0a 64 6f 5f 74 65   {t1 i1xy}.do_te
0ac0: 73 74 20 77 68 65 72 65 2d 31 2e 38 2e 33 20 7b  st where-1.8.3 {
0ad0: 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54  .  count {SELECT
0ae0: 20 78 2c 20 79 20 46 52 4f 4d 20 74 31 20 57 48   x, y FROM t1 WH
0af0: 45 52 45 20 79 3d 31 34 34 20 41 4e 44 20 78 3d  ERE y=144 AND x=
0b00: 33 7d 0a 20 20 73 65 74 20 73 71 6c 69 74 65 5f  3}.  set sqlite_
0b10: 71 75 65 72 79 5f 70 6c 61 6e 0a 7d 20 7b 7b 7d  query_plan.} {{}
0b20: 20 69 31 78 79 7d 0a 64 6f 5f 74 65 73 74 20 77   i1xy}.do_test w
0b30: 68 65 72 65 2d 31 2e 39 20 7b 0a 20 20 63 6f 75  here-1.9 {.  cou
0b40: 6e 74 20 7b 53 45 4c 45 43 54 20 78 2c 20 79 20  nt {SELECT x, y 
0b50: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 79 3d  FROM t1 WHERE y=
0b60: 31 34 34 20 41 4e 44 20 77 3e 31 30 20 41 4e 44  144 AND w>10 AND
0b70: 20 78 3d 33 7d 0a 7d 20 7b 33 20 31 34 34 20 33   x=3}.} {3 144 3
0b80: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
0b90: 31 2e 31 30 20 7b 0a 20 20 63 6f 75 6e 74 20 7b  1.10 {.  count {
0ba0: 53 45 4c 45 43 54 20 78 2c 20 79 20 46 52 4f 4d  SELECT x, y FROM
0bb0: 20 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e   t1 WHERE x=3 AN
0bc0: 44 20 77 3e 3d 31 30 20 41 4e 44 20 79 3d 31 32  D w>=10 AND y=12
0bd0: 31 7d 0a 7d 20 7b 33 20 31 32 31 20 33 7d 0a 64  1}.} {3 121 3}.d
0be0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e 31  o_test where-1.1
0bf0: 31 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c  1 {.  count {SEL
0c00: 45 43 54 20 78 2c 20 79 20 46 52 4f 4d 20 74 31  ECT x, y FROM t1
0c10: 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79   WHERE x=3 AND y
0c20: 3d 31 30 30 20 41 4e 44 20 77 3c 31 30 7d 0a 7d  =100 AND w<10}.}
0c30: 20 7b 33 20 31 30 30 20 33 7d 0a 0a 23 20 4e 65   {3 100 3}..# Ne
0c40: 77 20 66 6f 72 20 53 51 4c 69 74 65 20 76 65 72  w for SQLite ver
0c50: 73 69 6f 6e 20 32 2e 31 3a 20 56 65 72 69 66 79  sion 2.1: Verify
0c60: 20 74 68 61 74 20 74 68 61 74 20 69 6e 65 71 75   that that inequ
0c70: 61 6c 69 74 79 20 63 6f 6e 73 74 72 61 69 6e 74  ality constraint
0c80: 73 0a 23 20 61 72 65 20 75 73 65 64 20 63 6f 72  s.# are used cor
0c90: 72 65 63 74 6c 79 2e 0a 23 0a 64 6f 5f 74 65 73  rectly..#.do_tes
0ca0: 74 20 77 68 65 72 65 2d 31 2e 31 32 20 7b 0a 20  t where-1.12 {. 
0cb0: 20 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 77   count {SELECT w
0cc0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78   FROM t1 WHERE x
0cd0: 3d 33 20 41 4e 44 20 79 3c 31 30 30 7d 0a 7d 20  =3 AND y<100}.} 
0ce0: 7b 38 20 33 7d 0a 64 6f 5f 74 65 73 74 20 77 68  {8 3}.do_test wh
0cf0: 65 72 65 2d 31 2e 31 33 20 7b 0a 20 20 63 6f 75  ere-1.13 {.  cou
0d00: 6e 74 20 7b 53 45 4c 45 43 54 20 77 20 46 52 4f  nt {SELECT w FRO
0d10: 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33 20 41  M t1 WHERE x=3 A
0d20: 4e 44 20 31 30 30 3e 79 7d 0a 7d 20 7b 38 20 33  ND 100>y}.} {8 3
0d30: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
0d40: 31 2e 31 34 20 7b 0a 20 20 63 6f 75 6e 74 20 7b  1.14 {.  count {
0d50: 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31  SELECT w FROM t1
0d60: 20 57 48 45 52 45 20 33 3d 78 20 41 4e 44 20 79   WHERE 3=x AND y
0d70: 3c 31 30 30 7d 0a 7d 20 7b 38 20 33 7d 0a 64 6f  <100}.} {8 3}.do
0d80: 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e 31 35  _test where-1.15
0d90: 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c 45   {.  count {SELE
0da0: 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45  CT w FROM t1 WHE
0db0: 52 45 20 33 3d 78 20 41 4e 44 20 31 30 30 3e 79  RE 3=x AND 100>y
0dc0: 7d 0a 7d 20 7b 38 20 33 7d 0a 64 6f 5f 74 65 73  }.} {8 3}.do_tes
0dd0: 74 20 77 68 65 72 65 2d 31 2e 31 36 20 7b 0a 20  t where-1.16 {. 
0de0: 20 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 77   count {SELECT w
0df0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78   FROM t1 WHERE x
0e00: 3d 33 20 41 4e 44 20 79 3c 3d 31 30 30 7d 0a 7d  =3 AND y<=100}.}
0e10: 20 7b 38 20 39 20 35 7d 0a 64 6f 5f 74 65 73 74   {8 9 5}.do_test
0e20: 20 77 68 65 72 65 2d 31 2e 31 37 20 7b 0a 20 20   where-1.17 {.  
0e30: 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 77 20  count {SELECT w 
0e40: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d  FROM t1 WHERE x=
0e50: 33 20 41 4e 44 20 31 30 30 3e 3d 79 7d 0a 7d 20  3 AND 100>=y}.} 
0e60: 7b 38 20 39 20 35 7d 0a 64 6f 5f 74 65 73 74 20  {8 9 5}.do_test 
0e70: 77 68 65 72 65 2d 31 2e 31 38 20 7b 0a 20 20 63  where-1.18 {.  c
0e80: 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 77 20 46  ount {SELECT w F
0e90: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33  ROM t1 WHERE x=3
0ea0: 20 41 4e 44 20 79 3e 32 32 35 7d 0a 7d 20 7b 31   AND y>225}.} {1
0eb0: 35 20 33 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  5 3}.do_test whe
0ec0: 72 65 2d 31 2e 31 39 20 7b 0a 20 20 63 6f 75 6e  re-1.19 {.  coun
0ed0: 74 20 7b 53 45 4c 45 43 54 20 77 20 46 52 4f 4d  t {SELECT w FROM
0ee0: 20 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e   t1 WHERE x=3 AN
0ef0: 44 20 32 32 35 3c 79 7d 0a 7d 20 7b 31 35 20 33  D 225<y}.} {15 3
0f00: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
0f10: 31 2e 32 30 20 7b 0a 20 20 63 6f 75 6e 74 20 7b  1.20 {.  count {
0f20: 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31  SELECT w FROM t1
0f30: 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79   WHERE x=3 AND y
0f40: 3e 3d 32 32 35 7d 0a 7d 20 7b 31 34 20 31 35 20  >=225}.} {14 15 
0f50: 35 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  5}.do_test where
0f60: 2d 31 2e 32 31 20 7b 0a 20 20 63 6f 75 6e 74 20  -1.21 {.  count 
0f70: 7b 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74  {SELECT w FROM t
0f80: 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20  1 WHERE x=3 AND 
0f90: 32 32 35 3c 3d 79 7d 0a 7d 20 7b 31 34 20 31 35  225<=y}.} {14 15
0fa0: 20 35 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72   5}.do_test wher
0fb0: 65 2d 31 2e 32 32 20 7b 0a 20 20 63 6f 75 6e 74  e-1.22 {.  count
0fc0: 20 7b 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20   {SELECT w FROM 
0fd0: 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44  t1 WHERE x=3 AND
0fe0: 20 79 3e 31 32 31 20 41 4e 44 20 79 3c 31 39 36   y>121 AND y<196
0ff0: 7d 0a 7d 20 7b 31 31 20 31 32 20 35 7d 0a 64 6f  }.} {11 12 5}.do
1000: 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e 32 33  _test where-1.23
1010: 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c 45   {.  count {SELE
1020: 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45  CT w FROM t1 WHE
1030: 52 45 20 78 3d 33 20 41 4e 44 20 79 3e 3d 31 32  RE x=3 AND y>=12
1040: 31 20 41 4e 44 20 79 3c 3d 31 39 36 7d 0a 7d 20  1 AND y<=196}.} 
1050: 7b 31 30 20 31 31 20 31 32 20 31 33 20 39 7d 0a  {10 11 12 13 9}.
1060: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e  do_test where-1.
1070: 32 34 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45  24 {.  count {SE
1080: 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57  LECT w FROM t1 W
1090: 48 45 52 45 20 78 3d 33 20 41 4e 44 20 31 32 31  HERE x=3 AND 121
10a0: 3c 79 20 41 4e 44 20 31 39 36 3e 79 7d 0a 7d 20  <y AND 196>y}.} 
10b0: 7b 31 31 20 31 32 20 35 7d 0a 64 6f 5f 74 65 73  {11 12 5}.do_tes
10c0: 74 20 77 68 65 72 65 2d 31 2e 32 35 20 7b 0a 20  t where-1.25 {. 
10d0: 20 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 77   count {SELECT w
10e0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78   FROM t1 WHERE x
10f0: 3d 33 20 41 4e 44 20 31 32 31 3c 3d 79 20 41 4e  =3 AND 121<=y AN
1100: 44 20 31 39 36 3e 3d 79 7d 0a 7d 20 7b 31 30 20  D 196>=y}.} {10 
1110: 31 31 20 31 32 20 31 33 20 39 7d 0a 0a 23 20 4e  11 12 13 9}..# N
1120: 65 65 64 20 74 6f 20 77 6f 72 6b 20 6f 6e 20 6f  eed to work on o
1130: 70 74 69 6d 69 7a 69 6e 67 20 74 68 65 20 42 45  ptimizing the BE
1140: 54 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 2e 20  TWEEN operator. 
1150: 20 0a 23 0a 23 20 64 6f 5f 74 65 73 74 20 77 68   .#.# do_test wh
1160: 65 72 65 2d 31 2e 32 36 20 7b 0a 23 20 20 20 63  ere-1.26 {.#   c
1170: 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 77 20 46  ount {SELECT w F
1180: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33  ROM t1 WHERE x=3
1190: 20 41 4e 44 20 79 20 42 45 54 57 45 45 4e 20 31   AND y BETWEEN 1
11a0: 32 31 20 41 4e 44 20 31 39 36 7d 0a 23 20 7d 20  21 AND 196}.# } 
11b0: 7b 31 30 20 31 31 20 31 32 20 31 33 20 39 7d 0a  {10 11 12 13 9}.
11c0: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31  .do_test where-1
11d0: 2e 32 37 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53  .27 {.  count {S
11e0: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
11f0: 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79 2b  WHERE x=3 AND y+
1200: 31 3d 3d 31 32 32 7d 0a 7d 20 7b 31 30 20 31 37  1==122}.} {10 17
1210: 7d 0a 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  }..do_test where
1220: 2d 31 2e 32 38 20 7b 0a 20 20 63 6f 75 6e 74 20  -1.28 {.  count 
1230: 7b 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74  {SELECT w FROM t
1240: 31 20 57 48 45 52 45 20 78 2b 31 3d 34 20 41 4e  1 WHERE x+1=4 AN
1250: 44 20 79 2b 31 3d 3d 31 32 32 7d 0a 7d 20 7b 31  D y+1==122}.} {1
1260: 30 20 39 39 7d 0a 64 6f 5f 74 65 73 74 20 77 68  0 99}.do_test wh
1270: 65 72 65 2d 31 2e 32 39 20 7b 0a 20 20 63 6f 75  ere-1.29 {.  cou
1280: 6e 74 20 7b 53 45 4c 45 43 54 20 77 20 46 52 4f  nt {SELECT w FRO
1290: 4d 20 74 31 20 57 48 45 52 45 20 79 3d 3d 31 32  M t1 WHERE y==12
12a0: 31 7d 0a 7d 20 7b 31 30 20 39 39 7d 0a 0a 0a 64  1}.} {10 99}...d
12b0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e 33  o_test where-1.3
12c0: 30 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c  0 {.  count {SEL
12d0: 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48  ECT w FROM t1 WH
12e0: 45 52 45 20 77 3e 39 37 7d 0a 7d 20 7b 39 38 20  ERE w>97}.} {98 
12f0: 39 39 20 31 30 30 20 33 7d 0a 64 6f 5f 74 65 73  99 100 3}.do_tes
1300: 74 20 77 68 65 72 65 2d 31 2e 33 31 20 7b 0a 20  t where-1.31 {. 
1310: 20 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 77   count {SELECT w
1320: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 77   FROM t1 WHERE w
1330: 3e 3d 39 37 7d 0a 7d 20 7b 39 37 20 39 38 20 39  >=97}.} {97 98 9
1340: 39 20 31 30 30 20 34 7d 0a 64 6f 5f 74 65 73 74  9 100 4}.do_test
1350: 20 77 68 65 72 65 2d 31 2e 33 33 20 7b 0a 20 20   where-1.33 {.  
1360: 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 77 20  count {SELECT w 
1370: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 77 3d  FROM t1 WHERE w=
1380: 3d 39 37 7d 0a 7d 20 7b 39 37 20 32 7d 0a 64 6f  =97}.} {97 2}.do
1390: 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e 33 33  _test where-1.33
13a0: 2e 31 20 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53  .1  {.  count {S
13b0: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
13c0: 57 48 45 52 45 20 77 3c 3d 39 37 20 41 4e 44 20  WHERE w<=97 AND 
13d0: 77 3d 3d 39 37 7d 0a 7d 20 7b 39 37 20 32 7d 0a  w==97}.} {97 2}.
13e0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e  do_test where-1.
13f0: 33 33 2e 32 20 20 7b 0a 20 20 63 6f 75 6e 74 20  33.2  {.  count 
1400: 7b 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74  {SELECT w FROM t
1410: 31 20 57 48 45 52 45 20 77 3c 39 38 20 41 4e 44  1 WHERE w<98 AND
1420: 20 77 3d 3d 39 37 7d 0a 7d 20 7b 39 37 20 32 7d   w==97}.} {97 2}
1430: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31  .do_test where-1
1440: 2e 33 33 2e 33 20 20 7b 0a 20 20 63 6f 75 6e 74  .33.3  {.  count
1450: 20 7b 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20   {SELECT w FROM 
1460: 74 31 20 57 48 45 52 45 20 77 3e 3d 39 37 20 41  t1 WHERE w>=97 A
1470: 4e 44 20 77 3d 3d 39 37 7d 0a 7d 20 7b 39 37 20  ND w==97}.} {97 
1480: 32 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  2}.do_test where
1490: 2d 31 2e 33 33 2e 34 20 20 7b 0a 20 20 63 6f 75  -1.33.4  {.  cou
14a0: 6e 74 20 7b 53 45 4c 45 43 54 20 77 20 46 52 4f  nt {SELECT w FRO
14b0: 4d 20 74 31 20 57 48 45 52 45 20 77 3e 39 36 20  M t1 WHERE w>96 
14c0: 41 4e 44 20 77 3d 3d 39 37 7d 0a 7d 20 7b 39 37  AND w==97}.} {97
14d0: 20 32 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72   2}.do_test wher
14e0: 65 2d 31 2e 33 33 2e 35 20 20 7b 0a 20 20 63 6f  e-1.33.5  {.  co
14f0: 75 6e 74 20 7b 53 45 4c 45 43 54 20 77 20 46 52  unt {SELECT w FR
1500: 4f 4d 20 74 31 20 57 48 45 52 45 20 77 3d 3d 39  OM t1 WHERE w==9
1510: 37 20 41 4e 44 20 77 3d 3d 39 37 7d 0a 7d 20 7b  7 AND w==97}.} {
1520: 39 37 20 32 7d 0a 64 6f 5f 74 65 73 74 20 77 68  97 2}.do_test wh
1530: 65 72 65 2d 31 2e 33 34 20 7b 0a 20 20 63 6f 75  ere-1.34 {.  cou
1540: 6e 74 20 7b 53 45 4c 45 43 54 20 77 20 46 52 4f  nt {SELECT w FRO
1550: 4d 20 74 31 20 57 48 45 52 45 20 77 2b 31 3d 3d  M t1 WHERE w+1==
1560: 39 38 7d 0a 7d 20 7b 39 37 20 39 39 7d 0a 64 6f  98}.} {97 99}.do
1570: 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e 33 35  _test where-1.35
1580: 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c 45   {.  count {SELE
1590: 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45  CT w FROM t1 WHE
15a0: 52 45 20 77 3c 33 7d 0a 7d 20 7b 31 20 32 20 32  RE w<3}.} {1 2 2
15b0: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
15c0: 31 2e 33 36 20 7b 0a 20 20 63 6f 75 6e 74 20 7b  1.36 {.  count {
15d0: 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31  SELECT w FROM t1
15e0: 20 57 48 45 52 45 20 77 3c 3d 33 7d 0a 7d 20 7b   WHERE w<=3}.} {
15f0: 31 20 32 20 33 20 33 7d 0a 64 6f 5f 74 65 73 74  1 2 3 3}.do_test
1600: 20 77 68 65 72 65 2d 31 2e 33 37 20 7b 0a 20 20   where-1.37 {.  
1610: 63 6f 75 6e 74 20 7b 53 45 4c 45 43 54 20 77 20  count {SELECT w 
1620: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 77 2b  FROM t1 WHERE w+
1630: 31 3c 3d 34 20 4f 52 44 45 52 20 42 59 20 77 7d  1<=4 ORDER BY w}
1640: 0a 7d 20 7b 31 20 32 20 33 20 39 39 7d 0a 0a 64  .} {1 2 3 99}..d
1650: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e 33  o_test where-1.3
1660: 38 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45 4c  8 {.  count {SEL
1670: 45 43 54 20 28 77 29 20 46 52 4f 4d 20 74 31 20  ECT (w) FROM t1 
1680: 57 48 45 52 45 20 28 77 29 3e 28 39 37 29 7d 0a  WHERE (w)>(97)}.
1690: 7d 20 7b 39 38 20 39 39 20 31 30 30 20 33 7d 0a  } {98 99 100 3}.
16a0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e  do_test where-1.
16b0: 33 39 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45  39 {.  count {SE
16c0: 4c 45 43 54 20 28 77 29 20 46 52 4f 4d 20 74 31  LECT (w) FROM t1
16d0: 20 57 48 45 52 45 20 28 77 29 3e 3d 28 39 37 29   WHERE (w)>=(97)
16e0: 7d 0a 7d 20 7b 39 37 20 39 38 20 39 39 20 31 30  }.} {97 98 99 10
16f0: 30 20 34 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  0 4}.do_test whe
1700: 72 65 2d 31 2e 34 30 20 7b 0a 20 20 63 6f 75 6e  re-1.40 {.  coun
1710: 74 20 7b 53 45 4c 45 43 54 20 28 77 29 20 46 52  t {SELECT (w) FR
1720: 4f 4d 20 74 31 20 57 48 45 52 45 20 28 77 29 3d  OM t1 WHERE (w)=
1730: 3d 28 39 37 29 7d 0a 7d 20 7b 39 37 20 32 7d 0a  =(97)}.} {97 2}.
1740: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 2e  do_test where-1.
1750: 34 31 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 53 45  41 {.  count {SE
1760: 4c 45 43 54 20 28 77 29 20 46 52 4f 4d 20 74 31  LECT (w) FROM t1
1770: 20 57 48 45 52 45 20 28 28 77 29 2b 28 31 29 29   WHERE ((w)+(1))
1780: 3d 3d 28 39 38 29 7d 0a 7d 20 7b 39 37 20 39 39  ==(98)}.} {97 99
1790: 7d 0a 0a 0a 23 20 44 6f 20 74 68 65 20 73 61 6d  }...# Do the sam
17a0: 65 20 6b 69 6e 64 20 6f 66 20 74 68 69 6e 67 20  e kind of thing 
17b0: 65 78 63 65 70 74 20 75 73 65 20 61 20 6a 6f 69  except use a joi
17c0: 6e 20 61 73 20 74 68 65 20 64 61 74 61 20 73 6f  n as the data so
17d0: 75 72 63 65 2e 0a 23 0a 64 6f 5f 74 65 73 74 20  urce..#.do_test 
17e0: 77 68 65 72 65 2d 32 2e 31 20 7b 0a 62 74 72 65  where-2.1 {.btre
17f0: 65 5f 62 72 65 61 6b 70 6f 69 6e 74 0a 20 20 63  e_breakpoint.  c
1800: 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  ount {.    SELEC
1810: 54 20 77 2c 20 70 20 46 52 4f 4d 20 74 32 2c 20  T w, p FROM t2, 
1820: 74 31 0a 20 20 20 20 57 48 45 52 45 20 78 3d 71  t1.    WHERE x=q
1830: 20 41 4e 44 20 79 3d 73 20 41 4e 44 20 72 3d 38   AND y=s AND r=8
1840: 39 37 37 0a 20 20 7d 0a 7d 20 7b 33 34 20 36 37  977.  }.} {34 67
1850: 20 36 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72   6}.do_test wher
1860: 65 2d 32 2e 32 20 7b 0a 20 20 63 6f 75 6e 74 20  e-2.2 {.  count 
1870: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 2c 20  {.    SELECT w, 
1880: 70 20 46 52 4f 4d 20 74 32 2c 20 74 31 0a 20 20  p FROM t2, t1.  
1890: 20 20 57 48 45 52 45 20 78 3d 71 20 41 4e 44 20    WHERE x=q AND 
18a0: 73 3d 79 20 41 4e 44 20 72 3d 38 39 37 37 0a 20  s=y AND r=8977. 
18b0: 20 7d 0a 7d 20 7b 33 34 20 36 37 20 36 7d 0a 64   }.} {34 67 6}.d
18c0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 32 2e 33  o_test where-2.3
18d0: 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20   {.  count {.   
18e0: 20 53 45 4c 45 43 54 20 77 2c 20 70 20 46 52 4f   SELECT w, p FRO
18f0: 4d 20 74 32 2c 20 74 31 0a 20 20 20 20 57 48 45  M t2, t1.    WHE
1900: 52 45 20 78 3d 71 20 41 4e 44 20 73 3d 79 20 41  RE x=q AND s=y A
1910: 4e 44 20 72 3d 38 39 37 37 20 41 4e 44 20 77 3e  ND r=8977 AND w>
1920: 31 30 0a 20 20 7d 0a 7d 20 7b 33 34 20 36 37 20  10.  }.} {34 67 
1930: 36 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  6}.do_test where
1940: 2d 32 2e 34 20 7b 0a 20 20 63 6f 75 6e 74 20 7b  -2.4 {.  count {
1950: 0a 20 20 20 20 53 45 4c 45 43 54 20 77 2c 20 70  .    SELECT w, p
1960: 20 46 52 4f 4d 20 74 32 2c 20 74 31 0a 20 20 20   FROM t2, t1.   
1970: 20 57 48 45 52 45 20 70 3c 38 30 20 41 4e 44 20   WHERE p<80 AND 
1980: 78 3d 71 20 41 4e 44 20 73 3d 79 20 41 4e 44 20  x=q AND s=y AND 
1990: 72 3d 38 39 37 37 20 41 4e 44 20 77 3e 31 30 0a  r=8977 AND w>10.
19a0: 20 20 7d 0a 7d 20 7b 33 34 20 36 37 20 36 7d 0a    }.} {34 67 6}.
19b0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 32 2e  do_test where-2.
19c0: 35 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20  5 {.  count {.  
19d0: 20 20 53 45 4c 45 43 54 20 77 2c 20 70 20 46 52    SELECT w, p FR
19e0: 4f 4d 20 74 32 2c 20 74 31 0a 20 20 20 20 57 48  OM t2, t1.    WH
19f0: 45 52 45 20 70 3c 38 30 20 41 4e 44 20 78 3d 71  ERE p<80 AND x=q
1a00: 20 41 4e 44 20 38 39 37 37 3d 72 20 41 4e 44 20   AND 8977=r AND 
1a10: 73 3d 79 20 41 4e 44 20 77 3e 31 30 0a 20 20 7d  s=y AND w>10.  }
1a20: 0a 7d 20 7b 33 34 20 36 37 20 36 7d 0a 64 6f 5f  .} {34 67 6}.do_
1a30: 74 65 73 74 20 77 68 65 72 65 2d 32 2e 36 20 7b  test where-2.6 {
1a40: 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53  .  count {.    S
1a50: 45 4c 45 43 54 20 77 2c 20 70 20 46 52 4f 4d 20  ELECT w, p FROM 
1a60: 74 32 2c 20 74 31 0a 20 20 20 20 57 48 45 52 45  t2, t1.    WHERE
1a70: 20 78 3d 71 20 41 4e 44 20 70 3d 37 37 20 41 4e   x=q AND p=77 AN
1a80: 44 20 73 3d 79 20 41 4e 44 20 77 3e 35 0a 20 20  D s=y AND w>5.  
1a90: 7d 0a 7d 20 7b 32 34 20 37 37 20 36 7d 0a 64 6f  }.} {24 77 6}.do
1aa0: 5f 74 65 73 74 20 77 68 65 72 65 2d 32 2e 37 20  _test where-2.7 
1ab0: 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20  {.  count {.    
1ac0: 53 45 4c 45 43 54 20 77 2c 20 70 20 46 52 4f 4d  SELECT w, p FROM
1ad0: 20 74 31 2c 20 74 32 0a 20 20 20 20 57 48 45 52   t1, t2.    WHER
1ae0: 45 20 78 3d 71 20 41 4e 44 20 70 3e 37 37 20 41  E x=q AND p>77 A
1af0: 4e 44 20 73 3d 79 20 41 4e 44 20 77 3d 35 0a 20  ND s=y AND w=5. 
1b00: 20 7d 0a 7d 20 7b 35 20 39 36 20 36 7d 0a 0a 23   }.} {5 96 6}..#
1b10: 20 4c 65 74 73 20 64 6f 20 61 20 33 2d 77 61 79   Lets do a 3-way
1b20: 20 6a 6f 69 6e 2e 0a 23 0a 64 6f 5f 74 65 73 74   join..#.do_test
1b30: 20 77 68 65 72 65 2d 33 2e 31 20 7b 0a 20 20 63   where-3.1 {.  c
1b40: 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  ount {.    SELEC
1b50: 54 20 41 2e 77 2c 20 42 2e 70 2c 20 43 2e 77 20  T A.w, B.p, C.w 
1b60: 46 52 4f 4d 20 74 31 20 61 73 20 41 2c 20 74 32  FROM t1 as A, t2
1b70: 20 61 73 20 42 2c 20 74 31 20 61 73 20 43 0a 20   as B, t1 as C. 
1b80: 20 20 20 57 48 45 52 45 20 43 2e 77 3d 31 30 31     WHERE C.w=101
1b90: 2d 42 2e 70 20 41 4e 44 20 42 2e 72 3d 31 30 32  -B.p AND B.r=102
1ba0: 30 32 2d 41 2e 79 20 41 4e 44 20 41 2e 77 3d 31  02-A.y AND A.w=1
1bb0: 31 0a 20 20 7d 0a 7d 20 7b 31 31 20 39 30 20 31  1.  }.} {11 90 1
1bc0: 31 20 38 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  1 8}.do_test whe
1bd0: 72 65 2d 33 2e 32 20 7b 0a 20 20 63 6f 75 6e 74  re-3.2 {.  count
1be0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 41 2e   {.    SELECT A.
1bf0: 77 2c 20 42 2e 70 2c 20 43 2e 77 20 46 52 4f 4d  w, B.p, C.w FROM
1c00: 20 74 31 20 61 73 20 41 2c 20 74 32 20 61 73 20   t1 as A, t2 as 
1c10: 42 2c 20 74 31 20 61 73 20 43 0a 20 20 20 20 57  B, t1 as C.    W
1c20: 48 45 52 45 20 43 2e 77 3d 31 30 31 2d 42 2e 70  HERE C.w=101-B.p
1c30: 20 41 4e 44 20 42 2e 72 3d 31 30 32 30 32 2d 41   AND B.r=10202-A
1c40: 2e 79 20 41 4e 44 20 41 2e 77 3d 31 32 0a 20 20  .y AND A.w=12.  
1c50: 7d 0a 7d 20 7b 31 32 20 38 39 20 31 32 20 38 7d  }.} {12 89 12 8}
1c60: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 33  .do_test where-3
1c70: 2e 33 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20  .3 {.  count {. 
1c80: 20 20 20 53 45 4c 45 43 54 20 41 2e 77 2c 20 42     SELECT A.w, B
1c90: 2e 70 2c 20 43 2e 77 20 46 52 4f 4d 20 74 31 20  .p, C.w FROM t1 
1ca0: 61 73 20 41 2c 20 74 32 20 61 73 20 42 2c 20 74  as A, t2 as B, t
1cb0: 31 20 61 73 20 43 0a 20 20 20 20 57 48 45 52 45  1 as C.    WHERE
1cc0: 20 41 2e 77 3d 31 35 20 41 4e 44 20 42 2e 70 3d   A.w=15 AND B.p=
1cd0: 43 2e 77 20 41 4e 44 20 42 2e 72 3d 31 30 32 30  C.w AND B.r=1020
1ce0: 32 2d 41 2e 79 0a 20 20 7d 0a 7d 20 7b 31 35 20  2-A.y.  }.} {15 
1cf0: 38 36 20 38 36 20 38 7d 0a 0a 23 20 54 65 73 74  86 86 8}..# Test
1d00: 20 74 6f 20 73 65 65 20 74 68 61 74 20 74 68 65   to see that the
1d10: 20 73 70 65 63 69 61 6c 20 63 61 73 65 20 6f 66   special case of
1d20: 20 61 20 63 6f 6e 73 74 61 6e 74 20 57 48 45 52   a constant WHER
1d30: 45 20 63 6c 61 75 73 65 20 69 73 0a 23 20 68 61  E clause is.# ha
1d40: 6e 64 6c 65 64 2e 0a 23 0a 64 6f 5f 74 65 73 74  ndled..#.do_test
1d50: 20 77 68 65 72 65 2d 34 2e 31 20 7b 0a 20 20 63   where-4.1 {.  c
1d60: 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  ount {.    SELEC
1d70: 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T * FROM t1 WHER
1d80: 45 20 30 0a 20 20 7d 0a 7d 20 7b 30 7d 0a 64 6f  E 0.  }.} {0}.do
1d90: 5f 74 65 73 74 20 77 68 65 72 65 2d 34 2e 32 20  _test where-4.2 
1da0: 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20  {.  count {.    
1db0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
1dc0: 20 57 48 45 52 45 20 31 20 4c 49 4d 49 54 20 31   WHERE 1 LIMIT 1
1dd0: 0a 20 20 7d 0a 7d 20 7b 31 20 30 20 34 20 31 7d  .  }.} {1 0 4 1}
1de0: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 34  .do_test where-4
1df0: 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .3 {.  execsql {
1e00: 0a 20 20 20 20 53 45 4c 45 43 54 20 39 39 20 57  .    SELECT 99 W
1e10: 48 45 52 45 20 30 0a 20 20 7d 0a 7d 20 7b 7d 0a  HERE 0.  }.} {}.
1e20: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 34 2e  do_test where-4.
1e30: 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  4 {.  execsql {.
1e40: 20 20 20 20 53 45 4c 45 43 54 20 39 39 20 57 48      SELECT 99 WH
1e50: 45 52 45 20 31 0a 20 20 7d 0a 7d 20 7b 39 39 7d  ERE 1.  }.} {99}
1e60: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 34  .do_test where-4
1e70: 2e 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .5 {.  execsql {
1e80: 0a 20 20 20 20 53 45 4c 45 43 54 20 39 39 20 57  .    SELECT 99 W
1e90: 48 45 52 45 20 30 2e 31 0a 20 20 7d 0a 7d 20 7b  HERE 0.1.  }.} {
1ea0: 39 39 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  99}.do_test wher
1eb0: 65 2d 34 2e 36 20 7b 0a 20 20 65 78 65 63 73 71  e-4.6 {.  execsq
1ec0: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 39  l {.    SELECT 9
1ed0: 39 20 57 48 45 52 45 20 30 2e 30 0a 20 20 7d 0a  9 WHERE 0.0.  }.
1ee0: 7d 20 7b 7d 0a 0a 23 20 56 65 72 69 66 79 20 74  } {}..# Verify t
1ef0: 68 61 74 20 49 4e 20 6f 70 65 72 61 74 6f 72 73  hat IN operators
1f00: 20 69 6e 20 61 20 57 48 45 52 45 20 63 6c 61 75   in a WHERE clau
1f10: 73 65 20 61 72 65 20 68 61 6e 64 6c 65 64 20 63  se are handled c
1f20: 6f 72 72 65 63 74 6c 79 2e 0a 23 20 4f 6d 69 74  orrectly..# Omit
1f30: 20 74 68 65 73 65 20 74 65 73 74 73 20 69 66 20   these tests if 
1f40: 74 68 65 20 62 75 69 6c 64 20 69 73 20 6e 6f 74  the build is not
1f50: 20 63 61 70 61 62 6c 65 20 6f 66 20 73 75 62 2d   capable of sub-
1f60: 71 75 65 72 69 65 73 2e 0a 23 0a 69 66 63 61 70  queries..#.ifcap
1f70: 61 62 6c 65 20 73 75 62 71 75 65 72 79 20 7b 0a  able subquery {.
1f80: 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d    do_test where-
1f90: 35 2e 31 20 7b 0a 20 20 20 20 63 6f 75 6e 74 20  5.1 {.    count 
1fa0: 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 2a  {.      SELECT *
1fb0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 72   FROM t1 WHERE r
1fc0: 6f 77 69 64 20 49 4e 20 28 31 2c 32 2c 33 2c 31  owid IN (1,2,3,1
1fd0: 32 33 34 29 20 6f 72 64 65 72 20 62 79 20 31 3b  234) order by 1;
1fe0: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 30 20  .    }.  } {1 0 
1ff0: 34 20 32 20 31 20 39 20 33 20 31 20 31 36 20 34  4 2 1 9 3 1 16 4
2000: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72  }.  do_test wher
2010: 65 2d 35 2e 32 20 7b 0a 20 20 20 20 63 6f 75 6e  e-5.2 {.    coun
2020: 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  t {.      SELECT
2030: 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   * FROM t1 WHERE
2040: 20 72 6f 77 69 64 2b 30 20 49 4e 20 28 31 2c 32   rowid+0 IN (1,2
2050: 2c 33 2c 31 32 33 34 29 20 6f 72 64 65 72 20 62  ,3,1234) order b
2060: 79 20 31 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  y 1;.    }.  } {
2070: 31 20 30 20 34 20 32 20 31 20 39 20 33 20 31 20  1 0 4 2 1 9 3 1 
2080: 31 36 20 31 39 39 7d 0a 20 20 64 6f 5f 74 65 73  16 199}.  do_tes
2090: 74 20 77 68 65 72 65 2d 35 2e 33 20 7b 0a 20 20  t where-5.3 {.  
20a0: 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20    count {.      
20b0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
20c0: 20 57 48 45 52 45 20 77 20 49 4e 20 28 2d 31 2c   WHERE w IN (-1,
20d0: 31 2c 32 2c 33 29 20 6f 72 64 65 72 20 62 79 20  1,2,3) order by 
20e0: 31 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20  1;.    }.  } {1 
20f0: 30 20 34 20 32 20 31 20 39 20 33 20 31 20 31 36  0 4 2 1 9 3 1 16
2100: 20 31 34 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77   14}.  do_test w
2110: 68 65 72 65 2d 35 2e 34 20 7b 0a 20 20 20 20 63  here-5.4 {.    c
2120: 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c  ount {.      SEL
2130: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
2140: 45 52 45 20 77 2b 30 20 49 4e 20 28 2d 31 2c 31  ERE w+0 IN (-1,1
2150: 2c 32 2c 33 29 20 6f 72 64 65 72 20 62 79 20 31  ,2,3) order by 1
2160: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 30  ;.    }.  } {1 0
2170: 20 34 20 32 20 31 20 39 20 33 20 31 20 31 36 20   4 2 1 9 3 1 16 
2180: 31 39 39 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77  199}.  do_test w
2190: 68 65 72 65 2d 35 2e 35 20 7b 0a 20 20 20 20 63  here-5.5 {.    c
21a0: 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c  ount {.      SEL
21b0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
21c0: 45 52 45 20 72 6f 77 69 64 20 49 4e 20 0a 20 20  ERE rowid IN .  
21d0: 20 20 20 20 20 20 20 28 73 65 6c 65 63 74 20 72         (select r
21e0: 6f 77 69 64 20 66 72 6f 6d 20 74 31 20 77 68 65  owid from t1 whe
21f0: 72 65 20 72 6f 77 69 64 20 49 4e 20 28 2d 31 2c  re rowid IN (-1,
2200: 32 2c 34 29 29 0a 20 20 20 20 20 20 4f 52 44 45  2,4)).      ORDE
2210: 52 20 42 59 20 31 3b 0a 20 20 20 20 7d 0a 20 20  R BY 1;.    }.  
2220: 7d 20 7b 32 20 31 20 39 20 34 20 32 20 32 35 20  } {2 1 9 4 2 25 
2230: 33 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65  3}.  do_test whe
2240: 72 65 2d 35 2e 36 20 7b 0a 20 20 20 20 63 6f 75  re-5.6 {.    cou
2250: 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43  nt {.      SELEC
2260: 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T * FROM t1 WHER
2270: 45 20 72 6f 77 69 64 2b 30 20 49 4e 20 0a 20 20  E rowid+0 IN .  
2280: 20 20 20 20 20 20 20 28 73 65 6c 65 63 74 20 72         (select r
2290: 6f 77 69 64 20 66 72 6f 6d 20 74 31 20 77 68 65  owid from t1 whe
22a0: 72 65 20 72 6f 77 69 64 20 49 4e 20 28 2d 31 2c  re rowid IN (-1,
22b0: 32 2c 34 29 29 0a 20 20 20 20 20 20 4f 52 44 45  2,4)).      ORDE
22c0: 52 20 42 59 20 31 3b 0a 20 20 20 20 7d 0a 20 20  R BY 1;.    }.  
22d0: 7d 20 7b 32 20 31 20 39 20 34 20 32 20 32 35 20  } {2 1 9 4 2 25 
22e0: 32 30 31 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77  201}.  do_test w
22f0: 68 65 72 65 2d 35 2e 37 20 7b 0a 20 20 20 20 63  here-5.7 {.    c
2300: 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c  ount {.      SEL
2310: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
2320: 45 52 45 20 77 20 49 4e 20 0a 20 20 20 20 20 20  ERE w IN .      
2330: 20 20 20 28 73 65 6c 65 63 74 20 72 6f 77 69 64     (select rowid
2340: 20 66 72 6f 6d 20 74 31 20 77 68 65 72 65 20 72   from t1 where r
2350: 6f 77 69 64 20 49 4e 20 28 2d 31 2c 32 2c 34 29  owid IN (-1,2,4)
2360: 29 0a 20 20 20 20 20 20 4f 52 44 45 52 20 42 59  ).      ORDER BY
2370: 20 31 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 32   1;.    }.  } {2
2380: 20 31 20 39 20 34 20 32 20 32 35 20 39 7d 0a 20   1 9 4 2 25 9}. 
2390: 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 35   do_test where-5
23a0: 2e 38 20 7b 0a 20 20 20 20 63 6f 75 6e 74 20 7b  .8 {.    count {
23b0: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20  .      SELECT * 
23c0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 77 2b  FROM t1 WHERE w+
23d0: 30 20 49 4e 20 0a 20 20 20 20 20 20 20 20 20 28  0 IN .         (
23e0: 73 65 6c 65 63 74 20 72 6f 77 69 64 20 66 72 6f  select rowid fro
23f0: 6d 20 74 31 20 77 68 65 72 65 20 72 6f 77 69 64  m t1 where rowid
2400: 20 49 4e 20 28 2d 31 2c 32 2c 34 29 29 0a 20 20   IN (-1,2,4)).  
2410: 20 20 20 20 4f 52 44 45 52 20 42 59 20 31 3b 0a      ORDER BY 1;.
2420: 20 20 20 20 7d 0a 20 20 7d 20 7b 32 20 31 20 39      }.  } {2 1 9
2430: 20 34 20 32 20 32 35 20 32 30 31 7d 0a 20 20 64   4 2 25 201}.  d
2440: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 35 2e 39  o_test where-5.9
2450: 20 7b 0a 20 20 20 20 63 6f 75 6e 74 20 7b 0a 20   {.    count {. 
2460: 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52       SELECT * FR
2470: 4f 4d 20 74 31 20 57 48 45 52 45 20 78 20 49 4e  OM t1 WHERE x IN
2480: 20 28 31 2c 37 29 20 4f 52 44 45 52 20 42 59 20   (1,7) ORDER BY 
2490: 31 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 32 20  1;.    }.  } {2 
24a0: 31 20 39 20 33 20 31 20 31 36 20 37 7d 0a 20 20  1 9 3 1 16 7}.  
24b0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 35 2e  do_test where-5.
24c0: 31 30 20 7b 0a 20 20 20 20 63 6f 75 6e 74 20 7b  10 {.    count {
24d0: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20  .      SELECT * 
24e0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 2b  FROM t1 WHERE x+
24f0: 30 20 49 4e 20 28 31 2c 37 29 20 4f 52 44 45 52  0 IN (1,7) ORDER
2500: 20 42 59 20 31 3b 0a 20 20 20 20 7d 0a 20 20 7d   BY 1;.    }.  }
2510: 20 7b 32 20 31 20 39 20 33 20 31 20 31 36 20 31   {2 1 9 3 1 16 1
2520: 39 39 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  99}.  do_test wh
2530: 65 72 65 2d 35 2e 31 31 20 7b 0a 20 20 20 20 63  ere-5.11 {.    c
2540: 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c  ount {.      SEL
2550: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
2560: 45 52 45 20 79 20 49 4e 20 28 36 34 30 30 2c 38  ERE y IN (6400,8
2570: 31 30 30 29 20 4f 52 44 45 52 20 42 59 20 31 3b  100) ORDER BY 1;
2580: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 37 39 20 36  .    }.  } {79 6
2590: 20 36 34 30 30 20 38 39 20 36 20 38 31 30 30 20   6400 89 6 8100 
25a0: 31 39 39 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77  199}.  do_test w
25b0: 68 65 72 65 2d 35 2e 31 32 20 7b 0a 20 20 20 20  here-5.12 {.    
25c0: 63 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45  count {.      SE
25d0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57  LECT * FROM t1 W
25e0: 48 45 52 45 20 78 3d 36 20 41 4e 44 20 79 20 49  HERE x=6 AND y I
25f0: 4e 20 28 36 34 30 30 2c 38 31 30 30 29 20 4f 52  N (6400,8100) OR
2600: 44 45 52 20 42 59 20 31 3b 0a 20 20 20 20 7d 0a  DER BY 1;.    }.
2610: 20 20 7d 20 7b 37 39 20 36 20 36 34 30 30 20 38    } {79 6 6400 8
2620: 39 20 36 20 38 31 30 30 20 37 7d 0a 20 20 64 6f  9 6 8100 7}.  do
2630: 5f 74 65 73 74 20 77 68 65 72 65 2d 35 2e 31 33  _test where-5.13
2640: 20 7b 0a 20 20 20 20 63 6f 75 6e 74 20 7b 0a 20   {.    count {. 
2650: 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52       SELECT * FR
2660: 4f 4d 20 74 31 20 57 48 45 52 45 20 78 20 49 4e  OM t1 WHERE x IN
2670: 20 28 31 2c 37 29 20 41 4e 44 20 79 20 4e 4f 54   (1,7) AND y NOT
2680: 20 49 4e 20 28 36 34 30 30 2c 38 31 30 30 29 20   IN (6400,8100) 
2690: 4f 52 44 45 52 20 42 59 20 31 3b 0a 20 20 20 20  ORDER BY 1;.    
26a0: 7d 0a 20 20 7d 20 7b 32 20 31 20 39 20 33 20 31  }.  } {2 1 9 3 1
26b0: 20 31 36 20 37 7d 0a 20 20 64 6f 5f 74 65 73 74   16 7}.  do_test
26c0: 20 77 68 65 72 65 2d 35 2e 31 34 20 7b 0a 20 20   where-5.14 {.  
26d0: 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20    count {.      
26e0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
26f0: 20 57 48 45 52 45 20 78 20 49 4e 20 28 31 2c 37   WHERE x IN (1,7
2700: 29 20 41 4e 44 20 79 20 49 4e 20 28 39 2c 31 30  ) AND y IN (9,10
2710: 29 20 4f 52 44 45 52 20 42 59 20 31 3b 0a 20 20  ) ORDER BY 1;.  
2720: 20 20 7d 0a 20 20 7d 20 7b 32 20 31 20 39 20 38    }.  } {2 1 9 8
2730: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72  }.  do_test wher
2740: 65 2d 35 2e 31 35 20 7b 0a 20 20 20 20 63 6f 75  e-5.15 {.    cou
2750: 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43  nt {.      SELEC
2760: 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T * FROM t1 WHER
2770: 45 20 78 20 49 4e 20 28 31 2c 37 29 20 41 4e 44  E x IN (1,7) AND
2780: 20 79 20 49 4e 20 28 39 2c 31 36 29 20 4f 52 44   y IN (9,16) ORD
2790: 45 52 20 42 59 20 31 3b 0a 20 20 20 20 7d 0a 20  ER BY 1;.    }. 
27a0: 20 7d 20 7b 32 20 31 20 39 20 33 20 31 20 31 36   } {2 1 9 3 1 16
27b0: 20 31 31 7d 0a 7d 0a 0a 23 20 54 68 69 73 20 70   11}.}..# This p
27c0: 72 6f 63 65 64 75 72 65 20 65 78 65 63 75 74 65  rocedure execute
27d0: 73 20 74 68 65 20 53 51 4c 2e 20 20 54 68 65 6e  s the SQL.  Then
27e0: 20 69 74 20 63 68 65 63 6b 73 20 74 6f 20 73 65   it checks to se
27f0: 65 20 69 66 20 74 68 65 20 4f 50 5f 53 6f 72 74  e if the OP_Sort
2800: 0a 23 20 6f 70 63 6f 64 65 20 77 61 73 20 65 78  .# opcode was ex
2810: 65 63 75 74 65 64 2e 20 20 49 66 20 61 6e 20 4f  ecuted.  If an O
2820: 50 5f 53 6f 72 74 20 64 69 64 20 6f 63 63 75 72  P_Sort did occur
2830: 2c 20 74 68 65 6e 20 22 73 6f 72 74 22 20 69 73  , then "sort" is
2840: 20 61 70 70 65 6e 64 65 64 0a 23 20 74 6f 20 74   appended.# to t
2850: 68 65 20 72 65 73 75 6c 74 2e 20 20 49 66 20 6e  he result.  If n
2860: 6f 20 4f 50 5f 53 6f 72 74 20 68 61 70 70 65 6e  o OP_Sort happen
2870: 65 64 2c 20 74 68 65 6e 20 22 6e 6f 73 6f 72 74  ed, then "nosort
2880: 22 20 69 73 20 61 70 70 65 6e 64 65 64 2e 0a 23  " is appended..#
2890: 0a 23 20 54 68 69 73 20 70 72 6f 63 65 64 75 72  .# This procedur
28a0: 65 20 69 73 20 75 73 65 64 20 74 6f 20 63 68 65  e is used to che
28b0: 63 6b 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20  ck to make sure 
28c0: 73 6f 72 74 69 6e 67 20 69 73 20 6f 72 20 69 73  sorting is or is
28d0: 20 6e 6f 74 0a 23 20 6f 63 63 75 72 72 69 6e 67   not.# occurring
28e0: 20 61 73 20 65 78 70 65 63 74 65 64 2e 0a 23 0a   as expected..#.
28f0: 70 72 6f 63 20 63 6b 73 6f 72 74 20 7b 73 71 6c  proc cksort {sql
2900: 7d 20 7b 0a 20 20 73 65 74 20 3a 3a 73 71 6c 69  } {.  set ::sqli
2910: 74 65 5f 73 6f 72 74 5f 63 6f 75 6e 74 20 30 0a  te_sort_count 0.
2920: 20 20 73 65 74 20 64 61 74 61 20 5b 65 78 65 63    set data [exec
2930: 73 71 6c 20 24 73 71 6c 5d 0a 20 20 69 66 20 7b  sql $sql].  if {
2940: 24 3a 3a 73 71 6c 69 74 65 5f 73 6f 72 74 5f 63  $::sqlite_sort_c
2950: 6f 75 6e 74 7d 20 7b 73 65 74 20 78 20 73 6f 72  ount} {set x sor
2960: 74 7d 20 7b 73 65 74 20 78 20 6e 6f 73 6f 72 74  t} {set x nosort
2970: 7d 0a 20 20 6c 61 70 70 65 6e 64 20 64 61 74 61  }.  lappend data
2980: 20 24 78 0a 20 20 72 65 74 75 72 6e 20 24 64 61   $x.  return $da
2990: 74 61 0a 7d 0a 23 20 43 68 65 63 6b 20 6f 75 74  ta.}.# Check out
29a0: 20 74 68 65 20 6c 6f 67 69 63 20 74 68 61 74 20   the logic that 
29b0: 61 74 74 65 6d 70 74 73 20 74 6f 20 69 6d 70 6c  attempts to impl
29c0: 65 6d 65 6e 74 20 74 68 65 20 4f 52 44 45 52 20  ement the ORDER 
29d0: 42 59 20 63 6c 61 75 73 65 0a 23 20 75 73 69 6e  BY clause.# usin
29e0: 67 20 61 6e 20 69 6e 64 65 78 20 72 61 74 68 65  g an index rathe
29f0: 72 20 74 68 61 6e 20 62 79 20 73 6f 72 74 69 6e  r than by sortin
2a00: 67 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 77 68 65  g..#.do_test whe
2a10: 72 65 2d 36 2e 31 20 7b 0a 20 20 65 78 65 63 73  re-6.1 {.  execs
2a20: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
2a30: 54 41 42 4c 45 20 74 33 28 61 2c 62 2c 63 29 3b  TABLE t3(a,b,c);
2a40: 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45  .    CREATE INDE
2a50: 58 20 74 33 61 20 4f 4e 20 74 33 28 61 29 3b 0a  X t3a ON t3(a);.
2a60: 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58      CREATE INDEX
2a70: 20 74 33 62 63 20 4f 4e 20 74 33 28 62 2c 63 29   t3bc ON t3(b,c)
2a80: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44  ;.    CREATE IND
2a90: 45 58 20 74 33 61 63 62 20 4f 4e 20 74 33 28 61  EX t3acb ON t3(a
2aa0: 2c 63 2c 62 29 3b 0a 20 20 20 20 49 4e 53 45 52  ,c,b);.    INSER
2ab0: 54 20 49 4e 54 4f 20 74 33 20 53 45 4c 45 43 54  T INTO t3 SELECT
2ac0: 20 77 2c 20 31 30 31 2d 77 2c 20 79 20 46 52 4f   w, 101-w, y FRO
2ad0: 4d 20 74 31 3b 0a 20 20 20 20 53 45 4c 45 43 54  M t1;.    SELECT
2ae0: 20 63 6f 75 6e 74 28 2a 29 2c 20 73 75 6d 28 61   count(*), sum(a
2af0: 29 2c 20 73 75 6d 28 62 29 2c 20 73 75 6d 28 63  ), sum(b), sum(c
2b00: 29 20 46 52 4f 4d 20 74 33 3b 0a 20 20 7d 0a 7d  ) FROM t3;.  }.}
2b10: 20 7b 31 30 30 20 35 30 35 30 2e 30 20 35 30 35   {100 5050.0 505
2b20: 30 2e 30 20 33 34 38 35 35 30 2e 30 7d 0a 64 6f  0.0 348550.0}.do
2b30: 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 32 20  _test where-6.2 
2b40: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
2b50: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
2b60: 33 20 4f 52 44 45 52 20 42 59 20 61 20 4c 49 4d  3 ORDER BY a LIM
2b70: 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30  IT 3.  }.} {1 10
2b80: 30 20 34 20 32 20 39 39 20 39 20 33 20 39 38 20  0 4 2 99 9 3 98 
2b90: 31 36 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  16 nosort}.do_te
2ba0: 73 74 20 77 68 65 72 65 2d 36 2e 33 20 7b 0a 20  st where-6.3 {. 
2bb0: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
2bc0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 4f  LECT * FROM t3 O
2bd0: 52 44 45 52 20 42 59 20 61 2b 31 20 4c 49 4d 49  RDER BY a+1 LIMI
2be0: 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30 30  T 3.  }.} {1 100
2bf0: 20 34 20 32 20 39 39 20 39 20 33 20 39 38 20 31   4 2 99 9 3 98 1
2c00: 36 20 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  6 sort}.do_test 
2c10: 77 68 65 72 65 2d 36 2e 34 20 7b 0a 20 20 63 6b  where-6.4 {.  ck
2c20: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
2c30: 54 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52  T * FROM t3 WHER
2c40: 45 20 61 3c 31 30 20 4f 52 44 45 52 20 42 59 20  E a<10 ORDER BY 
2c50: 61 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20  a LIMIT 3.  }.} 
2c60: 7b 31 20 31 30 30 20 34 20 32 20 39 39 20 39 20  {1 100 4 2 99 9 
2c70: 33 20 39 38 20 31 36 20 6e 6f 73 6f 72 74 7d 0a  3 98 16 nosort}.
2c80: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e  do_test where-6.
2c90: 35 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  5 {.  cksort {. 
2ca0: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
2cb0: 20 74 33 20 57 48 45 52 45 20 61 3e 30 20 41 4e   t3 WHERE a>0 AN
2cc0: 44 20 61 3c 31 30 20 4f 52 44 45 52 20 42 59 20  D a<10 ORDER BY 
2cd0: 61 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20  a LIMIT 3.  }.} 
2ce0: 7b 31 20 31 30 30 20 34 20 32 20 39 39 20 39 20  {1 100 4 2 99 9 
2cf0: 33 20 39 38 20 31 36 20 6e 6f 73 6f 72 74 7d 0a  3 98 16 nosort}.
2d00: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e  do_test where-6.
2d10: 36 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  6 {.  cksort {. 
2d20: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
2d30: 20 74 33 20 57 48 45 52 45 20 61 3e 30 20 4f 52   t3 WHERE a>0 OR
2d40: 44 45 52 20 42 59 20 61 20 4c 49 4d 49 54 20 33  DER BY a LIMIT 3
2d50: 0a 20 20 7d 0a 7d 20 7b 31 20 31 30 30 20 34 20  .  }.} {1 100 4 
2d60: 32 20 39 39 20 39 20 33 20 39 38 20 31 36 20 6e  2 99 9 3 98 16 n
2d70: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
2d80: 68 65 72 65 2d 36 2e 37 20 7b 0a 20 20 63 6b 73  here-6.7 {.  cks
2d90: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
2da0: 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45   * FROM t3 WHERE
2db0: 20 62 3e 30 20 4f 52 44 45 52 20 42 59 20 61 20   b>0 ORDER BY a 
2dc0: 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31  LIMIT 3.  }.} {1
2dd0: 20 31 30 30 20 34 20 32 20 39 39 20 39 20 33 20   100 4 2 99 9 3 
2de0: 39 38 20 31 36 20 6e 6f 73 6f 72 74 7d 0a 69 66  98 16 nosort}.if
2df0: 63 61 70 61 62 6c 65 20 73 75 62 71 75 65 72 79  capable subquery
2e00: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65   {.  do_test whe
2e10: 72 65 2d 36 2e 38 20 7b 0a 20 20 20 20 63 6b 73  re-6.8 {.    cks
2e20: 6f 72 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  ort {.      SELE
2e30: 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45  CT * FROM t3 WHE
2e40: 52 45 20 61 20 49 4e 20 28 33 2c 35 2c 37 2c 31  RE a IN (3,5,7,1
2e50: 2c 39 2c 34 2c 32 29 20 4f 52 44 45 52 20 42 59  ,9,4,2) ORDER BY
2e60: 20 61 20 4c 49 4d 49 54 20 33 0a 20 20 20 20 7d   a LIMIT 3.    }
2e70: 0a 20 20 7d 20 7b 31 20 31 30 30 20 34 20 32 20  .  } {1 100 4 2 
2e80: 39 39 20 39 20 33 20 39 38 20 31 36 20 73 6f 72  99 9 3 98 16 sor
2e90: 74 7d 0a 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  t}.}.do_test whe
2ea0: 72 65 2d 36 2e 39 2e 31 20 7b 0a 20 20 63 6b 73  re-6.9.1 {.  cks
2eb0: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
2ec0: 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45   * FROM t3 WHERE
2ed0: 20 61 3d 31 20 41 4e 44 20 63 3e 30 20 4f 52 44   a=1 AND c>0 ORD
2ee0: 45 52 20 42 59 20 61 20 4c 49 4d 49 54 20 33 0a  ER BY a LIMIT 3.
2ef0: 20 20 7d 0a 7d 20 7b 31 20 31 30 30 20 34 20 6e    }.} {1 100 4 n
2f00: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
2f10: 68 65 72 65 2d 36 2e 39 2e 31 2e 31 20 7b 0a 20  here-6.9.1.1 {. 
2f20: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
2f30: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 57  LECT * FROM t3 W
2f40: 48 45 52 45 20 61 3e 3d 31 20 41 4e 44 20 61 3d  HERE a>=1 AND a=
2f50: 31 20 41 4e 44 20 63 3e 30 20 4f 52 44 45 52 20  1 AND c>0 ORDER 
2f60: 42 59 20 61 20 4c 49 4d 49 54 20 33 0a 20 20 7d  BY a LIMIT 3.  }
2f70: 0a 7d 20 7b 31 20 31 30 30 20 34 20 6e 6f 73 6f  .} {1 100 4 noso
2f80: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
2f90: 65 2d 36 2e 39 2e 31 2e 32 20 7b 0a 20 20 63 6b  e-6.9.1.2 {.  ck
2fa0: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
2fb0: 54 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52  T * FROM t3 WHER
2fc0: 45 20 61 3c 32 20 41 4e 44 20 61 3d 31 20 41 4e  E a<2 AND a=1 AN
2fd0: 44 20 63 3e 30 20 4f 52 44 45 52 20 42 59 20 61  D c>0 ORDER BY a
2fe0: 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b   LIMIT 3.  }.} {
2ff0: 31 20 31 30 30 20 34 20 6e 6f 73 6f 72 74 7d 0a  1 100 4 nosort}.
3000: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e  do_test where-6.
3010: 39 2e 32 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  9.2 {.  cksort {
3020: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
3030: 4f 4d 20 74 33 20 57 48 45 52 45 20 61 3d 31 20  OM t3 WHERE a=1 
3040: 41 4e 44 20 63 3e 30 20 4f 52 44 45 52 20 42 59  AND c>0 ORDER BY
3050: 20 61 2c 63 20 4c 49 4d 49 54 20 33 0a 20 20 7d   a,c LIMIT 3.  }
3060: 0a 7d 20 7b 31 20 31 30 30 20 34 20 6e 6f 73 6f  .} {1 100 4 noso
3070: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
3080: 65 2d 36 2e 39 2e 33 20 7b 0a 20 20 63 6b 73 6f  e-6.9.3 {.  ckso
3090: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
30a0: 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20  * FROM t3 WHERE 
30b0: 61 3d 31 20 41 4e 44 20 63 3e 30 20 4f 52 44 45  a=1 AND c>0 ORDE
30c0: 52 20 42 59 20 63 20 4c 49 4d 49 54 20 33 0a 20  R BY c LIMIT 3. 
30d0: 20 7d 0a 7d 20 7b 31 20 31 30 30 20 34 20 6e 6f   }.} {1 100 4 no
30e0: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
30f0: 65 72 65 2d 36 2e 39 2e 34 20 7b 0a 20 20 63 6b  ere-6.9.4 {.  ck
3100: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
3110: 54 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52  T * FROM t3 WHER
3120: 45 20 61 3d 31 20 41 4e 44 20 63 3e 30 20 4f 52  E a=1 AND c>0 OR
3130: 44 45 52 20 42 59 20 61 20 44 45 53 43 20 4c 49  DER BY a DESC LI
3140: 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31  MIT 3.  }.} {1 1
3150: 30 30 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f  00 4 nosort}.do_
3160: 74 65 73 74 20 77 68 65 72 65 2d 36 2e 39 2e 35  test where-6.9.5
3170: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
3180: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
3190: 74 33 20 57 48 45 52 45 20 61 3d 31 20 41 4e 44  t3 WHERE a=1 AND
31a0: 20 63 3e 30 20 4f 52 44 45 52 20 42 59 20 61 20   c>0 ORDER BY a 
31b0: 44 45 53 43 2c 20 63 20 44 45 53 43 20 4c 49 4d  DESC, c DESC LIM
31c0: 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30  IT 3.  }.} {1 10
31d0: 30 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74  0 4 nosort}.do_t
31e0: 65 73 74 20 77 68 65 72 65 2d 36 2e 39 2e 36 20  est where-6.9.6 
31f0: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
3200: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
3210: 33 20 57 48 45 52 45 20 61 3d 31 20 41 4e 44 20  3 WHERE a=1 AND 
3220: 63 3e 30 20 4f 52 44 45 52 20 42 59 20 63 20 44  c>0 ORDER BY c D
3230: 45 53 43 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a  ESC LIMIT 3.  }.
3240: 7d 20 7b 31 20 31 30 30 20 34 20 6e 6f 73 6f 72  } {1 100 4 nosor
3250: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
3260: 2d 36 2e 39 2e 37 20 7b 0a 20 20 63 6b 73 6f 72  -6.9.7 {.  cksor
3270: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t {.    SELECT *
3280: 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20 61   FROM t3 WHERE a
3290: 3d 31 20 41 4e 44 20 63 3e 30 20 4f 52 44 45 52  =1 AND c>0 ORDER
32a0: 20 42 59 20 63 2c 61 20 4c 49 4d 49 54 20 33 0a   BY c,a LIMIT 3.
32b0: 20 20 7d 0a 7d 20 7b 31 20 31 30 30 20 34 20 73    }.} {1 100 4 s
32c0: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
32d0: 72 65 2d 36 2e 39 2e 38 20 7b 0a 20 20 63 6b 73  re-6.9.8 {.  cks
32e0: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
32f0: 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45   * FROM t3 WHERE
3300: 20 61 3d 31 20 41 4e 44 20 63 3e 30 20 4f 52 44   a=1 AND c>0 ORD
3310: 45 52 20 42 59 20 61 20 44 45 53 43 2c 20 63 20  ER BY a DESC, c 
3320: 41 53 43 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a  ASC LIMIT 3.  }.
3330: 7d 20 7b 31 20 31 30 30 20 34 20 6e 6f 73 6f 72  } {1 100 4 nosor
3340: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
3350: 2d 36 2e 39 2e 39 20 7b 0a 20 20 63 6b 73 6f 72  -6.9.9 {.  cksor
3360: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t {.    SELECT *
3370: 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20 61   FROM t3 WHERE a
3380: 3d 31 20 41 4e 44 20 63 3e 30 20 4f 52 44 45 52  =1 AND c>0 ORDER
3390: 20 42 59 20 61 20 41 53 43 2c 20 63 20 44 45 53   BY a ASC, c DES
33a0: 43 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20  C LIMIT 3.  }.} 
33b0: 7b 31 20 31 30 30 20 34 20 6e 6f 73 6f 72 74 7d  {1 100 4 nosort}
33c0: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36  .do_test where-6
33d0: 2e 31 30 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  .10 {.  cksort {
33e0: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
33f0: 4f 4d 20 74 33 20 57 48 45 52 45 20 61 3d 31 20  OM t3 WHERE a=1 
3400: 41 4e 44 20 63 3e 30 20 4f 52 44 45 52 20 42 59  AND c>0 ORDER BY
3410: 20 61 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d   a LIMIT 3.  }.}
3420: 20 7b 31 20 31 30 30 20 34 20 6e 6f 73 6f 72 74   {1 100 4 nosort
3430: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
3440: 36 2e 31 31 20 7b 0a 20 20 63 6b 73 6f 72 74 20  6.11 {.  cksort 
3450: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46  {.    SELECT * F
3460: 52 4f 4d 20 74 33 20 57 48 45 52 45 20 61 3d 31  ROM t3 WHERE a=1
3470: 20 41 4e 44 20 63 3e 30 20 4f 52 44 45 52 20 42   AND c>0 ORDER B
3480: 59 20 61 2c 63 20 4c 49 4d 49 54 20 33 0a 20 20  Y a,c LIMIT 3.  
3490: 7d 0a 7d 20 7b 31 20 31 30 30 20 34 20 6e 6f 73  }.} {1 100 4 nos
34a0: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
34b0: 72 65 2d 36 2e 31 32 20 7b 0a 20 20 63 6b 73 6f  re-6.12 {.  ckso
34c0: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
34d0: 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20  * FROM t3 WHERE 
34e0: 61 3d 31 20 41 4e 44 20 63 3e 30 20 4f 52 44 45  a=1 AND c>0 ORDE
34f0: 52 20 42 59 20 61 2c 63 2c 62 20 4c 49 4d 49 54  R BY a,c,b LIMIT
3500: 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30 30 20   3.  }.} {1 100 
3510: 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  4 nosort}.do_tes
3520: 74 20 77 68 65 72 65 2d 36 2e 31 33 20 7b 0a 20  t where-6.13 {. 
3530: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
3540: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 57  LECT * FROM t3 W
3550: 48 45 52 45 20 61 3e 30 20 4f 52 44 45 52 20 42  HERE a>0 ORDER B
3560: 59 20 61 20 44 45 53 43 20 4c 49 4d 49 54 20 33  Y a DESC LIMIT 3
3570: 0a 20 20 7d 0a 7d 20 7b 31 30 30 20 31 20 31 30  .  }.} {100 1 10
3580: 32 30 31 20 39 39 20 32 20 31 30 30 30 30 20 39  201 99 2 10000 9
3590: 38 20 33 20 39 38 30 31 20 6e 6f 73 6f 72 74 7d  8 3 9801 nosort}
35a0: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36  .do_test where-6
35b0: 2e 31 33 2e 31 20 7b 0a 20 20 63 6b 73 6f 72 74  .13.1 {.  cksort
35c0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
35d0: 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20 61 3e  FROM t3 WHERE a>
35e0: 30 20 4f 52 44 45 52 20 42 59 20 2d 61 20 4c 49  0 ORDER BY -a LI
35f0: 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 30 30  MIT 3.  }.} {100
3600: 20 31 20 31 30 32 30 31 20 39 39 20 32 20 31 30   1 10201 99 2 10
3610: 30 30 30 20 39 38 20 33 20 39 38 30 31 20 73 6f  000 98 3 9801 so
3620: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
3630: 65 2d 36 2e 31 34 20 7b 0a 20 20 63 6b 73 6f 72  e-6.14 {.  cksor
3640: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t {.    SELECT *
3650: 20 46 52 4f 4d 20 74 33 20 4f 52 44 45 52 20 42   FROM t3 ORDER B
3660: 59 20 62 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a  Y b LIMIT 3.  }.
3670: 7d 20 7b 31 30 30 20 31 20 31 30 32 30 31 20 39  } {100 1 10201 9
3680: 39 20 32 20 31 30 30 30 30 20 39 38 20 33 20 39  9 2 10000 98 3 9
3690: 38 30 31 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74  801 nosort}.do_t
36a0: 65 73 74 20 77 68 65 72 65 2d 36 2e 31 35 20 7b  est where-6.15 {
36b0: 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20  .  cksort {.    
36c0: 53 45 4c 45 43 54 20 74 33 2e 61 2c 20 74 31 2e  SELECT t3.a, t1.
36d0: 78 20 46 52 4f 4d 20 74 33 2c 20 74 31 20 57 48  x FROM t3, t1 WH
36e0: 45 52 45 20 74 33 2e 61 3d 74 31 2e 77 20 4f 52  ERE t3.a=t1.w OR
36f0: 44 45 52 20 42 59 20 74 33 2e 61 20 4c 49 4d 49  DER BY t3.a LIMI
3700: 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 30 20 32  T 3.  }.} {1 0 2
3710: 20 31 20 33 20 31 20 6e 6f 73 6f 72 74 7d 0a 64   1 3 1 nosort}.d
3720: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 31  o_test where-6.1
3730: 36 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  6 {.  cksort {. 
3740: 20 20 20 53 45 4c 45 43 54 20 74 33 2e 61 2c 20     SELECT t3.a, 
3750: 74 31 2e 78 20 46 52 4f 4d 20 74 33 2c 20 74 31  t1.x FROM t3, t1
3760: 20 57 48 45 52 45 20 74 33 2e 61 3d 74 31 2e 77   WHERE t3.a=t1.w
3770: 20 4f 52 44 45 52 20 42 59 20 74 31 2e 78 2c 20   ORDER BY t1.x, 
3780: 74 33 2e 61 20 4c 49 4d 49 54 20 33 0a 20 20 7d  t3.a LIMIT 3.  }
3790: 0a 7d 20 7b 31 20 30 20 32 20 31 20 33 20 31 20  .} {1 0 2 1 3 1 
37a0: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
37b0: 65 72 65 2d 36 2e 31 39 20 7b 0a 20 20 63 6b 73  ere-6.19 {.  cks
37c0: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
37d0: 20 79 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52   y FROM t1 ORDER
37e0: 20 42 59 20 77 20 4c 49 4d 49 54 20 33 3b 0a 20   BY w LIMIT 3;. 
37f0: 20 7d 0a 7d 20 7b 34 20 39 20 31 36 20 6e 6f 73   }.} {4 9 16 nos
3800: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
3810: 72 65 2d 36 2e 32 30 20 7b 0a 20 20 63 6b 73 6f  re-6.20 {.  ckso
3820: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
3830: 79 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20  y FROM t1 ORDER 
3840: 42 59 20 72 6f 77 69 64 20 4c 49 4d 49 54 20 33  BY rowid LIMIT 3
3850: 3b 0a 20 20 7d 0a 7d 20 7b 34 20 39 20 31 36 20  ;.  }.} {4 9 16 
3860: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
3870: 77 68 65 72 65 2d 36 2e 32 31 20 7b 0a 20 20 63  where-6.21 {.  c
3880: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
3890: 43 54 20 79 20 46 52 4f 4d 20 74 31 20 4f 52 44  CT y FROM t1 ORD
38a0: 45 52 20 42 59 20 72 6f 77 69 64 2c 20 79 20 4c  ER BY rowid, y L
38b0: 49 4d 49 54 20 33 3b 0a 20 20 7d 0a 7d 20 7b 34  IMIT 3;.  }.} {4
38c0: 20 39 20 31 36 20 6e 6f 73 6f 72 74 7d 0a 64 6f   9 16 nosort}.do
38d0: 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 32 32  _test where-6.22
38e0: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
38f0: 20 20 53 45 4c 45 43 54 20 79 20 46 52 4f 4d 20    SELECT y FROM 
3900: 74 31 20 4f 52 44 45 52 20 42 59 20 72 6f 77 69  t1 ORDER BY rowi
3910: 64 2c 20 79 20 44 45 53 43 20 4c 49 4d 49 54 20  d, y DESC LIMIT 
3920: 33 3b 0a 20 20 7d 0a 7d 20 7b 34 20 39 20 31 36  3;.  }.} {4 9 16
3930: 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74   nosort}.do_test
3940: 20 77 68 65 72 65 2d 36 2e 32 33 20 7b 0a 20 20   where-6.23 {.  
3950: 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c  cksort {.    SEL
3960: 45 43 54 20 79 20 46 52 4f 4d 20 74 31 20 57 48  ECT y FROM t1 WH
3970: 45 52 45 20 79 3e 34 20 4f 52 44 45 52 20 42 59  ERE y>4 ORDER BY
3980: 20 72 6f 77 69 64 2c 20 77 2c 20 78 20 4c 49 4d   rowid, w, x LIM
3990: 49 54 20 33 3b 0a 20 20 7d 0a 7d 20 7b 39 20 31  IT 3;.  }.} {9 1
39a0: 36 20 32 35 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f  6 25 nosort}.do_
39b0: 74 65 73 74 20 77 68 65 72 65 2d 36 2e 32 34 20  test where-6.24 
39c0: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
39d0: 20 53 45 4c 45 43 54 20 79 20 46 52 4f 4d 20 74   SELECT y FROM t
39e0: 31 20 57 48 45 52 45 20 79 3e 3d 39 20 4f 52 44  1 WHERE y>=9 ORD
39f0: 45 52 20 42 59 20 72 6f 77 69 64 2c 20 78 20 44  ER BY rowid, x D
3a00: 45 53 43 2c 20 77 20 4c 49 4d 49 54 20 33 3b 0a  ESC, w LIMIT 3;.
3a10: 20 20 7d 0a 7d 20 7b 39 20 31 36 20 32 35 20 6e    }.} {9 16 25 n
3a20: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
3a30: 68 65 72 65 2d 36 2e 32 35 20 7b 0a 20 20 63 6b  here-6.25 {.  ck
3a40: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
3a50: 54 20 79 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T y FROM t1 WHER
3a60: 45 20 79 3e 34 20 41 4e 44 20 79 3c 32 35 20 4f  E y>4 AND y<25 O
3a70: 52 44 45 52 20 42 59 20 72 6f 77 69 64 3b 0a 20  RDER BY rowid;. 
3a80: 20 7d 0a 7d 20 7b 39 20 31 36 20 6e 6f 73 6f 72   }.} {9 16 nosor
3a90: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
3aa0: 2d 36 2e 32 36 20 7b 0a 20 20 63 6b 73 6f 72 74  -6.26 {.  cksort
3ab0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 79 20   {.    SELECT y 
3ac0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 79 3e  FROM t1 WHERE y>
3ad0: 3d 34 20 41 4e 44 20 79 3c 3d 32 35 20 4f 52 44  =4 AND y<=25 ORD
3ae0: 45 52 20 42 59 20 6f 69 64 3b 0a 20 20 7d 0a 7d  ER BY oid;.  }.}
3af0: 20 7b 34 20 39 20 31 36 20 32 35 20 6e 6f 73 6f   {4 9 16 25 noso
3b00: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
3b10: 65 2d 36 2e 32 37 20 7b 0a 20 20 63 6b 73 6f 72  e-6.27 {.  cksor
3b20: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 79  t {.    SELECT y
3b30: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 79   FROM t1 WHERE y
3b40: 3c 3d 32 35 20 4f 52 44 45 52 20 42 59 20 5f 72  <=25 ORDER BY _r
3b50: 6f 77 69 64 5f 2c 20 77 2b 79 3b 0a 20 20 7d 0a  owid_, w+y;.  }.
3b60: 7d 20 7b 34 20 39 20 31 36 20 32 35 20 6e 6f 73  } {4 9 16 25 nos
3b70: 6f 72 74 7d 0a 0a 0a 23 20 54 65 73 74 73 20 66  ort}...# Tests f
3b80: 6f 72 20 72 65 76 65 72 73 65 2d 6f 72 64 65 72  or reverse-order
3b90: 20 73 6f 72 74 69 6e 67 2e 0a 23 0a 64 6f 5f 74   sorting..#.do_t
3ba0: 65 73 74 20 77 68 65 72 65 2d 37 2e 31 20 7b 0a  est where-7.1 {.
3bb0: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
3bc0: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
3bd0: 57 48 45 52 45 20 78 3d 33 20 4f 52 44 45 52 20  WHERE x=3 ORDER 
3be0: 42 59 20 79 3b 0a 20 20 7d 0a 7d 20 7b 38 20 39  BY y;.  }.} {8 9
3bf0: 20 31 30 20 31 31 20 31 32 20 31 33 20 31 34 20   10 11 12 13 14 
3c00: 31 35 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  15 nosort}.do_te
3c10: 73 74 20 77 68 65 72 65 2d 37 2e 32 20 7b 0a 20  st where-7.2 {. 
3c20: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
3c30: 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57  LECT w FROM t1 W
3c40: 48 45 52 45 20 78 3d 33 20 4f 52 44 45 52 20 42  HERE x=3 ORDER B
3c50: 59 20 79 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20  Y y DESC;.  }.} 
3c60: 7b 31 35 20 31 34 20 31 33 20 31 32 20 31 31 20  {15 14 13 12 11 
3c70: 31 30 20 39 20 38 20 6e 6f 73 6f 72 74 7d 0a 64  10 9 8 nosort}.d
3c80: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 33  o_test where-7.3
3c90: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
3ca0: 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20    SELECT w FROM 
3cb0: 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44  t1 WHERE x=3 AND
3cc0: 20 79 3e 31 30 30 20 4f 52 44 45 52 20 42 59 20   y>100 ORDER BY 
3cd0: 79 20 4c 49 4d 49 54 20 33 3b 0a 20 20 7d 0a 7d  y LIMIT 3;.  }.}
3ce0: 20 7b 31 30 20 31 31 20 31 32 20 6e 6f 73 6f 72   {10 11 12 nosor
3cf0: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
3d00: 2d 37 2e 34 20 7b 0a 20 20 63 6b 73 6f 72 74 20  -7.4 {.  cksort 
3d10: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20 46  {.    SELECT w F
3d20: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33  ROM t1 WHERE x=3
3d30: 20 41 4e 44 20 79 3e 31 30 30 20 4f 52 44 45 52   AND y>100 ORDER
3d40: 20 42 59 20 79 20 44 45 53 43 20 4c 49 4d 49 54   BY y DESC LIMIT
3d50: 20 33 3b 0a 20 20 7d 0a 7d 20 7b 31 35 20 31 34   3;.  }.} {15 14
3d60: 20 31 33 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74   13 nosort}.do_t
3d70: 65 73 74 20 77 68 65 72 65 2d 37 2e 35 20 7b 0a  est where-7.5 {.
3d80: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
3d90: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
3da0: 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3e  WHERE x=3 AND y>
3db0: 31 32 31 20 4f 52 44 45 52 20 42 59 20 79 20 44  121 ORDER BY y D
3dc0: 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31 35 20 31  ESC;.  }.} {15 1
3dd0: 34 20 31 33 20 31 32 20 31 31 20 6e 6f 73 6f 72  4 13 12 11 nosor
3de0: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
3df0: 2d 37 2e 36 20 7b 0a 20 20 63 6b 73 6f 72 74 20  -7.6 {.  cksort 
3e00: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20 46  {.    SELECT w F
3e10: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33  ROM t1 WHERE x=3
3e20: 20 41 4e 44 20 79 3e 3d 31 32 31 20 4f 52 44 45   AND y>=121 ORDE
3e30: 52 20 42 59 20 79 20 44 45 53 43 3b 0a 20 20 7d  R BY y DESC;.  }
3e40: 0a 7d 20 7b 31 35 20 31 34 20 31 33 20 31 32 20  .} {15 14 13 12 
3e50: 31 31 20 31 30 20 6e 6f 73 6f 72 74 7d 0a 64 6f  11 10 nosort}.do
3e60: 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 37 20  _test where-7.7 
3e70: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
3e80: 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74   SELECT w FROM t
3e90: 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20  1 WHERE x=3 AND 
3ea0: 79 3e 3d 31 32 31 20 41 4e 44 20 79 3c 31 39 36  y>=121 AND y<196
3eb0: 20 4f 52 44 45 52 20 42 59 20 79 20 44 45 53 43   ORDER BY y DESC
3ec0: 3b 0a 20 20 7d 0a 7d 20 7b 31 32 20 31 31 20 31  ;.  }.} {12 11 1
3ed0: 30 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  0 nosort}.do_tes
3ee0: 74 20 77 68 65 72 65 2d 37 2e 38 20 7b 0a 20 20  t where-7.8 {.  
3ef0: 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c  cksort {.    SEL
3f00: 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48  ECT w FROM t1 WH
3f10: 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3e 3d 31  ERE x=3 AND y>=1
3f20: 32 31 20 41 4e 44 20 79 3c 3d 31 39 36 20 4f 52  21 AND y<=196 OR
3f30: 44 45 52 20 42 59 20 79 20 44 45 53 43 3b 0a 20  DER BY y DESC;. 
3f40: 20 7d 0a 7d 20 7b 31 33 20 31 32 20 31 31 20 31   }.} {13 12 11 1
3f50: 30 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  0 nosort}.do_tes
3f60: 74 20 77 68 65 72 65 2d 37 2e 39 20 7b 0a 20 20  t where-7.9 {.  
3f70: 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c  cksort {.    SEL
3f80: 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48  ECT w FROM t1 WH
3f90: 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3e 31 32  ERE x=3 AND y>12
3fa0: 31 20 41 4e 44 20 79 3c 3d 31 39 36 20 4f 52 44  1 AND y<=196 ORD
3fb0: 45 52 20 42 59 20 79 20 44 45 53 43 3b 0a 20 20  ER BY y DESC;.  
3fc0: 7d 0a 7d 20 7b 31 33 20 31 32 20 31 31 20 6e 6f  }.} {13 12 11 no
3fd0: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
3fe0: 65 72 65 2d 37 2e 31 30 20 7b 0a 20 20 63 6b 73  ere-7.10 {.  cks
3ff0: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
4000: 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   w FROM t1 WHERE
4010: 20 78 3d 33 20 41 4e 44 20 79 3e 31 30 30 20 41   x=3 AND y>100 A
4020: 4e 44 20 79 3c 31 39 36 20 4f 52 44 45 52 20 42  ND y<196 ORDER B
4030: 59 20 79 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20  Y y DESC;.  }.} 
4040: 7b 31 32 20 31 31 20 31 30 20 6e 6f 73 6f 72 74  {12 11 10 nosort
4050: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
4060: 37 2e 31 31 20 7b 0a 20 20 63 6b 73 6f 72 74 20  7.11 {.  cksort 
4070: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20 46  {.    SELECT w F
4080: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33  ROM t1 WHERE x=3
4090: 20 41 4e 44 20 79 3e 3d 31 32 31 20 41 4e 44 20   AND y>=121 AND 
40a0: 79 3c 31 39 36 20 4f 52 44 45 52 20 42 59 20 79  y<196 ORDER BY y
40b0: 3b 0a 20 20 7d 0a 7d 20 7b 31 30 20 31 31 20 31  ;.  }.} {10 11 1
40c0: 32 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  2 nosort}.do_tes
40d0: 74 20 77 68 65 72 65 2d 37 2e 31 32 20 7b 0a 20  t where-7.12 {. 
40e0: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
40f0: 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57  LECT w FROM t1 W
4100: 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3e 3d  HERE x=3 AND y>=
4110: 31 32 31 20 41 4e 44 20 79 3c 3d 31 39 36 20 4f  121 AND y<=196 O
4120: 52 44 45 52 20 42 59 20 79 3b 0a 20 20 7d 0a 7d  RDER BY y;.  }.}
4130: 20 7b 31 30 20 31 31 20 31 32 20 31 33 20 6e 6f   {10 11 12 13 no
4140: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
4150: 65 72 65 2d 37 2e 31 33 20 7b 0a 20 20 63 6b 73  ere-7.13 {.  cks
4160: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
4170: 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   w FROM t1 WHERE
4180: 20 78 3d 33 20 41 4e 44 20 79 3e 31 32 31 20 41   x=3 AND y>121 A
4190: 4e 44 20 79 3c 3d 31 39 36 20 4f 52 44 45 52 20  ND y<=196 ORDER 
41a0: 42 59 20 79 3b 0a 20 20 7d 0a 7d 20 7b 31 31 20  BY y;.  }.} {11 
41b0: 31 32 20 31 33 20 6e 6f 73 6f 72 74 7d 0a 64 6f  12 13 nosort}.do
41c0: 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 31 34  _test where-7.14
41d0: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
41e0: 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20    SELECT w FROM 
41f0: 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44  t1 WHERE x=3 AND
4200: 20 79 3e 31 30 30 20 41 4e 44 20 79 3c 31 39 36   y>100 AND y<196
4210: 20 4f 52 44 45 52 20 42 59 20 79 3b 0a 20 20 7d   ORDER BY y;.  }
4220: 0a 7d 20 7b 31 30 20 31 31 20 31 32 20 6e 6f 73  .} {10 11 12 nos
4230: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
4240: 72 65 2d 37 2e 31 35 20 7b 0a 20 20 63 6b 73 6f  re-7.15 {.  ckso
4250: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
4260: 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  w FROM t1 WHERE 
4270: 78 3d 33 20 41 4e 44 20 79 3c 38 31 20 4f 52 44  x=3 AND y<81 ORD
4280: 45 52 20 42 59 20 79 3b 0a 20 20 7d 0a 7d 20 7b  ER BY y;.  }.} {
4290: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
42a0: 77 68 65 72 65 2d 37 2e 31 36 20 7b 0a 20 20 63  where-7.16 {.  c
42b0: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
42c0: 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45  CT w FROM t1 WHE
42d0: 52 45 20 78 3d 33 20 41 4e 44 20 79 3c 3d 38 31  RE x=3 AND y<=81
42e0: 20 4f 52 44 45 52 20 42 59 20 79 3b 0a 20 20 7d   ORDER BY y;.  }
42f0: 0a 7d 20 7b 38 20 6e 6f 73 6f 72 74 7d 0a 64 6f  .} {8 nosort}.do
4300: 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 31 37  _test where-7.17
4310: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
4320: 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20    SELECT w FROM 
4330: 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44  t1 WHERE x=3 AND
4340: 20 79 3e 32 35 36 20 4f 52 44 45 52 20 42 59 20   y>256 ORDER BY 
4350: 79 3b 0a 20 20 7d 0a 7d 20 7b 6e 6f 73 6f 72 74  y;.  }.} {nosort
4360: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
4370: 37 2e 31 38 20 7b 0a 20 20 63 6b 73 6f 72 74 20  7.18 {.  cksort 
4380: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20 46  {.    SELECT w F
4390: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33  ROM t1 WHERE x=3
43a0: 20 41 4e 44 20 79 3e 3d 32 35 36 20 4f 52 44 45   AND y>=256 ORDE
43b0: 52 20 42 59 20 79 3b 0a 20 20 7d 0a 7d 20 7b 31  R BY y;.  }.} {1
43c0: 35 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  5 nosort}.do_tes
43d0: 74 20 77 68 65 72 65 2d 37 2e 31 39 20 7b 0a 20  t where-7.19 {. 
43e0: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
43f0: 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57  LECT w FROM t1 W
4400: 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3c 38  HERE x=3 AND y<8
4410: 31 20 4f 52 44 45 52 20 42 59 20 79 20 44 45 53  1 ORDER BY y DES
4420: 43 3b 0a 20 20 7d 0a 7d 20 7b 6e 6f 73 6f 72 74  C;.  }.} {nosort
4430: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
4440: 37 2e 32 30 20 7b 0a 20 20 63 6b 73 6f 72 74 20  7.20 {.  cksort 
4450: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20 46  {.    SELECT w F
4460: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33  ROM t1 WHERE x=3
4470: 20 41 4e 44 20 79 3c 3d 38 31 20 4f 52 44 45 52   AND y<=81 ORDER
4480: 20 42 59 20 79 20 44 45 53 43 3b 0a 20 20 7d 0a   BY y DESC;.  }.
4490: 7d 20 7b 38 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f  } {8 nosort}.do_
44a0: 74 65 73 74 20 77 68 65 72 65 2d 37 2e 32 31 20  test where-7.21 
44b0: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
44c0: 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74   SELECT w FROM t
44d0: 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20  1 WHERE x=3 AND 
44e0: 79 3e 32 35 36 20 4f 52 44 45 52 20 42 59 20 79  y>256 ORDER BY y
44f0: 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 6e 6f   DESC;.  }.} {no
4500: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
4510: 65 72 65 2d 37 2e 32 32 20 7b 0a 20 20 63 6b 73  ere-7.22 {.  cks
4520: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
4530: 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   w FROM t1 WHERE
4540: 20 78 3d 33 20 41 4e 44 20 79 3e 3d 32 35 36 20   x=3 AND y>=256 
4550: 4f 52 44 45 52 20 42 59 20 79 20 44 45 53 43 3b  ORDER BY y DESC;
4560: 0a 20 20 7d 0a 7d 20 7b 31 35 20 6e 6f 73 6f 72  .  }.} {15 nosor
4570: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
4580: 2d 37 2e 32 33 20 7b 0a 20 20 63 6b 73 6f 72 74  -7.23 {.  cksort
4590: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20   {.    SELECT w 
45a0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d  FROM t1 WHERE x=
45b0: 30 20 41 4e 44 20 79 3c 34 20 4f 52 44 45 52 20  0 AND y<4 ORDER 
45c0: 42 59 20 79 3b 0a 20 20 7d 0a 7d 20 7b 6e 6f 73  BY y;.  }.} {nos
45d0: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
45e0: 72 65 2d 37 2e 32 34 20 7b 0a 20 20 63 6b 73 6f  re-7.24 {.  ckso
45f0: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
4600: 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  w FROM t1 WHERE 
4610: 78 3d 30 20 41 4e 44 20 79 3c 3d 34 20 4f 52 44  x=0 AND y<=4 ORD
4620: 45 52 20 42 59 20 79 3b 0a 20 20 7d 0a 7d 20 7b  ER BY y;.  }.} {
4630: 31 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  1 nosort}.do_tes
4640: 74 20 77 68 65 72 65 2d 37 2e 32 35 20 7b 0a 20  t where-7.25 {. 
4650: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
4660: 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57  LECT w FROM t1 W
4670: 48 45 52 45 20 78 3d 36 20 41 4e 44 20 79 3e 31  HERE x=6 AND y>1
4680: 30 32 30 31 20 4f 52 44 45 52 20 42 59 20 79 3b  0201 ORDER BY y;
4690: 0a 20 20 7d 0a 7d 20 7b 6e 6f 73 6f 72 74 7d 0a  .  }.} {nosort}.
46a0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e  do_test where-7.
46b0: 32 36 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a  26 {.  cksort {.
46c0: 20 20 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f      SELECT w FRO
46d0: 4d 20 74 31 20 57 48 45 52 45 20 78 3d 36 20 41  M t1 WHERE x=6 A
46e0: 4e 44 20 79 3e 3d 31 30 32 30 31 20 4f 52 44 45  ND y>=10201 ORDE
46f0: 52 20 42 59 20 79 3b 0a 20 20 7d 0a 7d 20 7b 31  R BY y;.  }.} {1
4700: 30 30 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  00 nosort}.do_te
4710: 73 74 20 77 68 65 72 65 2d 37 2e 32 37 20 7b 0a  st where-7.27 {.
4720: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
4730: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
4740: 57 48 45 52 45 20 78 3d 30 20 41 4e 44 20 79 3c  WHERE x=0 AND y<
4750: 34 20 4f 52 44 45 52 20 42 59 20 79 20 44 45 53  4 ORDER BY y DES
4760: 43 3b 0a 20 20 7d 0a 7d 20 7b 6e 6f 73 6f 72 74  C;.  }.} {nosort
4770: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
4780: 37 2e 32 38 20 7b 0a 20 20 63 6b 73 6f 72 74 20  7.28 {.  cksort 
4790: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20 46  {.    SELECT w F
47a0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 30  ROM t1 WHERE x=0
47b0: 20 41 4e 44 20 79 3c 3d 34 20 4f 52 44 45 52 20   AND y<=4 ORDER 
47c0: 42 59 20 79 20 44 45 53 43 3b 0a 20 20 7d 0a 7d  BY y DESC;.  }.}
47d0: 20 7b 31 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74   {1 nosort}.do_t
47e0: 65 73 74 20 77 68 65 72 65 2d 37 2e 32 39 20 7b  est where-7.29 {
47f0: 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20  .  cksort {.    
4800: 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31  SELECT w FROM t1
4810: 20 57 48 45 52 45 20 78 3d 36 20 41 4e 44 20 79   WHERE x=6 AND y
4820: 3e 31 30 32 30 31 20 4f 52 44 45 52 20 42 59 20  >10201 ORDER BY 
4830: 79 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 6e  y DESC;.  }.} {n
4840: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
4850: 68 65 72 65 2d 37 2e 33 30 20 7b 0a 20 20 63 6b  here-7.30 {.  ck
4860: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
4870: 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T w FROM t1 WHER
4880: 45 20 78 3d 36 20 41 4e 44 20 79 3e 3d 31 30 32  E x=6 AND y>=102
4890: 30 31 20 4f 52 44 45 52 20 42 59 20 79 20 44 45  01 ORDER BY y DE
48a0: 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31 30 30 20 6e  SC;.  }.} {100 n
48b0: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
48c0: 68 65 72 65 2d 37 2e 33 31 20 7b 0a 20 20 63 6b  here-7.31 {.  ck
48d0: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
48e0: 54 20 79 20 46 52 4f 4d 20 74 31 20 4f 52 44 45  T y FROM t1 ORDE
48f0: 52 20 42 59 20 72 6f 77 69 64 20 44 45 53 43 20  R BY rowid DESC 
4900: 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31  LIMIT 3.  }.} {1
4910: 30 32 30 31 20 31 30 30 30 30 20 39 38 30 31 20  0201 10000 9801 
4920: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
4930: 77 68 65 72 65 2d 37 2e 33 32 20 7b 0a 20 20 63  where-7.32 {.  c
4940: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
4950: 43 54 20 79 20 46 52 4f 4d 20 74 31 20 57 48 45  CT y FROM t1 WHE
4960: 52 45 20 79 3c 32 35 20 4f 52 44 45 52 20 42 59  RE y<25 ORDER BY
4970: 20 72 6f 77 69 64 20 44 45 53 43 2c 20 78 0a 20   rowid DESC, x. 
4980: 20 7d 0a 7d 20 7b 31 36 20 39 20 34 20 6e 6f 73   }.} {16 9 4 nos
4990: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
49a0: 72 65 2d 37 2e 33 33 20 7b 0a 20 20 63 6b 73 6f  re-7.33 {.  ckso
49b0: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
49c0: 79 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  y FROM t1 WHERE 
49d0: 79 3c 3d 32 35 20 4f 52 44 45 52 20 42 59 20 72  y<=25 ORDER BY r
49e0: 6f 77 69 64 20 44 45 53 43 2c 20 78 0a 20 20 7d  owid DESC, x.  }
49f0: 0a 7d 20 7b 32 35 20 31 36 20 39 20 34 20 6e 6f  .} {25 16 9 4 no
4a00: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
4a10: 65 72 65 2d 37 2e 33 34 20 7b 0a 20 20 63 6b 73  ere-7.34 {.  cks
4a20: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
4a30: 20 79 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   y FROM t1 WHERE
4a40: 20 79 3c 32 35 20 41 4e 44 20 79 3e 34 20 4f 52   y<25 AND y>4 OR
4a50: 44 45 52 20 42 59 20 72 6f 77 69 64 20 44 45 53  DER BY rowid DES
4a60: 43 2c 20 79 20 44 45 53 43 0a 20 20 7d 0a 7d 20  C, y DESC.  }.} 
4a70: 7b 31 36 20 39 20 6e 6f 73 6f 72 74 7d 0a 64 6f  {16 9 nosort}.do
4a80: 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 33 35  _test where-7.35
4a90: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
4aa0: 20 20 53 45 4c 45 43 54 20 79 20 46 52 4f 4d 20    SELECT y FROM 
4ab0: 74 31 20 57 48 45 52 45 20 79 3c 32 35 20 41 4e  t1 WHERE y<25 AN
4ac0: 44 20 79 3e 3d 34 20 4f 52 44 45 52 20 42 59 20  D y>=4 ORDER BY 
4ad0: 72 6f 77 69 64 20 44 45 53 43 0a 20 20 7d 0a 7d  rowid DESC.  }.}
4ae0: 20 7b 31 36 20 39 20 34 20 6e 6f 73 6f 72 74 7d   {16 9 4 nosort}
4af0: 0a 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  ..do_test where-
4b00: 38 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  8.1 {.  execsql 
4b10: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  {.    CREATE TAB
4b20: 4c 45 20 74 34 20 41 53 20 53 45 4c 45 43 54 20  LE t4 AS SELECT 
4b30: 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20 43  * FROM t1;.    C
4b40: 52 45 41 54 45 20 49 4e 44 45 58 20 69 34 78 79  REATE INDEX i4xy
4b50: 20 4f 4e 20 74 34 28 78 2c 79 29 3b 0a 20 20 7d   ON t4(x,y);.  }
4b60: 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20  .  cksort {.    
4b70: 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 34  SELECT w FROM t4
4b80: 20 57 48 45 52 45 20 78 3d 34 20 61 6e 64 20 79   WHERE x=4 and y
4b90: 3c 31 30 30 30 20 4f 52 44 45 52 20 42 59 20 79  <1000 ORDER BY y
4ba0: 20 44 45 53 43 20 6c 69 6d 69 74 20 33 3b 0a 20   DESC limit 3;. 
4bb0: 20 7d 0a 7d 20 7b 33 30 20 32 39 20 32 38 20 6e   }.} {30 29 28 n
4bc0: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
4bd0: 68 65 72 65 2d 38 2e 32 20 7b 0a 20 20 65 78 65  here-8.2 {.  exe
4be0: 63 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45 54  csql {.    DELET
4bf0: 45 20 46 52 4f 4d 20 74 34 3b 0a 20 20 7d 0a 20  E FROM t4;.  }. 
4c00: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
4c10: 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 34 20 57  LECT w FROM t4 W
4c20: 48 45 52 45 20 78 3d 34 20 61 6e 64 20 79 3c 31  HERE x=4 and y<1
4c30: 30 30 30 20 4f 52 44 45 52 20 42 59 20 79 20 44  000 ORDER BY y D
4c40: 45 53 43 20 6c 69 6d 69 74 20 33 3b 0a 20 20 7d  ESC limit 3;.  }
4c50: 0a 7d 20 7b 6e 6f 73 6f 72 74 7d 0a 0a 23 20 4d  .} {nosort}..# M
4c60: 61 6b 65 20 73 75 72 65 20 73 65 61 72 63 68 65  ake sure searche
4c70: 73 20 77 69 74 68 20 61 6e 20 69 6e 64 65 78 20  s with an index 
4c80: 77 6f 72 6b 20 77 69 74 68 20 61 6e 20 65 6d 70  work with an emp
4c90: 74 79 20 74 61 62 6c 65 2e 0a 23 0a 64 6f 5f 74  ty table..#.do_t
4ca0: 65 73 74 20 77 68 65 72 65 2d 39 2e 31 20 7b 0a  est where-9.1 {.
4cb0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
4cc0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 35 28  CREATE TABLE t5(
4cd0: 78 20 50 52 49 4d 41 52 59 20 4b 45 59 29 3b 0a  x PRIMARY KEY);.
4ce0: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
4cf0: 4d 20 74 35 20 57 48 45 52 45 20 78 3c 31 30 3b  M t5 WHERE x<10;
4d00: 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73  .  }.} {}.do_tes
4d10: 74 20 77 68 65 72 65 2d 39 2e 32 20 7b 0a 20 20  t where-9.2 {.  
4d20: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
4d30: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 35 20 57  LECT * FROM t5 W
4d40: 48 45 52 45 20 78 3c 31 30 20 4f 52 44 45 52 20  HERE x<10 ORDER 
4d50: 42 59 20 78 20 44 45 53 43 3b 0a 20 20 7d 0a 7d  BY x DESC;.  }.}
4d60: 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72   {}.do_test wher
4d70: 65 2d 39 2e 33 20 7b 0a 20 20 65 78 65 63 73 71  e-9.3 {.  execsq
4d80: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  l {.    SELECT *
4d90: 20 46 52 4f 4d 20 74 35 20 57 48 45 52 45 20 78   FROM t5 WHERE x
4da0: 3d 31 30 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 64  =10;.  }.} {}..d
4db0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 30 2e  o_test where-10.
4dc0: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
4dd0: 20 20 20 20 53 45 4c 45 43 54 20 31 20 57 48 45      SELECT 1 WHE
4de0: 52 45 20 61 62 73 28 72 61 6e 64 6f 6d 28 29 29  RE abs(random())
4df0: 3c 30 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74  <0.  }.} {}.do_t
4e00: 65 73 74 20 77 68 65 72 65 2d 31 30 2e 32 20 7b  est where-10.2 {
4e10: 0a 20 20 70 72 6f 63 20 74 63 6c 76 61 72 5f 66  .  proc tclvar_f
4e20: 75 6e 63 20 7b 76 6e 61 6d 65 7d 20 7b 72 65 74  unc {vname} {ret
4e30: 75 72 6e 20 5b 73 65 74 20 3a 3a 24 76 6e 61 6d  urn [set ::$vnam
4e40: 65 5d 7d 0a 20 20 64 62 20 66 75 6e 63 74 69 6f  e]}.  db functio
4e50: 6e 20 74 63 6c 76 61 72 20 74 63 6c 76 61 72 5f  n tclvar tclvar_
4e60: 66 75 6e 63 0a 20 20 73 65 74 20 3a 3a 76 31 20  func.  set ::v1 
4e70: 30 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  0.  execsql {.  
4e80: 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a    SELECT count(*
4e90: 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  ) FROM t1 WHERE 
4ea0: 74 63 6c 76 61 72 28 27 76 31 27 29 3b 0a 20 20  tclvar('v1');.  
4eb0: 7d 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20  }.} {0}.do_test 
4ec0: 77 68 65 72 65 2d 31 30 2e 33 20 7b 0a 20 20 73  where-10.3 {.  s
4ed0: 65 74 20 3a 3a 76 31 20 31 0a 20 20 65 78 65 63  et ::v1 1.  exec
4ee0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
4ef0: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
4f00: 31 20 57 48 45 52 45 20 74 63 6c 76 61 72 28 27  1 WHERE tclvar('
4f10: 76 31 27 29 3b 0a 20 20 7d 0a 7d 20 7b 31 30 30  v1');.  }.} {100
4f20: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
4f30: 31 30 2e 34 20 7b 0a 20 20 73 65 74 20 3a 3a 76  10.4 {.  set ::v
4f40: 31 20 31 0a 20 20 70 72 6f 63 20 74 63 6c 76 61  1 1.  proc tclva
4f50: 72 5f 66 75 6e 63 20 7b 76 6e 61 6d 65 7d 20 7b  r_func {vname} {
4f60: 0a 20 20 20 20 75 70 76 61 72 20 23 30 20 24 76  .    upvar #0 $v
4f70: 6e 61 6d 65 20 76 0a 20 20 20 20 73 65 74 20 76  name v.    set v
4f80: 20 5b 65 78 70 72 20 7b 21 24 76 7d 5d 0a 20 20   [expr {!$v}].  
4f90: 20 20 72 65 74 75 72 6e 20 24 76 0a 20 20 7d 0a    return $v.  }.
4fa0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
4fb0: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20  SELECT count(*) 
4fc0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 63  FROM t1 WHERE tc
4fd0: 6c 76 61 72 28 27 76 31 27 29 3b 0a 20 20 7d 0a  lvar('v1');.  }.
4fe0: 7d 20 7b 35 30 7d 0a 0a 23 20 54 69 63 6b 65 74  } {50}..# Ticket
4ff0: 20 23 31 33 37 36 2e 20 20 54 68 65 20 71 75 65   #1376.  The que
5000: 72 79 20 62 65 6c 6f 77 20 77 61 73 20 63 61 75  ry below was cau
5010: 73 69 6e 67 20 61 20 73 65 67 66 61 75 6c 74 2e  sing a segfault.
5020: 0a 23 20 54 68 65 20 70 72 6f 62 6c 65 6d 20 77  .# The problem w
5030: 61 73 20 74 68 65 20 61 67 65 2d 6f 6c 64 20 65  as the age-old e
5040: 72 72 6f 72 20 6f 66 20 63 61 6c 6c 69 6e 67 20  rror of calling 
5050: 72 65 61 6c 6c 6f 63 28 29 20 6f 6e 20 61 6e 0a  realloc() on an.
5060: 23 20 61 72 72 61 79 20 77 68 69 6c 65 20 74 68  # array while th
5070: 65 72 65 20 61 72 65 20 73 74 69 6c 6c 20 70 6f  ere are still po
5080: 69 6e 74 65 72 73 20 74 6f 20 69 6e 64 69 76 69  inters to indivi
5090: 64 75 61 6c 20 65 6c 65 6d 65 6e 74 73 20 6f 66  dual elements of
50a0: 0a 23 20 74 68 61 74 20 61 72 72 61 79 2e 0a 23  .# that array..#
50b0: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31  .do_test where-1
50c0: 31 2e 31 20 7b 0a 62 74 72 65 65 5f 62 72 65 61  1.1 {.btree_brea
50d0: 6b 70 6f 69 6e 74 0a 20 20 65 78 65 63 73 71 6c  kpoint.  execsql
50e0: 20 7b 0a 20 20 20 43 52 45 41 54 45 20 54 41 42   {.   CREATE TAB
50f0: 4c 45 20 74 39 39 28 44 74 65 20 49 4e 54 2c 20  LE t99(Dte INT, 
5100: 58 20 49 4e 54 29 3b 0a 20 20 20 44 45 4c 45 54  X INT);.   DELET
5110: 45 20 46 52 4f 4d 20 74 39 39 20 57 48 45 52 45  E FROM t99 WHERE
5120: 20 28 44 74 65 20 3d 20 32 34 35 31 33 33 37 29   (Dte = 2451337)
5130: 20 4f 52 20 28 44 74 65 20 3d 20 32 34 35 31 33   OR (Dte = 24513
5140: 33 39 29 20 4f 52 0a 20 20 20 20 20 28 44 74 65  39) OR.     (Dte
5150: 20 42 45 54 57 45 45 4e 20 32 34 35 31 33 34 35   BETWEEN 2451345
5160: 20 41 4e 44 20 32 34 35 31 33 34 37 29 20 4f 52   AND 2451347) OR
5170: 20 28 44 74 65 20 3d 20 32 34 35 31 33 35 31 29   (Dte = 2451351)
5180: 20 4f 52 20 0a 20 20 20 20 20 28 44 74 65 20 42   OR .     (Dte B
5190: 45 54 57 45 45 4e 20 32 34 35 31 33 35 35 20 41  ETWEEN 2451355 A
51a0: 4e 44 20 32 34 35 31 33 35 36 29 20 4f 52 20 28  ND 2451356) OR (
51b0: 44 74 65 20 3d 20 32 34 35 31 33 35 38 29 20 4f  Dte = 2451358) O
51c0: 52 0a 20 20 20 20 20 28 44 74 65 20 3d 20 32 34  R.     (Dte = 24
51d0: 35 31 33 36 32 29 20 4f 52 20 28 44 74 65 20 3d  51362) OR (Dte =
51e0: 20 32 34 35 31 33 36 35 29 20 4f 52 20 28 44 74   2451365) OR (Dt
51f0: 65 20 3d 20 32 34 35 31 33 36 37 29 20 4f 52 0a  e = 2451367) OR.
5200: 20 20 20 20 20 28 44 74 65 20 42 45 54 57 45 45       (Dte BETWEE
5210: 4e 20 32 34 35 31 33 37 32 20 41 4e 44 20 32 34  N 2451372 AND 24
5220: 35 31 33 37 36 29 20 4f 52 20 28 44 74 65 20 42  51376) OR (Dte B
5230: 45 54 57 45 45 4e 20 32 34 35 31 33 38 32 20 41  ETWEEN 2451382 A
5240: 4e 44 20 32 34 35 31 33 38 34 29 20 4f 52 0a 20  ND 2451384) OR. 
5250: 20 20 20 20 28 44 74 65 20 3d 20 32 34 35 31 33      (Dte = 24513
5260: 38 37 29 20 4f 52 20 28 44 74 65 20 42 45 54 57  87) OR (Dte BETW
5270: 45 45 4e 20 32 34 35 31 33 38 39 20 41 4e 44 20  EEN 2451389 AND 
5280: 32 34 35 31 33 39 31 29 20 4f 52 20 0a 20 20 20  2451391) OR .   
5290: 20 20 28 44 74 65 20 42 45 54 57 45 45 4e 20 32    (Dte BETWEEN 2
52a0: 34 35 31 33 39 33 20 41 4e 44 20 32 34 35 31 33  451393 AND 24513
52b0: 39 35 29 20 4f 52 20 28 44 74 65 20 3d 20 32 34  95) OR (Dte = 24
52c0: 35 31 34 30 30 29 20 4f 52 20 0a 20 20 20 20 20  51400) OR .     
52d0: 28 44 74 65 20 3d 20 32 34 35 31 34 30 32 29 20  (Dte = 2451402) 
52e0: 4f 52 20 28 44 74 65 20 3d 20 32 34 35 31 34 30  OR (Dte = 245140
52f0: 34 29 20 4f 52 20 28 44 74 65 20 42 45 54 57 45  4) OR (Dte BETWE
5300: 45 4e 20 32 34 35 31 34 31 36 20 41 4e 44 20 32  EN 2451416 AND 2
5310: 34 35 31 34 31 38 29 20 4f 52 20 0a 20 20 20 20  451418) OR .    
5320: 20 28 44 74 65 20 3d 20 32 34 35 31 34 32 32 29   (Dte = 2451422)
5330: 20 4f 52 20 28 44 74 65 20 3d 20 32 34 35 31 34   OR (Dte = 24514
5340: 32 36 29 20 4f 52 20 28 44 74 65 20 42 45 54 57  26) OR (Dte BETW
5350: 45 45 4e 20 32 34 35 31 34 34 35 20 41 4e 44 20  EEN 2451445 AND 
5360: 32 34 35 31 34 34 36 29 20 4f 52 0a 20 20 20 20  2451446) OR.    
5370: 20 28 44 74 65 20 3d 20 32 34 35 31 34 35 36 29   (Dte = 2451456)
5380: 20 4f 52 20 28 44 74 65 20 3d 20 32 34 35 31 34   OR (Dte = 24514
5390: 35 38 29 20 4f 52 20 28 44 74 65 20 42 45 54 57  58) OR (Dte BETW
53a0: 45 45 4e 20 32 34 35 31 34 36 35 20 41 4e 44 20  EEN 2451465 AND 
53b0: 32 34 35 31 34 36 37 29 20 4f 52 0a 20 20 20 20  2451467) OR.    
53c0: 20 28 44 74 65 20 42 45 54 57 45 45 4e 20 32 34   (Dte BETWEEN 24
53d0: 35 31 34 36 39 20 41 4e 44 20 32 34 35 31 34 37  51469 AND 245147
53e0: 31 29 20 4f 52 20 28 44 74 65 20 3d 20 32 34 35  1) OR (Dte = 245
53f0: 31 34 37 34 29 20 4f 52 0a 20 20 20 20 20 28 44  1474) OR.     (D
5400: 74 65 20 42 45 54 57 45 45 4e 20 32 34 35 31 34  te BETWEEN 24514
5410: 37 37 20 41 4e 44 20 32 34 35 31 35 30 31 29 20  77 AND 2451501) 
5420: 4f 52 20 28 44 74 65 20 42 45 54 57 45 45 4e 20  OR (Dte BETWEEN 
5430: 32 34 35 31 35 30 33 20 41 4e 44 20 32 34 35 31  2451503 AND 2451
5440: 35 30 39 29 20 4f 52 0a 20 20 20 20 20 28 44 74  509) OR.     (Dt
5450: 65 20 42 45 54 57 45 45 4e 20 32 34 35 31 35 31  e BETWEEN 245151
5460: 31 20 41 4e 44 20 32 34 35 31 35 31 34 29 20 4f  1 AND 2451514) O
5470: 52 20 28 44 74 65 20 42 45 54 57 45 45 4e 20 32  R (Dte BETWEEN 2
5480: 34 35 31 35 31 38 20 41 4e 44 20 32 34 35 31 35  451518 AND 24515
5490: 32 31 29 20 4f 52 0a 20 20 20 20 20 28 44 74 65  21) OR.     (Dte
54a0: 20 42 45 54 57 45 45 4e 20 32 34 35 31 35 32 33   BETWEEN 2451523
54b0: 20 41 4e 44 20 32 34 35 31 35 33 31 29 20 4f 52   AND 2451531) OR
54c0: 20 28 44 74 65 20 42 45 54 57 45 45 4e 20 32 34   (Dte BETWEEN 24
54d0: 35 31 35 33 33 20 41 4e 44 20 32 34 35 31 35 33  51533 AND 245153
54e0: 37 29 20 4f 52 0a 20 20 20 20 20 28 44 74 65 20  7) OR.     (Dte 
54f0: 42 45 54 57 45 45 4e 20 32 34 35 31 35 33 39 20  BETWEEN 2451539 
5500: 41 4e 44 20 32 34 35 31 35 34 34 29 20 4f 52 20  AND 2451544) OR 
5510: 28 44 74 65 20 42 45 54 57 45 45 4e 20 32 34 35  (Dte BETWEEN 245
5520: 31 35 34 36 20 41 4e 44 20 32 34 35 31 35 35 31  1546 AND 2451551
5530: 29 20 4f 52 0a 20 20 20 20 20 28 44 74 65 20 42  ) OR.     (Dte B
5540: 45 54 57 45 45 4e 20 32 34 35 31 35 35 33 20 41  ETWEEN 2451553 A
5550: 4e 44 20 32 34 35 31 35 35 35 29 20 4f 52 20 28  ND 2451555) OR (
5560: 44 74 65 20 3d 20 32 34 35 31 35 35 37 29 20 4f  Dte = 2451557) O
5570: 52 0a 20 20 20 20 20 28 44 74 65 20 42 45 54 57  R.     (Dte BETW
5580: 45 45 4e 20 32 34 35 31 35 35 39 20 41 4e 44 20  EEN 2451559 AND 
5590: 32 34 35 31 35 36 31 29 20 4f 52 20 28 44 74 65  2451561) OR (Dte
55a0: 20 3d 20 32 34 35 31 35 36 33 29 20 4f 52 0a 20   = 2451563) OR. 
55b0: 20 20 20 20 28 44 74 65 20 42 45 54 57 45 45 4e      (Dte BETWEEN
55c0: 20 32 34 35 31 35 36 35 20 41 4e 44 20 32 34 35   2451565 AND 245
55d0: 31 35 36 36 29 20 4f 52 20 28 44 74 65 20 42 45  1566) OR (Dte BE
55e0: 54 57 45 45 4e 20 32 34 35 31 35 36 39 20 41 4e  TWEEN 2451569 AN
55f0: 44 20 32 34 35 31 35 37 31 29 20 4f 52 20 0a 20  D 2451571) OR . 
5600: 20 20 20 20 28 44 74 65 20 3d 20 32 34 35 31 35      (Dte = 24515
5610: 37 33 29 20 4f 52 20 28 44 74 65 20 3d 20 32 34  73) OR (Dte = 24
5620: 35 31 35 37 35 29 20 4f 52 20 28 44 74 65 20 3d  51575) OR (Dte =
5630: 20 32 34 35 31 35 37 37 29 20 4f 52 20 28 44 74   2451577) OR (Dt
5640: 65 20 3d 20 32 34 35 31 35 38 31 29 20 4f 52 0a  e = 2451581) OR.
5650: 20 20 20 20 20 28 44 74 65 20 42 45 54 57 45 45       (Dte BETWEE
5660: 4e 20 32 34 35 31 35 38 33 20 41 4e 44 20 32 34  N 2451583 AND 24
5670: 35 31 35 38 36 29 20 4f 52 20 28 44 74 65 20 42  51586) OR (Dte B
5680: 45 54 57 45 45 4e 20 32 34 35 31 35 38 38 20 41  ETWEEN 2451588 A
5690: 4e 44 20 32 34 35 31 35 39 32 29 20 4f 52 20 0a  ND 2451592) OR .
56a0: 20 20 20 20 20 28 44 74 65 20 42 45 54 57 45 45       (Dte BETWEE
56b0: 4e 20 32 34 35 31 35 39 36 20 41 4e 44 20 32 34  N 2451596 AND 24
56c0: 35 31 35 39 38 29 20 4f 52 20 28 44 74 65 20 3d  51598) OR (Dte =
56d0: 20 32 34 35 31 36 30 30 29 20 4f 52 0a 20 20 20   2451600) OR.   
56e0: 20 20 28 44 74 65 20 42 45 54 57 45 45 4e 20 32    (Dte BETWEEN 2
56f0: 34 35 31 36 30 32 20 41 4e 44 20 32 34 35 31 36  451602 AND 24516
5700: 30 33 29 20 4f 52 20 28 44 74 65 20 3d 20 32 34  03) OR (Dte = 24
5710: 35 31 36 30 36 29 20 4f 52 20 28 44 74 65 20 3d  51606) OR (Dte =
5720: 20 32 34 35 31 36 31 31 29 3b 0a 20 20 7d 0a 7d   2451611);.  }.}
5730: 20 7b 7d 0a 0a 0a 69 6e 74 65 67 72 69 74 79 5f   {}...integrity_
5740: 63 68 65 63 6b 20 7b 77 68 65 72 65 2d 39 39 2e  check {where-99.
5750: 30 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a  0}..finish_test.