/ Hex Artifact Content
Login

Artifact 524807f0c36d49deea7920cdd4cd687408b58849:


0000: 23 20 32 30 31 33 20 4a 75 6e 65 20 32 31 0a 23  # 2013 June 21.#
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 6e 6f  s testing the no
01d0: 74 69 6e 64 65 78 65 64 3d 78 78 78 20 46 54 53  tindexed=xxx FTS
01e0: 34 20 6f 70 74 69 6f 6e 2e 0a 23 0a 0a 73 65 74  4 option..#..set
01f0: 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64   testdir [file d
0200: 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73  irname $argv0].s
0210: 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f 74  ource $testdir/t
0220: 65 73 74 65 72 2e 74 63 6c 0a 73 65 74 20 3a 3a  ester.tcl.set ::
0230: 74 65 73 74 70 72 65 66 69 78 20 66 74 73 34 6e  testprefix fts4n
0240: 6f 74 69 0a 0a 23 20 49 66 20 53 51 4c 49 54 45  oti..# If SQLITE
0250: 5f 45 4e 41 42 4c 45 5f 46 54 53 33 20 69 73 20  _ENABLE_FTS3 is 
0260: 64 65 66 69 6e 65 64 2c 20 6f 6d 69 74 20 74 68  defined, omit th
0270: 69 73 20 66 69 6c 65 2e 0a 69 66 63 61 70 61 62  is file..ifcapab
0280: 6c 65 20 21 66 74 73 33 20 7b 0a 20 20 66 69 6e  le !fts3 {.  fin
0290: 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74 75 72  ish_test.  retur
02a0: 6e 0a 7d 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d  n.}...#---------
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 2d  ----------------
02e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02f0: 0a 23 20 54 65 73 74 20 74 68 61 74 20 74 79 70  .# Test that typ
0300: 6f 73 20 69 6e 20 22 6e 6f 74 69 6e 64 65 78 65  os in "notindexe
0310: 64 3d 22 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73  d=" column names
0320: 20 61 72 65 20 64 65 74 65 63 74 65 64 2e 0a 23   are detected..#
0330: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
0340: 20 31 2e 30 20 7b 0a 20 20 43 52 45 41 54 45 20   1.0 {.  CREATE 
0350: 54 41 42 4c 45 20 63 63 28 61 2c 20 62 2c 20 63  TABLE cc(a, b, c
0360: 29 3b 0a 7d 0a 66 6f 72 65 61 63 68 20 7b 74 6e  );.}.foreach {tn
0370: 20 61 72 67 20 72 65 73 7d 20 7b 0a 20 20 31 20   arg res} {.  1 
0380: 22 28 62 2c 20 63 2c 20 6e 6f 74 69 6e 64 65 78  "(b, c, notindex
0390: 65 64 3d 61 29 22 20 20 20 20 20 20 20 20 20 20  ed=a)"          
03a0: 20 20 20 20 20 20 20 20 7b 31 20 7b 6e 6f 20 73          {1 {no s
03b0: 75 63 68 20 63 6f 6c 75 6d 6e 3a 20 61 7d 7d 0a  uch column: a}}.
03c0: 20 20 32 20 22 28 61 2c 20 62 2c 20 6e 6f 74 69    2 "(a, b, noti
03d0: 6e 64 65 78 65 64 3d 61 29 22 20 20 20 20 20 20  ndexed=a)"      
03e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 30 20               {0 
0400: 7b 7d 7d 0a 20 20 33 20 22 28 61 2c 20 62 2c 20  {}}.  3 "(a, b, 
0410: 6e 6f 74 69 6e 64 65 78 65 64 3d 61 2c 20 6e 6f  notindexed=a, no
0420: 74 69 6e 64 65 78 65 64 3d 61 29 22 20 20 20 20  tindexed=a)"    
0430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0440: 20 7b 30 20 7b 7d 7d 0a 20 20 34 20 22 28 6e 6f   {0 {}}.  4 "(no
0450: 74 69 6e 64 65 78 65 64 3d 61 2c 20 61 2c 20 62  tindexed=a, a, b
0460: 29 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20  )"              
0470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0480: 20 20 20 20 20 7b 30 20 7b 7d 7d 0a 20 20 35 20       {0 {}}.  5 
0490: 22 28 6e 6f 74 69 6e 64 65 78 65 64 3d 61 2c 20  "(notindexed=a, 
04a0: 6e 6f 74 69 6e 64 65 78 65 64 3d 62 2c 20 6e 6f  notindexed=b, no
04b0: 74 69 6e 64 65 78 65 64 3d 63 2c 20 61 2c 20 62  tindexed=c, a, b
04c0: 2c 20 63 2c 20 64 29 22 20 7b 30 20 7b 7d 7d 0a  , c, d)" {0 {}}.
04d0: 20 20 36 20 22 28 6e 6f 74 69 6e 64 65 78 65 64    6 "(notindexed
04e0: 3d 61 2c 20 6e 6f 74 69 6e 64 65 78 65 64 3d 42  =a, notindexed=B
04f0: 2c 20 6e 6f 74 69 6e 64 65 78 65 64 3d 63 2c 20  , notindexed=c, 
0500: 61 2c 20 62 2c 20 63 2c 20 64 29 22 20 7b 30 20  a, b, c, d)" {0 
0510: 7b 7d 7d 0a 20 20 37 20 22 28 6e 6f 74 69 6e 64  {}}.  7 "(notind
0520: 65 78 65 64 3d 61 2c 20 6e 6f 74 69 6e 64 65 78  exed=a, notindex
0530: 65 64 3d 62 2c 20 6e 6f 74 69 6e 64 65 78 65 64  ed=b, notindexed
0540: 3d 63 2c 20 61 2c 20 42 2c 20 63 2c 20 64 29 22  =c, a, B, c, d)"
0550: 20 7b 30 20 7b 7d 7d 0a 20 20 38 20 22 28 6e 6f   {0 {}}.  8 "(no
0560: 74 69 6e 64 65 78 65 64 3d 64 2c 20 63 6f 6e 74  tindexed=d, cont
0570: 65 6e 74 3d 63 63 29 22 20 7b 31 20 7b 6e 6f 20  ent=cc)" {1 {no 
0580: 73 75 63 68 20 63 6f 6c 75 6d 6e 3a 20 64 7d 7d  such column: d}}
0590: 0a 20 20 39 20 22 28 6e 6f 74 69 6e 64 65 78 65  .  9 "(notindexe
05a0: 64 3d 61 2c 20 63 6f 6e 74 65 6e 74 3d 63 63 29  d=a, content=cc)
05b0: 22 20 7b 30 20 7b 7d 7d 0a 20 20 31 30 20 22 28  " {0 {}}.  10 "(
05c0: 6e 6f 74 69 6e 64 65 78 65 64 3d 61 2c 20 6e 6f  notindexed=a, no
05d0: 74 69 6e 64 65 78 65 64 3d 62 2c 20 61 29 22 20  tindexed=b, a)" 
05e0: 7b 31 20 7b 6e 6f 20 73 75 63 68 20 63 6f 6c 75  {1 {no such colu
05f0: 6d 6e 3a 20 62 7d 7d 0a 20 20 31 31 20 22 28 6e  mn: b}}.  11 "(n
0600: 6f 74 69 6e 64 65 78 65 64 3d 61 2c 20 6e 6f 74  otindexed=a, not
0610: 69 6e 64 65 78 65 64 3d 62 2c 20 62 29 22 20 7b  indexed=b, b)" {
0620: 31 20 7b 6e 6f 20 73 75 63 68 20 63 6f 6c 75 6d  1 {no such colum
0630: 6e 3a 20 61 7d 7d 0a 7d 20 7b 0a 20 20 64 6f 5f  n: a}}.} {.  do_
0640: 63 61 74 63 68 73 71 6c 5f 74 65 73 74 20 31 2e  catchsql_test 1.
0650: 24 74 6e 20 22 43 52 45 41 54 45 20 56 49 52 54  $tn "CREATE VIRT
0660: 55 41 4c 20 54 41 42 4c 45 20 74 31 20 55 53 49  UAL TABLE t1 USI
0670: 4e 47 20 66 74 73 34 20 24 61 72 67 22 20 24 72  NG fts4 $arg" $r
0680: 65 73 0a 20 20 69 66 20 7b 5b 6c 69 6e 64 65 78  es.  if {[lindex
0690: 20 24 72 65 73 20 30 5d 3d 3d 30 7d 20 7b 20 65   $res 0]==0} { e
06a0: 78 65 63 73 71 6c 20 22 44 52 4f 50 20 54 41 42  xecsql "DROP TAB
06b0: 4c 45 20 74 31 22 20 7d 0a 7d 0a 0a 64 6f 5f 65  LE t1" }.}..do_e
06c0: 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e 78 20  xecsql_test 1.x 
06d0: 7b 20 53 45 4c 45 43 54 20 6e 61 6d 65 20 46 52  { SELECT name FR
06e0: 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65 72  OM sqlite_master
06f0: 20 7d 20 7b 63 63 7d 0a 0a 0a 23 2d 2d 2d 2d 2d   } {cc}...#-----
0700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0740: 2d 2d 2d 2d 0a 23 20 54 65 73 74 20 74 68 61 74  ----.# Test that
0750: 20 6e 6f 74 69 6e 64 65 78 65 64 20 63 6f 6c 75   notindexed colu
0760: 6d 6e 73 20 61 72 65 20 6e 6f 74 20 69 6e 64 65  mns are not inde
0770: 78 65 64 2e 0a 23 0a 66 6f 72 65 61 63 68 20 7b  xed..#.foreach {
0780: 74 6e 20 73 63 68 65 6d 61 7d 20 7b 0a 20 20 31  tn schema} {.  1
0790: 20 7b 20 0a 20 20 20 20 43 52 45 41 54 45 20 56   { .    CREATE V
07a0: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 31 20  IRTUAL TABLE t1 
07b0: 55 53 49 4e 47 20 66 74 73 34 28 61 2c 20 62 2c  USING fts4(a, b,
07c0: 20 63 2c 20 6e 6f 74 69 6e 64 65 78 65 64 3d 62   c, notindexed=b
07d0: 29 3b 20 0a 20 20 7d 0a 20 20 32 20 7b 20 0a 20  ); .  }.  2 { . 
07e0: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
07f0: 63 31 28 61 2c 20 62 2c 20 63 29 3b 0a 20 20 20  c1(a, b, c);.   
0800: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 63 31 20   INSERT INTO c1 
0810: 56 41 4c 55 45 53 28 27 6f 6e 65 20 74 77 6f 27  VALUES('one two'
0820: 2c 20 27 74 68 72 65 65 20 66 6f 75 72 27 2c 20  , 'three four', 
0830: 27 66 69 76 65 20 73 69 78 27 29 3b 0a 20 20 20  'five six');.   
0840: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 63 31 20   INSERT INTO c1 
0850: 56 41 4c 55 45 53 28 27 74 68 72 65 65 20 66 6f  VALUES('three fo
0860: 75 72 27 2c 20 27 66 69 76 65 20 73 69 78 27 2c  ur', 'five six',
0870: 20 27 6f 6e 65 20 74 77 6f 27 29 3b 0a 20 20 20   'one two');.   
0880: 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
0890: 54 41 42 4c 45 20 74 31 20 55 53 49 4e 47 20 66  TABLE t1 USING f
08a0: 74 73 34 28 63 6f 6e 74 65 6e 74 3d 63 31 2c 20  ts4(content=c1, 
08b0: 6e 6f 74 69 6e 64 65 78 65 64 3d 62 29 3b 20 0a  notindexed=b); .
08c0: 20 20 7d 0a 20 20 33 20 7b 20 0a 20 20 20 20 43    }.  3 { .    C
08d0: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
08e0: 42 4c 45 20 74 31 20 55 53 49 4e 47 20 66 74 73  BLE t1 USING fts
08f0: 34 28 63 6f 6e 74 65 6e 74 3d 22 22 2c 20 61 2c  4(content="", a,
0900: 20 62 2c 20 63 2c 20 6e 6f 74 69 6e 64 65 78 65   b, c, notindexe
0910: 64 3d 62 29 3b 20 0a 20 20 7d 0a 7d 20 7b 0a 20  d=b); .  }.} {. 
0920: 20 65 78 65 63 73 71 6c 20 24 73 63 68 65 6d 61   execsql $schema
0930: 0a 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  ..  do_execsql_t
0940: 65 73 74 20 32 2e 24 74 6e 2e 31 20 7b 0a 20 20  est 2.$tn.1 {.  
0950: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
0960: 28 64 6f 63 69 64 2c 61 2c 62 2c 63 29 20 56 41  (docid,a,b,c) VA
0970: 4c 55 45 53 28 31 2c 20 27 6f 6e 65 20 74 77 6f  LUES(1, 'one two
0980: 27 2c 20 27 74 68 72 65 65 20 66 6f 75 72 27 2c  ', 'three four',
0990: 20 27 66 69 76 65 20 73 69 78 27 29 3b 0a 20 20   'five six');.  
09a0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
09b0: 28 64 6f 63 69 64 2c 61 2c 62 2c 63 29 20 56 41  (docid,a,b,c) VA
09c0: 4c 55 45 53 28 32 2c 20 27 74 68 72 65 65 20 66  LUES(2, 'three f
09d0: 6f 75 72 27 2c 20 27 66 69 76 65 20 73 69 78 27  our', 'five six'
09e0: 2c 20 27 6f 6e 65 20 74 77 6f 27 29 3b 0a 20 20  , 'one two');.  
09f0: 7d 0a 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f  }..  do_execsql_
0a00: 74 65 73 74 20 32 2e 24 74 6e 2e 32 20 7b 20 53  test 2.$tn.2 { S
0a10: 45 4c 45 43 54 20 64 6f 63 69 64 20 46 52 4f 4d  ELECT docid FROM
0a20: 20 74 31 20 57 48 45 52 45 20 74 31 20 4d 41 54   t1 WHERE t1 MAT
0a30: 43 48 20 27 6f 6e 65 27 20 7d 20 7b 31 20 32 7d  CH 'one' } {1 2}
0a40: 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  .  do_execsql_te
0a50: 73 74 20 32 2e 24 74 6e 2e 33 20 7b 20 53 45 4c  st 2.$tn.3 { SEL
0a60: 45 43 54 20 64 6f 63 69 64 20 46 52 4f 4d 20 74  ECT docid FROM t
0a70: 31 20 57 48 45 52 45 20 74 31 20 4d 41 54 43 48  1 WHERE t1 MATCH
0a80: 20 27 74 68 72 65 65 27 20 7d 20 7b 32 7d 0a 20   'three' } {2}. 
0a90: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
0aa0: 20 32 2e 24 74 6e 2e 34 20 7b 20 53 45 4c 45 43   2.$tn.4 { SELEC
0ab0: 54 20 64 6f 63 69 64 20 46 52 4f 4d 20 74 31 20  T docid FROM t1 
0ac0: 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 27  WHERE t1 MATCH '
0ad0: 66 69 76 65 27 20 7d 20 7b 31 7d 0a 0a 20 20 64  five' } {1}..  d
0ae0: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 32  o_execsql_test 2
0af0: 2e 24 74 6e 2e 35 20 7b 20 49 4e 53 45 52 54 20  .$tn.5 { INSERT 
0b00: 49 4e 54 4f 20 74 31 28 74 31 29 20 56 41 4c 55  INTO t1(t1) VALU
0b10: 45 53 28 27 6f 70 74 69 6d 69 7a 65 27 29 20 7d  ES('optimize') }
0b20: 0a 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  ..  do_execsql_t
0b30: 65 73 74 20 32 2e 24 74 6e 2e 36 20 7b 20 53 45  est 2.$tn.6 { SE
0b40: 4c 45 43 54 20 64 6f 63 69 64 20 46 52 4f 4d 20  LECT docid FROM 
0b50: 74 31 20 57 48 45 52 45 20 74 31 20 4d 41 54 43  t1 WHERE t1 MATC
0b60: 48 20 27 6f 6e 65 27 20 7d 20 7b 31 20 32 7d 0a  H 'one' } {1 2}.
0b70: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
0b80: 74 20 32 2e 24 74 6e 2e 37 20 7b 20 53 45 4c 45  t 2.$tn.7 { SELE
0b90: 43 54 20 64 6f 63 69 64 20 46 52 4f 4d 20 74 31  CT docid FROM t1
0ba0: 20 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20   WHERE t1 MATCH 
0bb0: 27 74 68 72 65 65 27 20 7d 20 7b 32 7d 0a 20 20  'three' } {2}.  
0bc0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0bd0: 32 2e 24 74 6e 2e 38 20 7b 20 53 45 4c 45 43 54  2.$tn.8 { SELECT
0be0: 20 64 6f 63 69 64 20 46 52 4f 4d 20 74 31 20 57   docid FROM t1 W
0bf0: 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 27 66  HERE t1 MATCH 'f
0c00: 69 76 65 27 20 7d 20 7b 31 7d 0a 0a 20 20 69 66  ive' } {1}..  if
0c10: 20 7b 24 74 6e 21 3d 33 7d 20 7b 0a 20 20 20 20   {$tn!=3} {.    
0c20: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0c30: 32 2e 24 74 6e 2e 39 20 7b 20 49 4e 53 45 52 54  2.$tn.9 { INSERT
0c40: 20 49 4e 54 4f 20 74 31 28 74 31 29 20 56 41 4c   INTO t1(t1) VAL
0c50: 55 45 53 28 27 72 65 62 75 69 6c 64 27 29 20 7d  UES('rebuild') }
0c60: 0a 20 20 0a 20 20 20 20 64 6f 5f 65 78 65 63 73  .  .    do_execs
0c70: 71 6c 5f 74 65 73 74 20 32 2e 24 74 6e 2e 31 30  ql_test 2.$tn.10
0c80: 20 7b 20 53 45 4c 45 43 54 20 64 6f 63 69 64 20   { SELECT docid 
0c90: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31  FROM t1 WHERE t1
0ca0: 20 4d 41 54 43 48 20 27 6f 6e 65 27 20 7d 20 7b   MATCH 'one' } {
0cb0: 31 20 32 7d 0a 20 20 20 20 64 6f 5f 65 78 65 63  1 2}.    do_exec
0cc0: 73 71 6c 5f 74 65 73 74 20 32 2e 24 74 6e 2e 31  sql_test 2.$tn.1
0cd0: 31 20 7b 20 53 45 4c 45 43 54 20 64 6f 63 69 64  1 { SELECT docid
0ce0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74   FROM t1 WHERE t
0cf0: 31 20 4d 41 54 43 48 20 27 74 68 72 65 65 27 20  1 MATCH 'three' 
0d00: 7d 20 7b 32 7d 0a 20 20 20 20 64 6f 5f 65 78 65  } {2}.    do_exe
0d10: 63 73 71 6c 5f 74 65 73 74 20 32 2e 24 74 6e 2e  csql_test 2.$tn.
0d20: 31 32 20 7b 20 53 45 4c 45 43 54 20 64 6f 63 69  12 { SELECT doci
0d30: 64 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  d FROM t1 WHERE 
0d40: 74 31 20 4d 41 54 43 48 20 27 66 69 76 65 27 20  t1 MATCH 'five' 
0d50: 7d 20 7b 31 7d 0a 20 20 0a 20 20 20 20 64 6f 5f  } {1}.  .    do_
0d60: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 32 2e 24  execsql_test 2.$
0d70: 74 6e 2e 31 33 20 7b 20 0a 20 20 20 20 20 20 53  tn.13 { .      S
0d80: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
0d90: 20 74 31 20 57 48 45 52 45 20 64 6f 63 69 64 3d   t1 WHERE docid=
0da0: 31 0a 20 20 20 20 7d 20 7b 7b 6f 6e 65 20 74 77  1.    } {{one tw
0db0: 6f 7d 20 7b 74 68 72 65 65 20 66 6f 75 72 7d 20  o} {three four} 
0dc0: 7b 66 69 76 65 20 73 69 78 7d 7d 0a 20 20 20 20  {five six}}.    
0dd0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0de0: 32 2e 24 74 6e 2e 31 34 20 7b 20 0a 20 20 20 20  2.$tn.14 { .    
0df0: 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46    SELECT a,b,c F
0e00: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 64 6f 63  ROM t1 WHERE doc
0e10: 69 64 3d 32 0a 20 20 20 20 7d 20 7b 7b 74 68 72  id=2.    } {{thr
0e20: 65 65 20 66 6f 75 72 7d 20 7b 66 69 76 65 20 73  ee four} {five s
0e30: 69 78 7d 20 7b 6f 6e 65 20 74 77 6f 7d 7d 0a 20  ix} {one two}}. 
0e40: 20 7d 0a 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c   }..  do_execsql
0e50: 5f 74 65 73 74 20 32 2e 78 20 7b 20 44 52 4f 50  _test 2.x { DROP
0e60: 20 54 41 42 4c 45 20 74 31 20 7d 0a 7d 0a 0a 23   TABLE t1 }.}..#
0e70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ea0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 54 65 73 74  ---------.# Test
0ec0: 20 74 68 61 74 20 6e 6f 74 69 6e 64 65 78 65 64   that notindexed
0ed0: 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20 6e 6f 74   columns are not
0ee0: 20 73 63 61 6e 6e 65 64 20 66 6f 72 20 64 65 66   scanned for def
0ef0: 65 72 72 65 64 20 74 6f 6b 65 6e 73 2e 0a 23 0a  erred tokens..#.
0f00: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
0f10: 20 33 2e 31 20 7b 0a 20 20 43 52 45 41 54 45 20   3.1 {.  CREATE 
0f20: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 32  VIRTUAL TABLE t2
0f30: 20 55 53 49 4e 47 20 66 74 73 34 28 78 2c 20 79   USING fts4(x, y
0f40: 2c 20 6e 6f 74 69 6e 64 65 78 65 64 3d 78 29 3b  , notindexed=x);
0f50: 0a 7d 0a 64 6f 5f 74 65 73 74 20 33 2e 32 20 7b  .}.do_test 3.2 {
0f60: 0a 20 20 73 65 74 20 76 20 5b 73 74 72 69 6e 67  .  set v [string
0f70: 20 72 65 70 65 61 74 20 22 20 31 22 20 35 30 30   repeat " 1" 500
0f80: 30 30 5d 0a 20 20 73 65 74 20 76 31 20 22 78 20  00].  set v1 "x 
0f90: 24 76 22 0a 20 20 73 65 74 20 76 32 20 22 79 20  $v".  set v2 "y 
0fa0: 24 76 22 0a 20 20 65 78 65 63 73 71 6c 20 7b 20  $v".  execsql { 
0fb0: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0fc0: 20 74 32 20 56 41 4c 55 45 53 28 31 2c 20 27 78   t2 VALUES(1, 'x
0fd0: 20 79 20 7a 27 29 3b 0a 20 20 20 20 49 4e 53 45   y z');.    INSE
0fe0: 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45  RT INTO t2 VALUE
0ff0: 53 28 32 2c 20 24 76 31 29 3b 0a 20 20 20 20 49  S(2, $v1);.    I
1000: 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41  NSERT INTO t2 VA
1010: 4c 55 45 53 28 33 2c 20 24 76 32 29 3b 0a 20 20  LUES(3, $v2);.  
1020: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
1030: 20 56 41 4c 55 45 53 28 34 2c 20 24 76 32 29 3b   VALUES(4, $v2);
1040: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
1050: 20 74 32 20 56 41 4c 55 45 53 28 35 2c 20 24 76   t2 VALUES(5, $v
1060: 32 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  2);.    INSERT I
1070: 4e 54 4f 20 74 32 20 56 41 4c 55 45 53 28 36 2c  NTO t2 VALUES(6,
1080: 20 24 76 32 29 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a   $v2);.  }.} {}.
1090: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
10a0: 20 33 2e 33 20 7b 20 53 45 4c 45 43 54 20 78 20   3.3 { SELECT x 
10b0: 46 52 4f 4d 20 74 32 20 57 48 45 52 45 20 74 32  FROM t2 WHERE t2
10c0: 20 4d 41 54 43 48 20 27 32 27 20 7d 20 7b 7d 0a   MATCH '2' } {}.
10d0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
10e0: 33 2e 34 20 7b 20 53 45 4c 45 43 54 20 78 20 46  3.4 { SELECT x F
10f0: 52 4f 4d 20 74 32 20 57 48 45 52 45 20 74 32 20  ROM t2 WHERE t2 
1100: 4d 41 54 43 48 20 27 31 27 20 7d 20 7b 32 20 33  MATCH '1' } {2 3
1110: 20 34 20 35 20 36 7d 0a 64 6f 5f 65 78 65 63 73   4 5 6}.do_execs
1120: 71 6c 5f 74 65 73 74 20 33 2e 35 20 7b 20 53 45  ql_test 3.5 { SE
1130: 4c 45 43 54 20 78 20 46 52 4f 4d 20 74 32 20 57  LECT x FROM t2 W
1140: 48 45 52 45 20 74 32 20 4d 41 54 43 48 20 27 78  HERE t2 MATCH 'x
1150: 27 20 7d 20 7b 31 20 32 7d 0a 64 6f 5f 65 78 65  ' } {1 2}.do_exe
1160: 63 73 71 6c 5f 74 65 73 74 20 33 2e 36 20 7b 20  csql_test 3.6 { 
1170: 53 45 4c 45 43 54 20 78 20 46 52 4f 4d 20 74 32  SELECT x FROM t2
1180: 20 57 48 45 52 45 20 74 32 20 4d 41 54 43 48 20   WHERE t2 MATCH 
1190: 27 78 20 31 27 20 7d 20 7b 32 7d 0a 0a 64 6f 5f  'x 1' } {2}..do_
11a0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 78  execsql_test 3.x
11b0: 20 7b 20 44 52 4f 50 20 54 41 42 4c 45 20 74 32   { DROP TABLE t2
11c0: 20 7d 0a 20 20 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d   }.  .#---------
11d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1210: 0a 23 20 54 65 73 74 20 74 68 61 74 20 74 68 65  .# Test that the
1220: 20 74 79 70 65 73 20 6f 66 20 6e 6f 74 69 6e 64   types of notind
1230: 65 78 65 64 20 63 6f 6c 75 6d 6e 73 20 61 72 65  exed columns are
1240: 20 6e 6f 74 20 6d 6f 64 69 66 69 65 64 2e 0a 23   not modified..#
1250: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
1260: 20 34 2e 31 20 7b 0a 20 20 43 52 45 41 54 45 20   4.1 {.  CREATE 
1270: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 32  VIRTUAL TABLE t2
1280: 20 55 53 49 4e 47 20 66 74 73 34 28 70 6f 69 2c   USING fts4(poi,
1290: 20 61 64 64 72 2c 20 6e 6f 74 69 6e 64 65 78 65   addr, notindexe
12a0: 64 3d 70 6f 69 29 3b 0a 20 20 49 4e 53 45 52 54  d=poi);.  INSERT
12b0: 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53 28   INTO t2 VALUES(
12c0: 31 31 34 2c 20 27 78 20 78 20 78 27 29 3b 0a 20  114, 'x x x');. 
12d0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20   INSERT INTO t2 
12e0: 56 41 4c 55 45 53 28 58 27 31 32 33 34 27 2c 20  VALUES(X'1234', 
12f0: 27 79 20 79 20 79 27 29 3b 0a 20 20 49 4e 53 45  'y y y');.  INSE
1300: 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45  RT INTO t2 VALUE
1310: 53 28 4e 55 4c 4c 2c 20 27 7a 20 7a 20 7a 27 29  S(NULL, 'z z z')
1320: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
1330: 74 32 20 56 41 4c 55 45 53 28 31 31 33 2e 32 2c  t2 VALUES(113.2,
1340: 20 27 77 20 77 20 77 27 29 3b 0a 20 20 49 4e 53   'w w w');.  INS
1350: 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55  ERT INTO t2 VALU
1360: 45 53 28 27 70 6f 69 27 2c 20 27 76 20 76 20 76  ES('poi', 'v v v
1370: 27 29 3b 0a 7d 0a 64 6f 5f 65 78 65 63 73 71 6c  ');.}.do_execsql
1380: 5f 74 65 73 74 20 34 2e 32 20 7b 20 53 45 4c 45  _test 4.2 { SELE
1390: 43 54 20 74 79 70 65 6f 66 28 70 6f 69 29 20 46  CT typeof(poi) F
13a0: 52 4f 4d 20 74 32 20 57 48 45 52 45 20 74 32 20  ROM t2 WHERE t2 
13b0: 4d 41 54 43 48 20 27 78 27 20 7d 20 7b 69 6e 74  MATCH 'x' } {int
13c0: 65 67 65 72 7d 0a 64 6f 5f 65 78 65 63 73 71 6c  eger}.do_execsql
13d0: 5f 74 65 73 74 20 34 2e 33 20 7b 20 53 45 4c 45  _test 4.3 { SELE
13e0: 43 54 20 74 79 70 65 6f 66 28 70 6f 69 29 20 46  CT typeof(poi) F
13f0: 52 4f 4d 20 74 32 20 57 48 45 52 45 20 74 32 20  ROM t2 WHERE t2 
1400: 4d 41 54 43 48 20 27 79 27 20 7d 20 7b 62 6c 6f  MATCH 'y' } {blo
1410: 62 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  b}.do_execsql_te
1420: 73 74 20 34 2e 34 20 7b 20 53 45 4c 45 43 54 20  st 4.4 { SELECT 
1430: 74 79 70 65 6f 66 28 70 6f 69 29 20 46 52 4f 4d  typeof(poi) FROM
1440: 20 74 32 20 57 48 45 52 45 20 74 32 20 4d 41 54   t2 WHERE t2 MAT
1450: 43 48 20 27 7a 27 20 7d 20 7b 6e 75 6c 6c 7d 0a  CH 'z' } {null}.
1460: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
1470: 34 2e 35 20 7b 20 53 45 4c 45 43 54 20 74 79 70  4.5 { SELECT typ
1480: 65 6f 66 28 70 6f 69 29 20 46 52 4f 4d 20 74 32  eof(poi) FROM t2
1490: 20 57 48 45 52 45 20 74 32 20 4d 41 54 43 48 20   WHERE t2 MATCH 
14a0: 27 77 27 20 7d 20 7b 72 65 61 6c 7d 0a 64 6f 5f  'w' } {real}.do_
14b0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 34 2e 36  execsql_test 4.6
14c0: 20 7b 20 53 45 4c 45 43 54 20 74 79 70 65 6f 66   { SELECT typeof
14d0: 28 70 6f 69 29 20 46 52 4f 4d 20 74 32 20 57 48  (poi) FROM t2 WH
14e0: 45 52 45 20 74 32 20 4d 41 54 43 48 20 27 76 27  ERE t2 MATCH 'v'
14f0: 20 7d 20 7b 74 65 78 74 7d 0a 0a 64 6f 5f 65 78   } {text}..do_ex
1500: 65 63 73 71 6c 5f 74 65 73 74 20 34 2e 78 20 7b  ecsql_test 4.x {
1510: 20 44 52 4f 50 20 54 41 42 4c 45 20 74 32 20 7d   DROP TABLE t2 }
1520: 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..#-------------
1530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 54  ------------.# T
1570: 65 73 74 20 74 68 61 74 20 6d 75 6c 74 69 70 6c  est that multipl
1580: 65 20 6e 6f 74 69 6e 64 65 78 65 64 20 6f 70 74  e notindexed opt
1590: 69 6f 6e 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65  ions on a single
15a0: 20 74 61 62 6c 65 20 77 6f 72 6b 20 61 73 20 65   table work as e
15b0: 78 70 65 63 74 65 64 2e 0a 23 0a 64 6f 5f 65 78  xpected..#.do_ex
15c0: 65 63 73 71 6c 5f 74 65 73 74 20 35 2e 31 20 7b  ecsql_test 5.1 {
15d0: 0a 20 20 43 52 45 41 54 45 20 56 49 52 54 55 41  .  CREATE VIRTUA
15e0: 4c 20 54 41 42 4c 45 20 74 32 20 55 53 49 4e 47  L TABLE t2 USING
15f0: 20 66 74 73 34 28 0a 20 20 20 20 20 20 6e 6f 74   fts4(.      not
1600: 69 6e 64 65 78 65 64 3d 22 74 68 72 65 65 22 2c  indexed="three",
1610: 20 6f 6e 65 2c 20 74 77 6f 2c 20 74 68 72 65 65   one, two, three
1620: 2c 20 6e 6f 74 69 6e 64 65 78 65 64 3d 22 6f 6e  , notindexed="on
1630: 65 22 2c 0a 20 20 29 3b 0a 20 20 49 4e 53 45 52  e",.  );.  INSER
1640: 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53  T INTO t2 VALUES
1650: 28 27 61 27 2c 20 27 62 27 2c 20 27 63 27 29 3b  ('a', 'b', 'c');
1660: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  .  INSERT INTO t
1670: 32 20 56 41 4c 55 45 53 28 27 63 27 2c 20 27 61  2 VALUES('c', 'a
1680: 27 2c 20 27 62 27 29 3b 0a 20 20 49 4e 53 45 52  ', 'b');.  INSER
1690: 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53  T INTO t2 VALUES
16a0: 28 27 62 27 2c 20 27 63 27 2c 20 27 61 27 29 3b  ('b', 'c', 'a');
16b0: 0a 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  .}.do_execsql_te
16c0: 73 74 20 35 2e 32 20 7b 20 53 45 4c 45 43 54 20  st 5.2 { SELECT 
16d0: 64 6f 63 69 64 20 46 52 4f 4d 20 74 32 20 57 48  docid FROM t2 WH
16e0: 45 52 45 20 74 32 20 4d 41 54 43 48 20 27 61 27  ERE t2 MATCH 'a'
16f0: 20 7d 20 7b 32 7d 0a 64 6f 5f 65 78 65 63 73 71   } {2}.do_execsq
1700: 6c 5f 74 65 73 74 20 35 2e 33 20 7b 20 53 45 4c  l_test 5.3 { SEL
1710: 45 43 54 20 64 6f 63 69 64 20 46 52 4f 4d 20 74  ECT docid FROM t
1720: 32 20 57 48 45 52 45 20 74 32 20 4d 41 54 43 48  2 WHERE t2 MATCH
1730: 20 27 62 27 20 7d 20 7b 31 7d 0a 64 6f 5f 65 78   'b' } {1}.do_ex
1740: 65 63 73 71 6c 5f 74 65 73 74 20 35 2e 34 20 7b  ecsql_test 5.4 {
1750: 20 53 45 4c 45 43 54 20 64 6f 63 69 64 20 46 52   SELECT docid FR
1760: 4f 4d 20 74 32 20 57 48 45 52 45 20 74 32 20 4d  OM t2 WHERE t2 M
1770: 41 54 43 48 20 27 63 27 20 7d 20 7b 33 7d 0a 0a  ATCH 'c' } {3}..
1780: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
1790: 35 2e 78 20 7b 20 44 52 4f 50 20 54 41 42 4c 45  5.x { DROP TABLE
17a0: 20 74 32 20 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d   t2 }..#--------
17b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
17c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
17d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
17e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
17f0: 2d 0a 23 20 43 68 65 63 6b 20 74 68 61 74 20 69  -.# Check that i
1800: 66 20 61 6e 20 69 6e 64 65 78 65 64 20 63 6f 6c  f an indexed col
1810: 75 6d 6e 20 6e 61 6d 65 20 69 73 20 61 20 70 72  umn name is a pr
1820: 65 66 69 78 20 6f 66 20 61 20 6e 6f 74 69 6e 64  efix of a notind
1830: 65 78 65 64 20 63 6f 6c 75 6d 6e 0a 23 20 6e 61  exed column.# na
1840: 6d 65 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69  me, the column i
1850: 73 20 73 74 69 6c 6c 20 63 6f 72 72 65 63 74 6c  s still correctl
1860: 79 20 74 6f 6b 65 6e 69 7a 65 64 2e 20 54 68 69  y tokenized. Thi
1870: 73 20 77 61 73 20 61 20 70 72 6f 62 6c 65 6d 20  s was a problem 
1880: 61 74 20 6f 6e 65 0a 23 20 70 6f 69 6e 74 2e 0a  at one.# point..
1890: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
18a0: 36 2e 31 2e 31 20 7b 0a 20 20 43 52 45 41 54 45  6.1.1 {.  CREATE
18b0: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74   VIRTUAL TABLE t
18c0: 31 20 55 53 49 4e 47 20 66 74 73 34 28 0a 20 20  1 USING fts4(.  
18d0: 20 20 70 6f 69 43 61 74 65 67 6f 72 79 2c 20 70    poiCategory, p
18e0: 6f 69 43 61 74 65 67 6f 72 79 49 64 2c 20 6e 6f  oiCategoryId, no
18f0: 74 69 6e 64 65 78 65 64 3d 70 6f 69 43 61 74 65  tindexed=poiCate
1900: 67 6f 72 79 49 64 0a 20 20 29 3b 0a 20 20 49 4e  goryId.  );.  IN
1910: 53 45 52 54 20 49 4e 54 4f 20 74 31 28 70 6f 69  SERT INTO t1(poi
1920: 43 61 74 65 67 6f 72 79 2c 20 70 6f 69 43 61 74  Category, poiCat
1930: 65 67 6f 72 79 49 64 29 20 76 61 6c 75 65 73 20  egoryId) values 
1940: 28 22 52 65 73 74 61 75 72 61 6e 74 22 2c 20 36  ("Restaurant", 6
1950: 30 32 31 29 3b 0a 7d 0a 0a 64 6f 5f 65 78 65 63  021);.}..do_exec
1960: 73 71 6c 5f 74 65 73 74 20 36 2e 31 2e 32 20 7b  sql_test 6.1.2 {
1970: 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  .  SELECT * FROM
1980: 20 74 31 20 57 48 45 52 45 20 74 31 20 4d 41 54   t1 WHERE t1 MAT
1990: 43 48 20 27 72 65 73 74 61 75 72 61 6e 74 27 3b  CH 'restaurant';
19a0: 0a 7d 20 7b 20 52 65 73 74 61 75 72 61 6e 74 20  .} { Restaurant 
19b0: 36 30 32 31 20 7d 0a 64 6f 5f 65 78 65 63 73 71  6021 }.do_execsq
19c0: 6c 5f 74 65 73 74 20 36 2e 31 2e 33 20 7b 0a 20  l_test 6.1.3 {. 
19d0: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
19e0: 31 20 57 48 45 52 45 20 74 31 20 4d 41 54 43 48  1 WHERE t1 MATCH
19f0: 20 27 72 65 2a 27 3b 0a 7d 20 7b 20 52 65 73 74   're*';.} { Rest
1a00: 61 75 72 61 6e 74 20 36 30 32 31 20 7d 0a 64 6f  aurant 6021 }.do
1a10: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 36 2e  _execsql_test 6.
1a20: 31 2e 34 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a  1.4 {.  SELECT *
1a30: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74   FROM t1 WHERE t
1a40: 31 20 4d 41 54 43 48 20 27 36 30 32 31 27 3b 0a  1 MATCH '6021';.
1a50: 7d 20 7b 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  } {}.do_execsql_
1a60: 74 65 73 74 20 36 2e 31 2e 35 20 7b 0a 20 20 53  test 6.1.5 {.  S
1a70: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20  ELECT * FROM t1 
1a80: 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 27  WHERE t1 MATCH '
1a90: 36 30 2a 27 3b 0a 7d 20 7b 7d 0a 0a 64 6f 5f 65  60*';.} {}..do_e
1aa0: 78 65 63 73 71 6c 5f 74 65 73 74 20 36 2e 32 2e  xecsql_test 6.2.
1ab0: 31 20 7b 0a 20 20 44 52 4f 50 20 54 41 42 4c 45  1 {.  DROP TABLE
1ac0: 20 74 31 3b 0a 20 20 43 52 45 41 54 45 20 56 49   t1;.  CREATE VI
1ad0: 52 54 55 41 4c 20 54 41 42 4c 45 20 74 31 20 55  RTUAL TABLE t1 U
1ae0: 53 49 4e 47 20 66 74 73 34 28 0a 20 20 20 20 70  SING fts4(.    p
1af0: 6f 69 43 61 74 65 67 6f 72 79 2c 20 70 6f 69 43  oiCategory, poiC
1b00: 61 74 65 67 6f 72 79 49 64 2c 20 6e 6f 74 69 6e  ategoryId, notin
1b10: 64 65 78 65 64 3d 70 6f 69 43 61 74 65 67 6f 72  dexed=poiCategor
1b20: 79 0a 20 20 29 3b 0a 20 20 49 4e 53 45 52 54 20  y.  );.  INSERT 
1b30: 49 4e 54 4f 20 74 31 28 70 6f 69 43 61 74 65 67  INTO t1(poiCateg
1b40: 6f 72 79 2c 20 70 6f 69 43 61 74 65 67 6f 72 79  ory, poiCategory
1b50: 49 64 29 20 76 61 6c 75 65 73 20 28 22 52 65 73  Id) values ("Res
1b60: 74 61 75 72 61 6e 74 22 2c 20 36 30 32 31 29 3b  taurant", 6021);
1b70: 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  .}..do_execsql_t
1b80: 65 73 74 20 36 2e 32 2e 32 20 7b 0a 20 20 53 45  est 6.2.2 {.  SE
1b90: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57  LECT * FROM t1 W
1ba0: 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 27 72  HERE t1 MATCH 'r
1bb0: 65 73 74 61 75 72 61 6e 74 27 3b 0a 7d 20 7b 7d  estaurant';.} {}
1bc0: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
1bd0: 20 36 2e 32 2e 33 20 7b 0a 20 20 53 45 4c 45 43   6.2.3 {.  SELEC
1be0: 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T * FROM t1 WHER
1bf0: 45 20 74 31 20 4d 41 54 43 48 20 27 72 65 2a 27  E t1 MATCH 're*'
1c00: 3b 0a 7d 20 7b 7d 0a 64 6f 5f 65 78 65 63 73 71  ;.} {}.do_execsq
1c10: 6c 5f 74 65 73 74 20 36 2e 32 2e 34 20 7b 0a 20  l_test 6.2.4 {. 
1c20: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
1c30: 31 20 57 48 45 52 45 20 74 31 20 4d 41 54 43 48  1 WHERE t1 MATCH
1c40: 20 27 36 30 32 31 27 3b 0a 7d 20 7b 20 52 65 73   '6021';.} { Res
1c50: 74 61 75 72 61 6e 74 20 36 30 32 31 20 7d 0a 64  taurant 6021 }.d
1c60: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 36  o_execsql_test 6
1c70: 2e 32 2e 35 20 7b 0a 20 20 53 45 4c 45 43 54 20  .2.5 {.  SELECT 
1c80: 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  * FROM t1 WHERE 
1c90: 74 31 20 4d 41 54 43 48 20 27 36 30 2a 27 3b 0a  t1 MATCH '60*';.
1ca0: 7d 20 7b 20 52 65 73 74 61 75 72 61 6e 74 20 36  } { Restaurant 6
1cb0: 30 32 31 20 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  021 }..do_execsq
1cc0: 6c 5f 74 65 73 74 20 36 2e 33 2e 31 20 7b 0a 20  l_test 6.3.1 {. 
1cd0: 20 44 52 4f 50 20 54 41 42 4c 45 20 74 31 3b 0a   DROP TABLE t1;.
1ce0: 20 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c    CREATE VIRTUAL
1cf0: 20 54 41 42 4c 45 20 74 31 20 55 53 49 4e 47 20   TABLE t1 USING 
1d00: 66 74 73 34 28 61 62 63 2c 20 61 62 2c 20 61 2c  fts4(abc, ab, a,
1d10: 20 6e 6f 74 69 6e 64 65 78 65 64 3d 61 62 63 29   notindexed=abc)
1d20: 3b 0a 20 20 43 52 45 41 54 45 20 56 49 52 54 55  ;.  CREATE VIRTU
1d30: 41 4c 20 54 41 42 4c 45 20 74 32 20 55 53 49 4e  AL TABLE t2 USIN
1d40: 47 20 66 74 73 34 28 61 2c 20 61 62 2c 20 61 62  G fts4(a, ab, ab
1d50: 63 2c 20 6e 6f 74 69 6e 64 65 78 65 64 3d 61 62  c, notindexed=ab
1d60: 63 29 3b 0a 0a 20 20 49 4e 53 45 52 54 20 49 4e  c);..  INSERT IN
1d70: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 27 6e 6f  TO t1 VALUES('no
1d80: 27 2c 20 27 79 65 73 27 2c 20 27 79 65 70 27 29  ', 'yes', 'yep')
1d90: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
1da0: 74 32 20 56 41 4c 55 45 53 28 27 79 65 70 27 2c  t2 VALUES('yep',
1db0: 20 27 79 65 73 27 2c 20 27 6e 6f 27 29 3b 0a 0a   'yes', 'no');..
1dc0: 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a    SELECT count(*
1dd0: 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  ) FROM t1 WHERE 
1de0: 74 31 20 4d 41 54 43 48 20 27 6e 6f 27 3b 0a 20  t1 MATCH 'no';. 
1df0: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29   SELECT count(*)
1e00: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74   FROM t1 WHERE t
1e10: 31 20 4d 41 54 43 48 20 27 79 65 73 27 3b 0a 20  1 MATCH 'yes';. 
1e20: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29   SELECT count(*)
1e30: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74   FROM t1 WHERE t
1e40: 31 20 4d 41 54 43 48 20 27 79 65 70 27 3b 0a 0a  1 MATCH 'yep';..
1e50: 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a    SELECT count(*
1e60: 29 20 46 52 4f 4d 20 74 32 20 57 48 45 52 45 20  ) FROM t2 WHERE 
1e70: 74 32 20 4d 41 54 43 48 20 27 6e 6f 27 3b 0a 20  t2 MATCH 'no';. 
1e80: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29   SELECT count(*)
1e90: 20 46 52 4f 4d 20 74 32 20 57 48 45 52 45 20 74   FROM t2 WHERE t
1ea0: 32 20 4d 41 54 43 48 20 27 79 65 73 27 3b 0a 20  2 MATCH 'yes';. 
1eb0: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29   SELECT count(*)
1ec0: 20 46 52 4f 4d 20 74 32 20 57 48 45 52 45 20 74   FROM t2 WHERE t
1ed0: 32 20 4d 41 54 43 48 20 27 79 65 70 27 3b 0a 7d  2 MATCH 'yep';.}
1ee0: 20 7b 30 20 31 20 31 20 30 20 31 20 31 7d 0a 0a   {0 1 1 0 1 1}..
1ef0: 66 69 6e 69 73 68 5f 74 65 73 74 0a 0a 0a 0a     finish_test....