/ Hex Artifact Content
Login

Artifact 4ca170de2ba30ccb1af2c0406803db72262f9691:


0000: 23 20 32 30 31 31 20 41 75 67 75 73 74 20 31 33  # 2011 August 13
0010: 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20  .#.# The author 
0020: 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69  disclaims copyri
0030: 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72  ght to this sour
0040: 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61  ce code.  In pla
0050: 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20  ce of.# a legal 
0060: 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20  notice, here is 
0070: 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20  a blessing:.#.# 
0080: 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f     May you do go
0090: 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e  od and not evil.
00a0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69  .#    May you fi
00b0: 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66  nd forgiveness f
00c0: 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20  or yourself and 
00d0: 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a  forgive others..
00e0: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61  #    May you sha
00f0: 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72  re freely, never
0100: 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61   taking more tha
0110: 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a  n you give..#.#*
0120: 2a 2a 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 0a 23 0a 23 20 54 68 69 73 20  ******.#.# This 
0170: 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20  file implements 
0180: 74 65 73 74 73 20 66 6f 72 20 53 51 4c 69 74 65  tests for SQLite
0190: 20 6c 69 62 72 61 72 79 2e 20 20 54 68 65 20 66   library.  The f
01a0: 6f 63 75 73 20 6f 66 20 74 68 65 20 74 65 73 74  ocus of the test
01b0: 73 0a 23 20 69 6e 20 74 68 69 73 20 66 69 6c 65  s.# in this file
01c0: 20 69 73 20 74 65 73 74 69 6e 67 20 74 68 65 20   is testing the 
01d0: 63 61 70 61 62 69 6c 69 74 69 65 73 20 6f 66 20  capabilities of 
01e0: 73 71 6c 69 74 65 5f 73 74 61 74 33 2e 0a 23 0a  sqlite_stat3..#.
01f0: 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69  .set testdir [fi
0200: 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76  le dirname $argv
0210: 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64  0].source $testd
0220: 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 69  ir/tester.tcl..i
0230: 66 63 61 70 61 62 6c 65 20 21 73 74 61 74 33 20  fcapable !stat3 
0240: 7b 0a 20 20 66 69 6e 69 73 68 5f 74 65 73 74 0a  {.  finish_test.
0250: 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 73 65 74 20    return.}..set 
0260: 74 65 73 74 70 72 65 66 69 78 20 61 6e 61 6c 79  testprefix analy
0270: 7a 65 38 0a 0a 70 72 6f 63 20 65 71 70 20 7b 73  ze8..proc eqp {s
0280: 71 6c 20 7b 64 62 20 64 62 7d 7d 20 7b 0a 20 20  ql {db db}} {.  
0290: 75 70 6c 65 76 65 6c 20 65 78 65 63 73 71 6c 20  uplevel execsql 
02a0: 5b 6c 69 73 74 20 22 45 58 50 4c 41 49 4e 20 51  [list "EXPLAIN Q
02b0: 55 45 52 59 20 50 4c 41 4e 20 24 73 71 6c 22 5d  UERY PLAN $sql"]
02c0: 20 24 64 62 0a 7d 0a 0a 23 20 53 63 65 6e 61 72   $db.}..# Scenar
02d0: 69 6f 3a 0a 23 0a 23 20 20 20 20 54 77 6f 20 69  io:.#.#    Two i
02e0: 6e 64 69 63 65 73 2e 20 20 4f 6e 65 20 68 61 73  ndices.  One has
02f0: 20 6d 6f 73 74 6c 79 20 73 69 6e 67 6c 65 74 6f   mostly singleto
0300: 6e 20 65 6e 74 72 69 65 73 2c 20 62 75 74 20 66  n entries, but f
0310: 6f 72 20 61 20 66 65 77 0a 23 20 20 20 20 76 61  or a few.#    va
0320: 6c 75 65 73 20 74 68 65 72 65 20 61 72 65 20 68  lues there are h
0330: 75 6e 64 72 65 64 73 20 6f 66 20 65 6e 74 72 69  undreds of entri
0340: 65 73 2e 20 20 54 68 65 20 6f 74 68 65 72 20 68  es.  The other h
0350: 61 73 20 31 30 2d 32 30 0a 23 20 20 20 20 65 6e  as 10-20.#    en
0360: 74 72 69 65 73 20 70 65 72 20 76 61 6c 75 65 2e  tries per value.
0370: 0a 23 0a 23 20 56 65 72 69 66 79 20 74 68 61 74  .#.# Verify that
0380: 20 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e   the query plann
0390: 65 72 20 63 68 6f 6f 73 65 73 20 74 68 65 20 66  er chooses the f
03a0: 69 72 73 74 20 69 6e 64 65 78 20 66 6f 72 20 74  irst index for t
03b0: 68 65 20 73 69 6e 67 6c 65 74 6f 6e 0a 23 20 65  he singleton.# e
03c0: 6e 74 72 69 65 73 20 61 6e 64 20 74 68 65 20 73  ntries and the s
03d0: 65 63 6f 6e 64 20 69 6e 64 65 78 20 66 6f 72 20  econd index for 
03e0: 74 68 65 20 6f 74 68 65 72 73 2e 0a 23 0a 64 6f  the others..#.do
03f0: 5f 74 65 73 74 20 31 2e 30 20 7b 0a 20 20 64 62  _test 1.0 {.  db
0400: 20 65 76 61 6c 20 7b 0a 20 20 20 20 43 52 45 41   eval {.    CREA
0410: 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 62 2c  TE TABLE t1(a,b,
0420: 63 2c 64 29 3b 0a 20 20 20 20 43 52 45 41 54 45  c,d);.    CREATE
0430: 20 49 4e 44 45 58 20 74 31 61 20 4f 4e 20 74 31   INDEX t1a ON t1
0440: 28 61 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20  (a);.    CREATE 
0450: 49 4e 44 45 58 20 74 31 62 20 4f 4e 20 74 31 28  INDEX t1b ON t1(
0460: 62 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49  b);.    CREATE I
0470: 4e 44 45 58 20 74 31 63 20 4f 4e 20 74 31 28 63  NDEX t1c ON t1(c
0480: 29 3b 0a 20 20 7d 0a 20 20 66 6f 72 20 7b 73 65  );.  }.  for {se
0490: 74 20 69 20 30 7d 20 7b 24 69 3c 31 30 30 30 7d  t i 0} {$i<1000}
04a0: 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20   {incr i} {.    
04b0: 69 66 20 7b 24 69 25 32 3d 3d 30 7d 20 7b 73 65  if {$i%2==0} {se
04c0: 74 20 61 20 24 69 7d 20 7b 73 65 74 20 61 20 5b  t a $i} {set a [
04d0: 65 78 70 72 20 7b 28 24 69 25 38 29 2a 31 30 30  expr {($i%8)*100
04e0: 7d 5d 7d 0a 20 20 20 20 73 65 74 20 62 20 5b 65  }]}.    set b [e
04f0: 78 70 72 20 7b 24 69 2f 31 30 7d 5d 0a 20 20 20  xpr {$i/10}].   
0500: 20 73 65 74 20 63 20 5b 65 78 70 72 20 7b 24 69   set c [expr {$i
0510: 2f 38 7d 5d 0a 20 20 20 20 73 65 74 20 63 20 5b  /8}].    set c [
0520: 65 78 70 72 20 7b 24 63 2a 24 63 2a 24 63 7d 5d  expr {$c*$c*$c}]
0530: 0a 20 20 20 20 64 62 20 65 76 61 6c 20 7b 49 4e  .    db eval {IN
0540: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0550: 55 45 53 28 24 61 2c 24 62 2c 24 63 2c 24 69 29  UES($a,$b,$c,$i)
0560: 7d 0a 20 20 7d 0a 20 20 64 62 20 65 76 61 6c 20  }.  }.  db eval 
0570: 7b 41 4e 41 4c 59 5a 45 7d 0a 7d 20 7b 7d 0a 0a  {ANALYZE}.} {}..
0580: 23 20 54 68 65 20 61 3d 3d 31 30 30 20 63 6f 6d  # The a==100 com
0590: 70 61 72 69 73 6f 6e 20 69 73 20 65 78 70 65 6e  parison is expen
05a0: 73 69 76 65 20 62 65 63 61 75 73 65 20 74 68 65  sive because the
05b0: 72 65 20 61 72 65 20 6d 61 6e 79 20 72 6f 77 73  re are many rows
05c0: 0a 23 20 77 69 74 68 20 61 3d 3d 31 30 30 2e 20  .# with a==100. 
05d0: 20 41 6e 64 20 73 6f 20 66 6f 72 20 74 68 6f 73   And so for thos
05e0: 65 20 63 61 73 65 73 2c 20 63 68 6f 6f 73 65 20  e cases, choose 
05f0: 74 68 65 20 74 31 62 20 69 6e 64 65 78 2e 0a 23  the t1b index..#
0600: 0a 23 20 42 75 66 20 72 6f 20 61 3d 3d 39 39 20  .# Buf ro a==99 
0610: 61 6e 64 20 61 3d 3d 31 30 31 2c 20 74 68 65 72  and a==101, ther
0620: 65 20 61 72 65 20 66 61 72 20 66 65 77 65 72 20  e are far fewer 
0630: 72 6f 77 73 20 73 6f 20 63 68 6f 6f 73 65 0a 23  rows so choose.#
0640: 20 74 68 65 20 74 31 61 20 69 6e 64 65 78 2e 0a   the t1a index..
0650: 23 0a 64 6f 5f 74 65 73 74 20 31 2e 31 20 7b 0a  #.do_test 1.1 {.
0660: 20 20 65 71 70 20 7b 53 45 4c 45 43 54 20 2a 20    eqp {SELECT * 
0670: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3d  FROM t1 WHERE a=
0680: 31 30 30 20 41 4e 44 20 62 3d 35 35 7d 0a 7d 20  100 AND b=55}.} 
0690: 7b 30 20 30 20 30 20 7b 53 45 41 52 43 48 20 54  {0 0 0 {SEARCH T
06a0: 41 42 4c 45 20 74 31 20 55 53 49 4e 47 20 49 4e  ABLE t1 USING IN
06b0: 44 45 58 20 74 31 62 20 28 62 3d 3f 29 20 28 7e  DEX t1b (b=?) (~
06c0: 32 20 72 6f 77 73 29 7d 7d 0a 64 6f 5f 74 65 73  2 rows)}}.do_tes
06d0: 74 20 31 2e 32 20 7b 0a 20 20 65 71 70 20 7b 53  t 1.2 {.  eqp {S
06e0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20  ELECT * FROM t1 
06f0: 57 48 45 52 45 20 61 3d 39 39 20 41 4e 44 20 62  WHERE a=99 AND b
0700: 3d 35 35 7d 0a 7d 20 7b 30 20 30 20 30 20 7b 53  =55}.} {0 0 0 {S
0710: 45 41 52 43 48 20 54 41 42 4c 45 20 74 31 20 55  EARCH TABLE t1 U
0720: 53 49 4e 47 20 49 4e 44 45 58 20 74 31 61 20 28  SING INDEX t1a (
0730: 61 3d 3f 29 20 28 7e 31 20 72 6f 77 73 29 7d 7d  a=?) (~1 rows)}}
0740: 0a 64 6f 5f 74 65 73 74 20 31 2e 33 20 7b 0a 20  .do_test 1.3 {. 
0750: 20 65 71 70 20 7b 53 45 4c 45 43 54 20 2a 20 46   eqp {SELECT * F
0760: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3d 31  ROM t1 WHERE a=1
0770: 30 31 20 41 4e 44 20 62 3d 35 35 7d 0a 7d 20 7b  01 AND b=55}.} {
0780: 30 20 30 20 30 20 7b 53 45 41 52 43 48 20 54 41  0 0 0 {SEARCH TA
0790: 42 4c 45 20 74 31 20 55 53 49 4e 47 20 49 4e 44  BLE t1 USING IND
07a0: 45 58 20 74 31 61 20 28 61 3d 3f 29 20 28 7e 31  EX t1a (a=?) (~1
07b0: 20 72 6f 77 73 29 7d 7d 0a 64 6f 5f 74 65 73 74   rows)}}.do_test
07c0: 20 31 2e 34 20 7b 0a 20 20 65 71 70 20 7b 53 45   1.4 {.  eqp {SE
07d0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57  LECT * FROM t1 W
07e0: 48 45 52 45 20 61 3d 31 30 30 20 41 4e 44 20 62  HERE a=100 AND b
07f0: 3d 35 36 7d 0a 7d 20 7b 30 20 30 20 30 20 7b 53  =56}.} {0 0 0 {S
0800: 45 41 52 43 48 20 54 41 42 4c 45 20 74 31 20 55  EARCH TABLE t1 U
0810: 53 49 4e 47 20 49 4e 44 45 58 20 74 31 62 20 28  SING INDEX t1b (
0820: 62 3d 3f 29 20 28 7e 32 20 72 6f 77 73 29 7d 7d  b=?) (~2 rows)}}
0830: 0a 64 6f 5f 74 65 73 74 20 31 2e 35 20 7b 0a 20  .do_test 1.5 {. 
0840: 20 65 71 70 20 7b 53 45 4c 45 43 54 20 2a 20 46   eqp {SELECT * F
0850: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3d 39  ROM t1 WHERE a=9
0860: 39 20 41 4e 44 20 62 3d 35 36 7d 0a 7d 20 7b 30  9 AND b=56}.} {0
0870: 20 30 20 30 20 7b 53 45 41 52 43 48 20 54 41 42   0 0 {SEARCH TAB
0880: 4c 45 20 74 31 20 55 53 49 4e 47 20 49 4e 44 45  LE t1 USING INDE
0890: 58 20 74 31 61 20 28 61 3d 3f 29 20 28 7e 31 20  X t1a (a=?) (~1 
08a0: 72 6f 77 73 29 7d 7d 0a 64 6f 5f 74 65 73 74 20  rows)}}.do_test 
08b0: 31 2e 36 20 7b 0a 20 20 65 71 70 20 7b 53 45 4c  1.6 {.  eqp {SEL
08c0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
08d0: 45 52 45 20 61 3d 31 30 31 20 41 4e 44 20 62 3d  ERE a=101 AND b=
08e0: 35 36 7d 0a 7d 20 7b 30 20 30 20 30 20 7b 53 45  56}.} {0 0 0 {SE
08f0: 41 52 43 48 20 54 41 42 4c 45 20 74 31 20 55 53  ARCH TABLE t1 US
0900: 49 4e 47 20 49 4e 44 45 58 20 74 31 61 20 28 61  ING INDEX t1a (a
0910: 3d 3f 29 20 28 7e 31 20 72 6f 77 73 29 7d 7d 0a  =?) (~1 rows)}}.
0920: 64 6f 5f 74 65 73 74 20 32 2e 31 20 7b 0a 20 20  do_test 2.1 {.  
0930: 65 71 70 20 7b 53 45 4c 45 43 54 20 2a 20 46 52  eqp {SELECT * FR
0940: 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3d 31 30  OM t1 WHERE a=10
0950: 30 20 41 4e 44 20 62 20 42 45 54 57 45 45 4e 20  0 AND b BETWEEN 
0960: 35 30 20 41 4e 44 20 35 34 7d 0a 7d 20 7b 30 20  50 AND 54}.} {0 
0970: 30 20 30 20 7b 53 45 41 52 43 48 20 54 41 42 4c  0 0 {SEARCH TABL
0980: 45 20 74 31 20 55 53 49 4e 47 20 49 4e 44 45 58  E t1 USING INDEX
0990: 20 74 31 62 20 28 62 3e 3f 20 41 4e 44 20 62 3c   t1b (b>? AND b<
09a0: 3f 29 20 28 7e 32 20 72 6f 77 73 29 7d 7d 0a 0a  ?) (~2 rows)}}..
09b0: 23 20 54 68 65 72 65 20 61 72 65 20 6d 61 6e 79  # There are many
09c0: 20 6d 6f 72 65 20 76 61 6c 75 65 73 20 6f 66 20   more values of 
09d0: 63 20 62 65 74 77 65 65 6e 20 30 20 61 6e 64 20  c between 0 and 
09e0: 31 30 30 30 30 30 20 74 68 61 6e 20 74 68 65 72  100000 than ther
09f0: 65 20 61 72 65 0a 23 20 62 65 74 77 65 65 6e 20  e are.# between 
0a00: 38 30 30 30 30 30 20 61 6e 64 20 39 30 30 30 30  800000 and 90000
0a10: 30 2e 20 20 53 6f 20 74 31 63 20 69 73 20 6d 6f  0.  So t1c is mo
0a20: 72 65 20 73 65 6c 65 63 74 69 76 65 20 66 6f 72  re selective for
0a30: 20 74 68 65 20 6c 61 74 74 65 72 0a 23 20 72 61   the latter.# ra
0a40: 6e 67 65 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 33  nge..#.do_test 3
0a50: 2e 31 20 7b 0a 20 20 65 71 70 20 7b 53 45 4c 45  .1 {.  eqp {SELE
0a60: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
0a70: 52 45 20 62 20 42 45 54 57 45 45 4e 20 35 30 20  RE b BETWEEN 50 
0a80: 41 4e 44 20 35 34 20 41 4e 44 20 63 20 42 45 54  AND 54 AND c BET
0a90: 57 45 45 4e 20 30 20 41 4e 44 20 31 30 30 30 30  WEEN 0 AND 10000
0aa0: 30 7d 0a 7d 20 7b 30 20 30 20 30 20 7b 53 45 41  0}.} {0 0 0 {SEA
0ab0: 52 43 48 20 54 41 42 4c 45 20 74 31 20 55 53 49  RCH TABLE t1 USI
0ac0: 4e 47 20 49 4e 44 45 58 20 74 31 62 20 28 62 3e  NG INDEX t1b (b>
0ad0: 3f 20 41 4e 44 20 62 3c 3f 29 20 28 7e 36 20 72  ? AND b<?) (~6 r
0ae0: 6f 77 73 29 7d 7d 0a 64 6f 5f 74 65 73 74 20 33  ows)}}.do_test 3
0af0: 2e 32 20 7b 0a 20 20 65 71 70 20 7b 53 45 4c 45  .2 {.  eqp {SELE
0b00: 43 54 20 2a 20 46 52 4f 4d 20 74 31 0a 20 20 20  CT * FROM t1.   
0b10: 20 20 20 20 57 48 45 52 45 20 62 20 42 45 54 57      WHERE b BETW
0b20: 45 45 4e 20 35 30 20 41 4e 44 20 35 34 20 41 4e  EEN 50 AND 54 AN
0b30: 44 20 63 20 42 45 54 57 45 45 4e 20 38 30 30 30  D c BETWEEN 8000
0b40: 30 30 20 41 4e 44 20 39 30 30 30 30 30 7d 0a 7d  00 AND 900000}.}
0b50: 20 7b 30 20 30 20 30 20 7b 53 45 41 52 43 48 20   {0 0 0 {SEARCH 
0b60: 54 41 42 4c 45 20 74 31 20 55 53 49 4e 47 20 49  TABLE t1 USING I
0b70: 4e 44 45 58 20 74 31 63 20 28 63 3e 3f 20 41 4e  NDEX t1c (c>? AN
0b80: 44 20 63 3c 3f 29 20 28 7e 34 20 72 6f 77 73 29  D c<?) (~4 rows)
0b90: 7d 7d 0a 64 6f 5f 74 65 73 74 20 33 2e 33 20 7b  }}.do_test 3.3 {
0ba0: 0a 20 20 65 71 70 20 7b 53 45 4c 45 43 54 20 2a  .  eqp {SELECT *
0bb0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61   FROM t1 WHERE a
0bc0: 3d 31 30 30 20 41 4e 44 20 63 20 42 45 54 57 45  =100 AND c BETWE
0bd0: 45 4e 20 30 20 41 4e 44 20 31 30 30 30 30 30 7d  EN 0 AND 100000}
0be0: 0a 7d 20 7b 30 20 30 20 30 20 7b 53 45 41 52 43  .} {0 0 0 {SEARC
0bf0: 48 20 54 41 42 4c 45 20 74 31 20 55 53 49 4e 47  H TABLE t1 USING
0c00: 20 49 4e 44 45 58 20 74 31 61 20 28 61 3d 3f 29   INDEX t1a (a=?)
0c10: 20 28 7e 36 33 20 72 6f 77 73 29 7d 7d 0a 64 6f   (~63 rows)}}.do
0c20: 5f 74 65 73 74 20 33 2e 34 20 7b 0a 20 20 65 71  _test 3.4 {.  eq
0c30: 70 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  p {SELECT * FROM
0c40: 20 74 31 0a 20 20 20 20 20 20 20 57 48 45 52 45   t1.       WHERE
0c50: 20 61 3d 31 30 30 20 41 4e 44 20 63 20 42 45 54   a=100 AND c BET
0c60: 57 45 45 4e 20 38 30 30 30 30 30 20 41 4e 44 20  WEEN 800000 AND 
0c70: 39 30 30 30 30 30 7d 0a 7d 20 7b 30 20 30 20 30  900000}.} {0 0 0
0c80: 20 7b 53 45 41 52 43 48 20 54 41 42 4c 45 20 74   {SEARCH TABLE t
0c90: 31 20 55 53 49 4e 47 20 49 4e 44 45 58 20 74 31  1 USING INDEX t1
0ca0: 63 20 28 63 3e 3f 20 41 4e 44 20 63 3c 3f 29 20  c (c>? AND c<?) 
0cb0: 28 7e 32 20 72 6f 77 73 29 7d 7d 0a 0a 66 69 6e  (~2 rows)}}..fin
0cc0: 69 73 68 5f 74 65 73 74 0a                       ish_test.