/ Hex Artifact Content
Login

Artifact fb26389985407826f6076bb9f382c67d3db6b5d9:


0000: 23 20 32 30 31 34 20 4e 6f 76 65 6d 62 65 72 20  # 2014 November 
0010: 32 34 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f  24.#.# 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 74 65 73 74 69 6e 67 20 74 68  pt is testing th
01d0: 65 20 46 54 53 35 20 6d 6f 64 75 6c 65 2e 0a 23  e FTS5 module..#
01e0: 0a 23 20 53 70 65 63 69 66 69 63 61 6c 6c 79 2c  .# Specifically,
01f0: 20 74 68 65 20 61 75 78 69 6c 69 61 72 79 20 66   the auxiliary f
0200: 75 6e 63 74 69 6f 6e 20 22 68 69 67 68 6c 69 67  unction "highlig
0210: 68 74 22 2e 0a 23 0a 0a 73 6f 75 72 63 65 20 5b  ht"..#..source [
0220: 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 6c 65 20  file join [file 
0230: 64 69 72 6e 61 6d 65 20 5b 69 6e 66 6f 20 73 63  dirname [info sc
0240: 72 69 70 74 5d 5d 20 66 74 73 35 5f 63 6f 6d 6d  ript]] fts5_comm
0250: 6f 6e 2e 74 63 6c 5d 0a 73 65 74 20 74 65 73 74  on.tcl].set test
0260: 70 72 65 66 69 78 20 66 74 73 35 61 6b 0a 0a 23  prefix fts5ak..#
0270: 20 49 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   If SQLITE_ENABL
0280: 45 5f 46 54 53 35 20 69 73 20 64 65 66 69 6e 65  E_FTS5 is define
0290: 64 2c 20 6f 6d 69 74 20 74 68 69 73 20 66 69 6c  d, omit this fil
02a0: 65 2e 0a 69 66 63 61 70 61 62 6c 65 20 21 66 74  e..ifcapable !ft
02b0: 73 35 20 7b 0a 20 20 66 69 6e 69 73 68 5f 74 65  s5 {.  finish_te
02c0: 73 74 0a 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 66  st.  return.}..f
02d0: 6f 72 65 61 63 68 5f 64 65 74 61 69 6c 5f 6d 6f  oreach_detail_mo
02e0: 64 65 20 24 74 65 73 74 70 72 65 66 69 78 20 7b  de $testprefix {
02f0: 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  ..do_execsql_tes
0300: 74 20 31 2e 31 20 7b 0a 20 20 43 52 45 41 54 45  t 1.1 {.  CREATE
0310: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 66   VIRTUAL TABLE f
0320: 74 31 20 55 53 49 4e 47 20 66 74 73 35 28 78 2c  t1 USING fts5(x,
0330: 20 64 65 74 61 69 6c 3d 25 44 45 54 41 49 4c 25   detail=%DETAIL%
0340: 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  );.  INSERT INTO
0350: 20 66 74 31 20 56 41 4c 55 45 53 28 27 69 20 64   ft1 VALUES('i d
0360: 20 64 20 61 20 67 20 69 20 62 20 67 20 64 20 64   d a g i b g d d
0370: 27 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  ');.  INSERT INT
0380: 4f 20 66 74 31 20 56 41 4c 55 45 53 28 27 68 20  O ft1 VALUES('h 
0390: 64 20 62 20 6a 20 63 20 63 20 67 20 61 20 63 20  d b j c c g a c 
03a0: 61 27 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e  a');.  INSERT IN
03b0: 54 4f 20 66 74 31 20 56 41 4c 55 45 53 28 27 65  TO ft1 VALUES('e
03c0: 20 6a 20 61 20 65 20 66 20 68 20 62 20 66 20 68   j a e f h b f h
03d0: 20 68 27 29 3b 0a 20 20 49 4e 53 45 52 54 20 49   h');.  INSERT I
03e0: 4e 54 4f 20 66 74 31 20 56 41 4c 55 45 53 28 27  NTO ft1 VALUES('
03f0: 6a 20 66 20 68 20 64 20 67 20 68 20 69 20 62 20  j f h d g h i b 
0400: 64 20 66 27 29 3b 0a 20 20 49 4e 53 45 52 54 20  d f');.  INSERT 
0410: 49 4e 54 4f 20 66 74 31 20 56 41 4c 55 45 53 28  INTO ft1 VALUES(
0420: 27 64 20 63 20 6a 20 64 20 63 20 6a 20 62 20 63  'd c j d c j b c
0430: 20 67 20 65 27 29 3b 0a 20 20 49 4e 53 45 52 54   g e');.  INSERT
0440: 20 49 4e 54 4f 20 66 74 31 20 56 41 4c 55 45 53   INTO ft1 VALUES
0450: 28 27 69 20 61 20 64 20 65 20 67 20 6a 20 67 20  ('i a d e g j g 
0460: 64 20 61 20 61 27 29 3b 0a 20 20 49 4e 53 45 52  d a a');.  INSER
0470: 54 20 49 4e 54 4f 20 66 74 31 20 56 41 4c 55 45  T INTO ft1 VALUE
0480: 53 28 27 6a 20 66 20 63 20 65 20 64 20 61 20 68  S('j f c e d a h
0490: 20 6a 20 64 20 62 27 29 3b 0a 20 20 49 4e 53 45   j d b');.  INSE
04a0: 52 54 20 49 4e 54 4f 20 66 74 31 20 56 41 4c 55  RT INTO ft1 VALU
04b0: 45 53 28 27 69 20 63 20 63 20 66 20 61 20 64 20  ES('i c c f a d 
04c0: 67 20 68 20 6a 20 65 27 29 3b 0a 20 20 49 4e 53  g h j e');.  INS
04d0: 45 52 54 20 49 4e 54 4f 20 66 74 31 20 56 41 4c  ERT INTO ft1 VAL
04e0: 55 45 53 28 27 69 20 64 20 69 20 67 20 63 20 64  UES('i d i g c d
04f0: 20 63 20 68 20 62 20 66 27 29 3b 0a 20 20 49 4e   c h b f');.  IN
0500: 53 45 52 54 20 49 4e 54 4f 20 66 74 31 20 56 41  SERT INTO ft1 VA
0510: 4c 55 45 53 28 27 67 20 64 20 61 20 65 20 68 20  LUES('g d a e h 
0520: 61 20 62 20 63 20 66 20 6a 27 29 3b 0a 0a 20 20  a b c f j');..  
0530: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
0540: 41 42 4c 45 20 66 74 32 20 55 53 49 4e 47 20 66  ABLE ft2 USING f
0550: 74 73 35 28 78 2c 20 64 65 74 61 69 6c 3d 25 44  ts5(x, detail=%D
0560: 45 54 41 49 4c 25 29 3b 0a 20 20 49 4e 53 45 52  ETAIL%);.  INSER
0570: 54 20 49 4e 54 4f 20 66 74 32 20 56 41 4c 55 45  T INTO ft2 VALUE
0580: 53 28 27 61 20 62 20 63 20 64 20 65 20 66 20 67  S('a b c d e f g
0590: 20 68 20 69 20 6a 27 29 3b 0a 7d 0a 0a 64 6f 5f   h i j');.}..do_
05a0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e 32  execsql_test 1.2
05b0: 20 7b 0a 20 20 53 45 4c 45 43 54 20 68 69 67 68   {.  SELECT high
05c0: 6c 69 67 68 74 28 66 74 31 2c 20 30 2c 20 27 5b  light(ft1, 0, '[
05d0: 27 2c 20 27 5d 27 29 20 46 52 4f 4d 20 66 74 31  ', ']') FROM ft1
05e0: 20 57 48 45 52 45 20 66 74 31 20 4d 41 54 43 48   WHERE ft1 MATCH
05f0: 20 27 65 27 3b 0a 7d 20 7b 0a 20 20 7b 5b 65 5d   'e';.} {.  {[e]
0600: 20 6a 20 61 20 5b 65 5d 20 66 20 68 20 62 20 66   j a [e] f h b f
0610: 20 68 20 68 7d 0a 20 20 7b 64 20 63 20 6a 20 64   h h}.  {d c j d
0620: 20 63 20 6a 20 62 20 63 20 67 20 5b 65 5d 7d 0a   c j b c g [e]}.
0630: 20 20 7b 69 20 61 20 64 20 5b 65 5d 20 67 20 6a    {i a d [e] g j
0640: 20 67 20 64 20 61 20 61 7d 0a 20 20 7b 6a 20 66   g d a a}.  {j f
0650: 20 63 20 5b 65 5d 20 64 20 61 20 68 20 6a 20 64   c [e] d a h j d
0660: 20 62 7d 0a 20 20 7b 69 20 63 20 63 20 66 20 61   b}.  {i c c f a
0670: 20 64 20 67 20 68 20 6a 20 5b 65 5d 7d 0a 20 20   d g h j [e]}.  
0680: 7b 67 20 64 20 61 20 5b 65 5d 20 68 20 61 20 62  {g d a [e] h a b
0690: 20 63 20 66 20 6a 7d 0a 7d 0a 0a 64 6f 5f 65 78   c f j}.}..do_ex
06a0: 65 63 73 71 6c 5f 74 65 73 74 20 31 2e 33 20 7b  ecsql_test 1.3 {
06b0: 0a 20 20 53 45 4c 45 43 54 20 68 69 67 68 6c 69  .  SELECT highli
06c0: 67 68 74 28 66 74 31 2c 20 30 2c 20 27 5b 27 2c  ght(ft1, 0, '[',
06d0: 20 27 5d 27 29 20 46 52 4f 4d 20 66 74 31 20 57   ']') FROM ft1 W
06e0: 48 45 52 45 20 66 74 31 20 4d 41 54 43 48 20 27  HERE ft1 MATCH '
06f0: 65 20 65 20 65 27 0a 7d 20 7b 0a 20 20 7b 5b 65  e e e'.} {.  {[e
0700: 5d 20 6a 20 61 20 5b 65 5d 20 66 20 68 20 62 20  ] j a [e] f h b 
0710: 66 20 68 20 68 7d 0a 20 20 7b 64 20 63 20 6a 20  f h h}.  {d c j 
0720: 64 20 63 20 6a 20 62 20 63 20 67 20 5b 65 5d 7d  d c j b c g [e]}
0730: 0a 20 20 7b 69 20 61 20 64 20 5b 65 5d 20 67 20  .  {i a d [e] g 
0740: 6a 20 67 20 64 20 61 20 61 7d 0a 20 20 7b 6a 20  j g d a a}.  {j 
0750: 66 20 63 20 5b 65 5d 20 64 20 61 20 68 20 6a 20  f c [e] d a h j 
0760: 64 20 62 7d 0a 20 20 7b 69 20 63 20 63 20 66 20  d b}.  {i c c f 
0770: 61 20 64 20 67 20 68 20 6a 20 5b 65 5d 7d 0a 20  a d g h j [e]}. 
0780: 20 7b 67 20 64 20 61 20 5b 65 5d 20 68 20 61 20   {g d a [e] h a 
0790: 62 20 63 20 66 20 6a 7d 0a 7d 0a 0a 64 6f 5f 65  b c f j}.}..do_e
07a0: 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e 34 20  xecsql_test 1.4 
07b0: 7b 0a 20 20 53 45 4c 45 43 54 20 68 69 67 68 6c  {.  SELECT highl
07c0: 69 67 68 74 28 66 74 32 2c 20 30 2c 20 27 5b 27  ight(ft2, 0, '['
07d0: 2c 20 27 5d 27 29 20 46 52 4f 4d 20 66 74 32 20  , ']') FROM ft2 
07e0: 57 48 45 52 45 20 66 74 32 20 4d 41 54 43 48 20  WHERE ft2 MATCH 
07f0: 27 66 20 64 27 0a 7d 20 7b 0a 20 20 7b 61 20 62  'f d'.} {.  {a b
0800: 20 63 20 5b 64 5d 20 65 20 5b 66 5d 20 67 20 68   c [d] e [f] g h
0810: 20 69 20 6a 7d 0a 7d 0a 0a 64 6f 5f 65 78 65 63   i j}.}..do_exec
0820: 73 71 6c 5f 74 65 73 74 20 31 2e 35 20 7b 0a 20  sql_test 1.5 {. 
0830: 20 53 45 4c 45 43 54 20 68 69 67 68 6c 69 67 68   SELECT highligh
0840: 74 28 66 74 32 2c 20 30 2c 20 27 5b 27 2c 20 27  t(ft2, 0, '[', '
0850: 5d 27 29 20 46 52 4f 4d 20 66 74 32 20 57 48 45  ]') FROM ft2 WHE
0860: 52 45 20 66 74 32 20 4d 41 54 43 48 20 27 64 20  RE ft2 MATCH 'd 
0870: 66 27 0a 7d 20 7b 0a 20 20 7b 61 20 62 20 63 20  f'.} {.  {a b c 
0880: 5b 64 5d 20 65 20 5b 66 5d 20 67 20 68 20 69 20  [d] e [f] g h i 
0890: 6a 7d 0a 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d  j}.}..#---------
08a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
08b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
08c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
08d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
08e0: 0a 23 20 54 65 73 74 73 20 62 65 6c 6f 77 20 74  .# Tests below t
08f0: 68 69 73 20 70 6f 69 6e 74 20 72 65 71 75 69 72  his point requir
0900: 65 20 64 65 74 61 69 6c 3d 66 75 6c 6c 2e 0a 23  e detail=full..#
0910: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0920: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 69 66 20 7b 5b 64  ---------.if {[d
0960: 65 74 61 69 6c 5f 69 73 5f 66 75 6c 6c 5d 3d 3d  etail_is_full]==
0970: 30 7d 20 63 6f 6e 74 69 6e 75 65 0a 0a 0a 64 6f  0} continue...do
0980: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 32 2e  _execsql_test 2.
0990: 31 20 7b 0a 20 20 53 45 4c 45 43 54 20 68 69 67  1 {.  SELECT hig
09a0: 68 6c 69 67 68 74 28 66 74 31 2c 20 30 2c 20 27  hlight(ft1, 0, '
09b0: 5b 27 2c 20 27 5d 27 29 20 46 52 4f 4d 20 66 74  [', ']') FROM ft
09c0: 31 20 57 48 45 52 45 20 66 74 31 20 4d 41 54 43  1 WHERE ft1 MATC
09d0: 48 20 27 68 20 2b 20 64 27 3b 0a 7d 20 7b 0a 20  H 'h + d';.} {. 
09e0: 20 7b 5b 68 20 64 5d 20 62 20 6a 20 63 20 63 20   {[h d] b j c c 
09f0: 67 20 61 20 63 20 61 7d 0a 20 20 7b 6a 20 66 20  g a c a}.  {j f 
0a00: 5b 68 20 64 5d 20 67 20 68 20 69 20 62 20 64 20  [h d] g h i b d 
0a10: 66 7d 20 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  f} .}..do_execsq
0a20: 6c 5f 74 65 73 74 20 32 2e 32 20 7b 0a 20 20 53  l_test 2.2 {.  S
0a30: 45 4c 45 43 54 20 68 69 67 68 6c 69 67 68 74 28  ELECT highlight(
0a40: 66 74 31 2c 20 30 2c 20 27 5b 27 2c 20 27 5d 27  ft1, 0, '[', ']'
0a50: 29 20 46 52 4f 4d 20 66 74 31 20 57 48 45 52 45  ) FROM ft1 WHERE
0a60: 20 66 74 31 20 4d 41 54 43 48 20 27 64 20 2b 20   ft1 MATCH 'd + 
0a70: 64 27 3b 0a 7d 20 7b 0a 20 20 7b 69 20 5b 64 20  d';.} {.  {i [d 
0a80: 64 5d 20 61 20 67 20 69 20 62 20 67 20 5b 64 20  d] a g i b g [d 
0a90: 64 5d 7d 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  d]}.}..do_execsq
0aa0: 6c 5f 74 65 73 74 20 32 2e 33 20 7b 0a 20 20 53  l_test 2.3 {.  S
0ab0: 45 4c 45 43 54 20 68 69 67 68 6c 69 67 68 74 28  ELECT highlight(
0ac0: 66 74 31 2c 20 30 2c 20 27 5b 27 2c 20 27 5d 27  ft1, 0, '[', ']'
0ad0: 29 20 46 52 4f 4d 20 66 74 31 20 57 48 45 52 45  ) FROM ft1 WHERE
0ae0: 20 66 74 31 20 4d 41 54 43 48 20 27 64 20 2b 20   ft1 MATCH 'd + 
0af0: 64 20 64 20 2b 20 64 27 3b 0a 7d 20 7b 0a 20 20  d d + d';.} {.  
0b00: 7b 69 20 5b 64 20 64 5d 20 61 20 67 20 69 20 62  {i [d d] a g i b
0b10: 20 67 20 5b 64 20 64 5d 7d 0a 7d 0a 0a 64 6f 5f   g [d d]}.}..do_
0b20: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 32 2e 34  execsql_test 2.4
0b30: 20 7b 0a 20 20 53 45 4c 45 43 54 20 68 69 67 68   {.  SELECT high
0b40: 6c 69 67 68 74 28 66 74 32 2c 20 30 2c 20 27 5b  light(ft2, 0, '[
0b50: 27 2c 20 27 5d 27 29 20 46 52 4f 4d 20 66 74 32  ', ']') FROM ft2
0b60: 20 57 48 45 52 45 20 66 74 32 20 4d 41 54 43 48   WHERE ft2 MATCH
0b70: 20 27 62 2b 63 2b 64 20 63 2b 64 2b 65 27 0a 7d   'b+c+d c+d+e'.}
0b80: 20 7b 7b 61 20 5b 62 20 63 20 64 20 65 5d 20 66   {{a [b c d e] f
0b90: 20 67 20 68 20 69 20 6a 7d 7d 0a 0a 64 6f 5f 65   g h i j}}..do_e
0ba0: 78 65 63 73 71 6c 5f 74 65 73 74 20 32 2e 35 20  xecsql_test 2.5 
0bb0: 7b 0a 20 20 53 45 4c 45 43 54 20 68 69 67 68 6c  {.  SELECT highl
0bc0: 69 67 68 74 28 66 74 32 2c 20 30 2c 20 27 5b 27  ight(ft2, 0, '['
0bd0: 2c 20 27 5d 27 29 20 46 52 4f 4d 20 66 74 32 20  , ']') FROM ft2 
0be0: 57 48 45 52 45 20 66 74 32 20 4d 41 54 43 48 20  WHERE ft2 MATCH 
0bf0: 27 62 2b 63 2b 64 20 65 2b 66 2b 67 27 0a 7d 20  'b+c+d e+f+g'.} 
0c00: 7b 0a 20 20 7b 61 20 5b 62 20 63 20 64 5d 20 5b  {.  {a [b c d] [
0c10: 65 20 66 20 67 5d 20 68 20 69 20 6a 7d 0a 7d 0a  e f g] h i j}.}.
0c20: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
0c30: 20 32 2e 36 20 7b 0a 20 20 53 45 4c 45 43 54 20   2.6 {.  SELECT 
0c40: 68 69 67 68 6c 69 67 68 74 28 66 74 32 2c 20 30  highlight(ft2, 0
0c50: 2c 20 27 5b 27 2c 20 27 5d 27 29 20 46 52 4f 4d  , '[', ']') FROM
0c60: 20 66 74 32 20 57 48 45 52 45 20 66 74 32 20 4d   ft2 WHERE ft2 M
0c70: 41 54 43 48 20 27 62 2b 63 2b 64 20 63 27 0a 7d  ATCH 'b+c+d c'.}
0c80: 20 7b 0a 20 20 7b 61 20 5b 62 20 63 20 64 5d 20   {.  {a [b c d] 
0c90: 65 20 66 20 67 20 68 20 69 20 6a 7d 0a 7d 0a 0a  e f g h i j}.}..
0ca0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0cb0: 32 2e 37 20 7b 0a 20 20 53 45 4c 45 43 54 20 68  2.7 {.  SELECT h
0cc0: 69 67 68 6c 69 67 68 74 28 66 74 32 2c 20 30 2c  ighlight(ft2, 0,
0cd0: 20 27 5b 27 2c 20 27 5d 27 29 20 46 52 4f 4d 20   '[', ']') FROM 
0ce0: 66 74 32 20 57 48 45 52 45 20 66 74 32 20 4d 41  ft2 WHERE ft2 MA
0cf0: 54 43 48 20 27 62 2b 63 20 63 2b 64 2b 65 27 0a  TCH 'b+c c+d+e'.
0d00: 7d 20 7b 0a 20 20 7b 61 20 5b 62 20 63 20 64 20  } {.  {a [b c d 
0d10: 65 5d 20 66 20 67 20 68 20 69 20 6a 7d 0a 7d 0a  e] f g h i j}.}.
0d20: 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .#--------------
0d30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0d40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0d50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 54 68  -----------.# Th
0d70: 65 20 65 78 61 6d 70 6c 65 20 66 72 6f 6d 20 74  e example from t
0d80: 68 65 20 64 6f 63 73 2e 0a 23 0a 64 6f 5f 65 78  he docs..#.do_ex
0d90: 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 31 20 7b  ecsql_test 3.1 {
0da0: 0a 20 20 2d 2d 20 41 73 73 75 6d 69 6e 67 20 74  .  -- Assuming t
0db0: 68 69 73 3a 0a 20 20 43 52 45 41 54 45 20 56 49  his:.  CREATE VI
0dc0: 52 54 55 41 4c 20 54 41 42 4c 45 20 66 74 20 55  RTUAL TABLE ft U
0dd0: 53 49 4e 47 20 66 74 73 35 28 61 2c 20 64 65 74  SING fts5(a, det
0de0: 61 69 6c 3d 25 44 45 54 41 49 4c 25 29 3b 0a 20  ail=%DETAIL%);. 
0df0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 66 74 20   INSERT INTO ft 
0e00: 56 41 4c 55 45 53 28 27 61 20 62 20 63 20 78 20  VALUES('a b c x 
0e10: 63 20 64 20 65 27 29 3b 0a 20 20 49 4e 53 45 52  c d e');.  INSER
0e20: 54 20 49 4e 54 4f 20 66 74 20 56 41 4c 55 45 53  T INTO ft VALUES
0e30: 28 27 61 20 62 20 63 20 63 20 64 20 65 27 29 3b  ('a b c c d e');
0e40: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 66  .  INSERT INTO f
0e50: 74 20 56 41 4c 55 45 53 28 27 61 20 62 20 63 20  t VALUES('a b c 
0e60: 64 20 65 27 29 3b 0a 0a 20 20 2d 2d 20 54 68 65  d e');..  -- The
0e70: 20 66 6f 6c 6c 6f 77 69 6e 67 20 53 45 4c 45 43   following SELEC
0e80: 54 20 73 74 61 74 65 6d 65 6e 74 20 72 65 74 75  T statement retu
0e90: 72 6e 73 20 74 68 65 73 65 20 74 68 72 65 65 20  rns these three 
0ea0: 72 6f 77 73 3a 0a 20 20 2d 2d 20 20 20 27 5b 61  rows:.  --   '[a
0eb0: 20 62 20 63 5d 20 78 20 5b 63 20 64 20 65 5d 27   b c] x [c d e]'
0ec0: 0a 20 20 2d 2d 20 20 20 27 5b 61 20 62 20 63 5d  .  --   '[a b c]
0ed0: 20 5b 63 20 64 20 65 5d 27 0a 20 20 2d 2d 20 20   [c d e]'.  --  
0ee0: 20 27 5b 61 20 62 20 63 20 64 20 65 5d 27 0a 20   '[a b c d e]'. 
0ef0: 20 53 45 4c 45 43 54 20 68 69 67 68 6c 69 67 68   SELECT highligh
0f00: 74 28 66 74 2c 20 30 2c 20 27 5b 27 2c 20 27 5d  t(ft, 0, '[', ']
0f10: 27 29 20 46 52 4f 4d 20 66 74 20 57 48 45 52 45  ') FROM ft WHERE
0f20: 20 66 74 20 4d 41 54 43 48 20 27 61 2b 62 2b 63   ft MATCH 'a+b+c
0f30: 20 41 4e 44 20 63 2b 64 2b 65 27 3b 0a 7d 20 7b   AND c+d+e';.} {
0f40: 0a 20 20 7b 5b 61 20 62 20 63 5d 20 78 20 5b 63  .  {[a b c] x [c
0f50: 20 64 20 65 5d 7d 0a 20 20 7b 5b 61 20 62 20 63   d e]}.  {[a b c
0f60: 5d 20 5b 63 20 64 20 65 5d 7d 0a 20 20 7b 5b 61  ] [c d e]}.  {[a
0f70: 20 62 20 63 20 64 20 65 5d 7d 0a 7d 0a 0a 7d 0a   b c d e]}.}..}.
0f80: 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a 0a        .finish_test..