/ Hex Artifact Content
Login

Artifact 1d020f50c77f37b2dbab9766ca959e6e3278ecdb:


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 34 31 20 32 30 30 37 2f 30  st,v 1.41 2007/0
0210: 32 2f 30 36 20 32 33 3a 34 31 3a 33 34 20 64 72  2/06 23:41:34 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 20 20 63 6f  where-2.1 {.  co
17f0: 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  unt {.    SELECT
1800: 20 77 2c 20 70 20 46 52 4f 4d 20 74 32 2c 20 74   w, p FROM t2, t
1810: 31 0a 20 20 20 20 57 48 45 52 45 20 78 3d 71 20  1.    WHERE x=q 
1820: 41 4e 44 20 79 3d 73 20 41 4e 44 20 72 3d 38 39  AND y=s AND r=89
1830: 37 37 0a 20 20 7d 0a 7d 20 7b 33 34 20 36 37 20  77.  }.} {34 67 
1840: 36 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  6}.do_test where
1850: 2d 32 2e 32 20 7b 0a 20 20 63 6f 75 6e 74 20 7b  -2.2 {.  count {
1860: 0a 20 20 20 20 53 45 4c 45 43 54 20 77 2c 20 70  .    SELECT w, p
1870: 20 46 52 4f 4d 20 74 32 2c 20 74 31 0a 20 20 20   FROM t2, t1.   
1880: 20 57 48 45 52 45 20 78 3d 71 20 41 4e 44 20 73   WHERE x=q AND s
1890: 3d 79 20 41 4e 44 20 72 3d 38 39 37 37 0a 20 20  =y AND r=8977.  
18a0: 7d 0a 7d 20 7b 33 34 20 36 37 20 36 7d 0a 64 6f  }.} {34 67 6}.do
18b0: 5f 74 65 73 74 20 77 68 65 72 65 2d 32 2e 33 20  _test where-2.3 
18c0: 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20  {.  count {.    
18d0: 53 45 4c 45 43 54 20 77 2c 20 70 20 46 52 4f 4d  SELECT w, p FROM
18e0: 20 74 32 2c 20 74 31 0a 20 20 20 20 57 48 45 52   t2, t1.    WHER
18f0: 45 20 78 3d 71 20 41 4e 44 20 73 3d 79 20 41 4e  E x=q AND s=y AN
1900: 44 20 72 3d 38 39 37 37 20 41 4e 44 20 77 3e 31  D r=8977 AND w>1
1910: 30 0a 20 20 7d 0a 7d 20 7b 33 34 20 36 37 20 36  0.  }.} {34 67 6
1920: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
1930: 32 2e 34 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a  2.4 {.  count {.
1940: 20 20 20 20 53 45 4c 45 43 54 20 77 2c 20 70 20      SELECT w, p 
1950: 46 52 4f 4d 20 74 32 2c 20 74 31 0a 20 20 20 20  FROM t2, t1.    
1960: 57 48 45 52 45 20 70 3c 38 30 20 41 4e 44 20 78  WHERE p<80 AND x
1970: 3d 71 20 41 4e 44 20 73 3d 79 20 41 4e 44 20 72  =q AND s=y AND r
1980: 3d 38 39 37 37 20 41 4e 44 20 77 3e 31 30 0a 20  =8977 AND w>10. 
1990: 20 7d 0a 7d 20 7b 33 34 20 36 37 20 36 7d 0a 64   }.} {34 67 6}.d
19a0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 32 2e 35  o_test where-2.5
19b0: 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20   {.  count {.   
19c0: 20 53 45 4c 45 43 54 20 77 2c 20 70 20 46 52 4f   SELECT w, p FRO
19d0: 4d 20 74 32 2c 20 74 31 0a 20 20 20 20 57 48 45  M t2, t1.    WHE
19e0: 52 45 20 70 3c 38 30 20 41 4e 44 20 78 3d 71 20  RE p<80 AND x=q 
19f0: 41 4e 44 20 38 39 37 37 3d 72 20 41 4e 44 20 73  AND 8977=r AND s
1a00: 3d 79 20 41 4e 44 20 77 3e 31 30 0a 20 20 7d 0a  =y AND w>10.  }.
1a10: 7d 20 7b 33 34 20 36 37 20 36 7d 0a 64 6f 5f 74  } {34 67 6}.do_t
1a20: 65 73 74 20 77 68 65 72 65 2d 32 2e 36 20 7b 0a  est where-2.6 {.
1a30: 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45    count {.    SE
1a40: 4c 45 43 54 20 77 2c 20 70 20 46 52 4f 4d 20 74  LECT w, p FROM t
1a50: 32 2c 20 74 31 0a 20 20 20 20 57 48 45 52 45 20  2, t1.    WHERE 
1a60: 78 3d 71 20 41 4e 44 20 70 3d 37 37 20 41 4e 44  x=q AND p=77 AND
1a70: 20 73 3d 79 20 41 4e 44 20 77 3e 35 0a 20 20 7d   s=y AND w>5.  }
1a80: 0a 7d 20 7b 32 34 20 37 37 20 36 7d 0a 64 6f 5f  .} {24 77 6}.do_
1a90: 74 65 73 74 20 77 68 65 72 65 2d 32 2e 37 20 7b  test where-2.7 {
1aa0: 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53  .  count {.    S
1ab0: 45 4c 45 43 54 20 77 2c 20 70 20 46 52 4f 4d 20  ELECT w, p FROM 
1ac0: 74 31 2c 20 74 32 0a 20 20 20 20 57 48 45 52 45  t1, t2.    WHERE
1ad0: 20 78 3d 71 20 41 4e 44 20 70 3e 37 37 20 41 4e   x=q AND p>77 AN
1ae0: 44 20 73 3d 79 20 41 4e 44 20 77 3d 35 0a 20 20  D s=y AND w=5.  
1af0: 7d 0a 7d 20 7b 35 20 39 36 20 36 7d 0a 0a 23 20  }.} {5 96 6}..# 
1b00: 4c 65 74 73 20 64 6f 20 61 20 33 2d 77 61 79 20  Lets do a 3-way 
1b10: 6a 6f 69 6e 2e 0a 23 0a 64 6f 5f 74 65 73 74 20  join..#.do_test 
1b20: 77 68 65 72 65 2d 33 2e 31 20 7b 0a 20 20 63 6f  where-3.1 {.  co
1b30: 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  unt {.    SELECT
1b40: 20 41 2e 77 2c 20 42 2e 70 2c 20 43 2e 77 20 46   A.w, B.p, C.w F
1b50: 52 4f 4d 20 74 31 20 61 73 20 41 2c 20 74 32 20  ROM t1 as A, t2 
1b60: 61 73 20 42 2c 20 74 31 20 61 73 20 43 0a 20 20  as B, t1 as C.  
1b70: 20 20 57 48 45 52 45 20 43 2e 77 3d 31 30 31 2d    WHERE C.w=101-
1b80: 42 2e 70 20 41 4e 44 20 42 2e 72 3d 31 30 32 30  B.p AND B.r=1020
1b90: 32 2d 41 2e 79 20 41 4e 44 20 41 2e 77 3d 31 31  2-A.y AND A.w=11
1ba0: 0a 20 20 7d 0a 7d 20 7b 31 31 20 39 30 20 31 31  .  }.} {11 90 11
1bb0: 20 38 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72   8}.do_test wher
1bc0: 65 2d 33 2e 32 20 7b 0a 20 20 63 6f 75 6e 74 20  e-3.2 {.  count 
1bd0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 41 2e 77  {.    SELECT A.w
1be0: 2c 20 42 2e 70 2c 20 43 2e 77 20 46 52 4f 4d 20  , B.p, C.w FROM 
1bf0: 74 31 20 61 73 20 41 2c 20 74 32 20 61 73 20 42  t1 as A, t2 as B
1c00: 2c 20 74 31 20 61 73 20 43 0a 20 20 20 20 57 48  , t1 as C.    WH
1c10: 45 52 45 20 43 2e 77 3d 31 30 31 2d 42 2e 70 20  ERE C.w=101-B.p 
1c20: 41 4e 44 20 42 2e 72 3d 31 30 32 30 32 2d 41 2e  AND B.r=10202-A.
1c30: 79 20 41 4e 44 20 41 2e 77 3d 31 32 0a 20 20 7d  y AND A.w=12.  }
1c40: 0a 7d 20 7b 31 32 20 38 39 20 31 32 20 38 7d 0a  .} {12 89 12 8}.
1c50: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 33 2e  do_test where-3.
1c60: 33 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20  3 {.  count {.  
1c70: 20 20 53 45 4c 45 43 54 20 41 2e 77 2c 20 42 2e    SELECT A.w, B.
1c80: 70 2c 20 43 2e 77 20 46 52 4f 4d 20 74 31 20 61  p, C.w FROM t1 a
1c90: 73 20 41 2c 20 74 32 20 61 73 20 42 2c 20 74 31  s A, t2 as B, t1
1ca0: 20 61 73 20 43 0a 20 20 20 20 57 48 45 52 45 20   as C.    WHERE 
1cb0: 41 2e 77 3d 31 35 20 41 4e 44 20 42 2e 70 3d 43  A.w=15 AND B.p=C
1cc0: 2e 77 20 41 4e 44 20 42 2e 72 3d 31 30 32 30 32  .w AND B.r=10202
1cd0: 2d 41 2e 79 0a 20 20 7d 0a 7d 20 7b 31 35 20 38  -A.y.  }.} {15 8
1ce0: 36 20 38 36 20 38 7d 0a 0a 23 20 54 65 73 74 20  6 86 8}..# Test 
1cf0: 74 6f 20 73 65 65 20 74 68 61 74 20 74 68 65 20  to see that the 
1d00: 73 70 65 63 69 61 6c 20 63 61 73 65 20 6f 66 20  special case of 
1d10: 61 20 63 6f 6e 73 74 61 6e 74 20 57 48 45 52 45  a constant WHERE
1d20: 20 63 6c 61 75 73 65 20 69 73 0a 23 20 68 61 6e   clause is.# han
1d30: 64 6c 65 64 2e 0a 23 0a 64 6f 5f 74 65 73 74 20  dled..#.do_test 
1d40: 77 68 65 72 65 2d 34 2e 31 20 7b 0a 20 20 63 6f  where-4.1 {.  co
1d50: 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  unt {.    SELECT
1d60: 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   * FROM t1 WHERE
1d70: 20 30 0a 20 20 7d 0a 7d 20 7b 30 7d 0a 64 6f 5f   0.  }.} {0}.do_
1d80: 74 65 73 74 20 77 68 65 72 65 2d 34 2e 32 20 7b  test where-4.2 {
1d90: 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53  .  count {.    S
1da0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20  ELECT * FROM t1 
1db0: 57 48 45 52 45 20 31 20 4c 49 4d 49 54 20 31 0a  WHERE 1 LIMIT 1.
1dc0: 20 20 7d 0a 7d 20 7b 31 20 30 20 34 20 30 7d 0a    }.} {1 0 4 0}.
1dd0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 34 2e  do_test where-4.
1de0: 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  3 {.  execsql {.
1df0: 20 20 20 20 53 45 4c 45 43 54 20 39 39 20 57 48      SELECT 99 WH
1e00: 45 52 45 20 30 0a 20 20 7d 0a 7d 20 7b 7d 0a 64  ERE 0.  }.} {}.d
1e10: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 34 2e 34  o_test where-4.4
1e20: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
1e30: 20 20 20 53 45 4c 45 43 54 20 39 39 20 57 48 45     SELECT 99 WHE
1e40: 52 45 20 31 0a 20 20 7d 0a 7d 20 7b 39 39 7d 0a  RE 1.  }.} {99}.
1e50: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 34 2e  do_test where-4.
1e60: 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  5 {.  execsql {.
1e70: 20 20 20 20 53 45 4c 45 43 54 20 39 39 20 57 48      SELECT 99 WH
1e80: 45 52 45 20 30 2e 31 0a 20 20 7d 0a 7d 20 7b 39  ERE 0.1.  }.} {9
1e90: 39 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  9}.do_test where
1ea0: 2d 34 2e 36 20 7b 0a 20 20 65 78 65 63 73 71 6c  -4.6 {.  execsql
1eb0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 39 39   {.    SELECT 99
1ec0: 20 57 48 45 52 45 20 30 2e 30 0a 20 20 7d 0a 7d   WHERE 0.0.  }.}
1ed0: 20 7b 7d 0a 0a 23 20 56 65 72 69 66 79 20 74 68   {}..# Verify th
1ee0: 61 74 20 49 4e 20 6f 70 65 72 61 74 6f 72 73 20  at IN operators 
1ef0: 69 6e 20 61 20 57 48 45 52 45 20 63 6c 61 75 73  in a WHERE claus
1f00: 65 20 61 72 65 20 68 61 6e 64 6c 65 64 20 63 6f  e are handled co
1f10: 72 72 65 63 74 6c 79 2e 0a 23 20 4f 6d 69 74 20  rrectly..# Omit 
1f20: 74 68 65 73 65 20 74 65 73 74 73 20 69 66 20 74  these tests if t
1f30: 68 65 20 62 75 69 6c 64 20 69 73 20 6e 6f 74 20  he build is not 
1f40: 63 61 70 61 62 6c 65 20 6f 66 20 73 75 62 2d 71  capable of sub-q
1f50: 75 65 72 69 65 73 2e 0a 23 0a 69 66 63 61 70 61  ueries..#.ifcapa
1f60: 62 6c 65 20 73 75 62 71 75 65 72 79 20 7b 0a 20  ble subquery {. 
1f70: 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 35   do_test where-5
1f80: 2e 31 20 7b 0a 20 20 20 20 63 6f 75 6e 74 20 7b  .1 {.    count {
1f90: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20  .      SELECT * 
1fa0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 72 6f  FROM t1 WHERE ro
1fb0: 77 69 64 20 49 4e 20 28 31 2c 32 2c 33 2c 31 32  wid IN (1,2,3,12
1fc0: 33 34 29 20 6f 72 64 65 72 20 62 79 20 31 3b 0a  34) order by 1;.
1fd0: 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 30 20 34      }.  } {1 0 4
1fe0: 20 32 20 31 20 39 20 33 20 31 20 31 36 20 34 7d   2 1 9 3 1 16 4}
1ff0: 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65  .  do_test where
2000: 2d 35 2e 32 20 7b 0a 20 20 20 20 63 6f 75 6e 74  -5.2 {.    count
2010: 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20   {.      SELECT 
2020: 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  * FROM t1 WHERE 
2030: 72 6f 77 69 64 2b 30 20 49 4e 20 28 31 2c 32 2c  rowid+0 IN (1,2,
2040: 33 2c 31 32 33 34 29 20 6f 72 64 65 72 20 62 79  3,1234) order by
2050: 20 31 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31   1;.    }.  } {1
2060: 20 30 20 34 20 32 20 31 20 39 20 33 20 31 20 31   0 4 2 1 9 3 1 1
2070: 36 20 31 39 39 7d 0a 20 20 64 6f 5f 74 65 73 74  6 199}.  do_test
2080: 20 77 68 65 72 65 2d 35 2e 33 20 7b 0a 20 20 20   where-5.3 {.   
2090: 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20 53   count {.      S
20a0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20  ELECT * FROM t1 
20b0: 57 48 45 52 45 20 77 20 49 4e 20 28 2d 31 2c 31  WHERE w IN (-1,1
20c0: 2c 32 2c 33 29 20 6f 72 64 65 72 20 62 79 20 31  ,2,3) order by 1
20d0: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 30  ;.    }.  } {1 0
20e0: 20 34 20 32 20 31 20 39 20 33 20 31 20 31 36 20   4 2 1 9 3 1 16 
20f0: 31 34 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  14}.  do_test wh
2100: 65 72 65 2d 35 2e 34 20 7b 0a 20 20 20 20 63 6f  ere-5.4 {.    co
2110: 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  unt {.      SELE
2120: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
2130: 52 45 20 77 2b 30 20 49 4e 20 28 2d 31 2c 31 2c  RE w+0 IN (-1,1,
2140: 32 2c 33 29 20 6f 72 64 65 72 20 62 79 20 31 3b  2,3) order by 1;
2150: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 30 20  .    }.  } {1 0 
2160: 34 20 32 20 31 20 39 20 33 20 31 20 31 36 20 31  4 2 1 9 3 1 16 1
2170: 39 39 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  99}.  do_test wh
2180: 65 72 65 2d 35 2e 35 20 7b 0a 20 20 20 20 63 6f  ere-5.5 {.    co
2190: 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  unt {.      SELE
21a0: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
21b0: 52 45 20 72 6f 77 69 64 20 49 4e 20 0a 20 20 20  RE rowid IN .   
21c0: 20 20 20 20 20 20 28 73 65 6c 65 63 74 20 72 6f        (select ro
21d0: 77 69 64 20 66 72 6f 6d 20 74 31 20 77 68 65 72  wid from t1 wher
21e0: 65 20 72 6f 77 69 64 20 49 4e 20 28 2d 31 2c 32  e rowid IN (-1,2
21f0: 2c 34 29 29 0a 20 20 20 20 20 20 4f 52 44 45 52  ,4)).      ORDER
2200: 20 42 59 20 31 3b 0a 20 20 20 20 7d 0a 20 20 7d   BY 1;.    }.  }
2210: 20 7b 32 20 31 20 39 20 34 20 32 20 32 35 20 33   {2 1 9 4 2 25 3
2220: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72  }.  do_test wher
2230: 65 2d 35 2e 36 20 7b 0a 20 20 20 20 63 6f 75 6e  e-5.6 {.    coun
2240: 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  t {.      SELECT
2250: 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   * FROM t1 WHERE
2260: 20 72 6f 77 69 64 2b 30 20 49 4e 20 0a 20 20 20   rowid+0 IN .   
2270: 20 20 20 20 20 20 28 73 65 6c 65 63 74 20 72 6f        (select ro
2280: 77 69 64 20 66 72 6f 6d 20 74 31 20 77 68 65 72  wid from t1 wher
2290: 65 20 72 6f 77 69 64 20 49 4e 20 28 2d 31 2c 32  e rowid IN (-1,2
22a0: 2c 34 29 29 0a 20 20 20 20 20 20 4f 52 44 45 52  ,4)).      ORDER
22b0: 20 42 59 20 31 3b 0a 20 20 20 20 7d 0a 20 20 7d   BY 1;.    }.  }
22c0: 20 7b 32 20 31 20 39 20 34 20 32 20 32 35 20 32   {2 1 9 4 2 25 2
22d0: 30 31 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  01}.  do_test wh
22e0: 65 72 65 2d 35 2e 37 20 7b 0a 20 20 20 20 63 6f  ere-5.7 {.    co
22f0: 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  unt {.      SELE
2300: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
2310: 52 45 20 77 20 49 4e 20 0a 20 20 20 20 20 20 20  RE w IN .       
2320: 20 20 28 73 65 6c 65 63 74 20 72 6f 77 69 64 20    (select rowid 
2330: 66 72 6f 6d 20 74 31 20 77 68 65 72 65 20 72 6f  from t1 where ro
2340: 77 69 64 20 49 4e 20 28 2d 31 2c 32 2c 34 29 29  wid IN (-1,2,4))
2350: 0a 20 20 20 20 20 20 4f 52 44 45 52 20 42 59 20  .      ORDER BY 
2360: 31 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 32 20  1;.    }.  } {2 
2370: 31 20 39 20 34 20 32 20 32 35 20 39 7d 0a 20 20  1 9 4 2 25 9}.  
2380: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 35 2e  do_test where-5.
2390: 38 20 7b 0a 20 20 20 20 63 6f 75 6e 74 20 7b 0a  8 {.    count {.
23a0: 20 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46        SELECT * F
23b0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 77 2b 30  ROM t1 WHERE w+0
23c0: 20 49 4e 20 0a 20 20 20 20 20 20 20 20 20 28 73   IN .         (s
23d0: 65 6c 65 63 74 20 72 6f 77 69 64 20 66 72 6f 6d  elect rowid from
23e0: 20 74 31 20 77 68 65 72 65 20 72 6f 77 69 64 20   t1 where rowid 
23f0: 49 4e 20 28 2d 31 2c 32 2c 34 29 29 0a 20 20 20  IN (-1,2,4)).   
2400: 20 20 20 4f 52 44 45 52 20 42 59 20 31 3b 0a 20     ORDER BY 1;. 
2410: 20 20 20 7d 0a 20 20 7d 20 7b 32 20 31 20 39 20     }.  } {2 1 9 
2420: 34 20 32 20 32 35 20 32 30 31 7d 0a 20 20 64 6f  4 2 25 201}.  do
2430: 5f 74 65 73 74 20 77 68 65 72 65 2d 35 2e 39 20  _test where-5.9 
2440: 7b 0a 20 20 20 20 63 6f 75 6e 74 20 7b 0a 20 20  {.    count {.  
2450: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
2460: 4d 20 74 31 20 57 48 45 52 45 20 78 20 49 4e 20  M t1 WHERE x IN 
2470: 28 31 2c 37 29 20 4f 52 44 45 52 20 42 59 20 31  (1,7) ORDER BY 1
2480: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 32 20 31  ;.    }.  } {2 1
2490: 20 39 20 33 20 31 20 31 36 20 37 7d 0a 20 20 64   9 3 1 16 7}.  d
24a0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 35 2e 31  o_test where-5.1
24b0: 30 20 7b 0a 20 20 20 20 63 6f 75 6e 74 20 7b 0a  0 {.    count {.
24c0: 20 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46        SELECT * F
24d0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 2b 30  ROM t1 WHERE x+0
24e0: 20 49 4e 20 28 31 2c 37 29 20 4f 52 44 45 52 20   IN (1,7) ORDER 
24f0: 42 59 20 31 3b 0a 20 20 20 20 7d 0a 20 20 7d 20  BY 1;.    }.  } 
2500: 7b 32 20 31 20 39 20 33 20 31 20 31 36 20 31 39  {2 1 9 3 1 16 19
2510: 39 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65  9}.  do_test whe
2520: 72 65 2d 35 2e 31 31 20 7b 0a 20 20 20 20 63 6f  re-5.11 {.    co
2530: 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  unt {.      SELE
2540: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
2550: 52 45 20 79 20 49 4e 20 28 36 34 30 30 2c 38 31  RE y IN (6400,81
2560: 30 30 29 20 4f 52 44 45 52 20 42 59 20 31 3b 0a  00) ORDER BY 1;.
2570: 20 20 20 20 7d 0a 20 20 7d 20 7b 37 39 20 36 20      }.  } {79 6 
2580: 36 34 30 30 20 38 39 20 36 20 38 31 30 30 20 31  6400 89 6 8100 1
2590: 39 39 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  99}.  do_test wh
25a0: 65 72 65 2d 35 2e 31 32 20 7b 0a 20 20 20 20 63  ere-5.12 {.    c
25b0: 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20 53 45 4c  ount {.      SEL
25c0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
25d0: 45 52 45 20 78 3d 36 20 41 4e 44 20 79 20 49 4e  ERE x=6 AND y IN
25e0: 20 28 36 34 30 30 2c 38 31 30 30 29 20 4f 52 44   (6400,8100) ORD
25f0: 45 52 20 42 59 20 31 3b 0a 20 20 20 20 7d 0a 20  ER BY 1;.    }. 
2600: 20 7d 20 7b 37 39 20 36 20 36 34 30 30 20 38 39   } {79 6 6400 89
2610: 20 36 20 38 31 30 30 20 37 7d 0a 20 20 64 6f 5f   6 8100 7}.  do_
2620: 74 65 73 74 20 77 68 65 72 65 2d 35 2e 31 33 20  test where-5.13 
2630: 7b 0a 20 20 20 20 63 6f 75 6e 74 20 7b 0a 20 20  {.    count {.  
2640: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
2650: 4d 20 74 31 20 57 48 45 52 45 20 78 20 49 4e 20  M t1 WHERE x IN 
2660: 28 31 2c 37 29 20 41 4e 44 20 79 20 4e 4f 54 20  (1,7) AND y NOT 
2670: 49 4e 20 28 36 34 30 30 2c 38 31 30 30 29 20 4f  IN (6400,8100) O
2680: 52 44 45 52 20 42 59 20 31 3b 0a 20 20 20 20 7d  RDER BY 1;.    }
2690: 0a 20 20 7d 20 7b 32 20 31 20 39 20 33 20 31 20  .  } {2 1 9 3 1 
26a0: 31 36 20 37 7d 0a 20 20 64 6f 5f 74 65 73 74 20  16 7}.  do_test 
26b0: 77 68 65 72 65 2d 35 2e 31 34 20 7b 0a 20 20 20  where-5.14 {.   
26c0: 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 20 20 53   count {.      S
26d0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20  ELECT * FROM t1 
26e0: 57 48 45 52 45 20 78 20 49 4e 20 28 31 2c 37 29  WHERE x IN (1,7)
26f0: 20 41 4e 44 20 79 20 49 4e 20 28 39 2c 31 30 29   AND y IN (9,10)
2700: 20 4f 52 44 45 52 20 42 59 20 31 3b 0a 20 20 20   ORDER BY 1;.   
2710: 20 7d 0a 20 20 7d 20 7b 32 20 31 20 39 20 38 7d   }.  } {2 1 9 8}
2720: 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65  .  do_test where
2730: 2d 35 2e 31 35 20 7b 0a 20 20 20 20 63 6f 75 6e  -5.15 {.    coun
2740: 74 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  t {.      SELECT
2750: 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   * FROM t1 WHERE
2760: 20 78 20 49 4e 20 28 31 2c 37 29 20 41 4e 44 20   x IN (1,7) AND 
2770: 79 20 49 4e 20 28 39 2c 31 36 29 20 4f 52 44 45  y IN (9,16) ORDE
2780: 52 20 42 59 20 31 3b 0a 20 20 20 20 7d 0a 20 20  R BY 1;.    }.  
2790: 7d 20 7b 32 20 31 20 39 20 33 20 31 20 31 36 20  } {2 1 9 3 1 16 
27a0: 31 31 7d 0a 7d 0a 0a 23 20 54 68 69 73 20 70 72  11}.}..# This pr
27b0: 6f 63 65 64 75 72 65 20 65 78 65 63 75 74 65 73  ocedure executes
27c0: 20 74 68 65 20 53 51 4c 2e 20 20 54 68 65 6e 20   the SQL.  Then 
27d0: 69 74 20 63 68 65 63 6b 73 20 74 6f 20 73 65 65  it checks to see
27e0: 20 69 66 20 74 68 65 20 4f 50 5f 53 6f 72 74 0a   if the OP_Sort.
27f0: 23 20 6f 70 63 6f 64 65 20 77 61 73 20 65 78 65  # opcode was exe
2800: 63 75 74 65 64 2e 20 20 49 66 20 61 6e 20 4f 50  cuted.  If an OP
2810: 5f 53 6f 72 74 20 64 69 64 20 6f 63 63 75 72 2c  _Sort did occur,
2820: 20 74 68 65 6e 20 22 73 6f 72 74 22 20 69 73 20   then "sort" is 
2830: 61 70 70 65 6e 64 65 64 0a 23 20 74 6f 20 74 68  appended.# to th
2840: 65 20 72 65 73 75 6c 74 2e 20 20 49 66 20 6e 6f  e result.  If no
2850: 20 4f 50 5f 53 6f 72 74 20 68 61 70 70 65 6e 65   OP_Sort happene
2860: 64 2c 20 74 68 65 6e 20 22 6e 6f 73 6f 72 74 22  d, then "nosort"
2870: 20 69 73 20 61 70 70 65 6e 64 65 64 2e 0a 23 0a   is appended..#.
2880: 23 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65  # This procedure
2890: 20 69 73 20 75 73 65 64 20 74 6f 20 63 68 65 63   is used to chec
28a0: 6b 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 73  k to make sure s
28b0: 6f 72 74 69 6e 67 20 69 73 20 6f 72 20 69 73 20  orting is or is 
28c0: 6e 6f 74 0a 23 20 6f 63 63 75 72 72 69 6e 67 20  not.# occurring 
28d0: 61 73 20 65 78 70 65 63 74 65 64 2e 0a 23 0a 70  as expected..#.p
28e0: 72 6f 63 20 63 6b 73 6f 72 74 20 7b 73 71 6c 7d  roc cksort {sql}
28f0: 20 7b 0a 20 20 73 65 74 20 3a 3a 73 71 6c 69 74   {.  set ::sqlit
2900: 65 5f 73 6f 72 74 5f 63 6f 75 6e 74 20 30 0a 20  e_sort_count 0. 
2910: 20 73 65 74 20 64 61 74 61 20 5b 65 78 65 63 73   set data [execs
2920: 71 6c 20 24 73 71 6c 5d 0a 20 20 69 66 20 7b 24  ql $sql].  if {$
2930: 3a 3a 73 71 6c 69 74 65 5f 73 6f 72 74 5f 63 6f  ::sqlite_sort_co
2940: 75 6e 74 7d 20 7b 73 65 74 20 78 20 73 6f 72 74  unt} {set x sort
2950: 7d 20 7b 73 65 74 20 78 20 6e 6f 73 6f 72 74 7d  } {set x nosort}
2960: 0a 20 20 6c 61 70 70 65 6e 64 20 64 61 74 61 20  .  lappend data 
2970: 24 78 0a 20 20 72 65 74 75 72 6e 20 24 64 61 74  $x.  return $dat
2980: 61 0a 7d 0a 23 20 43 68 65 63 6b 20 6f 75 74 20  a.}.# Check out 
2990: 74 68 65 20 6c 6f 67 69 63 20 74 68 61 74 20 61  the logic that a
29a0: 74 74 65 6d 70 74 73 20 74 6f 20 69 6d 70 6c 65  ttempts to imple
29b0: 6d 65 6e 74 20 74 68 65 20 4f 52 44 45 52 20 42  ment the ORDER B
29c0: 59 20 63 6c 61 75 73 65 0a 23 20 75 73 69 6e 67  Y clause.# using
29d0: 20 61 6e 20 69 6e 64 65 78 20 72 61 74 68 65 72   an index rather
29e0: 20 74 68 61 6e 20 62 79 20 73 6f 72 74 69 6e 67   than by sorting
29f0: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  ..#.do_test wher
2a00: 65 2d 36 2e 31 20 7b 0a 20 20 65 78 65 63 73 71  e-6.1 {.  execsq
2a10: 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54  l {.    CREATE T
2a20: 41 42 4c 45 20 74 33 28 61 2c 62 2c 63 29 3b 0a  ABLE t3(a,b,c);.
2a30: 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58      CREATE INDEX
2a40: 20 74 33 61 20 4f 4e 20 74 33 28 61 29 3b 0a 20   t3a ON t3(a);. 
2a50: 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20     CREATE INDEX 
2a60: 74 33 62 63 20 4f 4e 20 74 33 28 62 2c 63 29 3b  t3bc ON t3(b,c);
2a70: 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45  .    CREATE INDE
2a80: 58 20 74 33 61 63 62 20 4f 4e 20 74 33 28 61 2c  X t3acb ON t3(a,
2a90: 63 2c 62 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  c,b);.    INSERT
2aa0: 20 49 4e 54 4f 20 74 33 20 53 45 4c 45 43 54 20   INTO t3 SELECT 
2ab0: 77 2c 20 31 30 31 2d 77 2c 20 79 20 46 52 4f 4d  w, 101-w, y FROM
2ac0: 20 74 31 3b 0a 20 20 20 20 53 45 4c 45 43 54 20   t1;.    SELECT 
2ad0: 63 6f 75 6e 74 28 2a 29 2c 20 73 75 6d 28 61 29  count(*), sum(a)
2ae0: 2c 20 73 75 6d 28 62 29 2c 20 73 75 6d 28 63 29  , sum(b), sum(c)
2af0: 20 46 52 4f 4d 20 74 33 3b 0a 20 20 7d 0a 7d 20   FROM t3;.  }.} 
2b00: 7b 31 30 30 20 35 30 35 30 20 35 30 35 30 20 33  {100 5050 5050 3
2b10: 34 38 35 35 30 7d 0a 64 6f 5f 74 65 73 74 20 77  48550}.do_test w
2b20: 68 65 72 65 2d 36 2e 32 20 7b 0a 20 20 63 6b 73  here-6.2 {.  cks
2b30: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
2b40: 20 2a 20 46 52 4f 4d 20 74 33 20 4f 52 44 45 52   * FROM t3 ORDER
2b50: 20 42 59 20 61 20 4c 49 4d 49 54 20 33 0a 20 20   BY a LIMIT 3.  
2b60: 7d 0a 7d 20 7b 31 20 31 30 30 20 34 20 32 20 39  }.} {1 100 4 2 9
2b70: 39 20 39 20 33 20 39 38 20 31 36 20 6e 6f 73 6f  9 9 3 98 16 noso
2b80: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
2b90: 65 2d 36 2e 33 20 7b 0a 20 20 63 6b 73 6f 72 74  e-6.3 {.  cksort
2ba0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
2bb0: 46 52 4f 4d 20 74 33 20 4f 52 44 45 52 20 42 59  FROM t3 ORDER BY
2bc0: 20 61 2b 31 20 4c 49 4d 49 54 20 33 0a 20 20 7d   a+1 LIMIT 3.  }
2bd0: 0a 7d 20 7b 31 20 31 30 30 20 34 20 32 20 39 39  .} {1 100 4 2 99
2be0: 20 39 20 33 20 39 38 20 31 36 20 73 6f 72 74 7d   9 3 98 16 sort}
2bf0: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36  .do_test where-6
2c00: 2e 34 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a  .4 {.  cksort {.
2c10: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
2c20: 4d 20 74 33 20 57 48 45 52 45 20 61 3c 31 30 20  M t3 WHERE a<10 
2c30: 4f 52 44 45 52 20 42 59 20 61 20 4c 49 4d 49 54  ORDER BY a LIMIT
2c40: 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30 30 20   3.  }.} {1 100 
2c50: 34 20 32 20 39 39 20 39 20 33 20 39 38 20 31 36  4 2 99 9 3 98 16
2c60: 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74   nosort}.do_test
2c70: 20 77 68 65 72 65 2d 36 2e 35 20 7b 0a 20 20 63   where-6.5 {.  c
2c80: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
2c90: 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45  CT * FROM t3 WHE
2ca0: 52 45 20 61 3e 30 20 41 4e 44 20 61 3c 31 30 20  RE a>0 AND a<10 
2cb0: 4f 52 44 45 52 20 42 59 20 61 20 4c 49 4d 49 54  ORDER BY a LIMIT
2cc0: 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30 30 20   3.  }.} {1 100 
2cd0: 34 20 32 20 39 39 20 39 20 33 20 39 38 20 31 36  4 2 99 9 3 98 16
2ce0: 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74   nosort}.do_test
2cf0: 20 77 68 65 72 65 2d 36 2e 36 20 7b 0a 20 20 63   where-6.6 {.  c
2d00: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
2d10: 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45  CT * FROM t3 WHE
2d20: 52 45 20 61 3e 30 20 4f 52 44 45 52 20 42 59 20  RE a>0 ORDER BY 
2d30: 61 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20  a LIMIT 3.  }.} 
2d40: 7b 31 20 31 30 30 20 34 20 32 20 39 39 20 39 20  {1 100 4 2 99 9 
2d50: 33 20 39 38 20 31 36 20 6e 6f 73 6f 72 74 7d 0a  3 98 16 nosort}.
2d60: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e  do_test where-6.
2d70: 37 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  7 {.  cksort {. 
2d80: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
2d90: 20 74 33 20 57 48 45 52 45 20 62 3e 30 20 4f 52   t3 WHERE b>0 OR
2da0: 44 45 52 20 42 59 20 61 20 4c 49 4d 49 54 20 33  DER BY a LIMIT 3
2db0: 0a 20 20 7d 0a 7d 20 7b 31 20 31 30 30 20 34 20  .  }.} {1 100 4 
2dc0: 32 20 39 39 20 39 20 33 20 39 38 20 31 36 20 6e  2 99 9 3 98 16 n
2dd0: 6f 73 6f 72 74 7d 0a 69 66 63 61 70 61 62 6c 65  osort}.ifcapable
2de0: 20 73 75 62 71 75 65 72 79 20 7b 0a 20 20 64 6f   subquery {.  do
2df0: 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 38 20  _test where-6.8 
2e00: 7b 0a 20 20 20 20 63 6b 73 6f 72 74 20 7b 0a 20  {.    cksort {. 
2e10: 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52       SELECT * FR
2e20: 4f 4d 20 74 33 20 57 48 45 52 45 20 61 20 49 4e  OM t3 WHERE a IN
2e30: 20 28 33 2c 35 2c 37 2c 31 2c 39 2c 34 2c 32 29   (3,5,7,1,9,4,2)
2e40: 20 4f 52 44 45 52 20 42 59 20 61 20 4c 49 4d 49   ORDER BY a LIMI
2e50: 54 20 33 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31  T 3.    }.  } {1
2e60: 20 31 30 30 20 34 20 32 20 39 39 20 39 20 33 20   100 4 2 99 9 3 
2e70: 39 38 20 31 36 20 73 6f 72 74 7d 0a 7d 0a 64 6f  98 16 sort}.}.do
2e80: 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 39 2e  _test where-6.9.
2e90: 31 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  1 {.  cksort {. 
2ea0: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
2eb0: 20 74 33 20 57 48 45 52 45 20 61 3d 31 20 41 4e   t3 WHERE a=1 AN
2ec0: 44 20 63 3e 30 20 4f 52 44 45 52 20 42 59 20 61  D c>0 ORDER BY a
2ed0: 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b   LIMIT 3.  }.} {
2ee0: 31 20 31 30 30 20 34 20 6e 6f 73 6f 72 74 7d 0a  1 100 4 nosort}.
2ef0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e  do_test where-6.
2f00: 39 2e 31 2e 31 20 7b 0a 20 20 63 6b 73 6f 72 74  9.1.1 {.  cksort
2f10: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
2f20: 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20 61 3e  FROM t3 WHERE a>
2f30: 3d 31 20 41 4e 44 20 61 3d 31 20 41 4e 44 20 63  =1 AND a=1 AND c
2f40: 3e 30 20 4f 52 44 45 52 20 42 59 20 61 20 4c 49  >0 ORDER BY a LI
2f50: 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31  MIT 3.  }.} {1 1
2f60: 30 30 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f  00 4 nosort}.do_
2f70: 74 65 73 74 20 77 68 65 72 65 2d 36 2e 39 2e 31  test where-6.9.1
2f80: 2e 32 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a  .2 {.  cksort {.
2f90: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
2fa0: 4d 20 74 33 20 57 48 45 52 45 20 61 3c 32 20 41  M t3 WHERE a<2 A
2fb0: 4e 44 20 61 3d 31 20 41 4e 44 20 63 3e 30 20 4f  ND a=1 AND c>0 O
2fc0: 52 44 45 52 20 42 59 20 61 20 4c 49 4d 49 54 20  RDER BY a LIMIT 
2fd0: 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30 30 20 34  3.  }.} {1 100 4
2fe0: 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74   nosort}.do_test
2ff0: 20 77 68 65 72 65 2d 36 2e 39 2e 32 20 7b 0a 20   where-6.9.2 {. 
3000: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
3010: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 57  LECT * FROM t3 W
3020: 48 45 52 45 20 61 3d 31 20 41 4e 44 20 63 3e 30  HERE a=1 AND c>0
3030: 20 4f 52 44 45 52 20 42 59 20 61 2c 63 20 4c 49   ORDER BY a,c LI
3040: 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31  MIT 3.  }.} {1 1
3050: 30 30 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f  00 4 nosort}.do_
3060: 74 65 73 74 20 77 68 65 72 65 2d 36 2e 39 2e 33  test where-6.9.3
3070: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
3080: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
3090: 74 33 20 57 48 45 52 45 20 61 3d 31 20 41 4e 44  t3 WHERE a=1 AND
30a0: 20 63 3e 30 20 4f 52 44 45 52 20 42 59 20 63 20   c>0 ORDER BY c 
30b0: 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31  LIMIT 3.  }.} {1
30c0: 20 31 30 30 20 34 20 6e 6f 73 6f 72 74 7d 0a 64   100 4 nosort}.d
30d0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 39  o_test where-6.9
30e0: 2e 34 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a  .4 {.  cksort {.
30f0: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
3100: 4d 20 74 33 20 57 48 45 52 45 20 61 3d 31 20 41  M t3 WHERE a=1 A
3110: 4e 44 20 63 3e 30 20 4f 52 44 45 52 20 42 59 20  ND c>0 ORDER BY 
3120: 61 20 44 45 53 43 20 4c 49 4d 49 54 20 33 0a 20  a DESC LIMIT 3. 
3130: 20 7d 0a 7d 20 7b 31 20 31 30 30 20 34 20 6e 6f   }.} {1 100 4 no
3140: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
3150: 65 72 65 2d 36 2e 39 2e 35 20 7b 0a 20 20 63 6b  ere-6.9.5 {.  ck
3160: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
3170: 54 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52  T * FROM t3 WHER
3180: 45 20 61 3d 31 20 41 4e 44 20 63 3e 30 20 4f 52  E a=1 AND c>0 OR
3190: 44 45 52 20 42 59 20 61 20 44 45 53 43 2c 20 63  DER BY a DESC, c
31a0: 20 44 45 53 43 20 4c 49 4d 49 54 20 33 0a 20 20   DESC LIMIT 3.  
31b0: 7d 0a 7d 20 7b 31 20 31 30 30 20 34 20 6e 6f 73  }.} {1 100 4 nos
31c0: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
31d0: 72 65 2d 36 2e 39 2e 36 20 7b 0a 20 20 63 6b 73  re-6.9.6 {.  cks
31e0: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
31f0: 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45   * FROM t3 WHERE
3200: 20 61 3d 31 20 41 4e 44 20 63 3e 30 20 4f 52 44   a=1 AND c>0 ORD
3210: 45 52 20 42 59 20 63 20 44 45 53 43 20 4c 49 4d  ER BY c DESC LIM
3220: 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30  IT 3.  }.} {1 10
3230: 30 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74  0 4 nosort}.do_t
3240: 65 73 74 20 77 68 65 72 65 2d 36 2e 39 2e 37 20  est where-6.9.7 
3250: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
3260: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
3270: 33 20 57 48 45 52 45 20 61 3d 31 20 41 4e 44 20  3 WHERE a=1 AND 
3280: 63 3e 30 20 4f 52 44 45 52 20 42 59 20 63 2c 61  c>0 ORDER BY c,a
3290: 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b   LIMIT 3.  }.} {
32a0: 31 20 31 30 30 20 34 20 73 6f 72 74 7d 0a 64 6f  1 100 4 sort}.do
32b0: 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 39 2e  _test where-6.9.
32c0: 38 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  8 {.  cksort {. 
32d0: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
32e0: 20 74 33 20 57 48 45 52 45 20 61 3d 31 20 41 4e   t3 WHERE a=1 AN
32f0: 44 20 63 3e 30 20 4f 52 44 45 52 20 42 59 20 61  D c>0 ORDER BY a
3300: 20 44 45 53 43 2c 20 63 20 41 53 43 20 4c 49 4d   DESC, c ASC LIM
3310: 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30  IT 3.  }.} {1 10
3320: 30 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74  0 4 nosort}.do_t
3330: 65 73 74 20 77 68 65 72 65 2d 36 2e 39 2e 39 20  est where-6.9.9 
3340: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
3350: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
3360: 33 20 57 48 45 52 45 20 61 3d 31 20 41 4e 44 20  3 WHERE a=1 AND 
3370: 63 3e 30 20 4f 52 44 45 52 20 42 59 20 61 20 41  c>0 ORDER BY a A
3380: 53 43 2c 20 63 20 44 45 53 43 20 4c 49 4d 49 54  SC, c DESC LIMIT
3390: 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30 30 20   3.  }.} {1 100 
33a0: 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  4 nosort}.do_tes
33b0: 74 20 77 68 65 72 65 2d 36 2e 31 30 20 7b 0a 20  t where-6.10 {. 
33c0: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
33d0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 57  LECT * FROM t3 W
33e0: 48 45 52 45 20 61 3d 31 20 41 4e 44 20 63 3e 30  HERE a=1 AND c>0
33f0: 20 4f 52 44 45 52 20 42 59 20 61 20 4c 49 4d 49   ORDER BY a LIMI
3400: 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 31 30 30  T 3.  }.} {1 100
3410: 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65   4 nosort}.do_te
3420: 73 74 20 77 68 65 72 65 2d 36 2e 31 31 20 7b 0a  st where-6.11 {.
3430: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
3440: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 33 20  ELECT * FROM t3 
3450: 57 48 45 52 45 20 61 3d 31 20 41 4e 44 20 63 3e  WHERE a=1 AND c>
3460: 30 20 4f 52 44 45 52 20 42 59 20 61 2c 63 20 4c  0 ORDER BY a,c L
3470: 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20  IMIT 3.  }.} {1 
3480: 31 30 30 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f  100 4 nosort}.do
3490: 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 31 32  _test where-6.12
34a0: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
34b0: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
34c0: 74 33 20 57 48 45 52 45 20 61 3d 31 20 41 4e 44  t3 WHERE a=1 AND
34d0: 20 63 3e 30 20 4f 52 44 45 52 20 42 59 20 61 2c   c>0 ORDER BY a,
34e0: 63 2c 62 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a  c,b LIMIT 3.  }.
34f0: 7d 20 7b 31 20 31 30 30 20 34 20 6e 6f 73 6f 72  } {1 100 4 nosor
3500: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
3510: 2d 36 2e 31 33 20 7b 0a 20 20 63 6b 73 6f 72 74  -6.13 {.  cksort
3520: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
3530: 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20 61 3e  FROM t3 WHERE a>
3540: 30 20 4f 52 44 45 52 20 42 59 20 61 20 44 45 53  0 ORDER BY a DES
3550: 43 20 4c 49 4d 49 54 20 33 0a 20 20 7d 0a 7d 20  C LIMIT 3.  }.} 
3560: 7b 31 30 30 20 31 20 31 30 32 30 31 20 39 39 20  {100 1 10201 99 
3570: 32 20 31 30 30 30 30 20 39 38 20 33 20 39 38 30  2 10000 98 3 980
3580: 31 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  1 nosort}.do_tes
3590: 74 20 77 68 65 72 65 2d 36 2e 31 33 2e 31 20 7b  t where-6.13.1 {
35a0: 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20  .  cksort {.    
35b0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 33  SELECT * FROM t3
35c0: 20 57 48 45 52 45 20 61 3e 30 20 4f 52 44 45 52   WHERE a>0 ORDER
35d0: 20 42 59 20 2d 61 20 4c 49 4d 49 54 20 33 0a 20   BY -a LIMIT 3. 
35e0: 20 7d 0a 7d 20 7b 31 30 30 20 31 20 31 30 32 30   }.} {100 1 1020
35f0: 31 20 39 39 20 32 20 31 30 30 30 30 20 39 38 20  1 99 2 10000 98 
3600: 33 20 39 38 30 31 20 73 6f 72 74 7d 0a 64 6f 5f  3 9801 sort}.do_
3610: 74 65 73 74 20 77 68 65 72 65 2d 36 2e 31 34 20  test where-6.14 
3620: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
3630: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
3640: 33 20 4f 52 44 45 52 20 42 59 20 62 20 4c 49 4d  3 ORDER BY b LIM
3650: 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 30 30 20  IT 3.  }.} {100 
3660: 31 20 31 30 32 30 31 20 39 39 20 32 20 31 30 30  1 10201 99 2 100
3670: 30 30 20 39 38 20 33 20 39 38 30 31 20 6e 6f 73  00 98 3 9801 nos
3680: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
3690: 72 65 2d 36 2e 31 35 20 7b 0a 20 20 63 6b 73 6f  re-6.15 {.  ckso
36a0: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
36b0: 74 33 2e 61 2c 20 74 31 2e 78 20 46 52 4f 4d 20  t3.a, t1.x FROM 
36c0: 74 33 2c 20 74 31 20 57 48 45 52 45 20 74 33 2e  t3, t1 WHERE t3.
36d0: 61 3d 74 31 2e 77 20 4f 52 44 45 52 20 42 59 20  a=t1.w ORDER BY 
36e0: 74 33 2e 61 20 4c 49 4d 49 54 20 33 0a 20 20 7d  t3.a LIMIT 3.  }
36f0: 0a 7d 20 7b 31 20 30 20 32 20 31 20 33 20 31 20  .} {1 0 2 1 3 1 
3700: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
3710: 77 68 65 72 65 2d 36 2e 31 36 20 7b 0a 20 20 63  where-6.16 {.  c
3720: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
3730: 43 54 20 74 33 2e 61 2c 20 74 31 2e 78 20 46 52  CT t3.a, t1.x FR
3740: 4f 4d 20 74 33 2c 20 74 31 20 57 48 45 52 45 20  OM t3, t1 WHERE 
3750: 74 33 2e 61 3d 74 31 2e 77 20 4f 52 44 45 52 20  t3.a=t1.w ORDER 
3760: 42 59 20 74 31 2e 78 2c 20 74 33 2e 61 20 4c 49  BY t1.x, t3.a LI
3770: 4d 49 54 20 33 0a 20 20 7d 0a 7d 20 7b 31 20 30  MIT 3.  }.} {1 0
3780: 20 32 20 31 20 33 20 31 20 73 6f 72 74 7d 0a 64   2 1 3 1 sort}.d
3790: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 31  o_test where-6.1
37a0: 39 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  9 {.  cksort {. 
37b0: 20 20 20 53 45 4c 45 43 54 20 79 20 46 52 4f 4d     SELECT y FROM
37c0: 20 74 31 20 4f 52 44 45 52 20 42 59 20 77 20 4c   t1 ORDER BY w L
37d0: 49 4d 49 54 20 33 3b 0a 20 20 7d 0a 7d 20 7b 34  IMIT 3;.  }.} {4
37e0: 20 39 20 31 36 20 6e 6f 73 6f 72 74 7d 0a 64 6f   9 16 nosort}.do
37f0: 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e 32 30  _test where-6.20
3800: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
3810: 20 20 53 45 4c 45 43 54 20 79 20 46 52 4f 4d 20    SELECT y FROM 
3820: 74 31 20 4f 52 44 45 52 20 42 59 20 72 6f 77 69  t1 ORDER BY rowi
3830: 64 20 4c 49 4d 49 54 20 33 3b 0a 20 20 7d 0a 7d  d LIMIT 3;.  }.}
3840: 20 7b 34 20 39 20 31 36 20 6e 6f 73 6f 72 74 7d   {4 9 16 nosort}
3850: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36  .do_test where-6
3860: 2e 32 31 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  .21 {.  cksort {
3870: 0a 20 20 20 20 53 45 4c 45 43 54 20 79 20 46 52  .    SELECT y FR
3880: 4f 4d 20 74 31 20 4f 52 44 45 52 20 42 59 20 72  OM t1 ORDER BY r
3890: 6f 77 69 64 2c 20 79 20 4c 49 4d 49 54 20 33 3b  owid, y LIMIT 3;
38a0: 0a 20 20 7d 0a 7d 20 7b 34 20 39 20 31 36 20 6e  .  }.} {4 9 16 n
38b0: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
38c0: 68 65 72 65 2d 36 2e 32 32 20 7b 0a 20 20 63 6b  here-6.22 {.  ck
38d0: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
38e0: 54 20 79 20 46 52 4f 4d 20 74 31 20 4f 52 44 45  T y FROM t1 ORDE
38f0: 52 20 42 59 20 72 6f 77 69 64 2c 20 79 20 44 45  R BY rowid, y DE
3900: 53 43 20 4c 49 4d 49 54 20 33 3b 0a 20 20 7d 0a  SC LIMIT 3;.  }.
3910: 7d 20 7b 34 20 39 20 31 36 20 6e 6f 73 6f 72 74  } {4 9 16 nosort
3920: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
3930: 36 2e 32 33 20 7b 0a 20 20 63 6b 73 6f 72 74 20  6.23 {.  cksort 
3940: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 79 20 46  {.    SELECT y F
3950: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 79 3e 34  ROM t1 WHERE y>4
3960: 20 4f 52 44 45 52 20 42 59 20 72 6f 77 69 64 2c   ORDER BY rowid,
3970: 20 77 2c 20 78 20 4c 49 4d 49 54 20 33 3b 0a 20   w, x LIMIT 3;. 
3980: 20 7d 0a 7d 20 7b 39 20 31 36 20 32 35 20 6e 6f   }.} {9 16 25 no
3990: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
39a0: 65 72 65 2d 36 2e 32 34 20 7b 0a 20 20 63 6b 73  ere-6.24 {.  cks
39b0: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
39c0: 20 79 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   y FROM t1 WHERE
39d0: 20 79 3e 3d 39 20 4f 52 44 45 52 20 42 59 20 72   y>=9 ORDER BY r
39e0: 6f 77 69 64 2c 20 78 20 44 45 53 43 2c 20 77 20  owid, x DESC, w 
39f0: 4c 49 4d 49 54 20 33 3b 0a 20 20 7d 0a 7d 20 7b  LIMIT 3;.  }.} {
3a00: 39 20 31 36 20 32 35 20 6e 6f 73 6f 72 74 7d 0a  9 16 25 nosort}.
3a10: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 36 2e  do_test where-6.
3a20: 32 35 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a  25 {.  cksort {.
3a30: 20 20 20 20 53 45 4c 45 43 54 20 79 20 46 52 4f      SELECT y FRO
3a40: 4d 20 74 31 20 57 48 45 52 45 20 79 3e 34 20 41  M t1 WHERE y>4 A
3a50: 4e 44 20 79 3c 32 35 20 4f 52 44 45 52 20 42 59  ND y<25 ORDER BY
3a60: 20 72 6f 77 69 64 3b 0a 20 20 7d 0a 7d 20 7b 39   rowid;.  }.} {9
3a70: 20 31 36 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74   16 nosort}.do_t
3a80: 65 73 74 20 77 68 65 72 65 2d 36 2e 32 36 20 7b  est where-6.26 {
3a90: 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20  .  cksort {.    
3aa0: 53 45 4c 45 43 54 20 79 20 46 52 4f 4d 20 74 31  SELECT y FROM t1
3ab0: 20 57 48 45 52 45 20 79 3e 3d 34 20 41 4e 44 20   WHERE y>=4 AND 
3ac0: 79 3c 3d 32 35 20 4f 52 44 45 52 20 42 59 20 6f  y<=25 ORDER BY o
3ad0: 69 64 3b 0a 20 20 7d 0a 7d 20 7b 34 20 39 20 31  id;.  }.} {4 9 1
3ae0: 36 20 32 35 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f  6 25 nosort}.do_
3af0: 74 65 73 74 20 77 68 65 72 65 2d 36 2e 32 37 20  test where-6.27 
3b00: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
3b10: 20 53 45 4c 45 43 54 20 79 20 46 52 4f 4d 20 74   SELECT y FROM t
3b20: 31 20 57 48 45 52 45 20 79 3c 3d 32 35 20 4f 52  1 WHERE y<=25 OR
3b30: 44 45 52 20 42 59 20 5f 72 6f 77 69 64 5f 2c 20  DER BY _rowid_, 
3b40: 77 2b 79 3b 0a 20 20 7d 0a 7d 20 7b 34 20 39 20  w+y;.  }.} {4 9 
3b50: 31 36 20 32 35 20 6e 6f 73 6f 72 74 7d 0a 0a 0a  16 25 nosort}...
3b60: 23 20 54 65 73 74 73 20 66 6f 72 20 72 65 76 65  # Tests for reve
3b70: 72 73 65 2d 6f 72 64 65 72 20 73 6f 72 74 69 6e  rse-order sortin
3b80: 67 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 77 68 65  g..#.do_test whe
3b90: 72 65 2d 37 2e 31 20 7b 0a 20 20 63 6b 73 6f 72  re-7.1 {.  cksor
3ba0: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77  t {.    SELECT w
3bb0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78   FROM t1 WHERE x
3bc0: 3d 33 20 4f 52 44 45 52 20 42 59 20 79 3b 0a 20  =3 ORDER BY y;. 
3bd0: 20 7d 0a 7d 20 7b 38 20 39 20 31 30 20 31 31 20   }.} {8 9 10 11 
3be0: 31 32 20 31 33 20 31 34 20 31 35 20 6e 6f 73 6f  12 13 14 15 noso
3bf0: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
3c00: 65 2d 37 2e 32 20 7b 0a 20 20 63 6b 73 6f 72 74  e-7.2 {.  cksort
3c10: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20   {.    SELECT w 
3c20: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d  FROM t1 WHERE x=
3c30: 33 20 4f 52 44 45 52 20 42 59 20 79 20 44 45 53  3 ORDER BY y DES
3c40: 43 3b 0a 20 20 7d 0a 7d 20 7b 31 35 20 31 34 20  C;.  }.} {15 14 
3c50: 31 33 20 31 32 20 31 31 20 31 30 20 39 20 38 20  13 12 11 10 9 8 
3c60: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
3c70: 77 68 65 72 65 2d 37 2e 33 20 7b 0a 20 20 63 6b  where-7.3 {.  ck
3c80: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
3c90: 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T w FROM t1 WHER
3ca0: 45 20 78 3d 33 20 41 4e 44 20 79 3e 31 30 30 20  E x=3 AND y>100 
3cb0: 4f 52 44 45 52 20 42 59 20 79 20 4c 49 4d 49 54  ORDER BY y LIMIT
3cc0: 20 33 3b 0a 20 20 7d 0a 7d 20 7b 31 30 20 31 31   3;.  }.} {10 11
3cd0: 20 31 32 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74   12 nosort}.do_t
3ce0: 65 73 74 20 77 68 65 72 65 2d 37 2e 34 20 7b 0a  est where-7.4 {.
3cf0: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
3d00: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
3d10: 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3e  WHERE x=3 AND y>
3d20: 31 30 30 20 4f 52 44 45 52 20 42 59 20 79 20 44  100 ORDER BY y D
3d30: 45 53 43 20 4c 49 4d 49 54 20 33 3b 0a 20 20 7d  ESC LIMIT 3;.  }
3d40: 0a 7d 20 7b 31 35 20 31 34 20 31 33 20 6e 6f 73  .} {15 14 13 nos
3d50: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
3d60: 72 65 2d 37 2e 35 20 7b 0a 20 20 63 6b 73 6f 72  re-7.5 {.  cksor
3d70: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77  t {.    SELECT w
3d80: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78   FROM t1 WHERE x
3d90: 3d 33 20 41 4e 44 20 79 3e 31 32 31 20 4f 52 44  =3 AND y>121 ORD
3da0: 45 52 20 42 59 20 79 20 44 45 53 43 3b 0a 20 20  ER BY y DESC;.  
3db0: 7d 0a 7d 20 7b 31 35 20 31 34 20 31 33 20 31 32  }.} {15 14 13 12
3dc0: 20 31 31 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74   11 nosort}.do_t
3dd0: 65 73 74 20 77 68 65 72 65 2d 37 2e 36 20 7b 0a  est where-7.6 {.
3de0: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
3df0: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
3e00: 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3e  WHERE x=3 AND y>
3e10: 3d 31 32 31 20 4f 52 44 45 52 20 42 59 20 79 20  =121 ORDER BY y 
3e20: 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31 35 20  DESC;.  }.} {15 
3e30: 31 34 20 31 33 20 31 32 20 31 31 20 31 30 20 6e  14 13 12 11 10 n
3e40: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
3e50: 68 65 72 65 2d 37 2e 37 20 7b 0a 20 20 63 6b 73  here-7.7 {.  cks
3e60: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
3e70: 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   w FROM t1 WHERE
3e80: 20 78 3d 33 20 41 4e 44 20 79 3e 3d 31 32 31 20   x=3 AND y>=121 
3e90: 41 4e 44 20 79 3c 31 39 36 20 4f 52 44 45 52 20  AND y<196 ORDER 
3ea0: 42 59 20 79 20 44 45 53 43 3b 0a 20 20 7d 0a 7d  BY y DESC;.  }.}
3eb0: 20 7b 31 32 20 31 31 20 31 30 20 6e 6f 73 6f 72   {12 11 10 nosor
3ec0: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
3ed0: 2d 37 2e 38 20 7b 0a 20 20 63 6b 73 6f 72 74 20  -7.8 {.  cksort 
3ee0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20 46  {.    SELECT w F
3ef0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33  ROM t1 WHERE x=3
3f00: 20 41 4e 44 20 79 3e 3d 31 32 31 20 41 4e 44 20   AND y>=121 AND 
3f10: 79 3c 3d 31 39 36 20 4f 52 44 45 52 20 42 59 20  y<=196 ORDER BY 
3f20: 79 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31  y DESC;.  }.} {1
3f30: 33 20 31 32 20 31 31 20 31 30 20 6e 6f 73 6f 72  3 12 11 10 nosor
3f40: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
3f50: 2d 37 2e 39 20 7b 0a 20 20 63 6b 73 6f 72 74 20  -7.9 {.  cksort 
3f60: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20 46  {.    SELECT w F
3f70: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33  ROM t1 WHERE x=3
3f80: 20 41 4e 44 20 79 3e 31 32 31 20 41 4e 44 20 79   AND y>121 AND y
3f90: 3c 3d 31 39 36 20 4f 52 44 45 52 20 42 59 20 79  <=196 ORDER BY y
3fa0: 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31 33   DESC;.  }.} {13
3fb0: 20 31 32 20 31 31 20 6e 6f 73 6f 72 74 7d 0a 64   12 11 nosort}.d
3fc0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 31  o_test where-7.1
3fd0: 30 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  0 {.  cksort {. 
3fe0: 20 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d     SELECT w FROM
3ff0: 20 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e   t1 WHERE x=3 AN
4000: 44 20 79 3e 31 30 30 20 41 4e 44 20 79 3c 31 39  D y>100 AND y<19
4010: 36 20 4f 52 44 45 52 20 42 59 20 79 20 44 45 53  6 ORDER BY y DES
4020: 43 3b 0a 20 20 7d 0a 7d 20 7b 31 32 20 31 31 20  C;.  }.} {12 11 
4030: 31 30 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  10 nosort}.do_te
4040: 73 74 20 77 68 65 72 65 2d 37 2e 31 31 20 7b 0a  st where-7.11 {.
4050: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
4060: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
4070: 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3e  WHERE x=3 AND y>
4080: 3d 31 32 31 20 41 4e 44 20 79 3c 31 39 36 20 4f  =121 AND y<196 O
4090: 52 44 45 52 20 42 59 20 79 3b 0a 20 20 7d 0a 7d  RDER BY y;.  }.}
40a0: 20 7b 31 30 20 31 31 20 31 32 20 6e 6f 73 6f 72   {10 11 12 nosor
40b0: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
40c0: 2d 37 2e 31 32 20 7b 0a 20 20 63 6b 73 6f 72 74  -7.12 {.  cksort
40d0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20   {.    SELECT w 
40e0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d  FROM t1 WHERE x=
40f0: 33 20 41 4e 44 20 79 3e 3d 31 32 31 20 41 4e 44  3 AND y>=121 AND
4100: 20 79 3c 3d 31 39 36 20 4f 52 44 45 52 20 42 59   y<=196 ORDER BY
4110: 20 79 3b 0a 20 20 7d 0a 7d 20 7b 31 30 20 31 31   y;.  }.} {10 11
4120: 20 31 32 20 31 33 20 6e 6f 73 6f 72 74 7d 0a 64   12 13 nosort}.d
4130: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 31  o_test where-7.1
4140: 33 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  3 {.  cksort {. 
4150: 20 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d     SELECT w FROM
4160: 20 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e   t1 WHERE x=3 AN
4170: 44 20 79 3e 31 32 31 20 41 4e 44 20 79 3c 3d 31  D y>121 AND y<=1
4180: 39 36 20 4f 52 44 45 52 20 42 59 20 79 3b 0a 20  96 ORDER BY y;. 
4190: 20 7d 0a 7d 20 7b 31 31 20 31 32 20 31 33 20 6e   }.} {11 12 13 n
41a0: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
41b0: 68 65 72 65 2d 37 2e 31 34 20 7b 0a 20 20 63 6b  here-7.14 {.  ck
41c0: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
41d0: 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T w FROM t1 WHER
41e0: 45 20 78 3d 33 20 41 4e 44 20 79 3e 31 30 30 20  E x=3 AND y>100 
41f0: 41 4e 44 20 79 3c 31 39 36 20 4f 52 44 45 52 20  AND y<196 ORDER 
4200: 42 59 20 79 3b 0a 20 20 7d 0a 7d 20 7b 31 30 20  BY y;.  }.} {10 
4210: 31 31 20 31 32 20 6e 6f 73 6f 72 74 7d 0a 64 6f  11 12 nosort}.do
4220: 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 31 35  _test where-7.15
4230: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
4240: 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20    SELECT w FROM 
4250: 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e 44  t1 WHERE x=3 AND
4260: 20 79 3c 38 31 20 4f 52 44 45 52 20 42 59 20 79   y<81 ORDER BY y
4270: 3b 0a 20 20 7d 0a 7d 20 7b 6e 6f 73 6f 72 74 7d  ;.  }.} {nosort}
4280: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37  .do_test where-7
4290: 2e 31 36 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  .16 {.  cksort {
42a0: 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20 46 52  .    SELECT w FR
42b0: 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 33 20  OM t1 WHERE x=3 
42c0: 41 4e 44 20 79 3c 3d 38 31 20 4f 52 44 45 52 20  AND y<=81 ORDER 
42d0: 42 59 20 79 3b 0a 20 20 7d 0a 7d 20 7b 38 20 6e  BY y;.  }.} {8 n
42e0: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
42f0: 68 65 72 65 2d 37 2e 31 37 20 7b 0a 20 20 63 6b  here-7.17 {.  ck
4300: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
4310: 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T w FROM t1 WHER
4320: 45 20 78 3d 33 20 41 4e 44 20 79 3e 32 35 36 20  E x=3 AND y>256 
4330: 4f 52 44 45 52 20 42 59 20 79 3b 0a 20 20 7d 0a  ORDER BY y;.  }.
4340: 7d 20 7b 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  } {nosort}.do_te
4350: 73 74 20 77 68 65 72 65 2d 37 2e 31 38 20 7b 0a  st where-7.18 {.
4360: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
4370: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
4380: 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3e  WHERE x=3 AND y>
4390: 3d 32 35 36 20 4f 52 44 45 52 20 42 59 20 79 3b  =256 ORDER BY y;
43a0: 0a 20 20 7d 0a 7d 20 7b 31 35 20 6e 6f 73 6f 72  .  }.} {15 nosor
43b0: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
43c0: 2d 37 2e 31 39 20 7b 0a 20 20 63 6b 73 6f 72 74  -7.19 {.  cksort
43d0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20   {.    SELECT w 
43e0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d  FROM t1 WHERE x=
43f0: 33 20 41 4e 44 20 79 3c 38 31 20 4f 52 44 45 52  3 AND y<81 ORDER
4400: 20 42 59 20 79 20 44 45 53 43 3b 0a 20 20 7d 0a   BY y DESC;.  }.
4410: 7d 20 7b 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  } {nosort}.do_te
4420: 73 74 20 77 68 65 72 65 2d 37 2e 32 30 20 7b 0a  st where-7.20 {.
4430: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
4440: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
4450: 57 48 45 52 45 20 78 3d 33 20 41 4e 44 20 79 3c  WHERE x=3 AND y<
4460: 3d 38 31 20 4f 52 44 45 52 20 42 59 20 79 20 44  =81 ORDER BY y D
4470: 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 38 20 6e 6f  ESC;.  }.} {8 no
4480: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
4490: 65 72 65 2d 37 2e 32 31 20 7b 0a 20 20 63 6b 73  ere-7.21 {.  cks
44a0: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
44b0: 20 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   w FROM t1 WHERE
44c0: 20 78 3d 33 20 41 4e 44 20 79 3e 32 35 36 20 4f   x=3 AND y>256 O
44d0: 52 44 45 52 20 42 59 20 79 20 44 45 53 43 3b 0a  RDER BY y DESC;.
44e0: 20 20 7d 0a 7d 20 7b 6e 6f 73 6f 72 74 7d 0a 64    }.} {nosort}.d
44f0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 32  o_test where-7.2
4500: 32 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  2 {.  cksort {. 
4510: 20 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d     SELECT w FROM
4520: 20 74 31 20 57 48 45 52 45 20 78 3d 33 20 41 4e   t1 WHERE x=3 AN
4530: 44 20 79 3e 3d 32 35 36 20 4f 52 44 45 52 20 42  D y>=256 ORDER B
4540: 59 20 79 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20  Y y DESC;.  }.} 
4550: 7b 31 35 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74  {15 nosort}.do_t
4560: 65 73 74 20 77 68 65 72 65 2d 37 2e 32 33 20 7b  est where-7.23 {
4570: 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20  .  cksort {.    
4580: 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31  SELECT w FROM t1
4590: 20 57 48 45 52 45 20 78 3d 30 20 41 4e 44 20 79   WHERE x=0 AND y
45a0: 3c 34 20 4f 52 44 45 52 20 42 59 20 79 3b 0a 20  <4 ORDER BY y;. 
45b0: 20 7d 0a 7d 20 7b 6e 6f 73 6f 72 74 7d 0a 64 6f   }.} {nosort}.do
45c0: 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e 32 34  _test where-7.24
45d0: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
45e0: 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20    SELECT w FROM 
45f0: 74 31 20 57 48 45 52 45 20 78 3d 30 20 41 4e 44  t1 WHERE x=0 AND
4600: 20 79 3c 3d 34 20 4f 52 44 45 52 20 42 59 20 79   y<=4 ORDER BY y
4610: 3b 0a 20 20 7d 0a 7d 20 7b 31 20 6e 6f 73 6f 72  ;.  }.} {1 nosor
4620: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
4630: 2d 37 2e 32 35 20 7b 0a 20 20 63 6b 73 6f 72 74  -7.25 {.  cksort
4640: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77 20   {.    SELECT w 
4650: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d  FROM t1 WHERE x=
4660: 36 20 41 4e 44 20 79 3e 31 30 32 30 31 20 4f 52  6 AND y>10201 OR
4670: 44 45 52 20 42 59 20 79 3b 0a 20 20 7d 0a 7d 20  DER BY y;.  }.} 
4680: 7b 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74  {nosort}.do_test
4690: 20 77 68 65 72 65 2d 37 2e 32 36 20 7b 0a 20 20   where-7.26 {.  
46a0: 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c  cksort {.    SEL
46b0: 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20 57 48  ECT w FROM t1 WH
46c0: 45 52 45 20 78 3d 36 20 41 4e 44 20 79 3e 3d 31  ERE x=6 AND y>=1
46d0: 30 32 30 31 20 4f 52 44 45 52 20 42 59 20 79 3b  0201 ORDER BY y;
46e0: 0a 20 20 7d 0a 7d 20 7b 31 30 30 20 6e 6f 73 6f  .  }.} {100 noso
46f0: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
4700: 65 2d 37 2e 32 37 20 7b 0a 20 20 63 6b 73 6f 72  e-7.27 {.  cksor
4710: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 77  t {.    SELECT w
4720: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78   FROM t1 WHERE x
4730: 3d 30 20 41 4e 44 20 79 3c 34 20 4f 52 44 45 52  =0 AND y<4 ORDER
4740: 20 42 59 20 79 20 44 45 53 43 3b 0a 20 20 7d 0a   BY y DESC;.  }.
4750: 7d 20 7b 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  } {nosort}.do_te
4760: 73 74 20 77 68 65 72 65 2d 37 2e 32 38 20 7b 0a  st where-7.28 {.
4770: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
4780: 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74 31 20  ELECT w FROM t1 
4790: 57 48 45 52 45 20 78 3d 30 20 41 4e 44 20 79 3c  WHERE x=0 AND y<
47a0: 3d 34 20 4f 52 44 45 52 20 42 59 20 79 20 44 45  =4 ORDER BY y DE
47b0: 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31 20 6e 6f 73  SC;.  }.} {1 nos
47c0: 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  ort}.do_test whe
47d0: 72 65 2d 37 2e 32 39 20 7b 0a 20 20 63 6b 73 6f  re-7.29 {.  ckso
47e0: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
47f0: 77 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  w FROM t1 WHERE 
4800: 78 3d 36 20 41 4e 44 20 79 3e 31 30 32 30 31 20  x=6 AND y>10201 
4810: 4f 52 44 45 52 20 42 59 20 79 20 44 45 53 43 3b  ORDER BY y DESC;
4820: 0a 20 20 7d 0a 7d 20 7b 6e 6f 73 6f 72 74 7d 0a  .  }.} {nosort}.
4830: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e  do_test where-7.
4840: 33 30 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a  30 {.  cksort {.
4850: 20 20 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f      SELECT w FRO
4860: 4d 20 74 31 20 57 48 45 52 45 20 78 3d 36 20 41  M t1 WHERE x=6 A
4870: 4e 44 20 79 3e 3d 31 30 32 30 31 20 4f 52 44 45  ND y>=10201 ORDE
4880: 52 20 42 59 20 79 20 44 45 53 43 3b 0a 20 20 7d  R BY y DESC;.  }
4890: 0a 7d 20 7b 31 30 30 20 6e 6f 73 6f 72 74 7d 0a  .} {100 nosort}.
48a0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37 2e  do_test where-7.
48b0: 33 31 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a  31 {.  cksort {.
48c0: 20 20 20 20 53 45 4c 45 43 54 20 79 20 46 52 4f      SELECT y FRO
48d0: 4d 20 74 31 20 4f 52 44 45 52 20 42 59 20 72 6f  M t1 ORDER BY ro
48e0: 77 69 64 20 44 45 53 43 20 4c 49 4d 49 54 20 33  wid DESC LIMIT 3
48f0: 0a 20 20 7d 0a 7d 20 7b 31 30 32 30 31 20 31 30  .  }.} {10201 10
4900: 30 30 30 20 39 38 30 31 20 6e 6f 73 6f 72 74 7d  000 9801 nosort}
4910: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37  .do_test where-7
4920: 2e 33 32 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  .32 {.  cksort {
4930: 0a 20 20 20 20 53 45 4c 45 43 54 20 79 20 46 52  .    SELECT y FR
4940: 4f 4d 20 74 31 20 57 48 45 52 45 20 79 3c 32 35  OM t1 WHERE y<25
4950: 20 4f 52 44 45 52 20 42 59 20 72 6f 77 69 64 20   ORDER BY rowid 
4960: 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 31 36 20 39  DESC.  }.} {16 9
4970: 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65   4 nosort}.do_te
4980: 73 74 20 77 68 65 72 65 2d 37 2e 33 33 20 7b 0a  st where-7.33 {.
4990: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
49a0: 45 4c 45 43 54 20 79 20 46 52 4f 4d 20 74 31 20  ELECT y FROM t1 
49b0: 57 48 45 52 45 20 79 3c 3d 32 35 20 4f 52 44 45  WHERE y<=25 ORDE
49c0: 52 20 42 59 20 72 6f 77 69 64 20 44 45 53 43 0a  R BY rowid DESC.
49d0: 20 20 7d 0a 7d 20 7b 32 35 20 31 36 20 39 20 34    }.} {25 16 9 4
49e0: 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74   nosort}.do_test
49f0: 20 77 68 65 72 65 2d 37 2e 33 34 20 7b 0a 20 20   where-7.34 {.  
4a00: 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c  cksort {.    SEL
4a10: 45 43 54 20 79 20 46 52 4f 4d 20 74 31 20 57 48  ECT y FROM t1 WH
4a20: 45 52 45 20 79 3c 32 35 20 41 4e 44 20 79 3e 34  ERE y<25 AND y>4
4a30: 20 4f 52 44 45 52 20 42 59 20 72 6f 77 69 64 20   ORDER BY rowid 
4a40: 44 45 53 43 2c 20 79 20 44 45 53 43 0a 20 20 7d  DESC, y DESC.  }
4a50: 0a 7d 20 7b 31 36 20 39 20 6e 6f 73 6f 72 74 7d  .} {16 9 nosort}
4a60: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 37  .do_test where-7
4a70: 2e 33 35 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  .35 {.  cksort {
4a80: 0a 20 20 20 20 53 45 4c 45 43 54 20 79 20 46 52  .    SELECT y FR
4a90: 4f 4d 20 74 31 20 57 48 45 52 45 20 79 3c 32 35  OM t1 WHERE y<25
4aa0: 20 41 4e 44 20 79 3e 3d 34 20 4f 52 44 45 52 20   AND y>=4 ORDER 
4ab0: 42 59 20 72 6f 77 69 64 20 44 45 53 43 0a 20 20  BY rowid DESC.  
4ac0: 7d 0a 7d 20 7b 31 36 20 39 20 34 20 6e 6f 73 6f  }.} {16 9 4 noso
4ad0: 72 74 7d 0a 0a 64 6f 5f 74 65 73 74 20 77 68 65  rt}..do_test whe
4ae0: 72 65 2d 38 2e 31 20 7b 0a 20 20 65 78 65 63 73  re-8.1 {.  execs
4af0: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
4b00: 54 41 42 4c 45 20 74 34 20 41 53 20 53 45 4c 45  TABLE t4 AS SELE
4b10: 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20  CT * FROM t1;.  
4b20: 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 69    CREATE INDEX i
4b30: 34 78 79 20 4f 4e 20 74 34 28 78 2c 79 29 3b 0a  4xy ON t4(x,y);.
4b40: 20 20 7d 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20    }.  cksort {. 
4b50: 20 20 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d     SELECT w FROM
4b60: 20 74 34 20 57 48 45 52 45 20 78 3d 34 20 61 6e   t4 WHERE x=4 an
4b70: 64 20 79 3c 31 30 30 30 20 4f 52 44 45 52 20 42  d y<1000 ORDER B
4b80: 59 20 79 20 44 45 53 43 20 6c 69 6d 69 74 20 33  Y y DESC limit 3
4b90: 3b 0a 20 20 7d 0a 7d 20 7b 33 30 20 32 39 20 32  ;.  }.} {30 29 2
4ba0: 38 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  8 nosort}.do_tes
4bb0: 74 20 77 68 65 72 65 2d 38 2e 32 20 7b 0a 20 20  t where-8.2 {.  
4bc0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 44 45  execsql {.    DE
4bd0: 4c 45 54 45 20 46 52 4f 4d 20 74 34 3b 0a 20 20  LETE FROM t4;.  
4be0: 7d 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  }.  cksort {.   
4bf0: 20 53 45 4c 45 43 54 20 77 20 46 52 4f 4d 20 74   SELECT w FROM t
4c00: 34 20 57 48 45 52 45 20 78 3d 34 20 61 6e 64 20  4 WHERE x=4 and 
4c10: 79 3c 31 30 30 30 20 4f 52 44 45 52 20 42 59 20  y<1000 ORDER BY 
4c20: 79 20 44 45 53 43 20 6c 69 6d 69 74 20 33 3b 0a  y DESC limit 3;.
4c30: 20 20 7d 0a 7d 20 7b 6e 6f 73 6f 72 74 7d 0a 0a    }.} {nosort}..
4c40: 23 20 4d 61 6b 65 20 73 75 72 65 20 73 65 61 72  # Make sure sear
4c50: 63 68 65 73 20 77 69 74 68 20 61 6e 20 69 6e 64  ches with an ind
4c60: 65 78 20 77 6f 72 6b 20 77 69 74 68 20 61 6e 20  ex work with an 
4c70: 65 6d 70 74 79 20 74 61 62 6c 65 2e 0a 23 0a 64  empty table..#.d
4c80: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 39 2e 31  o_test where-9.1
4c90: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
4ca0: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
4cb0: 74 35 28 78 20 50 52 49 4d 41 52 59 20 4b 45 59  t5(x PRIMARY KEY
4cc0: 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20  );.    SELECT * 
4cd0: 46 52 4f 4d 20 74 35 20 57 48 45 52 45 20 78 3c  FROM t5 WHERE x<
4ce0: 31 30 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f  10;.  }.} {}.do_
4cf0: 74 65 73 74 20 77 68 65 72 65 2d 39 2e 32 20 7b  test where-9.2 {
4d00: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
4d10: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
4d20: 35 20 57 48 45 52 45 20 78 3c 31 30 20 4f 52 44  5 WHERE x<10 ORD
4d30: 45 52 20 42 59 20 78 20 44 45 53 43 3b 0a 20 20  ER BY x DESC;.  
4d40: 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 77  }.} {}.do_test w
4d50: 68 65 72 65 2d 39 2e 33 20 7b 0a 20 20 65 78 65  here-9.3 {.  exe
4d60: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
4d70: 54 20 2a 20 46 52 4f 4d 20 74 35 20 57 48 45 52  T * FROM t5 WHER
4d80: 45 20 78 3d 31 30 3b 0a 20 20 7d 0a 7d 20 7b 7d  E x=10;.  }.} {}
4d90: 0a 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  ..do_test where-
4da0: 31 30 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  10.1 {.  execsql
4db0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 31 20   {.    SELECT 1 
4dc0: 57 48 45 52 45 20 61 62 73 28 72 61 6e 64 6f 6d  WHERE abs(random
4dd0: 28 29 29 3c 30 0a 20 20 7d 0a 7d 20 7b 7d 0a 64  ())<0.  }.} {}.d
4de0: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 30 2e  o_test where-10.
4df0: 32 20 7b 0a 20 20 70 72 6f 63 20 74 63 6c 76 61  2 {.  proc tclva
4e00: 72 5f 66 75 6e 63 20 7b 76 6e 61 6d 65 7d 20 7b  r_func {vname} {
4e10: 72 65 74 75 72 6e 20 5b 73 65 74 20 3a 3a 24 76  return [set ::$v
4e20: 6e 61 6d 65 5d 7d 0a 20 20 64 62 20 66 75 6e 63  name]}.  db func
4e30: 74 69 6f 6e 20 74 63 6c 76 61 72 20 74 63 6c 76  tion tclvar tclv
4e40: 61 72 5f 66 75 6e 63 0a 20 20 73 65 74 20 3a 3a  ar_func.  set ::
4e50: 76 31 20 30 0a 20 20 65 78 65 63 73 71 6c 20 7b  v1 0.  execsql {
4e60: 0a 20 20 20 20 53 45 4c 45 43 54 20 63 6f 75 6e  .    SELECT coun
4e70: 74 28 2a 29 20 46 52 4f 4d 20 74 31 20 57 48 45  t(*) FROM t1 WHE
4e80: 52 45 20 74 63 6c 76 61 72 28 27 76 31 27 29 3b  RE tclvar('v1');
4e90: 0a 20 20 7d 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65  .  }.} {0}.do_te
4ea0: 73 74 20 77 68 65 72 65 2d 31 30 2e 33 20 7b 0a  st where-10.3 {.
4eb0: 20 20 73 65 74 20 3a 3a 76 31 20 31 0a 20 20 65    set ::v1 1.  e
4ec0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
4ed0: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
4ee0: 4d 20 74 31 20 57 48 45 52 45 20 74 63 6c 76 61  M t1 WHERE tclva
4ef0: 72 28 27 76 31 27 29 3b 0a 20 20 7d 0a 7d 20 7b  r('v1');.  }.} {
4f00: 31 30 30 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  100}.do_test whe
4f10: 72 65 2d 31 30 2e 34 20 7b 0a 20 20 73 65 74 20  re-10.4 {.  set 
4f20: 3a 3a 76 31 20 31 0a 20 20 70 72 6f 63 20 74 63  ::v1 1.  proc tc
4f30: 6c 76 61 72 5f 66 75 6e 63 20 7b 76 6e 61 6d 65  lvar_func {vname
4f40: 7d 20 7b 0a 20 20 20 20 75 70 76 61 72 20 23 30  } {.    upvar #0
4f50: 20 24 76 6e 61 6d 65 20 76 0a 20 20 20 20 73 65   $vname v.    se
4f60: 74 20 76 20 5b 65 78 70 72 20 7b 21 24 76 7d 5d  t v [expr {!$v}]
4f70: 0a 20 20 20 20 72 65 74 75 72 6e 20 24 76 0a 20  .    return $v. 
4f80: 20 7d 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   }.  execsql {. 
4f90: 20 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28     SELECT count(
4fa0: 2a 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  *) FROM t1 WHERE
4fb0: 20 74 63 6c 76 61 72 28 27 76 31 27 29 3b 0a 20   tclvar('v1');. 
4fc0: 20 7d 0a 7d 20 7b 35 30 7d 0a 0a 23 20 54 69 63   }.} {50}..# Tic
4fd0: 6b 65 74 20 23 31 33 37 36 2e 20 20 54 68 65 20  ket #1376.  The 
4fe0: 71 75 65 72 79 20 62 65 6c 6f 77 20 77 61 73 20  query below was 
4ff0: 63 61 75 73 69 6e 67 20 61 20 73 65 67 66 61 75  causing a segfau
5000: 6c 74 2e 0a 23 20 54 68 65 20 70 72 6f 62 6c 65  lt..# The proble
5010: 6d 20 77 61 73 20 74 68 65 20 61 67 65 2d 6f 6c  m was the age-ol
5020: 64 20 65 72 72 6f 72 20 6f 66 20 63 61 6c 6c 69  d error of calli
5030: 6e 67 20 72 65 61 6c 6c 6f 63 28 29 20 6f 6e 20  ng realloc() on 
5040: 61 6e 0a 23 20 61 72 72 61 79 20 77 68 69 6c 65  an.# array while
5050: 20 74 68 65 72 65 20 61 72 65 20 73 74 69 6c 6c   there are still
5060: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 69 6e 64   pointers to ind
5070: 69 76 69 64 75 61 6c 20 65 6c 65 6d 65 6e 74 73  ividual elements
5080: 20 6f 66 0a 23 20 74 68 61 74 20 61 72 72 61 79   of.# that array
5090: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  ..#.do_test wher
50a0: 65 2d 31 31 2e 31 20 7b 0a 20 20 65 78 65 63 73  e-11.1 {.  execs
50b0: 71 6c 20 7b 0a 20 20 20 43 52 45 41 54 45 20 54  ql {.   CREATE T
50c0: 41 42 4c 45 20 74 39 39 28 44 74 65 20 49 4e 54  ABLE t99(Dte INT
50d0: 2c 20 58 20 49 4e 54 29 3b 0a 20 20 20 44 45 4c  , X INT);.   DEL
50e0: 45 54 45 20 46 52 4f 4d 20 74 39 39 20 57 48 45  ETE FROM t99 WHE
50f0: 52 45 20 28 44 74 65 20 3d 20 32 34 35 31 33 33  RE (Dte = 245133
5100: 37 29 20 4f 52 20 28 44 74 65 20 3d 20 32 34 35  7) OR (Dte = 245
5110: 31 33 33 39 29 20 4f 52 0a 20 20 20 20 20 28 44  1339) OR.     (D
5120: 74 65 20 42 45 54 57 45 45 4e 20 32 34 35 31 33  te BETWEEN 24513
5130: 34 35 20 41 4e 44 20 32 34 35 31 33 34 37 29 20  45 AND 2451347) 
5140: 4f 52 20 28 44 74 65 20 3d 20 32 34 35 31 33 35  OR (Dte = 245135
5150: 31 29 20 4f 52 20 0a 20 20 20 20 20 28 44 74 65  1) OR .     (Dte
5160: 20 42 45 54 57 45 45 4e 20 32 34 35 31 33 35 35   BETWEEN 2451355
5170: 20 41 4e 44 20 32 34 35 31 33 35 36 29 20 4f 52   AND 2451356) OR
5180: 20 28 44 74 65 20 3d 20 32 34 35 31 33 35 38 29   (Dte = 2451358)
5190: 20 4f 52 0a 20 20 20 20 20 28 44 74 65 20 3d 20   OR.     (Dte = 
51a0: 32 34 35 31 33 36 32 29 20 4f 52 20 28 44 74 65  2451362) OR (Dte
51b0: 20 3d 20 32 34 35 31 33 36 35 29 20 4f 52 20 28   = 2451365) OR (
51c0: 44 74 65 20 3d 20 32 34 35 31 33 36 37 29 20 4f  Dte = 2451367) O
51d0: 52 0a 20 20 20 20 20 28 44 74 65 20 42 45 54 57  R.     (Dte BETW
51e0: 45 45 4e 20 32 34 35 31 33 37 32 20 41 4e 44 20  EEN 2451372 AND 
51f0: 32 34 35 31 33 37 36 29 20 4f 52 20 28 44 74 65  2451376) OR (Dte
5200: 20 42 45 54 57 45 45 4e 20 32 34 35 31 33 38 32   BETWEEN 2451382
5210: 20 41 4e 44 20 32 34 35 31 33 38 34 29 20 4f 52   AND 2451384) OR
5220: 0a 20 20 20 20 20 28 44 74 65 20 3d 20 32 34 35  .     (Dte = 245
5230: 31 33 38 37 29 20 4f 52 20 28 44 74 65 20 42 45  1387) OR (Dte BE
5240: 54 57 45 45 4e 20 32 34 35 31 33 38 39 20 41 4e  TWEEN 2451389 AN
5250: 44 20 32 34 35 31 33 39 31 29 20 4f 52 20 0a 20  D 2451391) OR . 
5260: 20 20 20 20 28 44 74 65 20 42 45 54 57 45 45 4e      (Dte BETWEEN
5270: 20 32 34 35 31 33 39 33 20 41 4e 44 20 32 34 35   2451393 AND 245
5280: 31 33 39 35 29 20 4f 52 20 28 44 74 65 20 3d 20  1395) OR (Dte = 
5290: 32 34 35 31 34 30 30 29 20 4f 52 20 0a 20 20 20  2451400) OR .   
52a0: 20 20 28 44 74 65 20 3d 20 32 34 35 31 34 30 32    (Dte = 2451402
52b0: 29 20 4f 52 20 28 44 74 65 20 3d 20 32 34 35 31  ) OR (Dte = 2451
52c0: 34 30 34 29 20 4f 52 20 28 44 74 65 20 42 45 54  404) OR (Dte BET
52d0: 57 45 45 4e 20 32 34 35 31 34 31 36 20 41 4e 44  WEEN 2451416 AND
52e0: 20 32 34 35 31 34 31 38 29 20 4f 52 20 0a 20 20   2451418) OR .  
52f0: 20 20 20 28 44 74 65 20 3d 20 32 34 35 31 34 32     (Dte = 245142
5300: 32 29 20 4f 52 20 28 44 74 65 20 3d 20 32 34 35  2) OR (Dte = 245
5310: 31 34 32 36 29 20 4f 52 20 28 44 74 65 20 42 45  1426) OR (Dte BE
5320: 54 57 45 45 4e 20 32 34 35 31 34 34 35 20 41 4e  TWEEN 2451445 AN
5330: 44 20 32 34 35 31 34 34 36 29 20 4f 52 0a 20 20  D 2451446) OR.  
5340: 20 20 20 28 44 74 65 20 3d 20 32 34 35 31 34 35     (Dte = 245145
5350: 36 29 20 4f 52 20 28 44 74 65 20 3d 20 32 34 35  6) OR (Dte = 245
5360: 31 34 35 38 29 20 4f 52 20 28 44 74 65 20 42 45  1458) OR (Dte BE
5370: 54 57 45 45 4e 20 32 34 35 31 34 36 35 20 41 4e  TWEEN 2451465 AN
5380: 44 20 32 34 35 31 34 36 37 29 20 4f 52 0a 20 20  D 2451467) OR.  
5390: 20 20 20 28 44 74 65 20 42 45 54 57 45 45 4e 20     (Dte BETWEEN 
53a0: 32 34 35 31 34 36 39 20 41 4e 44 20 32 34 35 31  2451469 AND 2451
53b0: 34 37 31 29 20 4f 52 20 28 44 74 65 20 3d 20 32  471) OR (Dte = 2
53c0: 34 35 31 34 37 34 29 20 4f 52 0a 20 20 20 20 20  451474) OR.     
53d0: 28 44 74 65 20 42 45 54 57 45 45 4e 20 32 34 35  (Dte BETWEEN 245
53e0: 31 34 37 37 20 41 4e 44 20 32 34 35 31 35 30 31  1477 AND 2451501
53f0: 29 20 4f 52 20 28 44 74 65 20 42 45 54 57 45 45  ) OR (Dte BETWEE
5400: 4e 20 32 34 35 31 35 30 33 20 41 4e 44 20 32 34  N 2451503 AND 24
5410: 35 31 35 30 39 29 20 4f 52 0a 20 20 20 20 20 28  51509) OR.     (
5420: 44 74 65 20 42 45 54 57 45 45 4e 20 32 34 35 31  Dte BETWEEN 2451
5430: 35 31 31 20 41 4e 44 20 32 34 35 31 35 31 34 29  511 AND 2451514)
5440: 20 4f 52 20 28 44 74 65 20 42 45 54 57 45 45 4e   OR (Dte BETWEEN
5450: 20 32 34 35 31 35 31 38 20 41 4e 44 20 32 34 35   2451518 AND 245
5460: 31 35 32 31 29 20 4f 52 0a 20 20 20 20 20 28 44  1521) OR.     (D
5470: 74 65 20 42 45 54 57 45 45 4e 20 32 34 35 31 35  te BETWEEN 24515
5480: 32 33 20 41 4e 44 20 32 34 35 31 35 33 31 29 20  23 AND 2451531) 
5490: 4f 52 20 28 44 74 65 20 42 45 54 57 45 45 4e 20  OR (Dte BETWEEN 
54a0: 32 34 35 31 35 33 33 20 41 4e 44 20 32 34 35 31  2451533 AND 2451
54b0: 35 33 37 29 20 4f 52 0a 20 20 20 20 20 28 44 74  537) OR.     (Dt
54c0: 65 20 42 45 54 57 45 45 4e 20 32 34 35 31 35 33  e BETWEEN 245153
54d0: 39 20 41 4e 44 20 32 34 35 31 35 34 34 29 20 4f  9 AND 2451544) O
54e0: 52 20 28 44 74 65 20 42 45 54 57 45 45 4e 20 32  R (Dte BETWEEN 2
54f0: 34 35 31 35 34 36 20 41 4e 44 20 32 34 35 31 35  451546 AND 24515
5500: 35 31 29 20 4f 52 0a 20 20 20 20 20 28 44 74 65  51) OR.     (Dte
5510: 20 42 45 54 57 45 45 4e 20 32 34 35 31 35 35 33   BETWEEN 2451553
5520: 20 41 4e 44 20 32 34 35 31 35 35 35 29 20 4f 52   AND 2451555) OR
5530: 20 28 44 74 65 20 3d 20 32 34 35 31 35 35 37 29   (Dte = 2451557)
5540: 20 4f 52 0a 20 20 20 20 20 28 44 74 65 20 42 45   OR.     (Dte BE
5550: 54 57 45 45 4e 20 32 34 35 31 35 35 39 20 41 4e  TWEEN 2451559 AN
5560: 44 20 32 34 35 31 35 36 31 29 20 4f 52 20 28 44  D 2451561) OR (D
5570: 74 65 20 3d 20 32 34 35 31 35 36 33 29 20 4f 52  te = 2451563) OR
5580: 0a 20 20 20 20 20 28 44 74 65 20 42 45 54 57 45  .     (Dte BETWE
5590: 45 4e 20 32 34 35 31 35 36 35 20 41 4e 44 20 32  EN 2451565 AND 2
55a0: 34 35 31 35 36 36 29 20 4f 52 20 28 44 74 65 20  451566) OR (Dte 
55b0: 42 45 54 57 45 45 4e 20 32 34 35 31 35 36 39 20  BETWEEN 2451569 
55c0: 41 4e 44 20 32 34 35 31 35 37 31 29 20 4f 52 20  AND 2451571) OR 
55d0: 0a 20 20 20 20 20 28 44 74 65 20 3d 20 32 34 35  .     (Dte = 245
55e0: 31 35 37 33 29 20 4f 52 20 28 44 74 65 20 3d 20  1573) OR (Dte = 
55f0: 32 34 35 31 35 37 35 29 20 4f 52 20 28 44 74 65  2451575) OR (Dte
5600: 20 3d 20 32 34 35 31 35 37 37 29 20 4f 52 20 28   = 2451577) OR (
5610: 44 74 65 20 3d 20 32 34 35 31 35 38 31 29 20 4f  Dte = 2451581) O
5620: 52 0a 20 20 20 20 20 28 44 74 65 20 42 45 54 57  R.     (Dte BETW
5630: 45 45 4e 20 32 34 35 31 35 38 33 20 41 4e 44 20  EEN 2451583 AND 
5640: 32 34 35 31 35 38 36 29 20 4f 52 20 28 44 74 65  2451586) OR (Dte
5650: 20 42 45 54 57 45 45 4e 20 32 34 35 31 35 38 38   BETWEEN 2451588
5660: 20 41 4e 44 20 32 34 35 31 35 39 32 29 20 4f 52   AND 2451592) OR
5670: 20 0a 20 20 20 20 20 28 44 74 65 20 42 45 54 57   .     (Dte BETW
5680: 45 45 4e 20 32 34 35 31 35 39 36 20 41 4e 44 20  EEN 2451596 AND 
5690: 32 34 35 31 35 39 38 29 20 4f 52 20 28 44 74 65  2451598) OR (Dte
56a0: 20 3d 20 32 34 35 31 36 30 30 29 20 4f 52 0a 20   = 2451600) OR. 
56b0: 20 20 20 20 28 44 74 65 20 42 45 54 57 45 45 4e      (Dte BETWEEN
56c0: 20 32 34 35 31 36 30 32 20 41 4e 44 20 32 34 35   2451602 AND 245
56d0: 31 36 30 33 29 20 4f 52 20 28 44 74 65 20 3d 20  1603) OR (Dte = 
56e0: 32 34 35 31 36 30 36 29 20 4f 52 20 28 44 74 65  2451606) OR (Dte
56f0: 20 3d 20 32 34 35 31 36 31 31 29 3b 0a 20 20 7d   = 2451611);.  }
5700: 0a 7d 20 7b 7d 0a 0a 23 20 54 69 63 6b 65 74 20  .} {}..# Ticket 
5710: 23 32 31 31 36 3a 20 20 4d 61 6b 65 20 73 75 72  #2116:  Make sur
5720: 65 20 73 6f 72 74 69 6e 67 20 62 79 20 69 6e 64  e sorting by ind
5730: 65 78 20 77 6f 72 6b 73 20 77 65 6c 6c 20 77 69  ex works well wi
5740: 74 68 20 6e 6e 20 49 4e 54 45 47 45 52 20 50 52  th nn INTEGER PR
5750: 49 4d 41 52 59 0a 23 20 4b 45 59 2e 0a 23 0a 64  IMARY.# KEY..#.d
5760: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 32 2e  o_test where-12.
5770: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
5780: 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45      CREATE TABLE
5790: 20 74 36 28 61 20 49 4e 54 45 47 45 52 20 50 52   t6(a INTEGER PR
57a0: 49 4d 41 52 59 20 4b 45 59 2c 20 62 20 54 45 58  IMARY KEY, b TEX
57b0: 54 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  T);.    INSERT I
57c0: 4e 54 4f 20 74 36 20 56 41 4c 55 45 53 28 31 2c  NTO t6 VALUES(1,
57d0: 27 6f 6e 65 27 29 3b 0a 20 20 20 20 49 4e 53 45  'one');.    INSE
57e0: 52 54 20 49 4e 54 4f 20 74 36 20 56 41 4c 55 45  RT INTO t6 VALUE
57f0: 53 28 34 2c 27 66 6f 75 72 27 29 3b 0a 20 20 20  S(4,'four');.   
5800: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 74 36   CREATE INDEX t6
5810: 69 31 20 4f 4e 20 74 36 28 62 29 3b 0a 20 20 7d  i1 ON t6(b);.  }
5820: 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20  .  cksort {.    
5830: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 36  SELECT * FROM t6
5840: 20 4f 52 44 45 52 20 42 59 20 62 3b 0a 20 20 7d   ORDER BY b;.  }
5850: 0a 7d 20 7b 34 20 66 6f 75 72 20 31 20 6f 6e 65  .} {4 four 1 one
5860: 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74   nosort}.do_test
5870: 20 77 68 65 72 65 2d 31 32 2e 32 20 7b 0a 20 20   where-12.2 {.  
5880: 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c  cksort {.    SEL
5890: 45 43 54 20 2a 20 46 52 4f 4d 20 74 36 20 4f 52  ECT * FROM t6 OR
58a0: 44 45 52 20 42 59 20 62 2c 20 61 3b 0a 20 20 7d  DER BY b, a;.  }
58b0: 0a 7d 20 7b 34 20 66 6f 75 72 20 31 20 6f 6e 65  .} {4 four 1 one
58c0: 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74   nosort}.do_test
58d0: 20 77 68 65 72 65 2d 31 32 2e 33 20 7b 0a 20 20   where-12.3 {.  
58e0: 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c  cksort {.    SEL
58f0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 36 20 4f 52  ECT * FROM t6 OR
5900: 44 45 52 20 42 59 20 61 3b 0a 20 20 7d 0a 7d 20  DER BY a;.  }.} 
5910: 7b 31 20 6f 6e 65 20 34 20 66 6f 75 72 20 6e 6f  {1 one 4 four no
5920: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
5930: 65 72 65 2d 31 32 2e 34 20 7b 0a 20 20 63 6b 73  ere-12.4 {.  cks
5940: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
5950: 20 2a 20 46 52 4f 4d 20 74 36 20 4f 52 44 45 52   * FROM t6 ORDER
5960: 20 42 59 20 61 2c 20 62 3b 0a 20 20 7d 0a 7d 20   BY a, b;.  }.} 
5970: 7b 31 20 6f 6e 65 20 34 20 66 6f 75 72 20 6e 6f  {1 one 4 four no
5980: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
5990: 65 72 65 2d 31 32 2e 35 20 7b 0a 20 20 63 6b 73  ere-12.5 {.  cks
59a0: 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  ort {.    SELECT
59b0: 20 2a 20 46 52 4f 4d 20 74 36 20 4f 52 44 45 52   * FROM t6 ORDER
59c0: 20 42 59 20 62 20 44 45 53 43 3b 0a 20 20 7d 0a   BY b DESC;.  }.
59d0: 7d 20 7b 31 20 6f 6e 65 20 34 20 66 6f 75 72 20  } {1 one 4 four 
59e0: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
59f0: 77 68 65 72 65 2d 31 32 2e 36 20 7b 0a 20 20 63  where-12.6 {.  c
5a00: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
5a10: 43 54 20 2a 20 46 52 4f 4d 20 74 36 20 4f 52 44  CT * FROM t6 ORD
5a20: 45 52 20 42 59 20 62 20 44 45 53 43 2c 20 61 20  ER BY b DESC, a 
5a30: 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31 20 6f  DESC;.  }.} {1 o
5a40: 6e 65 20 34 20 66 6f 75 72 20 6e 6f 73 6f 72 74  ne 4 four nosort
5a50: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
5a60: 31 32 2e 37 20 7b 0a 20 20 63 6b 73 6f 72 74 20  12.7 {.  cksort 
5a70: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46  {.    SELECT * F
5a80: 52 4f 4d 20 74 36 20 4f 52 44 45 52 20 42 59 20  ROM t6 ORDER BY 
5a90: 62 20 44 45 53 43 2c 20 61 20 41 53 43 3b 0a 20  b DESC, a ASC;. 
5aa0: 20 7d 0a 7d 20 7b 31 20 6f 6e 65 20 34 20 66 6f   }.} {1 one 4 fo
5ab0: 75 72 20 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74  ur sort}.do_test
5ac0: 20 77 68 65 72 65 2d 31 32 2e 38 20 7b 0a 20 20   where-12.8 {.  
5ad0: 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c  cksort {.    SEL
5ae0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 36 20 4f 52  ECT * FROM t6 OR
5af0: 44 45 52 20 42 59 20 62 20 41 53 43 2c 20 61 20  DER BY b ASC, a 
5b00: 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 34 20 66  DESC;.  }.} {4 f
5b10: 6f 75 72 20 31 20 6f 6e 65 20 73 6f 72 74 7d 0a  our 1 one sort}.
5b20: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 32  do_test where-12
5b30: 2e 39 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a  .9 {.  cksort {.
5b40: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
5b50: 4d 20 74 36 20 4f 52 44 45 52 20 42 59 20 61 20  M t6 ORDER BY a 
5b60: 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 34 20 66  DESC;.  }.} {4 f
5b70: 6f 75 72 20 31 20 6f 6e 65 20 6e 6f 73 6f 72 74  our 1 one nosort
5b80: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
5b90: 31 32 2e 31 30 20 7b 0a 20 20 63 6b 73 6f 72 74  12.10 {.  cksort
5ba0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
5bb0: 46 52 4f 4d 20 74 36 20 4f 52 44 45 52 20 42 59  FROM t6 ORDER BY
5bc0: 20 61 20 44 45 53 43 2c 20 62 20 44 45 53 43 3b   a DESC, b DESC;
5bd0: 0a 20 20 7d 0a 7d 20 7b 34 20 66 6f 75 72 20 31  .  }.} {4 four 1
5be0: 20 6f 6e 65 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f   one nosort}.do_
5bf0: 74 65 73 74 20 77 68 65 72 65 2d 31 32 2e 31 31  test where-12.11
5c00: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   {.  cksort {.  
5c10: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
5c20: 74 36 20 4f 52 44 45 52 20 42 59 20 61 20 44 45  t6 ORDER BY a DE
5c30: 53 43 2c 20 62 20 41 53 43 3b 0a 20 20 7d 0a 7d  SC, b ASC;.  }.}
5c40: 20 7b 34 20 66 6f 75 72 20 31 20 6f 6e 65 20 6e   {4 four 1 one n
5c50: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77  osort}.do_test w
5c60: 68 65 72 65 2d 31 32 2e 31 32 20 7b 0a 20 20 63  here-12.12 {.  c
5c70: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
5c80: 43 54 20 2a 20 46 52 4f 4d 20 74 36 20 4f 52 44  CT * FROM t6 ORD
5c90: 45 52 20 42 59 20 61 20 41 53 43 2c 20 62 20 44  ER BY a ASC, b D
5ca0: 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31 20 6f 6e  ESC;.  }.} {1 on
5cb0: 65 20 34 20 66 6f 75 72 20 6e 6f 73 6f 72 74 7d  e 4 four nosort}
5cc0: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31  .do_test where-1
5cd0: 33 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  3.1 {.  execsql 
5ce0: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  {.    CREATE TAB
5cf0: 4c 45 20 74 37 28 61 20 49 4e 54 45 47 45 52 20  LE t7(a INTEGER 
5d00: 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 20 54  PRIMARY KEY, b T
5d10: 45 58 54 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  EXT);.    INSERT
5d20: 20 49 4e 54 4f 20 74 37 20 56 41 4c 55 45 53 28   INTO t7 VALUES(
5d30: 31 2c 27 6f 6e 65 27 29 3b 0a 20 20 20 20 49 4e  1,'one');.    IN
5d40: 53 45 52 54 20 49 4e 54 4f 20 74 37 20 56 41 4c  SERT INTO t7 VAL
5d50: 55 45 53 28 34 2c 27 66 6f 75 72 27 29 3b 0a 20  UES(4,'four');. 
5d60: 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20     CREATE INDEX 
5d70: 74 37 69 31 20 4f 4e 20 74 37 28 62 29 3b 0a 20  t7i1 ON t7(b);. 
5d80: 20 7d 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20   }.  cksort {.  
5d90: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
5da0: 74 37 20 4f 52 44 45 52 20 42 59 20 62 3b 0a 20  t7 ORDER BY b;. 
5db0: 20 7d 0a 7d 20 7b 34 20 66 6f 75 72 20 31 20 6f   }.} {4 four 1 o
5dc0: 6e 65 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  ne nosort}.do_te
5dd0: 73 74 20 77 68 65 72 65 2d 31 33 2e 32 20 7b 0a  st where-13.2 {.
5de0: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
5df0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 37 20  ELECT * FROM t7 
5e00: 4f 52 44 45 52 20 42 59 20 62 2c 20 61 3b 0a 20  ORDER BY b, a;. 
5e10: 20 7d 0a 7d 20 7b 34 20 66 6f 75 72 20 31 20 6f   }.} {4 four 1 o
5e20: 6e 65 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  ne nosort}.do_te
5e30: 73 74 20 77 68 65 72 65 2d 31 33 2e 33 20 7b 0a  st where-13.3 {.
5e40: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
5e50: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 37 20  ELECT * FROM t7 
5e60: 4f 52 44 45 52 20 42 59 20 61 3b 0a 20 20 7d 0a  ORDER BY a;.  }.
5e70: 7d 20 7b 31 20 6f 6e 65 20 34 20 66 6f 75 72 20  } {1 one 4 four 
5e80: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
5e90: 77 68 65 72 65 2d 31 33 2e 34 20 7b 0a 20 20 63  where-13.4 {.  c
5ea0: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
5eb0: 43 54 20 2a 20 46 52 4f 4d 20 74 37 20 4f 52 44  CT * FROM t7 ORD
5ec0: 45 52 20 42 59 20 61 2c 20 62 3b 0a 20 20 7d 0a  ER BY a, b;.  }.
5ed0: 7d 20 7b 31 20 6f 6e 65 20 34 20 66 6f 75 72 20  } {1 one 4 four 
5ee0: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
5ef0: 77 68 65 72 65 2d 31 33 2e 35 20 7b 0a 20 20 63  where-13.5 {.  c
5f00: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
5f10: 43 54 20 2a 20 46 52 4f 4d 20 74 37 20 4f 52 44  CT * FROM t7 ORD
5f20: 45 52 20 42 59 20 62 20 44 45 53 43 3b 0a 20 20  ER BY b DESC;.  
5f30: 7d 0a 7d 20 7b 31 20 6f 6e 65 20 34 20 66 6f 75  }.} {1 one 4 fou
5f40: 72 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  r nosort}.do_tes
5f50: 74 20 77 68 65 72 65 2d 31 33 2e 36 20 7b 0a 20  t where-13.6 {. 
5f60: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
5f70: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 37 20 4f  LECT * FROM t7 O
5f80: 52 44 45 52 20 42 59 20 62 20 44 45 53 43 2c 20  RDER BY b DESC, 
5f90: 61 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31  a DESC;.  }.} {1
5fa0: 20 6f 6e 65 20 34 20 66 6f 75 72 20 6e 6f 73 6f   one 4 four noso
5fb0: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
5fc0: 65 2d 31 33 2e 37 20 7b 0a 20 20 63 6b 73 6f 72  e-13.7 {.  cksor
5fd0: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t {.    SELECT *
5fe0: 20 46 52 4f 4d 20 74 37 20 4f 52 44 45 52 20 42   FROM t7 ORDER B
5ff0: 59 20 62 20 44 45 53 43 2c 20 61 20 41 53 43 3b  Y b DESC, a ASC;
6000: 0a 20 20 7d 0a 7d 20 7b 31 20 6f 6e 65 20 34 20  .  }.} {1 one 4 
6010: 66 6f 75 72 20 73 6f 72 74 7d 0a 64 6f 5f 74 65  four sort}.do_te
6020: 73 74 20 77 68 65 72 65 2d 31 33 2e 38 20 7b 0a  st where-13.8 {.
6030: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
6040: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 37 20  ELECT * FROM t7 
6050: 4f 52 44 45 52 20 42 59 20 62 20 41 53 43 2c 20  ORDER BY b ASC, 
6060: 61 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 34  a DESC;.  }.} {4
6070: 20 66 6f 75 72 20 31 20 6f 6e 65 20 73 6f 72 74   four 1 one sort
6080: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
6090: 31 33 2e 39 20 7b 0a 20 20 63 6b 73 6f 72 74 20  13.9 {.  cksort 
60a0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46  {.    SELECT * F
60b0: 52 4f 4d 20 74 37 20 4f 52 44 45 52 20 42 59 20  ROM t7 ORDER BY 
60c0: 61 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 34  a DESC;.  }.} {4
60d0: 20 66 6f 75 72 20 31 20 6f 6e 65 20 6e 6f 73 6f   four 1 one noso
60e0: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
60f0: 65 2d 31 33 2e 31 30 20 7b 0a 20 20 63 6b 73 6f  e-13.10 {.  ckso
6100: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
6110: 2a 20 46 52 4f 4d 20 74 37 20 4f 52 44 45 52 20  * FROM t7 ORDER 
6120: 42 59 20 61 20 44 45 53 43 2c 20 62 20 44 45 53  BY a DESC, b DES
6130: 43 3b 0a 20 20 7d 0a 7d 20 7b 34 20 66 6f 75 72  C;.  }.} {4 four
6140: 20 31 20 6f 6e 65 20 6e 6f 73 6f 72 74 7d 0a 64   1 one nosort}.d
6150: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 33 2e  o_test where-13.
6160: 31 31 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a  11 {.  cksort {.
6170: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
6180: 4d 20 74 37 20 4f 52 44 45 52 20 42 59 20 61 20  M t7 ORDER BY a 
6190: 44 45 53 43 2c 20 62 20 41 53 43 3b 0a 20 20 7d  DESC, b ASC;.  }
61a0: 0a 7d 20 7b 34 20 66 6f 75 72 20 31 20 6f 6e 65  .} {4 four 1 one
61b0: 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74   nosort}.do_test
61c0: 20 77 68 65 72 65 2d 31 33 2e 31 32 20 7b 0a 20   where-13.12 {. 
61d0: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
61e0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 37 20 4f  LECT * FROM t7 O
61f0: 52 44 45 52 20 42 59 20 61 20 41 53 43 2c 20 62  RDER BY a ASC, b
6200: 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 31 20   DESC;.  }.} {1 
6210: 6f 6e 65 20 34 20 66 6f 75 72 20 6e 6f 73 6f 72  one 4 four nosor
6220: 74 7d 0a 0a 23 20 54 69 63 6b 65 74 20 23 32 32  t}..# Ticket #22
6230: 31 31 2e 0a 23 0a 23 20 57 68 65 6e 20 6f 70 74  11..#.# When opt
6240: 69 6d 69 7a 69 6e 67 20 6f 75 74 20 4f 52 44 45  imizing out ORDE
6250: 52 20 42 59 20 63 6c 61 75 73 65 73 2c 20 6d 61  R BY clauses, ma
6260: 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 72 61  ke sure that tra
6270: 69 6c 69 6e 67 20 74 65 72 6d 73 0a 23 20 6f 66  iling terms.# of
6280: 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c   the ORDER BY cl
6290: 61 75 73 65 20 64 6f 20 6e 6f 74 20 72 65 66 65  ause do not refe
62a0: 72 65 6e 63 65 20 6f 74 68 65 72 20 74 61 62 6c  rence other tabl
62b0: 65 73 20 69 6e 20 61 20 6a 6f 69 6e 2e 0a 23 0a  es in a join..#.
62c0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 34  do_test where-14
62d0: 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .1 {.  execsql {
62e0: 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c  .    CREATE TABL
62f0: 45 20 74 38 28 61 20 49 4e 54 45 47 45 52 20 50  E t8(a INTEGER P
6300: 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 20 54 45  RIMARY KEY, b TE
6310: 58 54 20 55 4e 49 51 55 45 29 3b 0a 20 20 20 20  XT UNIQUE);.    
6320: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 38 20 56  INSERT INTO t8 V
6330: 41 4c 55 45 53 28 31 2c 27 6f 6e 65 27 29 3b 0a  ALUES(1,'one');.
6340: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
6350: 74 38 20 56 41 4c 55 45 53 28 34 2c 27 66 6f 75  t8 VALUES(4,'fou
6360: 72 27 29 3b 0a 20 20 7d 0a 20 20 63 6b 73 6f 72  r');.  }.  cksor
6370: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  t {.    SELECT x
6380: 2e 61 20 7c 7c 20 27 2f 27 20 7c 7c 20 79 2e 61  .a || '/' || y.a
6390: 20 46 52 4f 4d 20 74 38 20 78 2c 20 74 38 20 79   FROM t8 x, t8 y
63a0: 20 4f 52 44 45 52 20 42 59 20 78 2e 61 2c 20 79   ORDER BY x.a, y
63b0: 2e 62 0a 20 20 7d 20 0a 7d 20 7b 31 2f 34 20 31  .b.  } .} {1/4 1
63c0: 2f 31 20 34 2f 34 20 34 2f 31 20 73 6f 72 74 7d  /1 4/4 4/1 sort}
63d0: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31  .do_test where-1
63e0: 34 2e 32 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  4.2 {.  cksort {
63f0: 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2e 61 20  .    SELECT x.a 
6400: 7c 7c 20 27 2f 27 20 7c 7c 20 79 2e 61 20 46 52  || '/' || y.a FR
6410: 4f 4d 20 74 38 20 78 2c 20 74 38 20 79 20 4f 52  OM t8 x, t8 y OR
6420: 44 45 52 20 42 59 20 78 2e 61 2c 20 79 2e 62 20  DER BY x.a, y.b 
6430: 44 45 53 43 0a 20 20 7d 20 0a 7d 20 7b 31 2f 31  DESC.  } .} {1/1
6440: 20 31 2f 34 20 34 2f 31 20 34 2f 34 20 73 6f 72   1/4 4/1 4/4 sor
6450: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
6460: 2d 31 34 2e 33 20 7b 0a 20 20 63 6b 73 6f 72 74  -14.3 {.  cksort
6470: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2e   {.    SELECT x.
6480: 61 20 7c 7c 20 27 2f 27 20 7c 7c 20 79 2e 61 20  a || '/' || y.a 
6490: 46 52 4f 4d 20 74 38 20 78 2c 20 74 38 20 79 20  FROM t8 x, t8 y 
64a0: 4f 52 44 45 52 20 42 59 20 78 2e 61 2c 20 78 2e  ORDER BY x.a, x.
64b0: 62 0a 20 20 7d 20 0a 7d 20 7b 31 2f 31 20 31 2f  b.  } .} {1/1 1/
64c0: 34 20 34 2f 31 20 34 2f 34 20 6e 6f 73 6f 72 74  4 4/1 4/4 nosort
64d0: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d  }.do_test where-
64e0: 31 34 2e 34 20 7b 0a 20 20 63 6b 73 6f 72 74 20  14.4 {.  cksort 
64f0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2e 61  {.    SELECT x.a
6500: 20 7c 7c 20 27 2f 27 20 7c 7c 20 79 2e 61 20 46   || '/' || y.a F
6510: 52 4f 4d 20 74 38 20 78 2c 20 74 38 20 79 20 4f  ROM t8 x, t8 y O
6520: 52 44 45 52 20 42 59 20 78 2e 61 2c 20 78 2e 62  RDER BY x.a, x.b
6530: 20 44 45 53 43 0a 20 20 7d 20 0a 7d 20 7b 31 2f   DESC.  } .} {1/
6540: 31 20 31 2f 34 20 34 2f 31 20 34 2f 34 20 6e 6f  1 1/4 4/1 4/4 no
6550: 73 6f 72 74 7d 0a 62 74 72 65 65 5f 62 72 65 61  sort}.btree_brea
6560: 6b 70 6f 69 6e 74 0a 64 6f 5f 74 65 73 74 20 77  kpoint.do_test w
6570: 68 65 72 65 2d 31 34 2e 35 20 7b 0a 20 20 63 6b  here-14.5 {.  ck
6580: 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  sort {.    SELEC
6590: 54 20 78 2e 61 20 7c 7c 20 27 2f 27 20 7c 7c 20  T x.a || '/' || 
65a0: 79 2e 61 20 46 52 4f 4d 20 74 38 20 78 2c 20 74  y.a FROM t8 x, t
65b0: 38 20 79 20 4f 52 44 45 52 20 42 59 20 78 2e 62  8 y ORDER BY x.b
65c0: 2c 20 78 2e 61 7c 7c 78 2e 62 0a 20 20 7d 20 0a  , x.a||x.b.  } .
65d0: 7d 20 7b 34 2f 31 20 34 2f 34 20 31 2f 31 20 31  } {4/1 4/4 1/1 1
65e0: 2f 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  /4 nosort}.do_te
65f0: 73 74 20 77 68 65 72 65 2d 31 34 2e 36 20 7b 0a  st where-14.6 {.
6600: 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53    cksort {.    S
6610: 45 4c 45 43 54 20 78 2e 61 20 7c 7c 20 27 2f 27  ELECT x.a || '/'
6620: 20 7c 7c 20 79 2e 61 20 46 52 4f 4d 20 74 38 20   || y.a FROM t8 
6630: 78 2c 20 74 38 20 79 20 4f 52 44 45 52 20 42 59  x, t8 y ORDER BY
6640: 20 78 2e 62 2c 20 78 2e 61 7c 7c 78 2e 62 20 44   x.b, x.a||x.b D
6650: 45 53 43 0a 20 20 7d 20 0a 7d 20 7b 34 2f 31 20  ESC.  } .} {4/1 
6660: 34 2f 34 20 31 2f 31 20 31 2f 34 20 6e 6f 73 6f  4/4 1/1 1/4 noso
6670: 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72  rt}.do_test wher
6680: 65 2d 31 34 2e 37 20 7b 0a 20 20 63 6b 73 6f 72  e-14.7 {.  cksor
6690: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  t {.    SELECT x
66a0: 2e 61 20 7c 7c 20 27 2f 27 20 7c 7c 20 79 2e 61  .a || '/' || y.a
66b0: 20 46 52 4f 4d 20 74 38 20 78 2c 20 74 38 20 79   FROM t8 x, t8 y
66c0: 20 4f 52 44 45 52 20 42 59 20 78 2e 62 2c 20 79   ORDER BY x.b, y
66d0: 2e 61 7c 7c 79 2e 62 0a 20 20 7d 20 0a 7d 20 7b  .a||y.b.  } .} {
66e0: 34 2f 31 20 34 2f 34 20 31 2f 31 20 31 2f 34 20  4/1 4/4 1/1 1/4 
66f0: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68  sort}.do_test wh
6700: 65 72 65 2d 31 34 2e 37 2e 31 20 7b 0a 20 20 63  ere-14.7.1 {.  c
6710: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
6720: 43 54 20 78 2e 61 20 7c 7c 20 27 2f 27 20 7c 7c  CT x.a || '/' ||
6730: 20 79 2e 61 20 46 52 4f 4d 20 74 38 20 78 2c 20   y.a FROM t8 x, 
6740: 74 38 20 79 20 4f 52 44 45 52 20 42 59 20 78 2e  t8 y ORDER BY x.
6750: 62 2c 20 78 2e 61 2c 20 79 2e 61 7c 7c 79 2e 62  b, x.a, y.a||y.b
6760: 0a 20 20 7d 20 0a 7d 20 7b 34 2f 31 20 34 2f 34  .  } .} {4/1 4/4
6770: 20 31 2f 31 20 31 2f 34 20 73 6f 72 74 7d 0a 64   1/1 1/4 sort}.d
6780: 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31 34 2e  o_test where-14.
6790: 37 2e 32 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  7.2 {.  cksort {
67a0: 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2e 61 20  .    SELECT x.a 
67b0: 7c 7c 20 27 2f 27 20 7c 7c 20 79 2e 61 20 46 52  || '/' || y.a FR
67c0: 4f 4d 20 74 38 20 78 2c 20 74 38 20 79 20 4f 52  OM t8 x, t8 y OR
67d0: 44 45 52 20 42 59 20 78 2e 62 2c 20 78 2e 61 2c  DER BY x.b, x.a,
67e0: 20 78 2e 61 7c 7c 78 2e 62 0a 20 20 7d 20 0a 7d   x.a||x.b.  } .}
67f0: 20 7b 34 2f 31 20 34 2f 34 20 31 2f 31 20 31 2f   {4/1 4/4 1/1 1/
6800: 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  4 nosort}.do_tes
6810: 74 20 77 68 65 72 65 2d 31 34 2e 38 20 7b 0a 20  t where-14.8 {. 
6820: 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45   cksort {.    SE
6830: 4c 45 43 54 20 78 2e 61 20 7c 7c 20 27 2f 27 20  LECT x.a || '/' 
6840: 7c 7c 20 79 2e 61 20 46 52 4f 4d 20 74 38 20 78  || y.a FROM t8 x
6850: 2c 20 74 38 20 79 20 4f 52 44 45 52 20 42 59 20  , t8 y ORDER BY 
6860: 78 2e 62 2c 20 79 2e 61 7c 7c 79 2e 62 20 44 45  x.b, y.a||y.b DE
6870: 53 43 0a 20 20 7d 20 0a 7d 20 7b 34 2f 34 20 34  SC.  } .} {4/4 4
6880: 2f 31 20 31 2f 34 20 31 2f 31 20 73 6f 72 74 7d  /1 1/4 1/1 sort}
6890: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 2d 31  .do_test where-1
68a0: 34 2e 39 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  4.9 {.  cksort {
68b0: 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2e 61 20  .    SELECT x.a 
68c0: 7c 7c 20 27 2f 27 20 7c 7c 20 79 2e 61 20 46 52  || '/' || y.a FR
68d0: 4f 4d 20 74 38 20 78 2c 20 74 38 20 79 20 4f 52  OM t8 x, t8 y OR
68e0: 44 45 52 20 42 59 20 78 2e 62 2c 20 78 2e 61 7c  DER BY x.b, x.a|
68f0: 7c 79 2e 62 0a 20 20 7d 20 0a 7d 20 7b 34 2f 34  |y.b.  } .} {4/4
6900: 20 34 2f 31 20 31 2f 34 20 31 2f 31 20 73 6f 72   4/1 1/4 1/1 sor
6910: 74 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  t}.do_test where
6920: 2d 31 34 2e 31 30 20 7b 0a 20 20 63 6b 73 6f 72  -14.10 {.  cksor
6930: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  t {.    SELECT x
6940: 2e 61 20 7c 7c 20 27 2f 27 20 7c 7c 20 79 2e 61  .a || '/' || y.a
6950: 20 46 52 4f 4d 20 74 38 20 78 2c 20 74 38 20 79   FROM t8 x, t8 y
6960: 20 4f 52 44 45 52 20 42 59 20 78 2e 62 2c 20 78   ORDER BY x.b, x
6970: 2e 61 7c 7c 79 2e 62 20 44 45 53 43 0a 20 20 7d  .a||y.b DESC.  }
6980: 20 0a 7d 20 7b 34 2f 31 20 34 2f 34 20 31 2f 31   .} {4/1 4/4 1/1
6990: 20 31 2f 34 20 73 6f 72 74 7d 0a 64 6f 5f 74 65   1/4 sort}.do_te
69a0: 73 74 20 77 68 65 72 65 2d 31 34 2e 31 31 20 7b  st where-14.11 {
69b0: 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20  .  cksort {.    
69c0: 53 45 4c 45 43 54 20 78 2e 61 20 7c 7c 20 27 2f  SELECT x.a || '/
69d0: 27 20 7c 7c 20 79 2e 61 20 46 52 4f 4d 20 74 38  ' || y.a FROM t8
69e0: 20 78 2c 20 74 38 20 79 20 4f 52 44 45 52 20 42   x, t8 y ORDER B
69f0: 59 20 78 2e 62 2c 20 79 2e 61 7c 7c 78 2e 62 0a  Y x.b, y.a||x.b.
6a00: 20 20 7d 20 0a 7d 20 7b 34 2f 31 20 34 2f 34 20    } .} {4/1 4/4 
6a10: 31 2f 31 20 31 2f 34 20 73 6f 72 74 7d 0a 64 6f  1/1 1/4 sort}.do
6a20: 5f 74 65 73 74 20 77 68 65 72 65 2d 31 34 2e 31  _test where-14.1
6a30: 32 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20  2 {.  cksort {. 
6a40: 20 20 20 53 45 4c 45 43 54 20 78 2e 61 20 7c 7c     SELECT x.a ||
6a50: 20 27 2f 27 20 7c 7c 20 79 2e 61 20 46 52 4f 4d   '/' || y.a FROM
6a60: 20 74 38 20 78 2c 20 74 38 20 79 20 4f 52 44 45   t8 x, t8 y ORDE
6a70: 52 20 42 59 20 78 2e 62 2c 20 79 2e 61 7c 7c 78  R BY x.b, y.a||x
6a80: 2e 62 20 44 45 53 43 0a 20 20 7d 20 0a 7d 20 7b  .b DESC.  } .} {
6a90: 34 2f 34 20 34 2f 31 20 31 2f 34 20 31 2f 31 20  4/4 4/1 1/4 1/1 
6aa0: 73 6f 72 74 7d 0a 0a 0a 69 6e 74 65 67 72 69 74  sort}...integrit
6ab0: 79 5f 63 68 65 63 6b 20 7b 77 68 65 72 65 2d 39  y_check {where-9
6ac0: 39 2e 30 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73  9.0}..finish_tes
6ad0: 74 0a                                            t.