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

     1  # 2015 May 30
     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  #
    12  # This file contains automatically generated tests for various types
    13  # of MATCH expressions.
    14  #
    15  
    16  source [file join [file dirname [info script]] fts5_common.tcl]
    17  set testprefix fts5auto
    18  
    19  # If SQLITE_ENABLE_FTS5 is defined, omit this file.
    20  ifcapable !fts5 {
    21    finish_test
    22    return
    23  }
    24  
    25  set data {
    26      -4026076
    27      {n x w k b p x b n t t d s}     {f j j s p j o}               
    28      {w v i y r}                     {i p y s}                     
    29      {a o q v e n q r}               {q v g u c y a z y}           
    30      3995120
    31      {c}                             {e e w d t}                   
    32      {x c p f w r s m l r b f d}     {g g u e}                     
    33      {s n u t d v p d}               {b k v p m f}                 
    34      -2913881
    35      {k m}                           {a}                           
    36      {w r j z n s l}                 {m j i w d t w e l}           
    37      {z n c}                         {v f b m}                     
    38      174082
    39      {j}                             {q l w u k e q v r i}         
    40      {j l}                           {u v w r s p e l}             
    41      {p i k j k q c t g u s}         {g u y s m h q k g t e s o r} 
    42      3207399
    43      {e t}                           {}                            
    44      {p}                             {y v r b e k h d e v}         
    45      {t m w z b g q t s d d h}       {o n v u i t o y k j}         
    46      182399
    47      {}                              {m o s o x d y f a x j z}     
    48      {x n z r c d}                   {n r x i r}                   
    49      {s v s}                         {a u}                         
    50      768994
    51      {e u t q v z q k j p u f j p}   {y c b}                       
    52      {p s d}                         {k n w p m p p}               
    53      {u o x s d}                     {f s g r d b d r m m m z y}   
    54      3931037
    55      {c j p x e}                     {c n k t h z o i}             
    56      {}                              {r r p j k x w q}             
    57      {o r d z d}                     {x}                           
    58      3105748
    59      {p x r u}                       {x i s w o t o g x m z i w}   
    60      {q x m z}                       {h c j w b l y w x c o}       
    61      {m b k v}                       {t v q i s a d x}             
    62      -2501642
    63      {o u d n w o m o o s n t r h}   {k p e u y p e z d j r y g}   
    64      {v b b h d d q y j q j}         {a m w d t}                   
    65      {y e f n}                       {a k x i x}                   
    66      -1745680
    67      {z u w j f d b f}               {j w i c g u d w e}           
    68      {m f p v m a s p v c o s}       {s c r z o t w l b e a q}     
    69      {m k q}                         {k b a v o}                   
    70      -932328
    71      {r v i u m q d r}               {f z u v h c m r f g}         
    72      {r x r}                         {k p i d h h w h z u a x}     
    73      {k m j p}                       {h l j a e u c i q x x f x g} 
    74      -3923818
    75      {t t p b n u i h e c k}         {m z}                         
    76      {v u d c}                       {v y y j s g}                 
    77      {o a f k k q p h g x e n z x}   {h d w c o l}                 
    78      -2145922
    79      {z z l f a l g e d c d h}       {j b j p k o o u b q}         
    80      {d i g q t f d r h k}           {n w g j c x r p t y f l c t} 
    81      {d o c u k f o}                 {r y s x z s p p h g t p y c} 
    82      4552917
    83      {j w j y h l k u}               {n a}                         
    84      {y h w c n k}                   {b}                           
    85      {w}                             {z l r t s i m v c y}         
    86      2292008
    87      {q v q j w y y x u t}           {r q z n h a b o}             
    88      {d q y}                         {y v o e j}                   
    89      {}                              {a b h c d l p d x}           
    90      1407892
    91      {n j j u q d o a u c f}         {r d b w o q n g}             
    92      {d e v w s}                     {v d v o u o x s l s j z y}   
    93      {j y w h i f g i h m}           {v n z b n y}                 
    94      -4412544
    95      {g h h r s}                     {h e r e}                     
    96      {n q s}                         {o p z r m l l t}             
    97      {p}                             {f s u o b j}                 
    98      1209110
    99      {o a a z t t u h j}             {z z i r k r}                 
   100      {i c x q w g v o x z i z p}     {q o g k i n z x e d v w v}   
   101      {p f v b g f e d n p u c y k}   {q z z a i p a a s r e z}     
   102      3448977
   103      {i v}                           {l u x t b o k}               
   104      {f h u v p}                     {k a o y j}                   
   105      {d m k c j}                     {v c e r u e f i t}           
   106      -4703774
   107      {d h v w u z r e h x o l t}     {p s f y w y r q d a m w}     
   108      {c h g c g j j f t b i c q}     {s e}                         
   109      {c t q j g f}                   {v n r w y r a g e j d}       
   110      2414151
   111      {s o o s d s k q b f q v p e}   {j r o b t o p d l o o x}     
   112      {d d k t v e}                   {}                            
   113      {t v o d w}                     {w e q w h y c y y i j b a m} 
   114      -3342407
   115      {m c h n e p d o c r w n t}     {j d k s p q l}               
   116      {t g s r w x j l r z r}         {h}                           
   117      {r q v x i r a n h s}           {m y p b v w r a u o g q r}   
   118      -993951
   119      {l n p u o j d x t u u c o j}   {k r n a r e k v i t o e}     
   120      {q f t t a a c z v f}           {o n m p v f o e n}           
   121      {h z h i p s b j z h}           {i t w m k c u g n i}         
   122      1575251
   123      {}                              {z s i j d o x j a r t}       
   124      {h g j u j n v e n z}           {p z j n n f}                 
   125      {s q q f d w r l y i z d o m}   {b a n d h t b y g h d}       
   126      4263668
   127      {q g t h f s}                   {s g x p f q z i s o f l i}   
   128      {q k}                           {w v h a x n a r b}           
   129      {m j a h o b i x k r w z q u}   {m t r g j o e q t m p u l}   
   130      2487819
   131      {m w g x r n e u t s r}         {b x a t u u j c r n}         
   132      {j}                             {w f j r e e y l p}           
   133      {o u h b}                       {o c a c a b v}               
   134      167966
   135      {o d b s d o a u m o x y}       {c}                           
   136      {r w d o b v}                   {z e b}                       
   137      {i n z a f g z o}               {m u b a g}                   
   138      1948599
   139      {n r g q d j s}                 {n k}                         
   140      {l b p d v t k h y y}           {u m k e c}                   
   141      {t b n y o t b}                 {j w c i r x x}               
   142      2941631
   143      {l d p l b g f}                 {e k e}                       
   144      {p j}                           {m c s w t b k n l d x}       
   145      {f o v y v l}                   {c w p s w j w c u t y}       
   146      3561104
   147      {d r j j r j i g p}             {u}                           
   148      {g r j q}                       {z l p d s n f c h t d c v z} 
   149      {w r c f s x z y}               {g f o k g g}                 
   150      -2223281
   151      {y e t j j z f p o m m z}       {h k o g o}                   
   152      {m x a t}                       {l q x l}                     
   153      {r w k d l s y b}               {q g k b}                     
   154      -4502874
   155      {k k b x k l f}                 {r}                           
   156      {}                              {q m z b k h k u n e z}       
   157      {z q g y m y u}                 {}                            
   158      1757599
   159      {d p z j y u r}                 {z p l q w j t j}             
   160      {n i r x r y j}                 {}                            
   161      {h}                             {w t d q c x z z x e e}       
   162      -4809589
   163      {}                              {z p x u h i i n g}           
   164      {w q s u d b f x n}             {l y k b b r x t i}           
   165      {n d v j q o t o d p z e}       {u r y u v u c}               
   166      1068408
   167      {y e}                           {e g s k e w t p v o b k}     
   168      {z c m s}                       {r u r u h n h b p q g b}     
   169      {j k b l}                       {m c d t s r s q a d b o f}   
   170      -1972554
   171      {m s w}                         {d k v s a r k p a r i v}     
   172      {g j z k p}                     {y k c v r e u o q f i b a}   
   173      {i p i}                         {c z w c y b n z i v}         
   174      -2052385
   175      {}                              {x e u f f g n c i x n e i e} 
   176      {}                              {p s w d x p g}               
   177      {}                              {s j a h n}                   
   178      2805981
   179      {m x g c w o e}                 {k g u y r y i u e g g}       
   180      {f k j v t x p h x k u}         {w i}                         
   181      {b l f z f v t n}               {i u d o d p h s m u}         
   182      2507621
   183      {}                              {u b n l x f n j t}           
   184      {u r x l h}                     {h r l m r}                   
   185      {d y e n b s q v t k n q q}     {x l t v w h a s k}           
   186      -3138375
   187      {e o f j y x u w v e w z}       {r d q g k n n v r c z n e w} 
   188      {l y i q z k j p u f q s k}     {c i l l i m a a g a z r x f} 
   189      {a v k h m q z b y n z}         {q g w c y r r o a}           
   190      -457971
   191      {j x a w e c s h f l f}         {q}                           
   192      {j f v j u m d q r v v}         {x n v a w}                   
   193      {i e h d h f u w t t z}         {v s u l s v o v i k n e}     
   194      2265221
   195      {z t c y w n y r t}             {n b a x s}                   
   196      {q w a v}                       {a b s d x i g w t e z h}     
   197      {t l}                           {j k r w f f y j o k u}       
   198      -3941280
   199      {r x t o z}                     {f j n z k}                   
   200      {t x e b t d b k w i s}         {j t y h i h}                 
   201      {y q g n g s u v c z j z n g}   {n n g t l p h}               
   202      2084745
   203      {z d z d}                       {j}                           
   204      {o e k t b k a z l w}           {o p i h k c x}               
   205      {c r b t i j f}                 {z e n m}                     
   206      1265843
   207      {}                              {j s g j j x u y}             
   208      {u q t f}                       {g o g}                       
   209      {w o j e d}                     {w q n a c t q x j}           
   210      -2941116
   211      {i n c u o}                     {f b}                         
   212      {o m s q d o z a q}             {f s v o b b}                 
   213      {o a z c h r}                   {j e w h b f z}               
   214      -1265441
   215      {p g z q v a o a x a}           {s t h}                       
   216      {w i p o c}                     {s n d g f z w q o d v v l j} 
   217      {y f b i a s v}                 {u m o z k k s t s d p b l p} 
   218      -1989158
   219      {r i c n}                       {r e w w i n z}               
   220      {q u s y b w u g y g f o}       {y}                           
   221      {d}                             {j x i b x u y d c p v a h}   
   222      2391989
   223      {b n w x w f q h p i}           {e u b b i n a i o c d g}     
   224      {v a z o i e n l x l r}         {r u f o r k w m d w}         
   225      {k s}                           {r f e j q p w}               
   226  }
   227  
   228  do_execsql_test 1.0 {
   229    CREATE VIRTUAL TABLE tt USING fts5(a, b, c, d, e, f);
   230  } {}
   231  
   232  fts5_aux_test_functions db
   233  
   234  proc do_auto_test {tn tbl expr} {
   235    foreach order {asc desc} {
   236      set res [fts5_poslist_data $expr $tbl $order]
   237      set testname "$tn.[string range $order 0 0].rows=[expr [llength $res]/2]"
   238  
   239      set ::autotest_expr $expr
   240      do_execsql_test $testname [subst -novar {
   241        SELECT rowid, fts5_test_poslist([set tbl]) FROM [set tbl] 
   242        WHERE [set tbl] MATCH $::autotest_expr ORDER BY rowid [set order]
   243      }] $res
   244    }
   245  }
   246  
   247  #-------------------------------------------------------------------------
   248  #
   249  
   250  for {set fold 0} {$fold < 3} {incr fold} {
   251    switch $fold {
   252      0 { set map {} }
   253      1 { set map {
   254        a a  b a  c b  d b  e c  f c  g d  h d  
   255        i e  j e  k f  l f  m g  g g  o h  p h
   256        q i  r i  s j  t j  u k  v k  w l  x l
   257        y m  z m
   258      }}
   259  
   260      2 { set map {
   261        a a  b a  c a  d a  e a  f a  g a  h a  
   262        i b  j b  k b  l b  m b  g b  o b  p b
   263        q c  r c  s c  t c  u c  v c  w c  x c
   264      }}
   265    }
   266  
   267    execsql {
   268      BEGIN;
   269      DELETE FROM tt;
   270    }
   271    foreach {rowid a b c d e f} [string map $map $data] {
   272    if {$rowid==-4703774} {
   273      execsql {
   274        INSERT INTO tt(rowid, a, b, c, d, e, f) 
   275        VALUES($rowid, $a, $b, $c, $d, $e, $f)
   276      }
   277      }
   278    }
   279    execsql COMMIT
   280  
   281  
   282    foreach {tn expr} {
   283      A.1 { {a} : x }
   284      A.2 { {a b} : x }
   285      A.3 { {a b f} : x }
   286      A.4 { {f a b} : x }
   287      A.5 { {f a b} : x y }
   288      A.6 { {f a b} : x + y }
   289      A.7 { {c a b} : x + c }
   290      A.8 { {c d} : "l m" }
   291      A.9 { {c e} : "l m" }
   292      A.10 { {a b c a b c a b c f f e} : "l m" }
   293  
   294      B.1 { a NOT b }
   295      B.2 { a NOT a:b }
   296      B.3 { a OR (b AND c) }
   297      B.4 { a OR (b AND {a b c}:c) }
   298      B.5 { a OR "b c" }
   299      B.6 { a OR b OR c }
   300  
   301      C.1 { a OR (b AND "b c") }
   302      C.2 { a OR (b AND "z c") }
   303    } {
   304      do_auto_test 3.$fold.$tn tt $expr
   305    }
   306  }
   307  
   308  proc replace_elems {list args} {
   309    set ret $list
   310    foreach {idx elem} $args {
   311      set ret [lreplace $ret $idx $idx $elem]
   312    }
   313    set ret
   314  }
   315  
   316  #-------------------------------------------------------------------------
   317  #
   318  set bigdoc [string trim [string repeat "a " 1000]]
   319  do_test 4.0 {
   320    set a [replace_elems $bigdoc  50 x  950 x]
   321    set b [replace_elems $bigdoc  20 y   21 x  887 x 888 y]
   322    set c [replace_elems $bigdoc   1 z  444 z  789 z]
   323    execsql {
   324      CREATE VIRTUAL TABLE yy USING fts5(c1, c2, c3);
   325      INSERT INTO yy(rowid, c1, c2, c3) VALUES(-56789, $a, $b, $c);
   326      INSERT INTO yy(rowid, c1, c2, c3) VALUES(250, $a, $b, $c);
   327    }
   328  } {}
   329  
   330  foreach {tn expr} {
   331    1 x    
   332    2 y    
   333    3 z
   334  
   335    4 {c1 : x} 5 {c2 : x} 6 {c3 : x}
   336    7 {c1 : y} 8 {c2 : y} 9 {c3 : y}
   337    10 {c1 : z} 11 {c2 : z} 12 {c3 : z}
   338  } {
   339    do_auto_test 4.$tn yy $expr
   340  }
   341  
   342  
   343  
   344  finish_test