/ Hex Artifact Content
Login

Artifact 27180de76c03036be75ee80b93d8c5f540014071:


0000: 23 20 32 30 31 34 20 4a 75 6e 65 20 31 37 0a 23  # 2014 June 17.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  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 20 54 68 69 73 20 66 69  ******.# This fi
0170: 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72 65  le implements re
0180: 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73 20 66  gression tests f
0190: 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  or SQLite librar
01a0: 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75 73 20  y.  The.# focus 
01b0: 6f 66 20 74 68 69 73 20 73 63 72 69 70 74 20 69  of this script i
01c0: 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 46 54  s testing the FT
01d0: 53 35 20 6d 6f 64 75 6c 65 2e 0a 23 0a 0a 73 6f  S5 module..#..so
01e0: 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  urce [file join 
01f0: 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69  [file dirname [i
0200: 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20 66 74 73  nfo script]] fts
0210: 35 5f 63 6f 6d 6d 6f 6e 2e 74 63 6c 5d 0a 73 65  5_common.tcl].se
0220: 74 20 74 65 73 74 70 72 65 66 69 78 20 66 74 73  t testprefix fts
0230: 35 61 67 0a 0a 23 20 49 66 20 53 51 4c 49 54 45  5ag..# If SQLITE
0240: 5f 45 4e 41 42 4c 45 5f 46 54 53 35 20 69 73 20  _ENABLE_FTS5 is 
0250: 64 65 66 69 6e 65 64 2c 20 6f 6d 69 74 20 74 68  defined, omit th
0260: 69 73 20 66 69 6c 65 2e 0a 69 66 63 61 70 61 62  is file..ifcapab
0270: 6c 65 20 21 66 74 73 35 20 7b 0a 20 20 66 69 6e  le !fts5 {.  fin
0280: 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74 75 72  ish_test.  retur
0290: 6e 0a 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  n.}..#----------
02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
02e0: 23 20 54 68 69 73 20 66 69 6c 65 20 61 74 74 65  # This file atte
02f0: 6d 70 74 73 20 74 6f 20 76 65 72 69 66 79 20 74  mpts to verify t
0300: 68 61 74 20 74 68 65 20 65 78 74 65 6e 73 69 6f  hat the extensio
0310: 6e 20 41 50 49 73 20 77 6f 72 6b 20 77 69 74 68  n APIs work with
0320: 20 0a 23 20 22 4f 52 44 45 52 20 42 59 20 72 61   .# "ORDER BY ra
0330: 6e 6b 22 20 71 75 65 72 69 65 73 2e 20 54 68 69  nk" queries. Thi
0340: 73 20 69 73 20 64 6f 6e 65 20 62 79 20 63 6f 6d  s is done by com
0350: 70 61 72 69 6e 67 20 74 68 65 20 72 65 73 75 6c  paring the resul
0360: 74 73 20 6f 66 0a 23 20 74 68 65 20 66 74 73 35  ts of.# the fts5
0370: 5f 74 65 73 74 28 29 20 66 75 6e 63 74 69 6f 6e  _test() function
0380: 20 77 68 65 6e 20 72 75 6e 20 77 69 74 68 20 71   when run with q
0390: 75 65 72 69 65 73 20 6f 66 20 74 68 65 20 66 6f  ueries of the fo
03a0: 72 6d 3a 0a 23 0a 23 20 20 20 20 20 20 2e 2e 2e  rm:.#.#      ...
03b0: 20 57 48 45 52 45 20 66 74 73 20 4d 41 54 43 48   WHERE fts MATCH
03c0: 20 3f 20 4f 52 44 45 52 20 42 59 20 62 6d 32 35   ? ORDER BY bm25
03d0: 28 66 74 73 29 20 5b 41 53 43 7c 44 45 53 43 5d  (fts) [ASC|DESC]
03e0: 0a 23 0a 23 20 61 6e 64 0a 23 0a 23 20 20 20 20  .#.# and.#.#    
03f0: 20 20 2e 2e 2e 20 57 48 45 52 45 20 66 74 73 20    ... WHERE fts 
0400: 4d 41 54 43 48 20 3f 20 4f 52 44 45 52 20 42 59  MATCH ? ORDER BY
0410: 20 72 61 6e 6b 20 5b 41 53 43 7c 44 45 53 43 5d   rank [ASC|DESC]
0420: 0a 23 0a 0a 66 6f 72 65 61 63 68 5f 64 65 74 61  .#..foreach_deta
0430: 69 6c 5f 6d 6f 64 65 20 24 74 65 73 74 70 72 65  il_mode $testpre
0440: 66 69 78 20 7b 0a 0a 64 6f 5f 65 78 65 63 73 71  fix {..do_execsq
0450: 6c 5f 74 65 73 74 20 31 2e 30 20 7b 0a 20 20 43  l_test 1.0 {.  C
0460: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
0470: 42 4c 45 20 74 31 20 55 53 49 4e 47 20 66 74 73  BLE t1 USING fts
0480: 35 28 78 2c 20 79 2c 20 7a 2c 20 64 65 74 61 69  5(x, y, z, detai
0490: 6c 3d 25 44 45 54 41 49 4c 25 29 3b 0a 7d 0a 0a  l=%DETAIL%);.}..
04a0: 64 6f 5f 74 65 73 74 20 31 2e 31 20 7b 0a 20 20  do_test 1.1 {.  
04b0: 66 6f 72 65 61 63 68 20 7b 78 20 79 20 7a 7d 20  foreach {x y z} 
04c0: 7b 0a 20 20 20 20 7b 6a 20 73 20 6d 20 79 20 6d  {.    {j s m y m
04d0: 20 72 20 6e 20 6c 20 75 20 6b 7d 20 7b 7a 20 6b   r n l u k} {z k
04e0: 20 66 20 75 20 7a 20 67 20 68 20 73 20 77 20 67   f u z g h s w g
04f0: 7d 20 7b 72 20 6e 20 6f 20 73 20 73 20 62 20 76  } {r n o s s b v
0500: 20 6e 20 77 20 77 7d 0a 20 20 20 20 7b 6d 20 76   n w w}.    {m v
0510: 20 67 20 6e 20 64 20 78 20 71 20 72 20 72 20 73   g n d x q r r s
0520: 7d 20 7b 71 20 74 20 64 20 61 20 71 20 61 20 76  } {q t d a q a v
0530: 20 6c 20 68 20 6a 7d 20 7b 73 20 6b 20 6c 20 66   l h j} {s k l f
0540: 20 73 20 69 20 6e 20 76 20 71 20 76 7d 0a 20 20   s i n v q v}.  
0550: 20 20 7b 6d 20 66 20 66 20 64 20 68 20 68 20 73    {m f f d h h s
0560: 20 6f 20 68 20 61 7d 20 7b 79 20 65 20 76 20 72   o h a} {y e v r
0570: 20 71 20 69 20 75 20 6d 20 68 20 64 7d 20 7b 62   q i u m h d} {b
0580: 20 63 20 6b 20 71 20 6d 20 7a 20 6c 20 7a 20 68   c k q m z l z h
0590: 20 6e 7d 0a 20 20 20 20 7b 6a 20 65 20 6d 20 76   n}.    {j e m v
05a0: 20 6b 20 70 20 65 20 63 20 6a 20 6d 7d 20 7b 6d   k p e c j m} {m
05b0: 20 70 20 76 20 7a 20 64 20 78 20 6c 20 6e 20 69   p v z d x l n i
05c0: 20 61 7d 20 7b 76 20 70 20 75 20 70 20 6d 20 74   a} {v p u p m t
05d0: 20 70 20 71 20 69 20 66 7d 0a 20 20 20 20 7b 76   p q i f}.    {v
05e0: 20 72 20 77 20 6c 20 65 20 65 20 74 20 64 20 7a   r w l e e t d z
05f0: 20 70 7d 20 7b 63 20 73 20 62 20 77 20 6b 20 6d   p} {c s b w k m
0600: 20 6e 20 6b 20 6f 20 75 7d 20 7b 77 20 67 20 79   n k o u} {w g y
0610: 20 66 20 76 20 77 20 76 20 77 20 76 20 70 7d 0a   f v w v w v p}.
0620: 20 20 20 20 7b 6b 20 64 20 67 20 6f 20 75 20 6a      {k d g o u j
0630: 20 70 20 7a 20 6e 20 6f 7d 20 7b 74 20 67 20 65   p z n o} {t g e
0640: 20 71 20 6c 20 7a 20 69 20 67 20 62 20 6a 7d 20   q l z i g b j} 
0650: 7b 66 20 69 20 71 20 71 20 6a 20 79 20 68 20 62  {f i q q j y h b
0660: 20 67 20 68 7d 0a 20 20 20 20 7b 6a 20 73 20 77   g h}.    {j s w
0670: 20 78 20 6f 20 74 20 6a 20 62 20 74 20 6d 7d 20   x o t j b t m} 
0680: 7b 76 20 61 20 76 20 76 20 72 20 74 20 78 20 63  {v a v v r t x c
0690: 20 71 20 61 7d 20 7b 72 20 74 20 6b 20 78 20 77   q a} {r t k x w
06a0: 20 75 20 6c 20 68 20 61 20 67 7d 0a 20 20 20 20   u l h a g}.    
06b0: 7b 6a 20 79 20 62 20 69 20 75 20 64 20 65 20 6d  {j y b i u d e m
06c0: 20 64 20 77 7d 20 7b 79 20 73 20 6f 20 6a 20 68   d w} {y s o j h
06d0: 20 69 20 6e 20 61 20 75 20 70 7d 20 7b 6e 20 61   i n a u p} {n a
06e0: 20 67 20 62 20 75 20 63 20 77 20 65 20 62 20 6d   g b u c w e b m
06f0: 7d 0a 20 20 20 20 7b 62 20 63 20 6b 20 73 20 63  }.    {b c k s c
0700: 20 77 20 6a 20 70 20 77 20 62 7d 20 7b 6d 20 6f   w j p w b} {m o
0710: 20 63 20 6f 20 77 20 6f 20 62 20 64 20 71 20 71   c o w o b d q q
0720: 7d 20 7b 6e 20 74 20 79 20 6f 20 79 20 7a 20 79  } {n t y o y z y
0730: 20 72 20 7a 20 65 7d 0a 20 20 20 20 7b 70 20 6e   r z e}.    {p n
0740: 20 71 20 6c 20 65 20 6c 20 68 20 7a 20 71 20 63   q l e l h z q c
0750: 7d 20 7b 6e 20 73 20 65 20 69 20 68 20 63 20 76  } {n s e i h c v
0760: 20 62 20 62 20 75 7d 20 7b 6d 20 70 20 64 20 69   b b u} {m p d i
0770: 20 74 20 61 20 6f 20 6f 20 66 20 66 7d 0a 20 20   t a o o f f}.  
0780: 20 20 7b 6b 20 63 20 6f 20 6e 20 76 20 65 20 7a    {k c o n v e z
0790: 20 6c 20 62 20 6d 7d 20 7b 73 20 6d 20 6e 20 69   l b m} {s m n i
07a0: 20 6e 20 73 20 64 20 65 20 73 20 75 7d 20 7b 74   n s d e s u} {t
07b0: 20 61 20 75 20 65 20 71 20 64 20 61 20 6f 20 75   a u e q d a o u
07c0: 20 63 7d 0a 20 20 20 20 7b 68 20 64 20 74 20 6f   c}.    {h d t o
07d0: 20 69 20 61 20 67 20 62 20 62 20 70 7d 20 7b 6b   i a g b b p} {k
07e0: 20 78 20 63 20 69 20 67 20 66 20 67 20 62 20 62   x c i g f g b b
07f0: 20 6b 7d 20 7b 78 20 66 20 69 20 76 20 6e 20 61   k} {x f i v n a
0800: 20 6e 20 6e 20 6a 20 69 7d 0a 20 20 20 20 7b 66   n n j i}.    {f
0810: 20 7a 20 6b 20 72 20 62 20 75 20 73 20 6b 20 7a   z k r b u s k z
0820: 20 65 7d 20 7b 6e 20 7a 20 76 20 7a 20 77 20 6c   e} {n z v z w l
0830: 20 65 20 72 20 68 20 74 7d 20 7b 74 20 69 20 73   e r h t} {t i s
0840: 20 76 20 76 20 61 20 76 20 70 20 6e 20 73 7d 0a   v v a v p n s}.
0850: 20 20 20 20 7b 6b 20 66 20 65 20 63 20 74 20 7a      {k f e c t z
0860: 20 72 20 65 20 66 20 64 7d 20 7b 66 20 6d 20 67   r e f d} {f m g
0870: 20 72 20 63 20 77 20 71 20 6b 20 62 20 76 7d 20   r c w q k b v} 
0880: 7b 76 20 79 20 73 20 79 20 66 20 72 20 62 20 66  {v y s y f r b f
0890: 20 65 20 66 7d 0a 20 20 20 20 7b 7a 20 72 20 63   e f}.    {z r c
08a0: 20 74 20 64 20 71 20 71 20 68 20 78 20 62 7d 20   t d q q h x b} 
08b0: 7b 75 20 63 20 67 20 7a 20 6e 20 7a 20 75 20 76  {u c g z n z u v
08c0: 20 73 20 73 7d 20 7b 79 20 74 20 6e 20 66 20 66   s s} {y t n f f
08d0: 20 78 20 62 20 66 20 64 20 78 7d 0a 20 20 20 20   x b f d x}.    
08e0: 7b 75 20 6e 20 70 20 6e 20 75 20 74 20 69 20 6d  {u n p n u t i m
08f0: 20 65 20 6a 7d 20 7b 70 20 6a 20 6a 20 64 20 6d   e j} {p j j d m
0900: 20 66 20 6b 20 70 20 6d 20 7a 7d 20 7b 64 20 6f   f k p m z} {d o
0910: 20 6c 20 76 20 63 20 6f 20 65 20 61 20 68 20 77   l v c o e a h w
0920: 7d 0a 20 20 20 20 7b 68 20 6f 20 71 20 77 20 74  }.    {h o q w t
0930: 20 66 20 76 20 69 20 63 20 79 7d 20 7b 63 20 71   f v i c y} {c q
0940: 20 75 20 6e 20 72 20 7a 20 73 20 6c 20 6c 20 71   u n r z s l l q
0950: 7d 20 7b 7a 20 78 20 61 20 71 20 77 20 73 20 62  } {z x a q w s b
0960: 20 77 20 73 20 79 7d 0a 20 20 20 20 7b 79 20 6d   w s y}.    {y m
0970: 20 73 20 78 20 6b 20 69 20 6d 20 6e 20 78 20 63   s x k i m n x c
0980: 7d 20 7b 62 20 69 20 61 20 6e 20 76 20 68 20 7a  } {b i a n v h z
0990: 20 6e 20 6b 20 61 7d 20 7b 77 20 6c 20 71 20 70   n k a} {w l q p
09a0: 20 62 20 68 20 68 20 67 20 64 20 79 7d 0a 20 20   b h h g d y}.  
09b0: 20 20 7b 7a 20 76 20 73 20 6a 20 66 20 70 20 76    {z v s j f p v
09c0: 20 6c 20 66 20 77 7d 20 7b 63 20 73 20 62 20 69   l f w} {c s b i
09d0: 20 7a 20 65 20 6b 20 69 20 67 20 63 7d 20 7b 78   z e k i g c} {x
09e0: 20 62 20 76 20 64 20 77 20 6a 20 66 20 65 20 64   b v d w j f e d
09f0: 20 7a 7d 0a 20 20 20 20 7b 72 20 6b 20 6b 20 6a   z}.    {r k k j
0a00: 20 65 20 6f 20 6d 20 6b 20 67 20 62 7d 20 7b 68   e o m k g b} {h
0a10: 20 62 20 64 20 63 20 68 20 6d 20 79 20 62 20 74   b d c h m y b t
0a20: 20 75 7d 20 7b 75 20 6a 20 73 20 68 20 6b 20 7a   u} {u j s h k z
0a30: 20 63 20 75 20 64 20 79 7d 0a 20 20 20 20 7b 76   c u d y}.    {v
0a40: 20 68 20 69 20 76 20 73 20 79 20 7a 20 69 20 6b   h i v s y z i k
0a50: 20 6c 7d 20 7b 64 20 74 20 6d 20 77 20 71 20 77   l} {d t m w q w
0a60: 20 63 20 61 20 7a 20 70 7d 20 7b 72 20 73 20 65   c a z p} {r s e
0a70: 20 73 20 78 20 76 20 64 20 77 20 6b 20 62 7d 0a   s x v d w k b}.
0a80: 20 20 20 20 7b 75 20 72 20 65 20 71 20 6a 20 79      {u r e q j y
0a90: 20 68 20 6f 20 6f 20 73 7d 20 7b 78 20 78 20 7a   h o o s} {x x z
0aa0: 20 72 20 78 20 79 20 74 20 66 20 6a 20 73 7d 20   r x y t f j s} 
0ab0: 7b 6b 20 6e 20 68 20 78 20 69 20 69 20 75 20 65  {k n h x i i u e
0ac0: 20 63 20 76 7d 0a 20 20 20 20 7b 71 20 6c 20 66   c v}.    {q l f
0ad0: 20 64 20 61 20 70 20 77 20 6c 20 71 20 6f 7d 20   d a p w l q o} 
0ae0: 7b 79 20 7a 20 71 20 77 20 6a 20 6f 20 70 20 62  {y z q w j o p b
0af0: 20 6f 20 76 7d 20 7b 73 20 75 20 68 20 7a 20 68   o v} {s u h z h
0b00: 20 66 20 64 20 66 20 6e 20 6c 7d 0a 20 20 20 20   f d f n l}.    
0b10: 7b 71 20 6f 20 65 20 6f 20 78 20 78 20 6c 20 67  {q o e o x x l g
0b20: 20 71 20 69 7d 20 7b 6a 20 67 20 6d 20 68 20 71   q i} {j g m h q
0b30: 20 71 20 77 20 63 20 64 20 62 7d 20 7b 6f 20 6d   q w c d b} {o m
0b40: 20 64 20 68 20 77 20 61 20 67 20 62 20 66 20 6e   d h w a g b f n
0b50: 7d 0a 20 20 20 20 7b 6d 20 78 20 6b 20 74 20 73  }.    {m x k t s
0b60: 20 73 20 79 20 6c 20 76 20 61 7d 20 7b 6a 20 78   s y l v a} {j x
0b70: 20 74 20 63 20 61 20 75 20 77 20 62 20 77 20 67   t c a u w b w g
0b80: 7d 20 7b 6e 20 66 20 6a 20 62 20 76 20 78 20 79  } {n f j b v x y
0b90: 20 70 20 75 20 74 7d 0a 20 20 20 20 7b 75 20 77   p u t}.    {u w
0ba0: 20 6b 20 61 20 71 20 62 20 75 20 77 20 6b 20 77   k a q b u w k w
0bb0: 7d 20 7b 61 20 68 20 6a 20 75 20 6f 20 77 20 66  } {a h j u o w f
0bc0: 20 73 20 6b 20 70 7d 20 7b 6a 20 6f 20 66 20 73   s k p} {j o f s
0bd0: 20 68 20 79 20 74 20 6a 20 68 20 67 7d 0a 20 20   h y t j h g}.  
0be0: 20 20 7b 78 20 76 20 62 20 6c 20 6d 20 74 20 6c    {x v b l m t l
0bf0: 20 6d 20 68 20 6c 7d 20 7b 74 20 70 20 79 20 69   m h l} {t p y i
0c00: 20 79 20 69 20 71 20 62 20 71 20 61 7d 20 7b 6b   y i q b q a} {k
0c10: 20 6f 20 6f 20 7a 20 77 20 61 20 63 20 68 20 63   o o z w a c h c
0c20: 20 66 7d 0a 20 20 20 20 7b 6a 20 67 20 63 20 64   f}.    {j g c d
0c30: 20 6b 20 77 20 62 20 64 20 74 20 76 7d 20 7b 61   k w b d t v} {a
0c40: 20 6b 20 76 20 63 20 6d 20 61 20 76 20 68 20 76   k v c m a v h v
0c50: 20 70 7d 20 7b 69 20 63 20 61 20 69 20 6a 20 67   p} {i c a i j g
0c60: 20 68 20 6c 20 6a 20 68 7d 0a 20 20 20 20 7b 6c   h l j h}.    {l
0c70: 20 6d 20 76 20 6c 20 63 20 7a 20 6a 20 62 20 70   m v l c z j b p
0c80: 20 62 7d 20 7b 7a 20 70 20 7a 20 66 20 6c 20 6e   b} {z p z f l n
0c90: 20 6b 20 69 20 62 20 61 7d 20 7b 6a 20 76 20 71   k i b a} {j v q
0ca0: 20 6b 20 67 20 69 20 78 20 67 20 69 20 62 7d 0a   k g i x g i b}.
0cb0: 20 20 20 20 7b 6d 20 63 20 69 20 77 20 75 20 7a      {m c i w u z
0cc0: 20 6d 20 69 20 73 20 7a 7d 20 7b 69 20 7a 20 72   m i s z} {i z r
0cd0: 20 66 20 6e 20 6c 20 71 20 7a 20 6b 20 77 7d 20   f n l q z k w} 
0ce0: 7b 78 20 6e 20 62 20 70 20 62 20 71 20 72 20 67  {x n b p b q r g
0cf0: 20 69 20 7a 7d 0a 20 20 20 20 7b 64 20 67 20 69   i z}.    {d g i
0d00: 20 6f 20 6f 20 78 20 6c 20 66 20 78 20 64 7d 20   o o x l f x d} 
0d10: 7b 72 20 74 20 6d 20 66 20 62 20 6e 20 71 20 79  {r t m f b n q y
0d20: 20 63 20 62 7d 20 7b 69 20 75 20 67 20 6b 20 77   c b} {i u g k w
0d30: 20 78 20 6e 20 6d 20 70 20 6f 7d 0a 20 20 20 20   x n m p o}.    
0d40: 7b 74 20 6f 20 73 20 69 20 71 20 64 20 7a 20 78  {t o s i q d z x
0d50: 20 64 20 74 7d 20 7b 76 20 61 20 6b 20 73 20 71   d t} {v a k s q
0d60: 20 7a 20 6a 20 63 20 6f 20 6f 7d 20 7b 7a 20 66   z j c o o} {z f
0d70: 20 6e 20 6e 20 72 20 6c 20 79 20 77 20 76 20 76   n n r l y w v v
0d80: 7d 0a 20 20 20 20 7b 77 20 6b 20 68 20 64 20 74  }.    {w k h d t
0d90: 20 6c 20 6a 20 67 20 6e 20 6e 7d 20 7b 72 20 7a   l j g n n} {r z
0da0: 20 6d 20 76 20 79 20 62 20 6c 20 6e 20 63 20 75   m v y b l n c u
0db0: 7d 20 7b 76 20 62 20 76 20 73 20 63 20 6c 20 6e  } {v b v s c l n
0dc0: 20 6b 20 67 20 76 7d 0a 20 20 20 20 7b 6d 20 61   k g v}.    {m a
0dd0: 20 67 20 72 20 61 20 62 20 75 20 75 20 6e 20 7a   g r a b u u n z
0de0: 7d 20 7b 75 20 79 20 6c 20 68 20 76 20 77 20 76  } {u y l h v w v
0df0: 20 6b 20 62 20 66 7d 20 7b 78 20 6c 20 70 20 67   k b f} {x l p g
0e00: 20 69 20 73 20 6a 20 66 20 78 20 76 7d 0a 20 20   i s j f x v}.  
0e10: 20 20 7b 76 20 73 20 67 20 78 20 6b 20 7a 20 61    {v s g x k z a
0e20: 20 6b 20 61 20 72 7d 20 7b 6c 20 74 20 67 20 76   k a r} {l t g v
0e30: 20 6a 20 71 20 6c 20 6b 20 70 20 6c 7d 20 7b 66   j q l k p l} {f
0e40: 20 68 20 6e 20 61 20 78 20 74 20 76 20 73 20 74   h n a x t v s t
0e50: 20 79 7d 0a 20 20 20 20 7b 7a 20 75 20 76 20 75   y}.    {z u v u
0e60: 20 78 20 70 20 73 20 6a 20 79 20 74 7d 20 7b 67   x p s j y t} {g
0e70: 20 62 20 71 20 65 20 65 20 67 20 6c 20 6e 20 77   b q e e g l n w
0e80: 20 67 7d 20 7b 65 20 6e 20 70 20 6a 20 69 20 67   g} {e n p j i g
0e90: 20 6a 20 66 20 75 20 72 7d 0a 20 20 20 20 7b 71   j f u r}.    {q
0ea0: 20 7a 20 6c 20 74 20 77 20 6f 20 6c 20 6d 20 70   z l t w o l m p
0eb0: 20 65 7d 20 7b 74 20 73 20 67 20 68 20 72 20 70   e} {t s g h r p
0ec0: 20 72 20 6f 20 74 20 7a 7d 20 7b 79 20 62 20 66   r o t z} {y b f
0ed0: 20 61 20 6f 20 6e 20 75 20 6d 20 7a 20 67 7d 0a   a o n u m z g}.
0ee0: 20 20 20 20 7b 64 20 74 20 77 20 6e 20 79 20 62      {d t w n y b
0ef0: 20 6f 20 67 20 66 20 6f 7d 20 7b 64 20 61 20 6a   o g f o} {d a j
0f00: 20 65 20 72 20 6c 20 67 20 67 20 73 20 68 7d 20   e r l g g s h} 
0f10: 7b 64 20 7a 20 65 20 6c 20 77 20 71 20 6c 20 74  {d z e l w q l t
0f20: 20 68 20 66 7d 0a 20 20 20 20 7b 66 20 6c 20 75   h f}.    {f l u
0f30: 20 77 20 71 20 76 20 78 20 6a 20 61 20 68 7d 20   w q v x j a h} 
0f40: 7b 66 20 6e 20 75 20 6c 20 6c 20 64 20 6d 20 68  {f n u l l d m h
0f50: 20 68 20 77 7d 20 7b 64 20 78 20 63 20 63 20 65   h w} {d x c c e
0f60: 20 72 20 6f 20 64 20 71 20 6a 7d 0a 20 20 20 20   r o d q j}.    
0f70: 7b 62 20 79 20 66 20 71 20 73 20 71 20 66 20 75  {b y f q s q f u
0f80: 20 6c 20 67 7d 20 7b 75 20 7a 20 77 20 6c 20 66   l g} {u z w l f
0f90: 20 64 20 62 20 69 20 61 20 67 7d 20 7b 6d 20 76   d b i a g} {m v
0fa0: 20 71 20 62 20 67 20 75 20 6f 20 7a 20 65 20 7a   q b g u o z e z
0fb0: 7d 0a 20 20 20 20 7b 68 20 7a 20 70 20 74 20 73  }.    {h z p t s
0fc0: 20 65 20 78 20 69 20 76 20 6d 7d 20 7b 6c 20 68   e x i v m} {l h
0fd0: 20 71 20 6d 20 65 20 6f 20 78 20 78 20 78 20 6a   q m e o x x x j
0fe0: 7d 20 7b 65 20 65 20 64 20 6e 20 70 20 72 20 6d  } {e e d n p r m
0ff0: 20 67 20 6a 20 66 7d 0a 20 20 20 20 7b 6b 20 68   g j f}.    {k h
1000: 20 73 20 67 20 6f 20 6e 20 73 20 64 20 61 20 78   s g o n s d a x
1010: 7d 20 7b 75 20 64 20 74 20 74 20 73 20 6a 20 6f  } {u d t t s j o
1020: 20 76 20 68 20 61 7d 20 7b 7a 20 72 20 62 20 61   v h a} {z r b a
1030: 20 65 20 75 20 76 20 6f 20 65 20 73 7d 0a 20 20   e u v o e s}.  
1040: 20 20 7b 6d 20 62 20 62 20 67 20 61 20 66 20 63    {m b b g a f c
1050: 20 70 20 61 20 74 7d 20 7b 77 20 63 20 6d 20 6a   p a t} {w c m j
1060: 20 6f 20 64 20 62 20 6c 20 67 20 65 7d 20 7b 66   o d b l g e} {f
1070: 20 70 20 6a 20 70 20 6d 20 6f 20 73 20 79 20 76   p j p m o s y v
1080: 20 6a 7d 0a 20 20 20 20 7b 63 20 72 20 6e 20 68   j}.    {c r n h
1090: 20 64 20 77 20 63 20 61 20 62 20 6c 7d 20 7b 73   d w c a b l} {s
10a0: 20 67 20 65 20 75 20 73 20 64 20 6e 20 6a 20 62   g e u s d n j b
10b0: 20 67 7d 20 7b 62 20 6f 20 6e 20 61 20 78 20 61   g} {b o n a x a
10c0: 20 62 20 78 20 79 20 6c 7d 0a 20 20 20 20 7b 72   b x y l}.    {r
10d0: 20 68 20 75 20 78 20 66 20 63 20 64 20 7a 20 6e   h u x f c d z n
10e0: 20 6f 7d 20 7b 78 20 79 20 6c 20 67 20 75 20 6d   o} {x y l g u m
10f0: 20 69 20 69 20 77 20 64 7d 20 7b 74 20 66 20 68   i i w d} {t f h
1100: 20 62 20 7a 20 76 20 72 20 73 20 72 20 67 7d 0a   b z v r s r g}.
1110: 20 20 20 20 7b 74 20 69 20 6f 20 72 20 62 20 76      {t i o r b v
1120: 20 67 20 67 20 70 20 61 7d 20 7b 64 20 78 20 6c   g g p a} {d x l
1130: 20 75 20 71 20 6b 20 6d 20 6f 20 73 20 75 7d 20   u q k m o s u} 
1140: 7b 6a 20 66 20 68 20 74 20 75 20 6e 20 7a 20 75  {j f h t u n z u
1150: 20 6b 20 6d 7d 0a 20 20 20 20 7b 67 20 6a 20 74   k m}.    {g j t
1160: 20 79 20 64 20 63 20 6e 20 6a 20 79 20 67 7d 20   y d c n j y g} 
1170: 7b 77 20 65 20 73 20 6b 20 76 20 63 20 77 20 69  {w e s k v c w i
1180: 20 67 20 74 7d 20 7b 67 20 61 20 68 20 72 20 67   g t} {g a h r g
1190: 20 76 20 67 20 68 20 72 20 6f 7d 0a 20 20 20 20   v g h r o}.    
11a0: 7b 65 20 6a 20 6c 20 61 20 71 20 6a 20 67 20 69  {e j l a q j g i
11b0: 20 6e 20 68 7d 20 7b 64 20 7a 20 6b 20 63 20 75   n h} {d z k c u
11c0: 20 70 20 6e 20 75 20 70 20 70 7d 20 7b 74 20 75   p n u p p} {t u
11d0: 20 65 20 65 20 76 20 7a 20 76 20 72 20 72 20 67   e e v z v r r g
11e0: 7d 0a 20 20 20 20 7b 6c 20 6a 20 73 20 67 20 6b  }.    {l j s g k
11f0: 20 6a 20 6b 20 68 20 7a 20 6c 7d 20 7b 70 20 76   j k h z l} {p v
1200: 20 64 20 61 20 74 20 78 20 64 20 65 20 71 20 75   d a t x d e q u
1210: 7d 20 7b 72 20 6c 20 75 20 7a 20 62 20 6d 20 67  } {r l u z b m g
1220: 20 6b 20 73 20 6a 7d 0a 20 20 20 20 7b 69 20 65   k s j}.    {i e
1230: 20 79 20 64 20 75 20 78 20 64 20 69 20 6e 20 6c   y d u x d i n l
1240: 7d 20 7b 70 20 66 20 7a 20 6b 20 6d 20 6d 20 77  } {p f z k m m w
1250: 20 70 20 75 20 6c 7d 20 7b 7a 20 6c 20 70 20 6d   p u l} {z l p m
1260: 20 72 20 71 20 77 20 6e 20 64 20 61 7d 0a 20 20   r q w n d a}.  
1270: 7d 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  } {.    execsql 
1280: 7b 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31  { INSERT INTO t1
1290: 20 56 41 4c 55 45 53 28 24 78 2c 20 24 79 2c 20   VALUES($x, $y, 
12a0: 24 7a 29 20 7d 0a 20 20 7d 0a 20 20 73 65 74 20  $z) }.  }.  set 
12b0: 7b 7d 20 7b 7d 0a 7d 20 7b 7d 0a 0a 66 74 73 35  {} {}.} {}..fts5
12c0: 5f 61 75 78 5f 74 65 73 74 5f 66 75 6e 63 74 69  _aux_test_functi
12d0: 6f 6e 73 20 64 62 0a 0a 70 72 6f 63 20 64 6f 5f  ons db..proc do_
12e0: 66 74 73 35 61 67 5f 74 65 73 74 20 7b 74 6e 20  fts5ag_test {tn 
12f0: 45 7d 20 7b 0a 20 20 73 65 74 20 71 31 20 7b 53  E} {.  set q1 {S
1300: 45 4c 45 43 54 20 66 74 73 35 5f 74 65 73 74 5f  ELECT fts5_test_
1310: 61 6c 6c 28 74 31 29 20 46 52 4f 4d 20 74 31 20  all(t1) FROM t1 
1320: 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 24  WHERE t1 MATCH $
1330: 45 20 4f 52 44 45 52 20 42 59 20 72 61 6e 6b 7d  E ORDER BY rank}
1340: 0a 20 20 73 65 74 20 71 32 20 7b 53 45 4c 45 43  .  set q2 {SELEC
1350: 54 20 66 74 73 35 5f 74 65 73 74 5f 61 6c 6c 28  T fts5_test_all(
1360: 74 31 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52  t1) FROM t1 WHER
1370: 45 20 74 31 20 4d 41 54 43 48 20 24 45 20 4f 52  E t1 MATCH $E OR
1380: 44 45 52 20 42 59 20 62 6d 32 35 28 74 31 29 7d  DER BY bm25(t1)}
1390: 0a 0a 20 20 73 65 74 20 72 65 73 20 5b 65 78 65  ..  set res [exe
13a0: 63 73 71 6c 20 24 71 31 5d 0a 20 20 73 65 74 20  csql $q1].  set 
13b0: 65 78 70 65 63 74 65 64 20 5b 65 78 65 63 73 71  expected [execsq
13c0: 6c 20 24 71 32 5d 0a 20 20 75 70 6c 65 76 65 6c  l $q2].  uplevel
13d0: 20 5b 6c 69 73 74 20 64 6f 5f 74 65 73 74 20 24   [list do_test $
13e0: 74 6e 2e 31 20 5b 6c 69 73 74 20 73 65 74 20 7b  tn.1 [list set {
13f0: 7d 20 24 72 65 73 5d 20 24 65 78 70 65 63 74 65  } $res] $expecte
1400: 64 5d 0a 0a 20 20 61 70 70 65 6e 64 20 71 31 20  d]..  append q1 
1410: 22 20 44 45 53 43 22 0a 20 20 61 70 70 65 6e 64  " DESC".  append
1420: 20 71 32 20 22 20 44 45 53 43 22 0a 0a 20 20 73   q2 " DESC"..  s
1430: 65 74 20 72 65 73 20 5b 65 78 65 63 73 71 6c 20  et res [execsql 
1440: 24 71 31 5d 0a 20 20 73 65 74 20 65 78 70 65 63  $q1].  set expec
1450: 74 65 64 20 5b 65 78 65 63 73 71 6c 20 24 71 32  ted [execsql $q2
1460: 5d 0a 20 20 75 70 6c 65 76 65 6c 20 5b 6c 69 73  ].  uplevel [lis
1470: 74 20 64 6f 5f 74 65 73 74 20 24 74 6e 2e 32 20  t do_test $tn.2 
1480: 5b 6c 69 73 74 20 73 65 74 20 7b 7d 20 24 72 65  [list set {} $re
1490: 73 5d 20 24 65 78 70 65 63 74 65 64 5d 0a 7d 0a  s] $expected].}.
14a0: 0a 66 6f 72 65 61 63 68 20 7b 74 6e 20 65 78 70  .foreach {tn exp
14b0: 72 7d 20 7b 0a 20 20 32 2e 31 20 61 0a 20 20 32  r} {.  2.1 a.  2
14c0: 2e 32 20 62 0a 20 20 32 2e 33 20 63 0a 20 20 32  .2 b.  2.3 c.  2
14d0: 2e 34 20 64 0a 0a 20 20 33 2e 30 20 7b 61 20 41  .4 d..  3.0 {a A
14e0: 4e 44 20 62 7d 0a 20 20 33 2e 31 20 7b 61 20 4f  ND b}.  3.1 {a O
14f0: 52 20 62 7d 0a 20 20 33 2e 32 20 7b 62 20 4f 52  R b}.  3.2 {b OR
1500: 20 63 20 41 4e 44 20 64 7d 0a 7d 20 7b 0a 20 20   c AND d}.} {.  
1510: 64 6f 5f 66 74 73 35 61 67 5f 74 65 73 74 20 24  do_fts5ag_test $
1520: 74 6e 20 24 65 78 70 72 0a 7d 0a 0a 69 66 20 7b  tn $expr.}..if {
1530: 5b 64 65 74 61 69 6c 5f 69 73 5f 66 75 6c 6c 5d  [detail_is_full]
1540: 7d 20 7b 0a 20 20 66 6f 72 65 61 63 68 20 7b 74  } {.  foreach {t
1550: 6e 20 65 78 70 72 7d 20 7b 0a 20 20 20 20 34 2e  n expr} {.    4.
1560: 31 20 7b 22 6d 20 6d 22 7d 0a 20 20 20 20 34 2e  1 {"m m"}.    4.
1570: 32 20 7b 65 20 2b 20 73 7d 0a 20 20 20 20 34 2e  2 {e + s}.    4.
1580: 33 20 7b 4e 45 41 52 28 63 20 64 29 7d 0a 20 20  3 {NEAR(c d)}.  
1590: 7d 20 7b 0a 20 20 20 20 64 6f 5f 66 74 73 35 61  } {.    do_fts5a
15a0: 67 5f 74 65 73 74 20 24 74 6e 20 24 65 78 70 72  g_test $tn $expr
15b0: 0a 20 20 7d 0a 7d 0a 0a 7d 20 3b 23 20 66 6f 72  .  }.}..} ;# for
15c0: 65 61 63 68 5f 64 65 74 61 69 6c 5f 6d 6f 64 65  each_detail_mode
15d0: 0a 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a 0a  ...finish_test..