/ Hex Artifact Content
Login

Artifact 6d03b44c8538fe0eb4924e19fba10cdd8f3c9240:


0000: 23 20 32 30 30 35 20 44 65 63 65 6d 62 65 72 20  # 2005 December 
0010: 32 31 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f  21.#.# The autho
0020: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
0030: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
0040: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
0050: 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61  lace of.# a lega
0060: 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69  l notice, here i
0070: 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a  s a blessing:.#.
0080: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20  #    May you do 
0090: 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69  good and not evi
00a0: 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  l..#    May you 
00b0: 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73  find forgiveness
00c0: 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e   for yourself an
00d0: 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73  d forgive others
00e0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73  ..#    May you s
00f0: 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76  hare freely, nev
0100: 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74  er taking more t
0110: 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a  han you give..#.
0120: 23 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 2a 2a 2a 2a 0a 23 20 54 68 69  **********.# Thi
0170: 73 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  s file implement
0180: 73 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73  s regression tes
0190: 74 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69  ts for SQLite li
01a0: 62 72 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f  brary.  The.# fo
01b0: 63 75 73 20 6f 66 20 74 68 69 73 20 73 63 72 69  cus of this scri
01c0: 70 74 20 69 73 20 64 65 73 63 65 6e 64 69 6e 67  pt is descending
01d0: 20 69 6e 64 69 63 65 73 2e 0a 23 0a 23 20 24 49   indices..#.# $I
01e0: 64 3a 20 64 65 73 63 69 64 78 31 2e 74 65 73 74  d: descidx1.test
01f0: 2c 76 20 31 2e 31 30 20 32 30 30 38 2f 30 33 2f  ,v 1.10 2008/03/
0200: 31 39 20 30 30 3a 32 31 3a 33 31 20 64 72 68 20  19 00:21:31 drh 
0210: 45 78 70 20 24 0a 23 0a 0a 73 65 74 20 74 65 73  Exp $.#..set tes
0220: 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61  tdir [file dirna
0230: 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63  me $argv0].sourc
0240: 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74 65  e $testdir/teste
0250: 72 2e 74 63 6c 0a 0a 23 20 44 6f 20 6e 6f 74 20  r.tcl..# Do not 
0260: 75 73 65 20 61 20 63 6f 64 65 63 20 66 6f 72 20  use a codec for 
0270: 74 65 73 74 73 20 69 6e 20 74 68 69 73 20 66 69  tests in this fi
0280: 6c 65 2c 20 61 73 20 74 68 65 20 64 61 74 61 62  le, as the datab
0290: 61 73 65 20 66 69 6c 65 20 69 73 0a 23 20 6d 61  ase file is.# ma
02a0: 6e 69 70 75 6c 61 74 65 64 20 64 69 72 65 63 74  nipulated direct
02b0: 6c 79 20 75 73 69 6e 67 20 74 63 6c 20 73 63 72  ly using tcl scr
02c0: 69 70 74 73 20 28 75 73 69 6e 67 20 74 68 65 20  ipts (using the 
02d0: 5b 68 65 78 69 6f 5f 77 72 69 74 65 5d 20 63 6f  [hexio_write] co
02e0: 6d 6d 61 6e 64 29 2e 0a 23 0a 64 6f 5f 6e 6f 74  mmand)..#.do_not
02f0: 5f 75 73 65 5f 63 6f 64 65 63 0a 0a 64 62 20 65  _use_codec..db e
0300: 76 61 6c 20 7b 50 52 41 47 4d 41 20 6c 65 67 61  val {PRAGMA lega
0310: 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 3d 4f  cy_file_format=O
0320: 46 46 7d 0a 0a 23 20 54 68 69 73 20 70 72 6f 63  FF}..# This proc
0330: 65 64 75 72 65 20 73 65 74 73 20 74 68 65 20 76  edure sets the v
0340: 61 6c 75 65 20 6f 66 20 74 68 65 20 66 69 6c 65  alue of the file
0350: 2d 66 6f 72 6d 61 74 20 69 6e 20 66 69 6c 65 20  -format in file 
0360: 27 74 65 73 74 2e 64 62 27 0a 23 20 74 6f 20 24  'test.db'.# to $
0370: 6e 65 77 76 61 6c 2e 20 41 6c 73 6f 2c 20 74 68  newval. Also, th
0380: 65 20 73 63 68 65 6d 61 20 63 6f 6f 6b 69 65 20  e schema cookie 
0390: 69 73 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e 0a  is incremented..
03a0: 23 20 0a 70 72 6f 63 20 73 65 74 5f 66 69 6c 65  # .proc set_file
03b0: 5f 66 6f 72 6d 61 74 20 7b 6e 65 77 76 61 6c 7d  _format {newval}
03c0: 20 7b 0a 20 20 68 65 78 69 6f 5f 77 72 69 74 65   {.  hexio_write
03d0: 20 74 65 73 74 2e 64 62 20 34 34 20 5b 68 65 78   test.db 44 [hex
03e0: 69 6f 5f 72 65 6e 64 65 72 5f 69 6e 74 33 32 20  io_render_int32 
03f0: 24 6e 65 77 76 61 6c 5d 0a 20 20 73 65 74 20 73  $newval].  set s
0400: 63 68 65 6d 61 63 6f 6f 6b 69 65 20 5b 68 65 78  chemacookie [hex
0410: 69 6f 5f 67 65 74 5f 69 6e 74 20 5b 68 65 78 69  io_get_int [hexi
0420: 6f 5f 72 65 61 64 20 74 65 73 74 2e 64 62 20 34  o_read test.db 4
0430: 30 20 34 5d 5d 0a 20 20 69 6e 63 72 20 73 63 68  0 4]].  incr sch
0440: 65 6d 61 63 6f 6f 6b 69 65 0a 20 20 68 65 78 69  emacookie.  hexi
0450: 6f 5f 77 72 69 74 65 20 74 65 73 74 2e 64 62 20  o_write test.db 
0460: 34 30 20 5b 68 65 78 69 6f 5f 72 65 6e 64 65 72  40 [hexio_render
0470: 5f 69 6e 74 33 32 20 24 73 63 68 65 6d 61 63 6f  _int32 $schemaco
0480: 6f 6b 69 65 5d 0a 20 20 72 65 74 75 72 6e 20 7b  okie].  return {
0490: 7d 0a 7d 0a 0a 23 20 54 68 69 73 20 70 72 6f 63  }.}..# This proc
04a0: 65 64 75 72 65 20 72 65 74 75 72 6e 73 20 74 68  edure returns th
04b0: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 66  e value of the f
04c0: 69 6c 65 2d 66 6f 72 6d 61 74 20 69 6e 20 66 69  ile-format in fi
04d0: 6c 65 20 27 74 65 73 74 2e 64 62 27 2e 0a 23 20  le 'test.db'..# 
04e0: 0a 70 72 6f 63 20 67 65 74 5f 66 69 6c 65 5f 66  .proc get_file_f
04f0: 6f 72 6d 61 74 20 7b 7b 66 6e 61 6d 65 20 74 65  ormat {{fname te
0500: 73 74 2e 64 62 7d 7d 20 7b 0a 20 20 72 65 74 75  st.db}} {.  retu
0510: 72 6e 20 5b 68 65 78 69 6f 5f 67 65 74 5f 69 6e  rn [hexio_get_in
0520: 74 20 5b 68 65 78 69 6f 5f 72 65 61 64 20 24 66  t [hexio_read $f
0530: 6e 61 6d 65 20 34 34 20 34 5d 5d 0a 7d 0a 0a 0a  name 44 4]].}...
0540: 23 20 56 65 72 69 66 79 20 74 68 61 74 20 74 68  # Verify that th
0550: 65 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 73 74  e file format st
0560: 61 72 74 73 20 61 73 20 34 2e 0a 23 0a 64 6f 5f  arts as 4..#.do_
0570: 74 65 73 74 20 64 65 73 63 69 64 78 31 2d 31 2e  test descidx1-1.
0580: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
0590: 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45      CREATE TABLE
05a0: 20 74 31 28 61 2c 62 29 3b 0a 20 20 20 20 43 52   t1(a,b);.    CR
05b0: 45 41 54 45 20 49 4e 44 45 58 20 69 31 20 4f 4e  EATE INDEX i1 ON
05c0: 20 74 31 28 62 20 41 53 43 29 3b 0a 20 20 7d 0a   t1(b ASC);.  }.
05d0: 20 20 67 65 74 5f 66 69 6c 65 5f 66 6f 72 6d 61    get_file_forma
05e0: 74 0a 7d 20 7b 34 7d 0a 64 6f 5f 74 65 73 74 20  t.} {4}.do_test 
05f0: 64 65 73 63 69 64 78 31 2d 31 2e 32 20 7b 0a 20  descidx1-1.2 {. 
0600: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43   execsql {.    C
0610: 52 45 41 54 45 20 49 4e 44 45 58 20 69 32 20 4f  REATE INDEX i2 O
0620: 4e 20 74 31 28 61 20 44 45 53 43 29 3b 0a 20 20  N t1(a DESC);.  
0630: 7d 0a 20 20 67 65 74 5f 66 69 6c 65 5f 66 6f 72  }.  get_file_for
0640: 6d 61 74 0a 7d 20 7b 34 7d 0a 0a 23 20 50 75 74  mat.} {4}..# Put
0650: 20 73 6f 6d 65 20 69 6e 66 6f 72 6d 61 74 69 6f   some informatio
0660: 6e 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 61  n in the table a
0670: 6e 64 20 76 65 72 69 66 79 20 74 68 61 74 20 74  nd verify that t
0680: 68 65 20 64 65 73 63 65 6e 64 69 6e 67 0a 23 20  he descending.# 
0690: 69 6e 64 65 78 20 61 63 74 75 61 6c 6c 79 20 77  index actually w
06a0: 6f 72 6b 73 2e 0a 23 0a 64 6f 5f 74 65 73 74 20  orks..#.do_test 
06b0: 64 65 73 63 69 64 78 31 2d 32 2e 31 20 7b 0a 20  descidx1-2.1 {. 
06c0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49   execsql {.    I
06d0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
06e0: 4c 55 45 53 28 31 2c 31 29 3b 0a 20 20 20 20 49  LUES(1,1);.    I
06f0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
0700: 4c 55 45 53 28 32 2c 32 29 3b 0a 20 20 20 20 49  LUES(2,2);.    I
0710: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 53 45  NSERT INTO t1 SE
0720: 4c 45 43 54 20 61 2b 32 2c 20 61 2b 32 20 46 52  LECT a+2, a+2 FR
0730: 4f 4d 20 74 31 3b 0a 20 20 20 20 49 4e 53 45 52  OM t1;.    INSER
0740: 54 20 49 4e 54 4f 20 74 31 20 53 45 4c 45 43 54  T INTO t1 SELECT
0750: 20 61 2b 34 2c 20 61 2b 34 20 46 52 4f 4d 20 74   a+4, a+4 FROM t
0760: 31 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 62 20  1;.    SELECT b 
0770: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3e  FROM t1 WHERE a>
0780: 33 20 41 4e 44 20 61 3c 37 3b 0a 20 20 7d 0a 7d  3 AND a<7;.  }.}
0790: 20 7b 36 20 35 20 34 7d 0a 64 6f 5f 74 65 73 74   {6 5 4}.do_test
07a0: 20 64 65 73 63 69 64 78 31 2d 32 2e 32 20 7b 0a   descidx1-2.2 {.
07b0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
07c0: 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 31  SELECT a FROM t1
07d0: 20 57 48 45 52 45 20 62 3e 33 20 41 4e 44 20 62   WHERE b>3 AND b
07e0: 3c 37 3b 0a 20 20 7d 0a 7d 20 7b 34 20 35 20 36  <7;.  }.} {4 5 6
07f0: 7d 0a 64 6f 5f 74 65 73 74 20 64 65 73 63 69 64  }.do_test descid
0800: 78 31 2d 32 2e 33 20 7b 0a 20 20 65 78 65 63 73  x1-2.3 {.  execs
0810: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
0820: 62 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  b FROM t1 WHERE 
0830: 61 3e 3d 33 20 41 4e 44 20 61 3c 37 3b 0a 20 20  a>=3 AND a<7;.  
0840: 7d 0a 7d 20 7b 36 20 35 20 34 20 33 7d 0a 64 6f  }.} {6 5 4 3}.do
0850: 5f 74 65 73 74 20 64 65 73 63 69 64 78 31 2d 32  _test descidx1-2
0860: 2e 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .4 {.  execsql {
0870: 0a 20 20 20 20 53 45 4c 45 43 54 20 62 20 46 52  .    SELECT b FR
0880: 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3e 33 20  OM t1 WHERE a>3 
0890: 41 4e 44 20 61 3c 3d 37 3b 0a 20 20 7d 0a 7d 20  AND a<=7;.  }.} 
08a0: 7b 37 20 36 20 35 20 34 7d 0a 64 6f 5f 74 65 73  {7 6 5 4}.do_tes
08b0: 74 20 64 65 73 63 69 64 78 31 2d 32 2e 35 20 7b  t descidx1-2.5 {
08c0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
08d0: 20 53 45 4c 45 43 54 20 62 20 46 52 4f 4d 20 74   SELECT b FROM t
08e0: 31 20 57 48 45 52 45 20 61 3e 3d 33 20 41 4e 44  1 WHERE a>=3 AND
08f0: 20 61 3c 3d 37 3b 0a 20 20 7d 0a 7d 20 7b 37 20   a<=7;.  }.} {7 
0900: 36 20 35 20 34 20 33 7d 0a 64 6f 5f 74 65 73 74  6 5 4 3}.do_test
0910: 20 64 65 73 63 69 64 78 31 2d 32 2e 36 20 7b 0a   descidx1-2.6 {.
0920: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
0930: 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 31  SELECT a FROM t1
0940: 20 57 48 45 52 45 20 62 3e 3d 33 20 41 4e 44 20   WHERE b>=3 AND 
0950: 62 3c 3d 37 3b 0a 20 20 7d 0a 7d 20 7b 33 20 34  b<=7;.  }.} {3 4
0960: 20 35 20 36 20 37 7d 0a 0a 23 20 54 68 69 73 20   5 6 7}..# This 
0970: 70 72 6f 63 65 64 75 72 65 20 65 78 65 63 75 74  procedure execut
0980: 65 73 20 74 68 65 20 53 51 4c 2e 20 20 54 68 65  es the SQL.  The
0990: 6e 20 69 74 20 63 68 65 63 6b 73 20 74 6f 20 73  n it checks to s
09a0: 65 65 20 69 66 20 74 68 65 20 4f 50 5f 53 6f 72  ee if the OP_Sor
09b0: 74 0a 23 20 6f 70 63 6f 64 65 20 77 61 73 20 65  t.# opcode was e
09c0: 78 65 63 75 74 65 64 2e 20 20 49 66 20 61 6e 20  xecuted.  If an 
09d0: 4f 50 5f 53 6f 72 74 20 64 69 64 20 6f 63 63 75  OP_Sort did occu
09e0: 72 2c 20 74 68 65 6e 20 22 73 6f 72 74 22 20 69  r, then "sort" i
09f0: 73 20 61 70 70 65 6e 64 65 64 0a 23 20 74 6f 20  s appended.# to 
0a00: 74 68 65 20 72 65 73 75 6c 74 2e 20 20 49 66 20  the result.  If 
0a10: 6e 6f 20 4f 50 5f 53 6f 72 74 20 68 61 70 70 65  no OP_Sort happe
0a20: 6e 65 64 2c 20 74 68 65 6e 20 22 6e 6f 73 6f 72  ned, then "nosor
0a30: 74 22 20 69 73 20 61 70 70 65 6e 64 65 64 2e 0a  t" is appended..
0a40: 23 0a 23 20 54 68 69 73 20 70 72 6f 63 65 64 75  #.# This procedu
0a50: 72 65 20 69 73 20 75 73 65 64 20 74 6f 20 63 68  re is used to ch
0a60: 65 63 6b 20 74 6f 20 6d 61 6b 65 20 73 75 72 65  eck to make sure
0a70: 20 73 6f 72 74 69 6e 67 20 69 73 20 6f 72 20 69   sorting is or i
0a80: 73 20 6e 6f 74 0a 23 20 6f 63 63 75 72 72 69 6e  s not.# occurrin
0a90: 67 20 61 73 20 65 78 70 65 63 74 65 64 2e 0a 23  g as expected..#
0aa0: 0a 70 72 6f 63 20 63 6b 73 6f 72 74 20 7b 73 71  .proc cksort {sq
0ab0: 6c 7d 20 7b 0a 20 20 73 65 74 20 3a 3a 73 71 6c  l} {.  set ::sql
0ac0: 69 74 65 5f 73 6f 72 74 5f 63 6f 75 6e 74 20 30  ite_sort_count 0
0ad0: 0a 20 20 73 65 74 20 64 61 74 61 20 5b 65 78 65  .  set data [exe
0ae0: 63 73 71 6c 20 24 73 71 6c 5d 0a 20 20 69 66 20  csql $sql].  if 
0af0: 7b 24 3a 3a 73 71 6c 69 74 65 5f 73 6f 72 74 5f  {$::sqlite_sort_
0b00: 63 6f 75 6e 74 7d 20 7b 73 65 74 20 78 20 73 6f  count} {set x so
0b10: 72 74 7d 20 7b 73 65 74 20 78 20 6e 6f 73 6f 72  rt} {set x nosor
0b20: 74 7d 0a 20 20 6c 61 70 70 65 6e 64 20 64 61 74  t}.  lappend dat
0b30: 61 20 24 78 0a 20 20 72 65 74 75 72 6e 20 24 64  a $x.  return $d
0b40: 61 74 61 0a 7d 0a 0a 23 20 54 65 73 74 20 73 6f  ata.}..# Test so
0b50: 72 74 69 6e 67 20 75 73 69 6e 67 20 61 20 64 65  rting using a de
0b60: 73 63 65 6e 64 69 6e 67 20 69 6e 64 65 78 2e 0a  scending index..
0b70: 23 0a 64 6f 5f 74 65 73 74 20 64 65 73 63 69 64  #.do_test descid
0b80: 78 31 2d 33 2e 31 20 7b 0a 20 20 63 6b 73 6f 72  x1-3.1 {.  cksor
0b90: 74 20 7b 53 45 4c 45 43 54 20 61 20 46 52 4f 4d  t {SELECT a FROM
0ba0: 20 74 31 20 4f 52 44 45 52 20 42 59 20 61 7d 0a   t1 ORDER BY a}.
0bb0: 7d 20 7b 31 20 32 20 33 20 34 20 35 20 36 20 37  } {1 2 3 4 5 6 7
0bc0: 20 38 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65   8 nosort}.do_te
0bd0: 73 74 20 64 65 73 63 69 64 78 31 2d 33 2e 32 20  st descidx1-3.2 
0be0: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 53 45 4c 45  {.  cksort {SELE
0bf0: 43 54 20 61 20 46 52 4f 4d 20 74 31 20 4f 52 44  CT a FROM t1 ORD
0c00: 45 52 20 42 59 20 61 20 41 53 43 7d 0a 7d 20 7b  ER BY a ASC}.} {
0c10: 31 20 32 20 33 20 34 20 35 20 36 20 37 20 38 20  1 2 3 4 5 6 7 8 
0c20: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
0c30: 64 65 73 63 69 64 78 31 2d 33 2e 33 20 7b 0a 20  descidx1-3.3 {. 
0c40: 20 63 6b 73 6f 72 74 20 7b 53 45 4c 45 43 54 20   cksort {SELECT 
0c50: 61 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20  a FROM t1 ORDER 
0c60: 42 59 20 61 20 44 45 53 43 7d 0a 7d 20 7b 38 20  BY a DESC}.} {8 
0c70: 37 20 36 20 35 20 34 20 33 20 32 20 31 20 6e 6f  7 6 5 4 3 2 1 no
0c80: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 64 65  sort}.do_test de
0c90: 73 63 69 64 78 31 2d 33 2e 34 20 7b 0a 20 20 63  scidx1-3.4 {.  c
0ca0: 6b 73 6f 72 74 20 7b 53 45 4c 45 43 54 20 62 20  ksort {SELECT b 
0cb0: 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20 42 59  FROM t1 ORDER BY
0cc0: 20 61 7d 0a 7d 20 7b 31 20 32 20 33 20 34 20 35   a}.} {1 2 3 4 5
0cd0: 20 36 20 37 20 38 20 6e 6f 73 6f 72 74 7d 0a 64   6 7 8 nosort}.d
0ce0: 6f 5f 74 65 73 74 20 64 65 73 63 69 64 78 31 2d  o_test descidx1-
0cf0: 33 2e 35 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  3.5 {.  cksort {
0d00: 53 45 4c 45 43 54 20 62 20 46 52 4f 4d 20 74 31  SELECT b FROM t1
0d10: 20 4f 52 44 45 52 20 42 59 20 61 20 41 53 43 7d   ORDER BY a ASC}
0d20: 0a 7d 20 7b 31 20 32 20 33 20 34 20 35 20 36 20  .} {1 2 3 4 5 6 
0d30: 37 20 38 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74  7 8 nosort}.do_t
0d40: 65 73 74 20 64 65 73 63 69 64 78 31 2d 33 2e 36  est descidx1-3.6
0d50: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 53 45 4c   {.  cksort {SEL
0d60: 45 43 54 20 62 20 46 52 4f 4d 20 74 31 20 4f 52  ECT b FROM t1 OR
0d70: 44 45 52 20 42 59 20 61 20 44 45 53 43 7d 0a 7d  DER BY a DESC}.}
0d80: 20 7b 38 20 37 20 36 20 35 20 34 20 33 20 32 20   {8 7 6 5 4 3 2 
0d90: 31 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  1 nosort}.do_tes
0da0: 74 20 64 65 73 63 69 64 78 31 2d 33 2e 37 20 7b  t descidx1-3.7 {
0db0: 0a 20 20 63 6b 73 6f 72 74 20 7b 53 45 4c 45 43  .  cksort {SELEC
0dc0: 54 20 61 20 46 52 4f 4d 20 74 31 20 4f 52 44 45  T a FROM t1 ORDE
0dd0: 52 20 42 59 20 62 7d 0a 7d 20 7b 31 20 32 20 33  R BY b}.} {1 2 3
0de0: 20 34 20 35 20 36 20 37 20 38 20 6e 6f 73 6f 72   4 5 6 7 8 nosor
0df0: 74 7d 0a 64 6f 5f 74 65 73 74 20 64 65 73 63 69  t}.do_test desci
0e00: 64 78 31 2d 33 2e 38 20 7b 0a 20 20 63 6b 73 6f  dx1-3.8 {.  ckso
0e10: 72 74 20 7b 53 45 4c 45 43 54 20 61 20 46 52 4f  rt {SELECT a FRO
0e20: 4d 20 74 31 20 4f 52 44 45 52 20 42 59 20 62 20  M t1 ORDER BY b 
0e30: 41 53 43 7d 0a 7d 20 7b 31 20 32 20 33 20 34 20  ASC}.} {1 2 3 4 
0e40: 35 20 36 20 37 20 38 20 6e 6f 73 6f 72 74 7d 0a  5 6 7 8 nosort}.
0e50: 64 6f 5f 74 65 73 74 20 64 65 73 63 69 64 78 31  do_test descidx1
0e60: 2d 33 2e 39 20 7b 0a 20 20 63 6b 73 6f 72 74 20  -3.9 {.  cksort 
0e70: 7b 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74  {SELECT a FROM t
0e80: 31 20 4f 52 44 45 52 20 42 59 20 62 20 44 45 53  1 ORDER BY b DES
0e90: 43 7d 0a 7d 20 7b 38 20 37 20 36 20 35 20 34 20  C}.} {8 7 6 5 4 
0ea0: 33 20 32 20 31 20 6e 6f 73 6f 72 74 7d 0a 64 6f  3 2 1 nosort}.do
0eb0: 5f 74 65 73 74 20 64 65 73 63 69 64 78 31 2d 33  _test descidx1-3
0ec0: 2e 31 30 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  .10 {.  cksort {
0ed0: 53 45 4c 45 43 54 20 62 20 46 52 4f 4d 20 74 31  SELECT b FROM t1
0ee0: 20 4f 52 44 45 52 20 42 59 20 62 7d 0a 7d 20 7b   ORDER BY b}.} {
0ef0: 31 20 32 20 33 20 34 20 35 20 36 20 37 20 38 20  1 2 3 4 5 6 7 8 
0f00: 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20  nosort}.do_test 
0f10: 64 65 73 63 69 64 78 31 2d 33 2e 31 31 20 7b 0a  descidx1-3.11 {.
0f20: 20 20 63 6b 73 6f 72 74 20 7b 53 45 4c 45 43 54    cksort {SELECT
0f30: 20 62 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52   b FROM t1 ORDER
0f40: 20 42 59 20 62 20 41 53 43 7d 0a 7d 20 7b 31 20   BY b ASC}.} {1 
0f50: 32 20 33 20 34 20 35 20 36 20 37 20 38 20 6e 6f  2 3 4 5 6 7 8 no
0f60: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 64 65  sort}.do_test de
0f70: 73 63 69 64 78 31 2d 33 2e 31 32 20 7b 0a 20 20  scidx1-3.12 {.  
0f80: 63 6b 73 6f 72 74 20 7b 53 45 4c 45 43 54 20 62  cksort {SELECT b
0f90: 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20 42   FROM t1 ORDER B
0fa0: 59 20 62 20 44 45 53 43 7d 0a 7d 20 7b 38 20 37  Y b DESC}.} {8 7
0fb0: 20 36 20 35 20 34 20 33 20 32 20 31 20 6e 6f 73   6 5 4 3 2 1 nos
0fc0: 6f 72 74 7d 0a 0a 64 6f 5f 74 65 73 74 20 64 65  ort}..do_test de
0fd0: 73 63 69 64 78 31 2d 33 2e 32 31 20 7b 0a 20 20  scidx1-3.21 {.  
0fe0: 63 6b 73 6f 72 74 20 7b 53 45 4c 45 43 54 20 61  cksort {SELECT a
0ff0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61   FROM t1 WHERE a
1000: 3e 33 20 41 4e 44 20 61 3c 38 20 4f 52 44 45 52  >3 AND a<8 ORDER
1010: 20 42 59 20 61 7d 0a 7d 20 7b 34 20 35 20 36 20   BY a}.} {4 5 6 
1020: 37 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  7 nosort}.do_tes
1030: 74 20 64 65 73 63 69 64 78 31 2d 33 2e 32 32 20  t descidx1-3.22 
1040: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 53 45 4c 45  {.  cksort {SELE
1050: 43 54 20 61 20 46 52 4f 4d 20 74 31 20 57 48 45  CT a FROM t1 WHE
1060: 52 45 20 61 3e 33 20 41 4e 44 20 61 3c 38 20 4f  RE a>3 AND a<8 O
1070: 52 44 45 52 20 42 59 20 61 20 41 53 43 7d 0a 7d  RDER BY a ASC}.}
1080: 20 7b 34 20 35 20 36 20 37 20 6e 6f 73 6f 72 74   {4 5 6 7 nosort
1090: 7d 0a 64 6f 5f 74 65 73 74 20 64 65 73 63 69 64  }.do_test descid
10a0: 78 31 2d 33 2e 32 33 20 7b 0a 20 20 63 6b 73 6f  x1-3.23 {.  ckso
10b0: 72 74 20 7b 53 45 4c 45 43 54 20 61 20 46 52 4f  rt {SELECT a FRO
10c0: 4d 20 74 31 20 57 48 45 52 45 20 61 3e 33 20 41  M t1 WHERE a>3 A
10d0: 4e 44 20 61 3c 38 20 4f 52 44 45 52 20 42 59 20  ND a<8 ORDER BY 
10e0: 61 20 44 45 53 43 7d 0a 7d 20 7b 37 20 36 20 35  a DESC}.} {7 6 5
10f0: 20 34 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65   4 nosort}.do_te
1100: 73 74 20 64 65 73 63 69 64 78 31 2d 33 2e 32 34  st descidx1-3.24
1110: 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 53 45 4c   {.  cksort {SEL
1120: 45 43 54 20 62 20 46 52 4f 4d 20 74 31 20 57 48  ECT b FROM t1 WH
1130: 45 52 45 20 61 3e 33 20 41 4e 44 20 61 3c 38 20  ERE a>3 AND a<8 
1140: 4f 52 44 45 52 20 42 59 20 61 7d 0a 7d 20 7b 34  ORDER BY a}.} {4
1150: 20 35 20 36 20 37 20 6e 6f 73 6f 72 74 7d 0a 64   5 6 7 nosort}.d
1160: 6f 5f 74 65 73 74 20 64 65 73 63 69 64 78 31 2d  o_test descidx1-
1170: 33 2e 32 35 20 7b 0a 20 20 63 6b 73 6f 72 74 20  3.25 {.  cksort 
1180: 7b 53 45 4c 45 43 54 20 62 20 46 52 4f 4d 20 74  {SELECT b FROM t
1190: 31 20 57 48 45 52 45 20 61 3e 33 20 41 4e 44 20  1 WHERE a>3 AND 
11a0: 61 3c 38 20 4f 52 44 45 52 20 42 59 20 61 20 41  a<8 ORDER BY a A
11b0: 53 43 7d 0a 7d 20 7b 34 20 35 20 36 20 37 20 6e  SC}.} {4 5 6 7 n
11c0: 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 64  osort}.do_test d
11d0: 65 73 63 69 64 78 31 2d 33 2e 32 36 20 7b 0a 20  escidx1-3.26 {. 
11e0: 20 63 6b 73 6f 72 74 20 7b 53 45 4c 45 43 54 20   cksort {SELECT 
11f0: 62 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  b FROM t1 WHERE 
1200: 61 3e 33 20 41 4e 44 20 61 3c 38 20 4f 52 44 45  a>3 AND a<8 ORDE
1210: 52 20 42 59 20 61 20 44 45 53 43 7d 0a 7d 20 7b  R BY a DESC}.} {
1220: 37 20 36 20 35 20 34 20 6e 6f 73 6f 72 74 7d 0a  7 6 5 4 nosort}.
1230: 0a 23 20 43 72 65 61 74 65 20 61 20 74 61 62 6c  .# Create a tabl
1240: 65 20 77 69 74 68 20 69 6e 64 69 63 65 73 20 74  e with indices t
1250: 68 61 74 20 61 72 65 20 64 65 73 63 65 6e 64 69  hat are descendi
1260: 6e 67 20 6f 6e 20 73 6f 6d 65 20 74 65 72 6d 73  ng on some terms
1270: 20 61 6e 64 0a 23 20 61 73 63 65 6e 64 69 6e 67   and.# ascending
1280: 20 6f 6e 20 6f 74 68 65 72 73 2e 0a 23 0a 69 66   on others..#.if
1290: 63 61 70 61 62 6c 65 20 62 6c 6f 62 6c 69 74 20  capable bloblit 
12a0: 7b 0a 20 20 64 6f 5f 74 65 73 74 20 64 65 73 63  {.  do_test desc
12b0: 69 64 78 31 2d 34 2e 31 20 7b 0a 20 20 20 20 65  idx1-4.1 {.    e
12c0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 43  xecsql {.      C
12d0: 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28 61  REATE TABLE t2(a
12e0: 20 49 4e 54 2c 20 62 20 54 45 58 54 2c 20 63 20   INT, b TEXT, c 
12f0: 42 4c 4f 42 2c 20 64 20 52 45 41 4c 29 3b 0a 20  BLOB, d REAL);. 
1300: 20 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45       CREATE INDE
1310: 58 20 69 33 20 4f 4e 20 74 32 28 61 20 41 53 43  X i3 ON t2(a ASC
1320: 2c 20 62 20 44 45 53 43 2c 20 63 20 41 53 43 29  , b DESC, c ASC)
1330: 3b 0a 20 20 20 20 20 20 43 52 45 41 54 45 20 49  ;.      CREATE I
1340: 4e 44 45 58 20 69 34 20 4f 4e 20 74 32 28 62 20  NDEX i4 ON t2(b 
1350: 44 45 53 43 2c 20 61 20 41 53 43 2c 20 64 20 44  DESC, a ASC, d D
1360: 45 53 43 29 3b 0a 20 20 20 20 20 20 49 4e 53 45  ESC);.      INSE
1370: 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45  RT INTO t2 VALUE
1380: 53 28 31 2c 27 6f 6e 65 27 2c 78 27 33 31 27 2c  S(1,'one',x'31',
1390: 31 2e 30 29 3b 0a 20 20 20 20 20 20 49 4e 53 45  1.0);.      INSE
13a0: 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45  RT INTO t2 VALUE
13b0: 53 28 32 2c 27 74 77 6f 27 2c 78 27 33 32 33 32  S(2,'two',x'3232
13c0: 27 2c 32 2e 30 29 3b 0a 20 20 20 20 20 20 49 4e  ',2.0);.      IN
13d0: 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c  SERT INTO t2 VAL
13e0: 55 45 53 28 33 2c 27 74 68 72 65 65 27 2c 78 27  UES(3,'three',x'
13f0: 33 33 33 33 33 33 27 2c 33 2e 30 29 3b 0a 20 20  333333',3.0);.  
1400: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
1410: 74 32 20 56 41 4c 55 45 53 28 34 2c 27 66 6f 75  t2 VALUES(4,'fou
1420: 72 27 2c 78 27 33 34 33 34 33 34 33 34 27 2c 34  r',x'34343434',4
1430: 2e 30 29 3b 0a 20 20 20 20 20 20 49 4e 53 45 52  .0);.      INSER
1440: 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53  T INTO t2 VALUES
1450: 28 35 2c 27 66 69 76 65 27 2c 78 27 33 35 33 35  (5,'five',x'3535
1460: 33 35 33 35 33 35 27 2c 35 2e 30 29 3b 0a 20 20  353535',5.0);.  
1470: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
1480: 74 32 20 56 41 4c 55 45 53 28 36 2c 27 73 69 78  t2 VALUES(6,'six
1490: 27 2c 78 27 33 36 33 36 33 36 33 36 33 36 33 36  ',x'363636363636
14a0: 27 2c 36 2e 30 29 3b 0a 20 20 20 20 20 20 49 4e  ',6.0);.      IN
14b0: 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c  SERT INTO t2 VAL
14c0: 55 45 53 28 32 2c 27 74 77 6f 27 2c 78 27 33 32  UES(2,'two',x'32
14d0: 33 32 33 32 27 2c 32 2e 31 29 3b 0a 20 20 20 20  3232',2.1);.    
14e0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
14f0: 20 56 41 4c 55 45 53 28 32 2c 27 7a 77 65 69 27   VALUES(2,'zwei'
1500: 2c 78 27 33 32 33 32 27 2c 32 2e 32 29 3b 0a 20  ,x'3232',2.2);. 
1510: 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f       INSERT INTO
1520: 20 74 32 20 56 41 4c 55 45 53 28 32 2c 4e 55 4c   t2 VALUES(2,NUL
1530: 4c 2c 4e 55 4c 4c 2c 32 2e 33 29 3b 0a 20 20 20  L,NULL,2.3);.   
1540: 20 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28     SELECT count(
1550: 2a 29 20 46 52 4f 4d 20 74 32 3b 0a 20 20 20 20  *) FROM t2;.    
1560: 7d 0a 20 20 7d 20 7b 39 7d 0a 20 20 64 6f 5f 74  }.  } {9}.  do_t
1570: 65 73 74 20 64 65 73 63 69 64 78 31 2d 34 2e 32  est descidx1-4.2
1580: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
1590: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 64 20  .      SELECT d 
15a0: 46 52 4f 4d 20 74 32 20 4f 52 44 45 52 20 42 59  FROM t2 ORDER BY
15b0: 20 61 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31   a;.    }.  } {1
15c0: 2e 30 20 32 2e 32 20 32 2e 30 20 32 2e 31 20 32  .0 2.2 2.0 2.1 2
15d0: 2e 33 20 33 2e 30 20 34 2e 30 20 35 2e 30 20 36  .3 3.0 4.0 5.0 6
15e0: 2e 30 7d 0a 20 20 64 6f 5f 74 65 73 74 20 64 65  .0}.  do_test de
15f0: 73 63 69 64 78 31 2d 34 2e 33 20 7b 0a 20 20 20  scidx1-4.3 {.   
1600: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20   execsql {.     
1610: 20 53 45 4c 45 43 54 20 64 20 46 52 4f 4d 20 74   SELECT d FROM t
1620: 32 20 57 48 45 52 45 20 61 3e 3d 32 20 4f 52 44  2 WHERE a>=2 ORD
1630: 45 52 20 42 59 20 61 3b 0a 20 20 20 20 7d 0a 20  ER BY a;.    }. 
1640: 20 7d 20 7b 32 2e 32 20 32 2e 30 20 32 2e 31 20   } {2.2 2.0 2.1 
1650: 32 2e 33 20 33 2e 30 20 34 2e 30 20 35 2e 30 20  2.3 3.0 4.0 5.0 
1660: 36 2e 30 7d 0a 20 20 64 6f 5f 74 65 73 74 20 64  6.0}.  do_test d
1670: 65 73 63 69 64 78 31 2d 34 2e 34 20 7b 0a 20 20  escidx1-4.4 {.  
1680: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1690: 20 20 53 45 4c 45 43 54 20 64 20 46 52 4f 4d 20    SELECT d FROM 
16a0: 74 32 20 57 48 45 52 45 20 61 3e 32 20 4f 52 44  t2 WHERE a>2 ORD
16b0: 45 52 20 42 59 20 61 3b 0a 20 20 20 20 7d 0a 20  ER BY a;.    }. 
16c0: 20 7d 20 7b 33 2e 30 20 34 2e 30 20 35 2e 30 20   } {3.0 4.0 5.0 
16d0: 36 2e 30 7d 0a 20 20 64 6f 5f 74 65 73 74 20 64  6.0}.  do_test d
16e0: 65 73 63 69 64 78 31 2d 34 2e 35 20 7b 0a 20 20  escidx1-4.5 {.  
16f0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1700: 20 20 53 45 4c 45 43 54 20 64 20 46 52 4f 4d 20    SELECT d FROM 
1710: 74 32 20 57 48 45 52 45 20 61 3d 32 20 41 4e 44  t2 WHERE a=2 AND
1720: 20 62 3e 27 74 77 6f 27 3b 0a 20 20 20 20 7d 0a   b>'two';.    }.
1730: 20 20 7d 20 7b 32 2e 32 7d 0a 20 20 64 6f 5f 74    } {2.2}.  do_t
1740: 65 73 74 20 64 65 73 63 69 64 78 31 2d 34 2e 36  est descidx1-4.6
1750: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
1760: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 64 20  .      SELECT d 
1770: 46 52 4f 4d 20 74 32 20 57 48 45 52 45 20 61 3d  FROM t2 WHERE a=
1780: 32 20 41 4e 44 20 62 3e 3d 27 74 77 6f 27 3b 0a  2 AND b>='two';.
1790: 20 20 20 20 7d 0a 20 20 7d 20 7b 32 2e 32 20 32      }.  } {2.2 2
17a0: 2e 30 20 32 2e 31 7d 0a 20 20 64 6f 5f 74 65 73  .0 2.1}.  do_tes
17b0: 74 20 64 65 73 63 69 64 78 31 2d 34 2e 37 20 7b  t descidx1-4.7 {
17c0: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20  .    execsql {. 
17d0: 20 20 20 20 20 53 45 4c 45 43 54 20 64 20 46 52       SELECT d FR
17e0: 4f 4d 20 74 32 20 57 48 45 52 45 20 61 3d 32 20  OM t2 WHERE a=2 
17f0: 41 4e 44 20 62 3c 27 74 77 6f 27 3b 0a 20 20 20  AND b<'two';.   
1800: 20 7d 0a 20 20 7d 20 7b 7d 0a 20 20 64 6f 5f 74   }.  } {}.  do_t
1810: 65 73 74 20 64 65 73 63 69 64 78 31 2d 34 2e 38  est descidx1-4.8
1820: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
1830: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 64 20  .      SELECT d 
1840: 46 52 4f 4d 20 74 32 20 57 48 45 52 45 20 61 3d  FROM t2 WHERE a=
1850: 32 20 41 4e 44 20 62 3c 3d 27 74 77 6f 27 3b 0a  2 AND b<='two';.
1860: 20 20 20 20 7d 0a 20 20 7d 20 7b 32 2e 30 20 32      }.  } {2.0 2
1870: 2e 31 7d 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20 64  .1}.}..do_test d
1880: 65 73 63 69 64 78 31 2d 35 2e 31 20 7b 0a 20 20  escidx1-5.1 {.  
1890: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52  execsql {.    CR
18a0: 45 41 54 45 20 54 41 42 4c 45 20 74 33 28 61 2c  EATE TABLE t3(a,
18b0: 62 2c 63 2c 64 29 3b 0a 20 20 20 20 43 52 45 41  b,c,d);.    CREA
18c0: 54 45 20 49 4e 44 45 58 20 74 33 69 31 20 4f 4e  TE INDEX t3i1 ON
18d0: 20 74 33 28 61 20 44 45 53 43 2c 20 62 20 41 53   t3(a DESC, b AS
18e0: 43 2c 20 63 20 44 45 53 43 2c 20 64 20 41 53 43  C, c DESC, d ASC
18f0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
1900: 54 4f 20 74 33 20 56 41 4c 55 45 53 28 30 2c 30  TO t3 VALUES(0,0
1910: 2c 30 2c 30 29 3b 0a 20 20 20 20 49 4e 53 45 52  ,0,0);.    INSER
1920: 54 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53  T INTO t3 VALUES
1930: 28 30 2c 30 2c 30 2c 31 29 3b 0a 20 20 20 20 49  (0,0,0,1);.    I
1940: 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41  NSERT INTO t3 VA
1950: 4c 55 45 53 28 30 2c 30 2c 31 2c 30 29 3b 0a 20  LUES(0,0,1,0);. 
1960: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
1970: 33 20 56 41 4c 55 45 53 28 30 2c 30 2c 31 2c 31  3 VALUES(0,0,1,1
1980: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
1990: 54 4f 20 74 33 20 56 41 4c 55 45 53 28 30 2c 31  TO t3 VALUES(0,1
19a0: 2c 30 2c 30 29 3b 0a 20 20 20 20 49 4e 53 45 52  ,0,0);.    INSER
19b0: 54 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53  T INTO t3 VALUES
19c0: 28 30 2c 31 2c 30 2c 31 29 3b 0a 20 20 20 20 49  (0,1,0,1);.    I
19d0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41  NSERT INTO t3 VA
19e0: 4c 55 45 53 28 30 2c 31 2c 31 2c 30 29 3b 0a 20  LUES(0,1,1,0);. 
19f0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
1a00: 33 20 56 41 4c 55 45 53 28 30 2c 31 2c 31 2c 31  3 VALUES(0,1,1,1
1a10: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
1a20: 54 4f 20 74 33 20 56 41 4c 55 45 53 28 31 2c 30  TO t3 VALUES(1,0
1a30: 2c 30 2c 30 29 3b 0a 20 20 20 20 49 4e 53 45 52  ,0,0);.    INSER
1a40: 54 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53  T INTO t3 VALUES
1a50: 28 31 2c 30 2c 30 2c 31 29 3b 0a 20 20 20 20 49  (1,0,0,1);.    I
1a60: 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41  NSERT INTO t3 VA
1a70: 4c 55 45 53 28 31 2c 30 2c 31 2c 30 29 3b 0a 20  LUES(1,0,1,0);. 
1a80: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
1a90: 33 20 56 41 4c 55 45 53 28 31 2c 30 2c 31 2c 31  3 VALUES(1,0,1,1
1aa0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
1ab0: 54 4f 20 74 33 20 56 41 4c 55 45 53 28 31 2c 31  TO t3 VALUES(1,1
1ac0: 2c 30 2c 30 29 3b 0a 20 20 20 20 49 4e 53 45 52  ,0,0);.    INSER
1ad0: 54 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53  T INTO t3 VALUES
1ae0: 28 31 2c 31 2c 30 2c 31 29 3b 0a 20 20 20 20 49  (1,1,0,1);.    I
1af0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41  NSERT INTO t3 VA
1b00: 4c 55 45 53 28 31 2c 31 2c 31 2c 30 29 3b 0a 20  LUES(1,1,1,0);. 
1b10: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
1b20: 33 20 56 41 4c 55 45 53 28 31 2c 31 2c 31 2c 31  3 VALUES(1,1,1,1
1b30: 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 63 6f  );.    SELECT co
1b40: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 33 3b 0a  unt(*) FROM t3;.
1b50: 20 20 7d 0a 7d 20 7b 31 36 7d 0a 64 6f 5f 74 65    }.} {16}.do_te
1b60: 73 74 20 64 65 73 63 69 64 78 31 2d 35 2e 32 20  st descidx1-5.2 
1b70: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
1b80: 20 53 45 4c 45 43 54 20 61 7c 7c 62 7c 7c 63 7c   SELECT a||b||c|
1b90: 7c 64 20 46 52 4f 4d 20 74 33 20 4f 52 44 45 52  |d FROM t3 ORDER
1ba0: 20 42 59 20 61 2c 62 2c 63 2c 64 3b 0a 20 20 7d   BY a,b,c,d;.  }
1bb0: 0a 7d 20 7b 30 30 30 30 20 30 30 30 31 20 30 30  .} {0000 0001 00
1bc0: 31 30 20 30 30 31 31 20 30 31 30 30 20 30 31 30  10 0011 0100 010
1bd0: 31 20 30 31 31 30 20 30 31 31 31 20 31 30 30 30  1 0110 0111 1000
1be0: 20 31 30 30 31 20 31 30 31 30 20 31 30 31 31 20   1001 1010 1011 
1bf0: 31 31 30 30 20 31 31 30 31 20 31 31 31 30 20 31  1100 1101 1110 1
1c00: 31 31 31 20 73 6f 72 74 7d 0a 64 6f 5f 74 65 73  111 sort}.do_tes
1c10: 74 20 64 65 73 63 69 64 78 31 2d 35 2e 33 20 7b  t descidx1-5.3 {
1c20: 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20 20  .  cksort {.    
1c30: 53 45 4c 45 43 54 20 61 7c 7c 62 7c 7c 63 7c 7c  SELECT a||b||c||
1c40: 64 20 46 52 4f 4d 20 74 33 20 4f 52 44 45 52 20  d FROM t3 ORDER 
1c50: 42 59 20 61 20 44 45 53 43 2c 20 62 20 41 53 43  BY a DESC, b ASC
1c60: 2c 20 63 20 44 45 53 43 2c 20 64 20 41 53 43 3b  , c DESC, d ASC;
1c70: 0a 20 20 7d 0a 7d 20 7b 31 30 31 30 20 31 30 31  .  }.} {1010 101
1c80: 31 20 31 30 30 30 20 31 30 30 31 20 31 31 31 30  1 1000 1001 1110
1c90: 20 31 31 31 31 20 31 31 30 30 20 31 31 30 31 20   1111 1100 1101 
1ca0: 30 30 31 30 20 30 30 31 31 20 30 30 30 30 20 30  0010 0011 0000 0
1cb0: 30 30 31 20 30 31 31 30 20 30 31 31 31 20 30 31  001 0110 0111 01
1cc0: 30 30 20 30 31 30 31 20 6e 6f 73 6f 72 74 7d 0a  00 0101 nosort}.
1cd0: 64 6f 5f 74 65 73 74 20 64 65 73 63 69 64 78 31  do_test descidx1
1ce0: 2d 35 2e 34 20 7b 0a 20 20 63 6b 73 6f 72 74 20  -5.4 {.  cksort 
1cf0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 7c 7c  {.    SELECT a||
1d00: 62 7c 7c 63 7c 7c 64 20 46 52 4f 4d 20 74 33 20  b||c||d FROM t3 
1d10: 4f 52 44 45 52 20 42 59 20 61 20 41 53 43 2c 20  ORDER BY a ASC, 
1d20: 62 20 44 45 53 43 2c 20 63 20 41 53 43 2c 20 64  b DESC, c ASC, d
1d30: 20 44 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 30 31   DESC;.  }.} {01
1d40: 30 31 20 30 31 30 30 20 30 31 31 31 20 30 31 31  01 0100 0111 011
1d50: 30 20 30 30 30 31 20 30 30 30 30 20 30 30 31 31  0 0001 0000 0011
1d60: 20 30 30 31 30 20 31 31 30 31 20 31 31 30 30 20   0010 1101 1100 
1d70: 31 31 31 31 20 31 31 31 30 20 31 30 30 31 20 31  1111 1110 1001 1
1d80: 30 30 30 20 31 30 31 31 20 31 30 31 30 20 6e 6f  000 1011 1010 no
1d90: 73 6f 72 74 7d 0a 64 6f 5f 74 65 73 74 20 64 65  sort}.do_test de
1da0: 73 63 69 64 78 31 2d 35 2e 35 20 7b 0a 20 20 63  scidx1-5.5 {.  c
1db0: 6b 73 6f 72 74 20 7b 0a 20 20 20 20 53 45 4c 45  ksort {.    SELE
1dc0: 43 54 20 61 7c 7c 62 7c 7c 63 20 46 52 4f 4d 20  CT a||b||c FROM 
1dd0: 74 33 20 57 48 45 52 45 20 64 3d 30 20 4f 52 44  t3 WHERE d=0 ORD
1de0: 45 52 20 42 59 20 61 20 44 45 53 43 2c 20 62 20  ER BY a DESC, b 
1df0: 41 53 43 2c 20 63 20 44 45 53 43 0a 20 20 7d 0a  ASC, c DESC.  }.
1e00: 7d 20 7b 31 30 31 20 31 30 30 20 31 31 31 20 31  } {101 100 111 1
1e10: 31 30 20 30 30 31 20 30 30 30 20 30 31 31 20 30  10 001 000 011 0
1e20: 31 30 20 6e 6f 73 6f 72 74 7d 0a 64 6f 5f 74 65  10 nosort}.do_te
1e30: 73 74 20 64 65 73 63 69 64 78 31 2d 35 2e 36 20  st descidx1-5.6 
1e40: 7b 0a 20 20 63 6b 73 6f 72 74 20 7b 0a 20 20 20  {.  cksort {.   
1e50: 20 53 45 4c 45 43 54 20 61 7c 7c 62 7c 7c 63 20   SELECT a||b||c 
1e60: 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20 64 3d  FROM t3 WHERE d=
1e70: 30 20 4f 52 44 45 52 20 42 59 20 61 20 41 53 43  0 ORDER BY a ASC
1e80: 2c 20 62 20 44 45 53 43 2c 20 63 20 41 53 43 0a  , b DESC, c ASC.
1e90: 20 20 7d 0a 7d 20 7b 30 31 30 20 30 31 31 20 30    }.} {010 011 0
1ea0: 30 30 20 30 30 31 20 31 31 30 20 31 31 31 20 31  00 001 110 111 1
1eb0: 30 30 20 31 30 31 20 6e 6f 73 6f 72 74 7d 0a 64  00 101 nosort}.d
1ec0: 6f 5f 74 65 73 74 20 64 65 73 63 69 64 78 31 2d  o_test descidx1-
1ed0: 35 2e 37 20 7b 0a 20 20 63 6b 73 6f 72 74 20 7b  5.7 {.  cksort {
1ee0: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 7c 7c 62  .    SELECT a||b
1ef0: 7c 7c 63 20 46 52 4f 4d 20 74 33 20 57 48 45 52  ||c FROM t3 WHER
1f00: 45 20 64 3d 30 20 4f 52 44 45 52 20 42 59 20 61  E d=0 ORDER BY a
1f10: 20 41 53 43 2c 20 62 20 44 45 53 43 2c 20 63 20   ASC, b DESC, c 
1f20: 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 30 31 31 20  DESC.  }.} {011 
1f30: 30 31 30 20 30 30 31 20 30 30 30 20 31 31 31 20  010 001 000 111 
1f40: 31 31 30 20 31 30 31 20 31 30 30 20 73 6f 72 74  110 101 100 sort
1f50: 7d 0a 64 6f 5f 74 65 73 74 20 64 65 73 63 69 64  }.do_test descid
1f60: 78 31 2d 35 2e 38 20 7b 0a 20 20 63 6b 73 6f 72  x1-5.8 {.  cksor
1f70: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  t {.    SELECT a
1f80: 7c 7c 62 7c 7c 63 20 46 52 4f 4d 20 74 33 20 57  ||b||c FROM t3 W
1f90: 48 45 52 45 20 64 3d 30 20 4f 52 44 45 52 20 42  HERE d=0 ORDER B
1fa0: 59 20 61 20 41 53 43 2c 20 62 20 41 53 43 2c 20  Y a ASC, b ASC, 
1fb0: 63 20 41 53 43 0a 20 20 7d 0a 7d 20 7b 30 30 30  c ASC.  }.} {000
1fc0: 20 30 30 31 20 30 31 30 20 30 31 31 20 31 30 30   001 010 011 100
1fd0: 20 31 30 31 20 31 31 30 20 31 31 31 20 73 6f 72   101 110 111 sor
1fe0: 74 7d 0a 64 6f 5f 74 65 73 74 20 64 65 73 63 69  t}.do_test desci
1ff0: 64 78 31 2d 35 2e 39 20 7b 0a 20 20 63 6b 73 6f  dx1-5.9 {.  ckso
2000: 72 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  rt {.    SELECT 
2010: 61 7c 7c 62 7c 7c 63 20 46 52 4f 4d 20 74 33 20  a||b||c FROM t3 
2020: 57 48 45 52 45 20 64 3d 30 20 4f 52 44 45 52 20  WHERE d=0 ORDER 
2030: 42 59 20 61 20 44 45 53 43 2c 20 62 20 44 45 53  BY a DESC, b DES
2040: 43 2c 20 63 20 41 53 43 0a 20 20 7d 0a 7d 20 7b  C, c ASC.  }.} {
2050: 31 31 30 20 31 31 31 20 31 30 30 20 31 30 31 20  110 111 100 101 
2060: 30 31 30 20 30 31 31 20 30 30 30 20 30 30 31 20  010 011 000 001 
2070: 73 6f 72 74 7d 0a 0a 23 20 54 65 73 74 20 74 68  sort}..# Test th
2080: 65 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66 6f  e legacy_file_fo
2090: 72 6d 61 74 20 70 72 61 67 6d 61 20 68 65 72 65  rmat pragma here
20a0: 20 62 65 63 61 75 73 65 20 77 65 20 68 61 76 65   because we have
20b0: 20 61 63 63 65 73 73 20 74 6f 0a 23 20 74 68 65   access to.# the
20c0: 20 67 65 74 5f 66 69 6c 65 5f 66 6f 72 6d 61 74   get_file_format
20d0: 20 63 6f 6d 6d 61 6e 64 2e 0a 23 0a 69 66 63 61   command..#.ifca
20e0: 70 61 62 6c 65 20 6c 65 67 61 63 79 66 6f 72 6d  pable legacyform
20f0: 61 74 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 64  at {.  do_test d
2100: 65 73 63 69 64 78 31 2d 36 2e 31 20 7b 0a 20 20  escidx1-6.1 {.  
2110: 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 20 20 66    db close.    f
2120: 6f 72 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e  orcedelete test.
2130: 64 62 20 74 65 73 74 2e 64 62 2d 6a 6f 75 72 6e  db test.db-journ
2140: 61 6c 0a 20 20 20 20 73 71 6c 69 74 65 33 20 64  al.    sqlite3 d
2150: 62 20 74 65 73 74 2e 64 62 0a 20 20 20 20 65 78  b test.db.    ex
2160: 65 63 73 71 6c 20 7b 50 52 41 47 4d 41 20 6c 65  ecsql {PRAGMA le
2170: 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74  gacy_file_format
2180: 7d 0a 20 20 7d 20 7b 31 7d 0a 7d 20 65 6c 73 65  }.  } {1}.} else
2190: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 64 65 73   {.  do_test des
21a0: 63 69 64 78 31 2d 36 2e 31 20 7b 0a 20 20 20 20  cidx1-6.1 {.    
21b0: 64 62 20 63 6c 6f 73 65 0a 20 20 20 20 66 6f 72  db close.    for
21c0: 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e 64 62  cedelete test.db
21d0: 20 74 65 73 74 2e 64 62 2d 6a 6f 75 72 6e 61 6c   test.db-journal
21e0: 0a 20 20 20 20 73 71 6c 69 74 65 33 20 64 62 20  .    sqlite3 db 
21f0: 74 65 73 74 2e 64 62 0a 20 20 20 20 65 78 65 63  test.db.    exec
2200: 73 71 6c 20 7b 50 52 41 47 4d 41 20 6c 65 67 61  sql {PRAGMA lega
2210: 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 7d 0a  cy_file_format}.
2220: 20 20 7d 20 7b 30 7d 0a 7d 0a 64 6f 5f 74 65 73    } {0}.}.do_tes
2230: 74 20 64 65 73 63 69 64 78 31 2d 36 2e 32 20 7b  t descidx1-6.2 {
2240: 0a 20 20 65 78 65 63 73 71 6c 20 7b 50 52 41 47  .  execsql {PRAG
2250: 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66  MA legacy_file_f
2260: 6f 72 6d 61 74 3d 59 45 53 7d 0a 20 20 65 78 65  ormat=YES}.  exe
2270: 63 73 71 6c 20 7b 50 52 41 47 4d 41 20 6c 65 67  csql {PRAGMA leg
2280: 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 7d  acy_file_format}
2290: 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 64  .} {1}.do_test d
22a0: 65 73 63 69 64 78 31 2d 36 2e 33 20 7b 0a 20 20  escidx1-6.3 {.  
22b0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52  execsql {.    CR
22c0: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c  EATE TABLE t1(a,
22d0: 62 2c 63 29 3b 0a 20 20 7d 0a 20 20 67 65 74 5f  b,c);.  }.  get_
22e0: 66 69 6c 65 5f 66 6f 72 6d 61 74 0a 7d 20 7b 31  file_format.} {1
22f0: 7d 0a 69 66 63 61 70 61 62 6c 65 20 76 61 63 75  }.ifcapable vacu
2300: 75 6d 20 7b 0a 20 20 23 20 56 65 72 69 66 79 20  um {.  # Verify 
2310: 74 68 61 74 20 74 68 65 20 66 69 6c 65 20 66 6f  that the file fo
2320: 72 6d 61 74 20 69 73 20 70 72 65 73 65 72 76 65  rmat is preserve
2330: 64 20 61 63 72 6f 73 73 20 61 20 76 61 63 75 75  d across a vacuu
2340: 6d 2e 0a 20 20 64 6f 5f 74 65 73 74 20 64 65 73  m..  do_test des
2350: 63 69 64 78 31 2d 36 2e 33 2e 31 20 7b 0a 20 20  cidx1-6.3.1 {.  
2360: 20 20 65 78 65 63 73 71 6c 20 7b 56 41 43 55 55    execsql {VACUU
2370: 4d 7d 0a 20 20 20 20 67 65 74 5f 66 69 6c 65 5f  M}.    get_file_
2380: 66 6f 72 6d 61 74 0a 20 20 7d 20 7b 31 7d 0a 7d  format.  } {1}.}
2390: 0a 64 6f 5f 74 65 73 74 20 64 65 73 63 69 64 78  .do_test descidx
23a0: 31 2d 36 2e 34 20 7b 0a 20 20 64 62 20 63 6c 6f  1-6.4 {.  db clo
23b0: 73 65 0a 20 20 66 6f 72 63 65 64 65 6c 65 74 65  se.  forcedelete
23c0: 20 74 65 73 74 2e 64 62 20 74 65 73 74 2e 64 62   test.db test.db
23d0: 2d 6a 6f 75 72 6e 61 6c 0a 20 20 73 71 6c 69 74  -journal.  sqlit
23e0: 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a 20 20  e3 db test.db.  
23f0: 65 78 65 63 73 71 6c 20 7b 50 52 41 47 4d 41 20  execsql {PRAGMA 
2400: 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d  legacy_file_form
2410: 61 74 3d 4e 4f 7d 0a 20 20 65 78 65 63 73 71 6c  at=NO}.  execsql
2420: 20 7b 50 52 41 47 4d 41 20 6c 65 67 61 63 79 5f   {PRAGMA legacy_
2430: 66 69 6c 65 5f 66 6f 72 6d 61 74 7d 0a 7d 20 7b  file_format}.} {
2440: 30 7d 0a 64 6f 5f 74 65 73 74 20 64 65 73 63 69  0}.do_test desci
2450: 64 78 31 2d 36 2e 35 20 7b 0a 20 20 65 78 65 63  dx1-6.5 {.  exec
2460: 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45  sql {.    CREATE
2470: 20 54 41 42 4c 45 20 74 31 28 61 2c 62 2c 63 29   TABLE t1(a,b,c)
2480: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44  ;.    CREATE IND
2490: 45 58 20 69 31 20 4f 4e 20 74 31 28 61 20 41 53  EX i1 ON t1(a AS
24a0: 43 2c 20 62 20 44 45 53 43 2c 20 63 20 41 53 43  C, b DESC, c ASC
24b0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
24c0: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 31 2c 32  TO t1 VALUES(1,2
24d0: 2c 33 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  ,3);.    INSERT 
24e0: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 31  INTO t1 VALUES(1
24f0: 2c 31 2c 30 29 3b 0a 20 20 20 20 49 4e 53 45 52  ,1,0);.    INSER
2500: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
2510: 28 31 2c 32 2c 31 29 3b 0a 20 20 20 20 49 4e 53  (1,2,1);.    INS
2520: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
2530: 45 53 28 31 2c 33 2c 34 29 3b 0a 20 20 7d 0a 20  ES(1,3,4);.  }. 
2540: 20 67 65 74 5f 66 69 6c 65 5f 66 6f 72 6d 61 74   get_file_format
2550: 0a 7d 20 7b 34 7d 0a 69 66 63 61 70 61 62 6c 65  .} {4}.ifcapable
2560: 20 76 61 63 75 75 6d 20 7b 0a 20 20 23 20 56 65   vacuum {.  # Ve
2570: 72 69 66 79 20 74 68 61 74 20 74 68 65 20 66 69  rify that the fi
2580: 6c 65 20 66 6f 72 6d 61 74 20 69 73 20 70 72 65  le format is pre
2590: 73 65 72 76 65 64 20 61 63 72 6f 73 73 20 61 20  served across a 
25a0: 76 61 63 75 75 6d 2e 0a 20 20 64 6f 5f 74 65 73  vacuum..  do_tes
25b0: 74 20 64 65 73 63 69 64 78 31 2d 36 2e 36 20 7b  t descidx1-6.6 {
25c0: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 56 41  .    execsql {VA
25d0: 43 55 55 4d 7d 0a 20 20 20 20 67 65 74 5f 66 69  CUUM}.    get_fi
25e0: 6c 65 5f 66 6f 72 6d 61 74 0a 20 20 7d 20 7b 34  le_format.  } {4
25f0: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 64 65 73 63  }.  do_test desc
2600: 69 64 78 31 2d 36 2e 37 20 7b 0a 20 20 20 20 65  idx1-6.7 {.    e
2610: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 50  xecsql {.      P
2620: 52 41 47 4d 41 20 6c 65 67 61 63 79 5f 66 69 6c  RAGMA legacy_fil
2630: 65 5f 66 6f 72 6d 61 74 3d 4f 4e 3b 0a 20 20 20  e_format=ON;.   
2640: 20 20 20 56 41 43 55 55 4d 3b 0a 20 20 20 20 7d     VACUUM;.    }
2650: 0a 20 20 20 20 67 65 74 5f 66 69 6c 65 5f 66 6f  .    get_file_fo
2660: 72 6d 61 74 0a 20 20 7d 20 7b 34 7d 0a 7d 20 0a  rmat.  } {4}.} .
2670: 0a 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a     ...finish_test.