modernc.org/cc@v1.0.1/v2/testdata/_sqlite/ext/fts5/test/fts5ac.test (about)

     1  # 2014 June 17
     2  #
     3  # The author disclaims copyright to this source code.  In place of
     4  # a legal notice, here is a blessing:
     5  #
     6  #    May you do good and not evil.
     7  #    May you find forgiveness for yourself and forgive others.
     8  #    May you share freely, never taking more than you give.
     9  #
    10  #*************************************************************************
    11  # This file implements regression tests for SQLite library.  The
    12  # focus of this script is testing the FTS5 module.
    13  #
    14  #
    15  
    16  source [file join [file dirname [info script]] fts5_common.tcl]
    17  set testprefix fts5ac
    18  
    19  # If SQLITE_ENABLE_FTS5 is defined, omit this file.
    20  ifcapable !fts5 {
    21    finish_test
    22    return
    23  }
    24  
    25  foreach_detail_mode $testprefix {
    26  
    27  set data {
    28      0   {p o q e z k z p n f y u z y n y}   {l o o l v v k}
    29      1   {p k h h p y l l h i p v n}         {p p l u r i f a j g e r r x w}
    30      2   {l s z j k i m p s}                 {l w e j t j e e i t w r o p o}
    31      3   {x g y m y m h p}                   {k j j b r e y y a k y}
    32      4   {q m a i y i z}                     {o w a g k x g j m w e u k}
    33      5   {k o a w y b s z}                   {s g l m m l m g p}
    34      6   {d a q i z h b l c p k j g k}       {p x u j x t v c z}
    35      7   {f d a g o c t i}                   {w f c x l d r k i j}
    36      8   {y g w u b q p o m j y b p a e k}   {r i d k y w o z q m a t p}
    37      9   {r k o m c c j s x m x m x m q r}   {y r c a q d z k n x n}
    38      10  {k j q m g q a j d}                 {d d e z g w h c d o o g x d}
    39      11  {j z u m o y q j f w e e w t r j w} {g m o r x n t n w i f g l z f}
    40      12  {s y w a w d o h x m k}             {c w k z b p o r a}
    41      13  {u t h x e g s k n g i}             {f j w g c s r}
    42      14  {b f i c s u z t k}                 {c k q s j u i z o}
    43      15  {n a f n u s w h y n s i q e w}     {x g e g a s s h n}
    44      16  {k s q e j n p}                     {t r j f t o e k k l m i}
    45      17  {g d t u w r o p m n m n p h b o u} {h s w o s l j e}
    46      18  {f l q y q q g e e x j r}           {n b r r g e i r t x q k}
    47      19  {f i r g o a w e p i l o a w}       {e k r z t d g h g i b d i e m}
    48      20  {l d u u f p y}                     {g o m m u x m g l j t t x x u}
    49      21  {m c d k x i c z l}                 {m i a i e u h}
    50      22  {w b f o c g x y j}                 {z d w x d f h i p}
    51      23  {w u i u x t c h k i b}             {b y k h b v r t g j}
    52      24  {h f d j s w s b a p k}             {a q y u z e y m m j q r}
    53      25  {d i x y x x k i y f s d j h z p n} {l l q m e t c w g y h t s v g}
    54      26  {g s q w t d k x g f m j p k y}     {r m b x e l t d}
    55      27  {j l s q u g y v e c l o}           {m f l m m m h g x x l n c}
    56      28  {c t j g v r s b z j}               {l c f y d t q n}
    57      29  {e x z y w i h l}                   {b n b x e y q e n u m}
    58      30  {g y y h j b w r}                   {q b q f u s k c k g r}
    59      31  {g u l x l b r c m z b u c}         {k g t b x k x n t e z d h o}
    60      32  {w g v l z f b z h p s c v h}       {g e w v m h k r g w a r f q}
    61      33  {c g n f u d o y o b}               {e y o h x x y y i z s b h a j}
    62      34  {v y h c q u u s q y x x k s q}     {d n r m y k n t i r n w e}
    63      35  {o u c x l e b t a}                 {y b a x y f z x r}
    64      36  {x p h l j a a u u j h}             {x o f s z m b c q p}
    65      37  {k q t i c a q n m v v}             {v r z e f m y o}
    66      38  {r w t t t t r v v o e p g h}       {l w x a g a u h y}
    67      39  {o p v g v b a g o}                 {j t q c r b b g y z}
    68      40  {f s o r o d t h q f x l}           {r d b m k i f s t d l m y x j w}
    69      41  {t m o t m f m f}                   {i p i q j v n v m b q}
    70      42  {t x w a r l w d t b c o d o}       {a h f h w z d n s}
    71      43  {t u q c d g p q x j o l c x c}     {m n t o z z j a y}
    72      44  {v d i i k b f s z r v r z y}       {g n q y s x x m b x c l w}
    73      45  {p v v a c s z y e o l}             {m v t u d k m k q b d c v z r}
    74      46  {f y k l d r q w r s t r e}         {h m v r r l r r t f q e x y}
    75      47  {w l n l t y x}                     {n h s l a f c h u f l x x m v n o}
    76      48  {t n v i k e b p z p d j j l i o}   {i v z p g u e j s i k n h w d c}
    77      49  {z v x p n l t a j c}               {e j l e n c e t a d}
    78      50  {w u b x u i v h a i y m m r p m s} {s r h d o g z y f f x e}
    79      51  {d c c x b c a x g}                 {p r a j v u y}
    80      52  {f w g r c o d l t u e z h i}       {j l l s s b j m}
    81      53  {p m t f k i x}                     {u v y a z g w v v m x h i}
    82      54  {l c z g l o j i c d e b}           {b f v y w u i b e i y}
    83      55  {r h c x f x a d s}                 {z x y k f l r b q c v}
    84      56  {v x x c y h z x b g m o q n c}     {h n b i t g h a q b c o r u}
    85      57  {d g l o h t b s b r}               {n u e p t i m u}
    86      58  {t d y e t d c w u o s w x f c h}   {i o s v y b r d r}
    87      59  {l b a p q n d r}                   {k d c c d n y q h g a o p e x}
    88      60  {f r z v m p k r}                   {x x r i s b a g f c}
    89      61  {s a z i e r f i w c n y v z t k s} {y y i r y n l s b w i e k n}
    90      62  {n x p r e x q r m v i b y}         {f o o z n b s r q j}
    91      63  {y j s u j x o n r q t f}           {f v k n v x u s o a d e f e}
    92      64  {u s i l y c x q}                   {r k c h p c h b o s s u s p b}
    93      65  {m p i o s h o}                     {s w h u n d m n q t y k b w c}
    94      66  {l d f g m x x x o}                 {s w d d f b y j j h h t i y p j o}
    95      67  {c b m h f n v w n h}               {i r w i e x r w l z p x u g u l s}
    96      68  {y a h u h i m a y q}               {d d r x h e v q n z y c j}
    97      69  {c x f d x o n p o b r t b l p l}   {m i t k b x v f p t m l l y r o}
    98      70  {u t l w w m s}                     {m f m o l t k o p e}
    99      71  {f g q e l n d m z x q}             {z s i i i m f w w f n g p e q}
   100      72  {n l h a v u o d f j d e x}         {v v s l f g d g r a j x i f z x}
   101      73  {x v m v f i g q e w}               {r y s j i k m j j e d g r n o i f}
   102      74  {g d y n o h p s y q z j d w n h w} {x o d l t j i b r d o r y}
   103      75  {p g b i u r b e q d v o a g w m k} {q y z s f q o h}
   104      76  {u z a q u f i f f b}               {b s p b a a d x r r i q f}
   105      77  {w h h z t h p o a h h e e}         {h w r p h k z v y f r x}
   106      78  {c a r k i a p u x}                 {f w l p t e m l}
   107      79  {q q u k o t r k z}                 {f b m c w p s s o z}
   108      80  {t i g v y q s r x m r x z e f}     {x o j w a u e y s j c b u p p r o}
   109      81  {n j n h r l a r e o z w e}         {v o r r j a v b}
   110      82  {i f i d k w d n h}                 {o i d z i z l m w s b q v u}
   111      83  {m d g q q b k b w f q q p p}       {j m q f b y c i z k y q p l e a}
   112      84  {m x o n y f g}                     {y c n x n q j i y c l h b r q z}
   113      85  {v o z l n p c}                     {g n j n t b b x n c l d a g j v}
   114      86  {z n a y f b t k k t d b z a v}     {r p c n r u k u}
   115      87  {b q t x z e c w}                   {q a o a l o a h i m j r}
   116      88  {j f h o x x a z g b a f a m i b}   {j z c z y x e x w t}
   117      89  {t c t p r s u c q n}               {z x l i k n f q l n t}
   118      90  {w t d q j g m r f k n}             {l e w f w w a l y q k i q t p c t}
   119      91  {c b o k l i c b s j n m b l}       {y f p q o w g}
   120      92  {f y d j o q t c c q m f j s t}     {f h e d y m o k}
   121      93  {k x j r m a d o i z j}             {r t t t f e b r x i v j v g o}
   122      94  {s f e a e t i h h d q p z t q}     {b k m k w h c}
   123      95  {h b n j t k i h o q u}             {w n g i t o k c a m y p f l x c p}
   124      96  {f c x p y r b m o l m o a}         {p c a q s u n n x d c f a o}
   125      97  {u h h k m n k}                     {u b v n u a o c}
   126      98  {s p e t c z d f n w f}             {l s f j b l c e s h}
   127      99  {r c v w i v h a t a c v c r e}     {h h u m g o f b a e o}
   128  }
   129  
   130  foreach {tn2 sql} {
   131    1  {}
   132    2  {BEGIN}
   133  } {
   134    reset_db
   135    fts5_aux_test_functions db
   136  
   137    do_execsql_test 1.$tn2.0 {
   138      CREATE VIRTUAL TABLE xx USING fts5(x,y, detail=%DETAIL%);
   139      INSERT INTO xx(xx, rank) VALUES('pgsz', 32);
   140    }
   141  
   142    execsql $sql
   143  
   144    do_test 1.$tn2.1.1 {
   145      foreach {id x y} $data {
   146        execsql { INSERT INTO xx(rowid, x, y) VALUES($id, $x, $y) }
   147      }
   148      execsql { INSERT INTO xx(xx) VALUES('integrity-check') }
   149    } {}
   150  
   151  
   152    #-------------------------------------------------------------------------
   153    #
   154    do_execsql_test 1.$tn2.integrity {
   155      INSERT INTO xx(xx) VALUES('integrity-check');
   156    }
   157  
   158    #-------------------------------------------------------------------------
   159    #
   160    foreach {tn expr} {
   161      1.1 "a   AND b"
   162      1.2 "a   OR b"
   163      1.3 "o"
   164      1.4 "b q"
   165      1.5 "e a e"
   166      1.6 "m d g q q b k b w f q q p p"
   167      1.7 "l o o l v v k"
   168      1.8 "a"
   169      1.9 "b"
   170      1.10 "c"
   171      1.11 "no"
   172      1.12 "L O O L V V K"
   173      1.13 "a AND b AND c"
   174      1.14 "x:a"
   175  
   176      2.1 "x:a"
   177      2.2 "y:a"
   178      2.3 "x:b"
   179      2.4 "y:b"
   180  
   181      3.1 "{x}:a"
   182      3.2 "{y}:a"
   183      3.3 "{x}:b"
   184      3.4 "{y}:b"
   185  
   186      4.1 "{x y}:a"
   187      4.2 "{y x}:a"
   188      4.3 "{x x}:b"
   189      4.4 "{y y}:b"
   190  
   191      5.1 {{"x" "y"}:a}
   192      5.2 {{"y" x}:a}
   193      5.3 {{x "x"}:b}
   194      5.4 {{"y" y}:b}
   195  
   196      6.1 "b + q"
   197      6.2 "e + a + e"
   198      6.3 "m + d + g + q + q + b + k + b + w + f + q + q + p + p"
   199      6.4 "l + o + o + l + v + v + k"
   200      6.5 "L + O + O + L + V + V + K"
   201  
   202      7.1 "a+b AND c"
   203      7.2 "d+c AND u"
   204      7.3 "d+c AND u+d"
   205      7.4 "a+b OR c"
   206      7.5 "d+c OR u"
   207      7.6 "d+c OR u+d"
   208  
   209      8.1 "NEAR(a b)"
   210      8.2 "NEAR(r c)"
   211      8.2 { NEAR(r c, 5) }
   212      8.3 { NEAR(r c, 3) }
   213      8.4 { NEAR(r c, 2) }
   214      8.5 { NEAR(r c, 0) }
   215      8.6 { NEAR(a b c) }
   216      8.7 { NEAR(a b c, 8) }
   217      8.8  { x : NEAR(r c) }
   218      8.9  { y : NEAR(r c) }
   219  
   220      9.1 { NEAR(r c) }
   221      9.2 { NEAR(r c, 5) }
   222      9.3 { NEAR(r c, 3) }
   223      9.4 { NEAR(r c, 2) }
   224      9.5 { NEAR(r c, 0) }
   225      9.6 { NEAR(a b c) }
   226      9.7 { NEAR(a b c, 8) }
   227      9.8  { x : NEAR(r c) }
   228      9.9  { y : NEAR(r c) }
   229      9.10 { x : "r c" }
   230      9.11 { y : "r c" }
   231      9.12 { a AND b }
   232      9.13 { a AND b AND c }
   233      9.14a { a }
   234      9.14b { a OR b }
   235      9.15 { a OR b AND c }
   236      9.16 { c AND b OR a }
   237      9.17 { c AND (b OR a) }
   238      9.18 { c NOT (b OR a) }
   239      9.19 { (c NOT b) OR (a AND d) }
   240    } {
   241  
   242      if {[fts5_expr_ok $expr xx]==0} {
   243        do_test 1.$tn2.$tn.OMITTED { list } [list]
   244        continue
   245      }
   246  
   247      set res [fts5_query_data $expr xx]
   248      do_execsql_test 1.$tn2.$tn.[llength $res].asc {
   249        SELECT rowid, fts5_test_poslist(xx), fts5_test_collist(xx) 
   250        FROM xx WHERE xx match $expr
   251      } $res
   252  
   253      set res [fts5_query_data $expr xx DESC]
   254      do_execsql_test 1.$tn2.$tn.[llength $res].desc {
   255        SELECT rowid, fts5_test_poslist(xx), fts5_test_collist(xx) 
   256        FROM xx WHERE xx match $expr ORDER BY 1 DESC
   257      } $res
   258    }
   259  }
   260  
   261  }
   262  
   263  do_execsql_test 2.1 {
   264    SELECT fts5_expr_tcl('a AND b');
   265  } {{AND [nearset -- {a}] [nearset -- {b}]}}
   266  
   267  do_test 2.2.1  { nearset {{a b c}} -- a } {0.0.0}
   268  do_test 2.2.2  { nearset {{a b c}} -- c } {0.0.2}
   269  
   270  foreach {tn expr tclexpr} {
   271    1 {a b} {AND [N $x -- {a}] [N $x -- {b}]}
   272  } {
   273    do_execsql_test 2.3.$tn {
   274      SELECT fts5_expr_tcl($expr, 'N $x')
   275    } [list $tclexpr]
   276  }
   277  
   278  finish_test