/ Hex Artifact Content
Login

Artifact f4c20e4c7153d20a98ee49ee5f3faef624fefc9a067f8d8d629db380c4d9f1de:


0000: 23 20 32 30 31 30 20 4f 63 74 6f 62 65 72 20 31  # 2010 October 1
0010: 35 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72  5.#.# The author
0020: 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72   disclaims copyr
0030: 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75  ight to this sou
0040: 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c  rce code.  In pl
0050: 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c  ace of.# a legal
0060: 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73   notice, here is
0070: 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23   a blessing:.#.#
0080: 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67      May you do g
0090: 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c  ood and not evil
00a0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66  ..#    May you f
00b0: 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20  ind forgiveness 
00c0: 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64  for yourself and
00d0: 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e   forgive others.
00e0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68  .#    May you sh
00f0: 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65  are freely, neve
0100: 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68  r taking more th
0110: 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23  an 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 2a 0a 0a 73 65 74 20 74 65 73  *******..set tes
0170: 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61  tdir [file dirna
0180: 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63  me $argv0].sourc
0190: 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74 65  e $testdir/teste
01a0: 72 2e 74 63 6c 0a 73 6f 75 72 63 65 20 24 74 65  r.tcl.source $te
01b0: 73 74 64 69 72 2f 6d 61 6c 6c 6f 63 5f 63 6f 6d  stdir/malloc_com
01c0: 6d 6f 6e 2e 74 63 6c 0a 0a 69 66 63 61 70 61 62  mon.tcl..ifcapab
01d0: 6c 65 20 21 66 74 73 33 7c 7c 21 66 74 73 34 5f  le !fts3||!fts4_
01e0: 64 65 66 65 72 72 65 64 20 7b 0a 20 20 66 69 6e  deferred {.  fin
01f0: 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74 75 72  ish_test.  retur
0200: 6e 0a 7d 0a 0a 73 65 74 20 73 71 6c 69 74 65 5f  n.}..set sqlite_
0210: 66 74 73 33 5f 65 6e 61 62 6c 65 5f 70 61 72 65  fts3_enable_pare
0220: 6e 74 68 65 73 65 73 20 31 0a 0a 73 65 74 20 66  ntheses 1..set f
0230: 74 73 33 5f 73 69 6d 70 6c 65 5f 64 65 66 65 72  ts3_simple_defer
0240: 72 65 64 5f 74 6f 6b 65 6e 73 5f 6f 6e 6c 79 20  red_tokens_only 
0250: 31 0a 0a 73 65 74 20 3a 3a 74 65 73 74 70 72 65  1..set ::testpre
0260: 66 69 78 20 66 74 73 33 64 65 66 65 72 0a 0a 23  fix fts3defer..#
0270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
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 0a 23 20 54 65 73  ----------.# Tes
02c0: 74 20 63 61 73 65 73 20 66 74 73 33 64 65 66 65  t cases fts3defe
02d0: 72 2d 31 2e 2a 20 61 72 65 20 74 68 65 20 22 77  r-1.* are the "w
02e0: 61 72 6d 20 62 6f 64 79 22 20 63 61 73 65 73 2e  arm body" cases.
02f0: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   The database co
0300: 6e 74 61 69 6e 73 0a 23 20 6f 6e 65 20 72 6f 77  ntains.# one row
0310: 20 77 69 74 68 20 31 35 30 30 30 20 69 6e 73 74   with 15000 inst
0320: 61 6e 63 65 73 20 6f 66 20 74 68 65 20 74 6f 6b  ances of the tok
0330: 65 6e 20 22 61 22 2e 20 54 68 69 73 20 6d 61 6b  en "a". This mak
0340: 65 73 20 74 68 65 20 64 6f 63 6c 69 73 74 20 66  es the doclist f
0350: 6f 72 0a 23 20 22 61 22 20 73 6f 20 6c 61 72 67  or.# "a" so larg
0360: 65 20 74 68 61 74 20 46 54 53 33 20 77 69 6c 6c  e that FTS3 will
0370: 20 61 76 6f 69 64 20 6c 6f 61 64 69 6e 67 20 69   avoid loading i
0380: 74 20 69 6e 20 6d 6f 73 74 20 63 61 73 65 73 2e  t in most cases.
0390: 0a 23 0a 23 20 54 6f 20 73 68 6f 77 20 74 68 69  .#.# To show thi
03a0: 73 2c 20 74 65 73 74 20 63 61 73 65 73 20 66 74  s, test cases ft
03b0: 73 33 64 65 66 65 72 2d 31 2e 32 2e 2a 20 65 78  s3defer-1.2.* ex
03c0: 65 63 75 74 65 20 61 20 62 75 6e 63 68 20 6f 66  ecute a bunch of
03d0: 20 46 54 53 33 20 71 75 65 72 69 65 73 0a 23 20   FTS3 queries.# 
03e0: 69 6e 76 6f 6c 76 69 6e 67 20 74 6f 6b 65 6e 20  involving token 
03f0: 22 61 22 2e 20 54 68 65 6e 2c 20 66 74 73 33 64  "a". Then, fts3d
0400: 65 66 65 72 2d 31 2e 33 2e 2a 20 72 65 70 6c 61  efer-1.3.* repla
0410: 63 65 73 20 74 68 65 20 64 6f 63 6c 69 73 74 20  ces the doclist 
0420: 66 6f 72 20 74 6f 6b 65 6e 0a 23 20 22 61 22 20  for token.# "a" 
0430: 77 69 74 68 20 61 6c 6c 20 7a 65 72 6f 65 73 20  with all zeroes 
0440: 61 6e 64 20 66 74 73 33 64 65 66 65 72 2d 31 2e  and fts3defer-1.
0450: 34 2e 2a 20 72 65 70 65 61 74 73 20 74 68 65 20  4.* repeats the 
0460: 74 65 73 74 73 20 66 72 6f 6d 20 31 2e 32 2e 20  tests from 1.2. 
0470: 49 66 0a 23 20 74 68 65 20 74 65 73 74 73 20 73  If.# the tests s
0480: 74 69 6c 6c 20 77 6f 72 6b 2c 20 77 65 20 63 61  till work, we ca
0490: 6e 20 63 6f 6e 63 6c 75 64 65 20 74 68 61 74 20  n conclude that 
04a0: 74 68 65 20 64 6f 63 6c 69 73 74 20 66 6f 72 20  the doclist for 
04b0: 22 61 22 20 77 61 73 20 6e 6f 74 0a 23 20 75 73  "a" was not.# us
04c0: 65 64 2e 0a 23 20 0a 0a 73 65 74 20 61 61 61 20  ed..# ..set aaa 
04d0: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22  [string repeat "
04e0: 61 20 22 20 31 35 30 30 30 5d 0a 0a 64 6f 5f 65  a " 15000]..do_e
04f0: 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e 31 20  xecsql_test 1.1 
0500: 7b 0a 20 20 43 52 45 41 54 45 20 56 49 52 54 55  {.  CREATE VIRTU
0510: 41 4c 20 54 41 42 4c 45 20 74 31 20 55 53 49 4e  AL TABLE t1 USIN
0520: 47 20 66 74 73 34 3b 0a 20 20 42 45 47 49 4e 3b  G fts4;.  BEGIN;
0530: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0540: 20 74 31 20 56 41 4c 55 45 53 28 27 74 68 69 73   t1 VALUES('this
0550: 20 69 73 20 61 20 64 6f 67 27 29 3b 0a 20 20 20   is a dog');.   
0560: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
0570: 56 41 4c 55 45 53 28 27 61 6e 20 69 6e 73 74 61  VALUES('an insta
0580: 6e 63 65 20 6f 66 20 61 20 70 68 72 61 73 65 27  nce of a phrase'
0590: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
05a0: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 27 61 6e  TO t1 VALUES('an
05b0: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20 6c   instance of a l
05c0: 6f 6e 67 65 72 20 70 68 72 61 73 65 27 29 3b 0a  onger phrase');.
05d0: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
05e0: 74 31 20 56 41 4c 55 45 53 28 24 61 61 61 29 3b  t1 VALUES($aaa);
05f0: 0a 20 20 43 4f 4d 4d 49 54 3b 0a 7d 20 7b 7d 0a  .  COMMIT;.} {}.
0600: 0a 73 65 74 20 74 65 73 74 73 20 7b 0a 20 20 31  .set tests {.  1
0610: 20 20 7b 53 45 4c 45 43 54 20 72 6f 77 69 64 20    {SELECT rowid 
0620: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31  FROM t1 WHERE t1
0630: 20 4d 41 54 43 48 20 27 22 61 20 64 6f 67 22 27   MATCH '"a dog"'
0640: 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }               
0650: 20 20 7b 31 7d 0a 20 20 32 20 20 7b 53 45 4c 45    {1}.  2  {SELE
0660: 43 54 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31  CT rowid FROM t1
0670: 20 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20   WHERE t1 MATCH 
0680: 27 22 69 73 20 61 20 64 6f 67 22 27 7d 20 20 20  '"is a dog"'}   
0690: 20 20 20 20 20 20 20 20 20 20 20 7b 31 7d 0a 20             {1}. 
06a0: 20 33 20 20 7b 53 45 4c 45 43 54 20 72 6f 77 69   3  {SELECT rowi
06b0: 64 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  d FROM t1 WHERE 
06c0: 74 31 20 4d 41 54 43 48 20 27 22 61 20 6c 6f 6e  t1 MATCH '"a lon
06d0: 67 65 72 20 70 68 72 61 73 65 22 27 7d 20 20 20  ger phrase"'}   
06e0: 20 20 20 20 7b 33 7d 0a 20 20 34 20 20 7b 53 45      {3}.  4  {SE
06f0: 4c 45 43 54 20 73 6e 69 70 70 65 74 28 74 31 29  LECT snippet(t1)
0700: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74   FROM t1 WHERE t
0710: 31 20 4d 41 54 43 48 20 27 22 61 20 6c 6f 6e 67  1 MATCH '"a long
0720: 65 72 20 70 68 72 61 73 65 22 27 7d 20 20 0a 20  er phrase"'}  . 
0730: 20 20 20 20 7b 22 61 6e 20 69 6e 73 74 61 6e 63      {"an instanc
0740: 65 20 6f 66 20 3c 62 3e 61 3c 2f 62 3e 20 3c 62  e of <b>a</b> <b
0750: 3e 6c 6f 6e 67 65 72 3c 2f 62 3e 20 3c 62 3e 70  >longer</b> <b>p
0760: 68 72 61 73 65 3c 2f 62 3e 22 7d 0a 20 20 35 20  hrase</b>"}.  5 
0770: 20 7b 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46   {SELECT rowid F
0780: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31 20  ROM t1 WHERE t1 
0790: 4d 41 54 43 48 20 27 61 20 64 6f 67 27 7d 20 20  MATCH 'a dog'}  
07a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07b0: 20 7b 31 7d 0a 7d 0a 0a 64 6f 5f 73 65 6c 65 63   {1}.}..do_selec
07c0: 74 5f 74 65 73 74 73 20 31 2e 32 20 24 74 65 73  t_tests 1.2 $tes
07d0: 74 73 0a 0a 73 71 6c 69 74 65 33 5f 64 62 5f 63  ts..sqlite3_db_c
07e0: 6f 6e 66 69 67 20 64 62 20 44 45 46 45 4e 53 49  onfig db DEFENSI
07f0: 56 45 20 30 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  VE 0.do_execsql_
0800: 74 65 73 74 20 31 2e 33 20 7b 0a 20 20 53 45 4c  test 1.3 {.  SEL
0810: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
0820: 4d 20 74 31 5f 73 65 67 6d 65 6e 74 73 20 57 48  M t1_segments WH
0830: 45 52 45 20 6c 65 6e 67 74 68 28 62 6c 6f 63 6b  ERE length(block
0840: 29 3e 31 30 30 30 30 3b 0a 20 20 55 50 44 41 54  )>10000;.  UPDAT
0850: 45 20 74 31 5f 73 65 67 6d 65 6e 74 73 20 0a 20  E t1_segments . 
0860: 20 20 20 53 45 54 20 62 6c 6f 63 6b 20 3d 20 7a     SET block = z
0870: 65 72 6f 62 6c 6f 62 28 6c 65 6e 67 74 68 28 62  eroblob(length(b
0880: 6c 6f 63 6b 29 29 20 0a 20 20 20 20 57 48 45 52  lock)) .    WHER
0890: 45 20 6c 65 6e 67 74 68 28 62 6c 6f 63 6b 29 3e  E length(block)>
08a0: 31 30 30 30 30 3b 0a 7d 20 7b 31 7d 0a 0a 64 6f  10000;.} {1}..do
08b0: 5f 73 65 6c 65 63 74 5f 74 65 73 74 73 20 31 2e  _select_tests 1.
08c0: 34 20 24 74 65 73 74 73 0a 0a 23 20 44 72 6f 70  4 $tests..# Drop
08d0: 20 74 68 65 20 74 61 62 6c 65 2e 20 49 74 20 69   the table. It i
08e0: 73 20 63 6f 72 72 75 70 74 20 6e 6f 77 20 61 6e  s corrupt now an
08f0: 79 68 6f 77 2c 20 73 6f 20 6e 6f 74 20 75 73 65  yhow, so not use
0900: 66 75 6c 20 66 6f 72 20 73 75 62 73 65 71 75 65  ful for subseque
0910: 6e 74 20 74 65 73 74 73 2e 0a 23 0a 64 6f 5f 65  nt tests..#.do_e
0920: 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e 35 20  xecsql_test 1.5 
0930: 7b 20 44 52 4f 50 20 54 41 42 4c 45 20 74 31 20  { DROP TABLE t1 
0940: 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  }..#------------
0950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23  --------------.#
0990: 20 54 68 65 73 65 20 74 65 73 74 73 20 2d 20 66   These tests - f
09a0: 74 73 33 64 65 66 65 72 2d 32 2e 2a 20 2d 20 61  ts3defer-2.* - a
09b0: 72 65 20 6d 6f 72 65 20 72 69 67 6f 72 6f 75 73  re more rigorous
09c0: 2e 20 54 68 65 79 20 74 65 73 74 20 74 68 61 74  . They test that
09d0: 20 66 6f 72 20 61 0a 23 20 76 61 72 69 65 74 79   for a.# variety
09e0: 20 6f 66 20 71 75 65 72 69 65 73 2c 20 46 54 53   of queries, FTS
09f0: 33 20 61 6e 64 20 46 54 53 34 20 72 65 74 75 72  3 and FTS4 retur
0a00: 6e 20 74 68 65 20 73 61 6d 65 20 72 65 73 75 6c  n the same resul
0a10: 74 73 2e 20 41 6e 64 20 74 68 61 74 20 0a 23 20  ts. And that .# 
0a20: 7a 65 72 6f 69 6e 67 20 74 68 65 20 76 65 72 79  zeroing the very
0a30: 20 6c 61 72 67 65 20 64 6f 63 6c 69 73 74 73 20   large doclists 
0a40: 74 68 61 74 20 46 54 53 34 20 64 6f 65 73 20 6e  that FTS4 does n
0a50: 6f 74 20 6c 6f 61 64 20 64 6f 65 73 20 6e 6f 74  ot load does not
0a60: 20 63 68 61 6e 67 65 0a 23 20 74 68 65 20 72 65   change.# the re
0a70: 73 75 6c 74 73 2e 0a 23 0a 23 20 54 68 65 79 20  sults..#.# They 
0a80: 75 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  use the followin
0a90: 67 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 6c  g pseudo-randoml
0aa0: 79 20 67 65 6e 65 72 61 74 65 64 20 64 6f 63 75  y generated docu
0ab0: 6d 65 6e 74 20 64 61 74 61 2e 20 54 68 65 0a 23  ment data. The.#
0ac0: 20 74 6f 6b 65 6e 73 20 22 7a 6d 22 20 61 6e 64   tokens "zm" and
0ad0: 20 22 6a 6b 22 20 61 72 65 20 65 73 70 65 63 69   "jk" are especi
0ae0: 61 6c 6c 79 20 63 6f 6d 6d 6f 6e 20 69 6e 20 74  ally common in t
0af0: 68 69 73 20 64 61 74 61 73 65 74 2e 20 41 64 64  his dataset. Add
0b00: 69 74 69 6f 6e 61 6c 6c 79 2c 0a 23 20 74 77 6f  itionally,.# two
0b10: 20 64 6f 63 75 6d 65 6e 74 73 20 61 72 65 20 61   documents are a
0b20: 64 64 65 64 20 74 6f 20 74 68 65 20 70 73 65 75  dded to the pseu
0b30: 64 6f 2d 72 61 6e 64 6f 6d 20 64 61 74 61 20 62  do-random data b
0b40: 65 66 6f 72 65 20 69 74 20 69 73 20 6c 6f 61 64  efore it is load
0b50: 65 64 0a 23 20 69 6e 74 6f 20 46 54 53 34 20 63  ed.# into FTS4 c
0b60: 6f 6e 74 61 69 6e 69 6e 67 20 31 30 30 2c 30 30  ontaining 100,00
0b70: 30 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 74  0 instances of t
0b80: 68 65 20 22 7a 6d 22 20 61 6e 64 20 22 6a 6b 22  he "zm" and "jk"
0b90: 20 74 6f 6b 65 6e 73 2e 20 54 68 69 73 0a 23 20   tokens. This.# 
0ba0: 6d 61 6b 65 73 20 74 68 65 20 64 6f 63 6c 69 73  makes the doclis
0bb0: 74 73 20 66 6f 72 20 74 68 6f 73 65 20 74 6f 6b  ts for those tok
0bc0: 65 6e 73 20 73 6f 20 6c 61 72 67 65 20 74 68 61  ens so large tha
0bd0: 74 20 46 54 53 34 20 61 76 6f 69 64 73 20 6c 6f  t FTS4 avoids lo
0be0: 61 64 69 6e 67 20 74 68 65 6d 0a 23 20 69 6e 74  ading them.# int
0bf0: 6f 20 6d 65 6d 6f 72 79 20 69 66 20 70 6f 73 73  o memory if poss
0c00: 69 62 6c 65 2e 0a 23 0a 73 65 74 20 64 61 74 61  ible..#.set data
0c10: 20 5b 6c 69 73 74 5d 0a 6c 61 70 70 65 6e 64 20   [list].lappend 
0c20: 64 61 74 61 20 5b 73 74 72 69 6e 67 20 72 65 70  data [string rep
0c30: 65 61 74 20 22 7a 6d 20 22 20 31 30 30 30 30 30  eat "zm " 100000
0c40: 5d 0a 6c 61 70 70 65 6e 64 20 64 61 74 61 20 5b  ].lappend data [
0c50: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 6a  string repeat "j
0c60: 6b 20 22 20 31 30 30 30 30 30 5d 0a 6c 61 70 70  k " 100000].lapp
0c70: 65 6e 64 20 64 61 74 61 20 7b 2a 7d 7b 0a 20 20  end data {*}{.  
0c80: 22 7a 6d 20 7a 6d 20 61 67 6d 63 6b 75 69 75 20  "zm zm agmckuiu 
0c90: 75 68 7a 71 20 6e 73 61 62 20 6a 6b 20 72 72 6b  uhzq nsab jk rrk
0ca0: 78 20 64 75 73 7a 65 6d 6d 7a 6c 20 68 79 71 20  x duszemmzl hyq 
0cb0: 6a 6b 22 0a 20 20 22 6a 6b 20 75 68 7a 71 20 7a  jk".  "jk uhzq z
0cc0: 6d 20 7a 6d 20 72 67 70 7a 6d 6c 6e 6d 64 20 7a  m zm rgpzmlnmd z
0cd0: 6d 20 7a 6b 20 6a 6b 20 6a 6b 20 7a 6d 22 0a 20  m zk jk jk zm". 
0ce0: 20 22 64 75 73 7a 65 6d 6d 7a 6c 20 7a 6d 20 6a   "duszemmzl zm j
0cf0: 6b 20 78 6c 64 6c 70 79 20 7a 6d 20 6a 6b 20 73  k xldlpy zm jk s
0d00: 62 70 74 6f 61 20 78 68 20 6a 6b 20 78 6c 64 6c  bptoa xh jk xldl
0d10: 70 79 22 0a 20 20 22 7a 6d 20 78 68 20 7a 6d 20  py".  "zm xh zm 
0d20: 78 71 66 20 61 7a 61 76 77 6d 20 6a 6b 20 6a 6b  xqf azavwm jk jk
0d30: 20 74 72 71 64 20 72 67 70 7a 6d 6c 6e 6d 64 20   trqd rgpzmlnmd 
0d40: 6a 6b 22 0a 20 20 22 7a 6d 20 76 77 71 20 75 72  jk".  "zm vwq ur
0d50: 76 79 73 62 6e 79 6b 6b 20 75 62 77 72 66 71 6e  vysbnykk ubwrfqn
0d60: 62 6a 66 20 7a 6b 20 6c 73 7a 20 6a 6b 20 64 6f  bjf zk lsz jk do
0d70: 69 77 61 76 68 77 77 6f 20 6a 6b 20 6a 6b 22 0a  iwavhwwo jk jk".
0d80: 20 20 22 6a 6b 20 78 64 75 76 66 68 6b 20 6f 72    "jk xduvfhk or
0d90: 70 66 61 77 70 78 20 7a 6b 68 64 76 6b 77 20 6a  pfawpx zkhdvkw j
0da0: 6b 20 6d 6a 70 61 76 6a 75 68 77 20 7a 6d 20 6a  k mjpavjuhw zm j
0db0: 6b 20 64 75 73 7a 65 6d 6d 7a 6c 20 7a 6d 22 0a  k duszemmzl zm".
0dc0: 20 20 22 6a 6b 20 69 67 6a 75 20 6a 6b 20 6a 6b    "jk igju jk jk
0dd0: 20 7a 6d 20 68 6d 6a 66 20 78 68 20 7a 6d 20 67   zm hmjf xh zm g
0de0: 77 64 66 68 77 75 72 78 20 7a 6b 22 0a 20 20 22  wdfhwurx zk".  "
0df0: 76 67 73 6c 64 20 6a 6b 20 6a 6b 20 7a 6d 20 68  vgsld jk jk zm h
0e00: 72 6c 69 70 64 6d 20 6a 6e 20 7a 6d 20 7a 73 6d  rlipdm jn zm zsm
0e10: 68 6e 66 20 76 67 73 6c 64 20 64 75 73 7a 65 6d  hnf vgsld duszem
0e20: 6d 7a 6c 22 0a 20 20 22 67 74 75 69 65 78 7a 73  mzl".  "gtuiexzs
0e30: 75 20 61 61 79 78 70 6d 76 65 20 7a 6d 20 7a 6d  u aayxpmve zm zm
0e40: 20 7a 6d 20 64 72 69 72 20 73 63 70 67 6e 61 20   zm drir scpgna 
0e50: 78 68 20 61 7a 61 76 77 6d 20 75 68 7a 71 22 0a  xh azavwm uhzq".
0e60: 20 20 22 66 61 72 6c 65 68 64 68 71 20 68 6b 66    "farlehdhq hkf
0e70: 6f 75 64 7a 66 74 71 20 69 67 6a 75 20 64 75 73  oudzftq igju dus
0e80: 7a 65 6d 6d 7a 6c 20 78 6e 78 68 66 20 65 77 6c  zemmzl xnxhf ewl
0e90: 65 20 7a 6d 20 68 72 6c 69 70 64 6d 20 75 72 76  e zm hrlipdm urv
0ea0: 79 73 62 6e 79 6b 6b 20 6b 6e 22 0a 20 20 22 78  ysbnykk kn".  "x
0eb0: 6e 78 68 66 20 6a 6b 20 6a 6b 20 61 67 6d 63 6b  nxhf jk jk agmck
0ec0: 75 69 75 20 64 75 73 7a 65 6d 6d 7a 6c 20 6a 6b  uiu duszemmzl jk
0ed0: 20 7a 6d 20 7a 6d 20 6a 6b 20 76 67 73 6c 64 22   zm zm jk vgsld"
0ee0: 0a 20 20 22 7a 6d 20 7a 6d 20 7a 6d 20 6a 6b 20  .  "zm zm zm jk 
0ef0: 6a 6b 20 75 72 76 79 73 62 6e 79 6b 6b 20 6f 67  jk urvysbnykk og
0f00: 74 74 62 79 6b 76 74 20 7a 6d 20 7a 6d 20 6a 6b  ttbykvt zm zm jk
0f10: 22 0a 20 20 22 69 61 73 72 71 67 71 76 20 7a 6d  ".  "iasrqgqv zm
0f20: 20 61 7a 61 76 77 6d 20 7a 69 64 68 78 68 62 74   azavwm zidhxhbt
0f30: 76 20 6a 6b 20 6a 6b 20 6d 6a 70 61 76 6a 75 68  v jk jk mjpavjuh
0f40: 77 20 7a 6d 20 7a 6d 20 61 6a 6d 76 63 79 64 79  w zm zm ajmvcydy
0f50: 22 0a 20 20 22 72 67 70 7a 6d 6c 6e 6d 64 20 74  ".  "rgpzmlnmd t
0f60: 6d 74 20 6d 6a 70 61 76 6a 75 68 77 20 78 68 20  mt mjpavjuhw xh 
0f70: 69 67 6a 75 20 6a 6b 20 61 7a 61 76 77 6d 20 66  igju jk azavwm f
0f80: 69 62 6f 6b 64 72 79 20 76 67 73 6c 64 20 6f 66  ibokdry vgsld of
0f90: 6d 22 0a 20 20 22 7a 6d 20 6a 6b 20 76 67 73 6c  m".  "zm jk vgsl
0fa0: 64 20 6a 6b 20 78 68 20 6a 6b 20 63 73 6a 71 78  d jk xh jk csjqx
0fb0: 68 67 6a 20 64 72 69 72 20 6a 6b 20 70 6d 72 62  hgj drir jk pmrb
0fc0: 22 0a 20 20 22 78 68 20 6a 6b 20 6a 6b 20 7a 6d  ".  "xh jk jk zm
0fd0: 20 72 72 6b 78 20 64 75 73 7a 65 6d 6d 7a 6c 20   rrkx duszemmzl 
0fe0: 6d 6a 70 61 76 6a 75 68 77 20 78 6c 64 6c 70 79  mjpavjuhw xldlpy
0ff0: 20 69 67 6a 75 20 7a 6d 22 0a 20 20 22 6a 6b 20   igju zm".  "jk 
1000: 68 6b 66 6f 75 64 7a 66 74 71 20 7a 66 20 72 72  hkfoudzftq zf rr
1010: 6b 78 20 77 64 6d 79 20 6a 75 70 6b 20 6a 6b 20  kx wdmy jupk jk 
1020: 7a 6d 20 75 72 76 79 73 62 6e 79 6b 6b 20 6e 70  zm urvysbnykk np
1030: 79 77 67 64 76 67 7a 22 0a 20 20 22 7a 6d 20 6a  ywgdvgz".  "zm j
1040: 6b 20 7a 6d 20 7a 6d 20 7a 68 62 72 7a 61 64 62  k zm zm zhbrzadb
1050: 20 75 65 6e 76 62 6d 20 61 61 79 78 70 6d 76 65   uenvbm aayxpmve
1060: 20 75 72 76 79 73 62 6e 79 6b 6b 20 64 75 73 7a   urvysbnykk dusz
1070: 65 6d 6d 7a 6c 20 6a 6b 22 0a 20 20 22 75 65 6e  emmzl jk".  "uen
1080: 76 62 6d 20 6a 6b 20 7a 6d 20 66 78 77 20 78 68  vbm jk zm fxw xh
1090: 20 62 64 69 6c 77 6d 6a 77 20 6d 6a 70 61 76 6a   bdilwmjw mjpavj
10a0: 75 68 77 20 75 76 20 6a 6b 20 7a 6d 22 0a 20 20  uhw uv jk zm".  
10b0: 22 6e 6b 20 6a 6b 20 62 6e 68 63 20 70 61 68 6c  "nk jk bnhc pahl
10c0: 64 73 20 6a 6b 20 69 67 6a 75 20 64 7a 61 64 6e  ds jk igju dzadn
10d0: 71 7a 70 72 72 20 6a 6b 20 6a 6b 20 6a 6b 22 0a  qzprr jk jk jk".
10e0: 20 20 22 75 68 7a 71 20 75 76 20 7a 6d 20 64 75    "uhzq uv zm du
10f0: 73 7a 65 6d 6d 7a 6c 20 74 6c 71 69 78 20 6a 6b  szemmzl tlqix jk
1100: 20 6a 6b 20 78 68 20 6a 6b 20 7a 6d 22 0a 20 20   jk xh jk zm".  
1110: 22 6a 6b 20 7a 6d 20 61 67 6d 63 6b 75 69 75 20  "jk zm agmckuiu 
1120: 75 72 76 79 73 62 6e 79 6b 6b 20 6a 6b 20 6a 6b  urvysbnykk jk jk
1130: 20 7a 6d 20 7a 6d 20 6a 6b 20 6a 6b 22 0a 20 20   zm zm jk jk".  
1140: 22 61 7a 61 76 77 6d 20 6d 6a 70 61 76 6a 75 68  "azavwm mjpavjuh
1150: 77 20 6c 73 67 73 68 6e 20 74 72 71 64 20 78 6c  w lsgshn trqd xl
1160: 64 6c 70 79 20 6f 67 79 61 76 6a 76 76 20 61 67  dlpy ogyavjvv ag
1170: 6d 63 6b 75 69 75 20 72 79 76 77 77 68 6c 62 63  mckuiu ryvwwhlbc
1180: 20 6a 6b 20 6a 6b 22 0a 20 20 22 74 6d 74 20 6a   jk jk".  "tmt j
1190: 6b 20 7a 6b 20 7a 6d 20 61 7a 61 76 77 6d 20 6f  k zk zm azavwm o
11a0: 66 6d 20 61 63 70 67 69 6d 20 62 76 67 69 6d 6a  fm acpgim bvgimj
11b0: 69 6b 20 69 61 73 72 71 67 71 76 20 77 75 76 61  ik iasrqgqv wuva
11c0: 6a 68 77 71 7a 22 0a 20 20 22 69 67 6a 75 20 6f  jhwqz".  "igju o
11d0: 67 79 61 76 6a 76 76 20 78 72 62 64 61 6b 20 72  gyavjvv xrbdak r
11e0: 72 6b 78 20 66 69 62 6f 6b 64 72 79 20 7a 66 20  rkx fibokdry zf 
11f0: 75 6a 66 68 6d 72 6c 6c 71 20 6a 6b 20 7a 6d 20  ujfhmrllq jk zm 
1200: 68 78 67 77 76 69 62 22 0a 20 20 22 7a 6d 20 70  hxgwvib".  "zm p
1210: 61 68 6c 64 73 20 6a 6b 20 75 65 6e 76 62 6d 20  ahlds jk uenvbm 
1220: 61 61 79 78 70 6d 76 65 20 69 61 66 20 68 6d 6a  aayxpmve iaf hmj
1230: 66 20 78 70 68 20 76 6e 6c 79 76 74 6b 67 78 20  f xph vnlyvtkgx 
1240: 7a 6d 22 0a 20 20 22 6a 6b 20 78 6e 78 68 66 20  zm".  "jk xnxhf 
1250: 69 67 6a 75 20 6a 6b 20 78 68 20 6a 6b 20 6e 76  igju jk xh jk nv
1260: 66 61 73 66 68 20 7a 6d 20 6a 73 20 6a 6b 22 0a  fasfh zm js jk".
1270: 20 20 22 7a 6d 20 7a 6d 20 72 77 61 6a 20 69 67    "zm zm rwaj ig
1280: 6a 75 20 78 72 20 72 72 6b 78 20 78 6e 78 68 66  ju xr rrkx xnxhf
1290: 20 6e 76 66 61 73 66 68 20 73 6b 78 62 73 71 7a   nvfasfh skxbsqz
12a0: 76 6d 74 20 78 61 74 62 78 65 71 71 22 0a 20 20  vmt xatbxeqq".  
12b0: 22 76 67 73 6c 64 20 7a 6d 20 75 6a 66 68 6d 72  "vgsld zm ujfhmr
12c0: 6c 6c 71 20 75 68 7a 71 20 6f 67 79 61 76 6a 76  llq uhzq ogyavjv
12d0: 76 20 6e 73 61 62 20 61 7a 61 76 77 6d 20 7a 6d  v nsab azavwm zm
12e0: 20 76 67 73 6c 64 20 6a 6d 66 69 71 68 77 6e 6a   vgsld jmfiqhwnj
12f0: 67 22 0a 20 20 22 79 6d 6a 6f 79 6d 20 64 75 73  g".  "ymjoym dus
1300: 7a 65 6d 6d 7a 6c 20 75 72 76 79 73 62 6e 79 6b  zemmzl urvysbnyk
1310: 6b 20 61 7a 61 76 77 6d 20 6a 6b 20 6a 6d 66 69  k azavwm jk jmfi
1320: 71 68 77 6e 6a 67 20 62 75 20 71 63 64 7a 69 71  qhwnjg bu qcdziq
1330: 6f 6d 71 6b 20 76 6e 6c 79 76 74 6b 67 78 22 0a  omqk vnlyvtkgx".
1340: 20 20 22 7a 6d 20 6e 62 69 6c 71 63 6e 7a 20 64    "zm nbilqcnz d
1350: 7a 61 64 6e 71 7a 70 72 72 20 78 68 20 62 6b 66  zadnqzprr xh bkf
1360: 67 7a 73 78 6e 20 75 72 76 79 73 62 6e 79 6b 6b  gzsxn urvysbnykk
1370: 20 78 72 75 6a 66 7a 78 71 66 20 7a 6d 20 7a 66   xrujfzxqf zm zf
1380: 20 61 67 6d 63 6b 75 69 75 22 0a 20 20 22 6a 6b   agmckuiu".  "jk
1390: 20 75 72 76 79 73 62 6e 79 6b 6b 20 6e 76 66 61   urvysbnykk nvfa
13a0: 73 66 68 20 7a 66 20 78 68 20 7a 6d 20 7a 6d 20  sfh zf xh zm zm 
13b0: 71 63 64 7a 69 71 6f 6d 71 6b 20 71 76 78 74 63  qcdziqomqk qvxtc
13c0: 6c 67 20 77 64 6d 79 22 0a 20 20 22 66 69 62 6f  lg wdmy".  "fibo
13d0: 6b 64 72 79 20 6a 6b 20 75 72 76 79 73 62 6e 79  kdry jk urvysbny
13e0: 6b 6b 20 6a 6b 20 78 72 20 6f 73 66 66 20 7a 6d  kk jk xr osff zm
13f0: 20 63 76 6e 6e 73 6c 20 7a 6d 20 76 67 73 6c 64   cvnnsl zm vgsld
1400: 22 0a 20 20 22 6a 6b 20 6d 6a 70 61 76 6a 75 68  ".  "jk mjpavjuh
1410: 77 20 68 6b 66 6f 75 64 7a 66 74 71 20 6a 6b 20  w hkfoudzftq jk 
1420: 7a 6d 20 78 68 20 78 71 66 20 75 72 76 79 73 62  zm xh xqf urvysb
1430: 6e 79 6b 6b 20 6a 6b 20 69 61 73 72 71 67 71 76  nykk jk iasrqgqv
1440: 22 0a 20 20 22 6a 6b 20 63 73 6a 71 78 68 67 6a  ".  "jk csjqxhgj
1450: 20 64 75 73 7a 65 6d 6d 7a 6c 20 69 61 73 72 71   duszemmzl iasrq
1460: 67 71 76 20 61 61 79 78 70 6d 76 65 20 7a 6d 20  gqv aayxpmve zm 
1470: 62 72 73 75 6f 71 77 77 20 6a 6b 20 71 70 6d 68  brsuoqww jk qpmh
1480: 74 76 6c 20 77 6c 75 76 67 73 77 22 0a 20 20 22  tvl wluvgsw".  "
1490: 6a 6b 20 6d 6a 20 61 7a 61 76 77 6d 20 6a 6b 20  jk mj azavwm jk 
14a0: 7a 6d 20 6a 6e 20 64 7a 61 64 6e 71 7a 70 72 72  zm jn dzadnqzprr
14b0: 20 7a 6d 20 6a 6b 20 75 68 7a 71 22 0a 20 20 22   zm jk uhzq".  "
14c0: 7a 6b 20 78 71 66 20 6a 75 70 6b 20 66 78 77 20  zk xqf jupk fxw 
14d0: 6e 62 69 6c 71 63 6e 7a 20 7a 6d 20 6a 6b 20 6a  nbilqcnz zm jk j
14e0: 63 70 69 77 6a 20 74 7a 6e 6c 76 62 66 63 76 20  cpiwj tznlvbfcv 
14f0: 6e 76 66 61 73 66 68 22 0a 20 20 22 6a 6b 20 6a  nvfasfh".  "jk j
1500: 63 70 69 77 6a 20 7a 6d 20 78 6e 78 68 66 20 7a  cpiwj zm xnxhf z
1510: 6d 20 6d 6a 70 61 76 6a 75 68 77 20 6d 6a 20 64  m mjpavjuhw mj d
1520: 72 69 72 20 70 61 20 70 76 6a 72 6a 6c 61 73 22  rir pa pvjrjlas"
1530: 0a 20 20 22 64 75 73 7a 65 6d 6d 7a 6c 20 64 7a  .  "duszemmzl dz
1540: 61 64 6e 71 7a 70 72 72 20 6a 6b 20 73 77 63 20  adnqzprr jk swc 
1550: 64 75 73 7a 65 6d 6d 7a 6c 20 74 6d 74 20 6a 6b  duszemmzl tmt jk
1560: 20 6a 6b 20 70 61 68 6c 64 73 20 6a 6b 22 0a 20   jk pahlds jk". 
1570: 20 22 7a 6b 20 7a 6d 20 6a 6b 20 7a 6d 20 7a 6d   "zk zm jk zm zm
1580: 20 65 63 7a 6b 6a 62 6c 75 20 7a 6d 20 68 69 20   eczkjblu zm hi 
1590: 70 6d 72 62 20 6a 6b 22 0a 20 20 22 61 7a 61 76  pmrb jk".  "azav
15a0: 77 6d 20 7a 6d 20 69 7a 20 61 67 6d 63 6b 75 69  wm zm iz agmckui
15b0: 75 20 6a 6b 20 73 6e 74 6b 20 6a 6b 20 64 75 73  u jk sntk jk dus
15c0: 7a 65 6d 6d 7a 6c 20 64 75 73 7a 65 6d 6d 7a 6c  zemmzl duszemmzl
15d0: 20 7a 6d 22 0a 20 20 22 6a 6b 20 7a 6d 20 6a 6b   zm".  "jk zm jk
15e0: 20 65 63 7a 6b 6a 62 6c 75 20 75 72 76 79 73 62   eczkjblu urvysb
15f0: 6e 79 6b 6b 20 73 6b 20 67 6e 6c 20 6a 6b 20 74  nykk sk gnl jk t
1600: 74 76 67 66 20 68 6d 6a 66 22 0a 20 20 22 6a 6b  tvgf hmjf".  "jk
1610: 20 62 6e 68 63 20 6a 6a 72 78 70 6a 6b 62 20 6d   bnhc jjrxpjkb m
1620: 6a 70 61 76 6a 75 68 77 20 66 69 62 6f 6b 64 72  jpavjuhw fibokdr
1630: 79 20 69 67 6a 75 20 6a 6b 20 7a 6d 20 7a 6d 20  y igju jk zm zm 
1640: 78 68 22 0a 20 20 22 77 78 65 20 6f 67 74 74 62  xh".  "wxe ogttb
1650: 79 6b 76 74 20 75 68 7a 71 20 78 72 20 69 61 66  ykvt uhzq xr iaf
1660: 20 7a 66 20 75 72 76 79 73 62 6e 79 6b 6b 20 61   zf urvysbnykk a
1670: 61 79 78 70 6d 76 65 20 6f 61 63 61 78 67 6a 6f  ayxpmve oacaxgjo
1680: 6f 20 6d 6a 70 61 76 6a 75 68 77 22 0a 20 20 22  o mjpavjuhw".  "
1690: 67 61 7a 72 74 20 6a 6b 20 65 70 68 6b 6e 6f 6e  gazrt jk ephknon
16a0: 71 20 6d 79 6a 70 20 75 65 6e 76 62 6d 20 77 75  q myjp uenvbm wu
16b0: 76 61 6a 68 77 71 7a 20 6a 6b 20 7a 6d 20 78 6e  vajhwqz jk zm xn
16c0: 78 68 66 20 6e 76 66 61 73 66 68 22 0a 20 20 22  xhf nvfasfh".  "
16d0: 7a 6d 20 61 61 79 78 70 6d 76 65 20 63 73 6a 71  zm aayxpmve csjq
16e0: 78 68 67 6a 20 78 6e 78 68 66 20 78 72 20 6a 6b  xhgj xnxhf xr jk
16f0: 20 61 61 79 78 70 6d 76 65 20 78 6e 78 68 66 20   aayxpmve xnxhf 
1700: 7a 6d 20 7a 6d 22 0a 20 20 22 73 6f 6b 63 79 66  zm zm".  "sokcyf
1710: 20 7a 6d 20 6f 67 79 61 76 6a 76 76 20 6a 6b 20   zm ogyavjvv jk 
1720: 7a 6d 20 66 69 62 6f 6b 64 72 79 20 7a 6d 20 6a  zm fibokdry zm j
1730: 6b 20 69 67 6a 75 20 69 67 6a 75 22 0a 20 20 22  k igju igju".  "
1740: 76 67 73 6c 64 20 62 76 67 69 6d 6a 69 6b 20 78  vgsld bvgimjik x
1750: 75 70 72 74 6c 79 6c 65 20 6a 6b 20 61 6b 6d 69  uprtlyle jk akmi
1760: 6b 72 71 79 74 20 6a 6b 20 61 61 79 78 70 6d 76  krqyt jk aayxpmv
1770: 65 20 68 6b 66 6f 75 64 7a 66 74 71 20 64 64 6a  e hkfoudzftq ddj
1780: 6a 20 69 74 68 74 69 72 22 0a 20 20 22 7a 6d 20  j ithtir".  "zm 
1790: 75 68 7a 71 20 6f 76 6b 79 65 76 6c 67 76 20 7a  uhzq ovkyevlgv z
17a0: 6b 20 75 65 6e 76 62 6d 20 63 73 6a 71 78 68 67  k uenvbm csjqxhg
17b0: 6a 20 6a 6b 20 76 67 73 6c 64 20 70 67 79 62 73  j jk vgsld pgybs
17c0: 20 6a 6b 22 0a 20 20 22 7a 6d 20 61 67 6d 63 6b   jk".  "zm agmck
17d0: 75 69 75 20 7a 65 78 68 20 66 69 62 6f 6b 64 72  uiu zexh fibokdr
17e0: 79 20 6a 6b 20 75 68 7a 71 20 62 75 20 74 75 67  y jk uhzq bu tug
17f0: 66 6c 69 78 6f 65 78 20 78 6e 78 68 66 20 73 6b  flixoex xnxhf sk
1800: 22 0a 20 20 22 7a 6d 20 7a 66 20 75 65 6e 76 62  ".  "zm zf uenvb
1810: 6d 20 6a 6b 20 61 7a 61 76 77 6d 20 7a 6d 20 7a  m jk azavwm zm z
1820: 6d 20 61 67 6d 63 6b 75 69 75 20 7a 6d 20 6a 6b  m agmckuiu zm jk
1830: 22 0a 20 20 22 72 72 6b 78 20 6a 6b 20 7a 66 20  ".  "rrkx jk zf 
1840: 6a 74 20 7a 6d 20 6f 61 63 61 78 67 6a 6f 6f 20  jt zm oacaxgjoo 
1850: 66 69 62 6f 6b 64 72 79 20 77 64 6d 79 20 69 67  fibokdry wdmy ig
1860: 6a 75 20 63 73 6a 71 78 68 67 6a 22 0a 20 20 22  ju csjqxhgj".  "
1870: 68 69 20 69 67 6a 75 20 7a 6d 20 6a 6b 20 7a 69  hi igju zm jk zi
1880: 64 68 78 68 62 74 76 20 64 7a 61 64 6e 71 7a 70  dhxhbtv dzadnqzp
1890: 72 72 20 6a 6b 20 6a 6b 20 74 72 71 64 20 64 75  rr jk jk trqd du
18a0: 73 7a 65 6d 6d 7a 6c 22 0a 20 20 22 7a 6d 20 7a  szemmzl".  "zm z
18b0: 6d 20 6d 6a 70 61 76 6a 75 68 77 20 78 72 62 64  m mjpavjuhw xrbd
18c0: 61 6b 20 71 72 76 62 6a 72 75 63 20 6a 6b 20 71  ak qrvbjruc jk q
18d0: 7a 7a 71 64 78 71 20 67 75 77 71 20 63 76 6e 6e  zzqdxq guwq cvnn
18e0: 73 6c 20 7a 6d 22 0a 20 20 22 69 74 68 74 69 72  sl zm".  "ithtir
18f0: 20 6a 6b 20 6a 6b 20 71 63 64 7a 69 71 6f 6d 71   jk jk qcdziqomq
1900: 6b 20 7a 6d 20 66 61 72 6c 65 68 64 68 71 20 7a  k zm farlehdhq z
1910: 6d 20 7a 6d 20 78 72 62 64 61 6b 20 6a 6b 22 0a  m zm xrbdak jk".
1920: 20 20 22 69 78 66 69 70 6b 20 63 73 6a 71 78 68    "ixfipk csjqxh
1930: 67 6a 20 61 7a 61 76 77 6d 20 73 6f 6b 63 79 66  gj azavwm sokcyf
1940: 20 74 74 76 67 66 20 76 67 73 6c 64 20 6a 6b 20   ttvgf vgsld jk 
1950: 73 6b 20 78 68 20 7a 6b 22 0a 20 20 22 6e 76 66  sk xh zk".  "nvf
1960: 61 73 66 68 20 61 7a 61 76 77 6d 20 7a 6d 20 7a  asfh azavwm zm z
1970: 6d 20 7a 6d 20 66 78 77 20 6e 76 66 61 73 66 68  m zm fxw nvfasfh
1980: 20 7a 6b 20 67 6e 6c 20 74 72 71 64 22 0a 20 20   zk gnl trqd".  
1990: 22 7a 6d 20 66 69 62 6f 6b 64 72 79 20 63 73 6a  "zm fibokdry csj
19a0: 71 78 68 67 6a 20 6f 66 6d 20 64 7a 61 64 6e 71  qxhgj ofm dzadnq
19b0: 7a 70 72 72 20 6a 6b 20 61 6b 6d 69 6b 72 71 79  zprr jk akmikrqy
19c0: 74 20 6f 72 70 66 61 77 70 78 20 64 75 73 7a 65  t orpfawpx dusze
19d0: 6d 6d 7a 6c 20 76 77 71 22 0a 20 20 22 63 73 6a  mmzl vwq".  "csj
19e0: 71 78 68 67 6a 20 6a 6b 20 6a 6b 20 76 67 73 6c  qxhgj jk jk vgsl
19f0: 64 20 75 72 76 79 73 62 6e 79 6b 6b 20 6a 6b 20  d urvysbnykk jk 
1a00: 6e 78 75 6d 20 6a 6b 20 6a 6b 20 6e 78 75 6d 22  nxum jk jk nxum"
1a10: 0a 20 20 22 7a 6d 20 68 6b 66 6f 75 64 7a 66 74  .  "zm hkfoudzft
1a20: 71 20 6a 6b 20 72 79 76 77 77 68 6c 62 63 20 6d  q jk ryvwwhlbc m
1a30: 6a 70 61 76 6a 75 68 77 20 65 70 68 6b 6e 6f 6e  jpavjuhw ephknon
1a40: 71 20 6a 6b 20 7a 6d 20 6f 67 79 61 76 6a 76 76  q jk zm ogyavjvv
1a50: 20 7a 6d 22 0a 20 20 22 6c 77 61 20 68 69 20 78   zm".  "lwa hi x
1a60: 6e 78 68 66 20 71 64 79 65 72 62 77 73 20 7a 6b  nxhf qdyerbws zk
1a70: 20 6e 6a 74 63 20 6a 6b 20 75 68 7a 71 20 7a 6d   njtc jk uhzq zm
1a80: 20 6a 6b 22 0a 20 20 22 74 72 71 64 20 7a 6d 20   jk".  "trqd zm 
1a90: 64 7a 61 64 6e 71 7a 70 72 72 20 7a 6d 20 75 72  dzadnqzprr zm ur
1aa0: 76 79 73 62 6e 79 6b 6b 20 6a 6b 20 6c 73 7a 20  vysbnykk jk lsz 
1ab0: 6a 6b 20 6d 6a 70 61 76 6a 75 68 77 20 63 6d 6e  jk mjpavjuhw cmn
1ac0: 6e 6b 6e 61 22 0a 20 20 22 64 75 73 7a 65 6d 6d  nkna".  "duszemm
1ad0: 7a 6c 20 7a 6b 20 6a 6b 20 6a 6b 20 66 69 62 6f  zl zk jk jk fibo
1ae0: 6b 64 72 79 20 6a 73 65 75 68 6a 6e 7a 6f 20 7a  kdry jseuhjnzo z
1af0: 6d 20 61 61 79 78 70 6d 76 65 20 7a 6b 20 6a 6b  m aayxpmve zk jk
1b00: 22 0a 20 20 22 66 69 62 6f 6b 64 72 79 20 6a 6b  ".  "fibokdry jk
1b10: 20 73 76 69 71 20 71 76 78 74 63 6c 67 20 77 64   sviq qvxtclg wd
1b20: 6d 79 20 6a 6b 20 64 6f 69 77 61 76 68 77 77 6f  my jk doiwavhwwo
1b30: 20 7a 65 78 68 20 6a 6b 20 7a 6d 22 0a 20 20 22   zexh jk zm".  "
1b40: 6a 75 70 6b 20 7a 6d 20 78 68 20 6a 6b 20 6d 6a  jupk zm xh jk mj
1b50: 70 61 76 6a 75 68 77 20 7a 6d 20 6a 6b 20 6e 73  pavjuhw zm jk ns
1b60: 61 62 20 6e 70 79 77 67 64 76 67 7a 20 64 75 73  ab npywgdvgz dus
1b70: 7a 65 6d 6d 7a 6c 22 0a 20 20 22 7a 6d 20 69 67  zemmzl".  "zm ig
1b80: 6a 75 20 7a 6d 20 7a 6d 20 6e 76 66 61 73 66 68  ju zm zm nvfasfh
1b90: 20 65 68 20 68 6b 66 6f 75 64 7a 66 74 71 20 66   eh hkfoudzftq f
1ba0: 69 62 6f 6b 64 72 79 20 66 78 77 20 78 6b 62 6c  ibokdry fxw xkbl
1bb0: 66 22 0a 20 20 22 6a 6b 20 7a 6d 20 6a 6b 20 6a  f".  "jk zm jk j
1bc0: 6b 20 7a 6d 20 78 68 20 7a 6b 20 61 62 74 68 6e  k zm xh zk abthn
1bd0: 7a 63 76 20 7a 66 20 63 73 6a 71 78 68 67 6a 22  zcv zf csjqxhgj"
1be0: 0a 20 20 22 7a 6d 20 7a 6d 20 6a 6b 20 6e 6b 61  .  "zm zm jk nka
1bf0: 6f 74 6d 20 75 72 76 79 73 62 6e 79 6b 6b 20 73  otm urvysbnykk s
1c00: 62 70 74 6f 61 20 62 71 20 6a 6b 20 6b 74 78 64  bptoa bq jk ktxd
1c10: 74 79 20 75 62 77 72 66 71 6e 62 6a 66 22 0a 20  ty ubwrfqnbjf". 
1c20: 20 22 6e 76 66 61 73 66 68 20 61 61 79 78 70 6d   "nvfasfh aayxpm
1c30: 76 65 20 78 64 63 75 7a 20 7a 6d 20 74 75 67 66  ve xdcuz zm tugf
1c40: 6c 69 78 6f 65 78 20 6a 63 70 69 77 6a 20 7a 6d  lixoex jcpiwj zm
1c50: 20 6d 6a 70 61 76 6a 75 68 77 20 66 69 62 6f 6b   mjpavjuhw fibok
1c60: 64 72 79 20 64 6f 69 77 61 76 68 77 77 6f 22 0a  dry doiwavhwwo".
1c70: 20 20 22 69 61 66 20 6a 6b 20 6d 6a 70 61 76 6a    "iaf jk mjpavj
1c80: 75 68 77 20 7a 6d 20 64 75 73 7a 65 6d 6d 7a 6c  uhw zm duszemmzl
1c90: 20 6a 6b 20 6a 6b 20 75 68 7a 71 20 70 61 68 6c   jk jk uhzq pahl
1ca0: 64 73 20 66 69 62 6f 6b 64 72 79 22 0a 20 20 22  ds fibokdry".  "
1cb0: 64 64 6a 6a 20 7a 6b 20 61 7a 61 76 77 6d 20 6a  ddjj zk azavwm j
1cc0: 6b 20 73 77 63 20 7a 6d 20 67 6a 74 65 78 6b 76  k swc zm gjtexkv
1cd0: 20 6a 6b 20 78 68 20 6a 6b 22 0a 20 20 22 69 67   jk xh jk".  "ig
1ce0: 6a 75 20 6a 6b 20 63 73 6a 71 78 68 67 6a 20 7a  ju jk csjqxhgj z
1cf0: 6d 20 6a 6b 20 64 7a 61 64 6e 71 7a 70 72 72 20  m jk dzadnqzprr 
1d00: 64 75 73 7a 65 6d 6d 7a 6c 20 75 6c 76 63 62 76  duszemmzl ulvcbv
1d10: 20 6a 6b 20 6a 6b 22 0a 20 20 22 6a 6b 20 66 69   jk jk".  "jk fi
1d20: 62 6f 6b 64 72 79 20 7a 6d 20 63 73 6a 71 78 68  bokdry zm csjqxh
1d30: 67 6a 20 6a 6e 20 7a 6d 20 7a 6d 20 7a 6d 20 7a  gj jn zm zm zm z
1d40: 66 20 75 68 7a 71 22 0a 20 20 22 64 75 73 7a 65  f uhzq".  "dusze
1d50: 6d 6d 7a 6c 20 6a 6b 20 78 6b 62 6c 66 20 7a 6b  mmzl jk xkblf zk
1d60: 20 68 72 6c 69 70 64 6d 20 61 61 79 78 70 6d 76   hrlipdm aayxpmv
1d70: 65 20 75 65 6e 76 62 6d 20 75 68 7a 71 20 6a 6b  e uenvbm uhzq jk
1d80: 20 7a 66 22 0a 20 20 22 64 7a 61 64 6e 71 7a 70   zf".  "dzadnqzp
1d90: 72 72 20 6a 6b 20 7a 6d 20 7a 64 75 20 6e 76 66  rr jk zm zdu nvf
1da0: 61 73 66 68 20 7a 6d 20 6a 6b 20 75 72 76 79 73  asfh zm jk urvys
1db0: 62 6e 79 6b 6b 20 68 6d 6a 66 20 6a 6b 22 0a 20  bnykk hmjf jk". 
1dc0: 20 22 6a 6b 20 61 61 79 78 70 6d 76 65 20 61 73   "jk aayxpmve as
1dd0: 65 72 72 64 78 6d 20 61 63 70 67 69 6d 20 66 69  errdxm acpgim fi
1de0: 62 6f 6b 64 72 79 20 6a 6b 20 64 72 69 72 20 77  bokdry jk drir w
1df0: 78 65 20 62 72 73 75 6f 71 77 77 20 72 72 6b 78  xe brsuoqww rrkx
1e00: 22 0a 20 20 22 75 68 7a 71 20 63 73 6a 71 78 68  ".  "uhzq csjqxh
1e10: 67 6a 20 6e 76 66 61 73 66 68 20 6a 6b 20 72 72  gj nvfasfh jk rr
1e20: 6b 78 20 71 62 61 6d 6f 6b 20 74 72 71 64 20 75  kx qbamok trqd u
1e30: 65 6e 76 62 6d 20 73 6e 74 6b 20 7a 6d 22 0a 20  envbm sntk zm". 
1e40: 20 22 70 73 20 61 7a 61 76 77 6d 20 7a 6b 68 64   "ps azavwm zkhd
1e50: 76 6b 77 20 6a 6b 20 7a 6d 20 6a 6b 20 6a 6b 20  vkw jk zm jk jk 
1e60: 7a 6d 20 63 73 6a 71 78 68 67 6a 20 78 65 64 6c  zm csjqxhgj xedl
1e70: 72 63 66 6f 22 0a 20 20 22 6a 6b 20 6a 6b 20 6f  rcfo".  "jk jk o
1e80: 67 79 61 76 6a 76 76 20 6a 6b 20 7a 6d 20 66 61  gyavjvv jk zm fa
1e90: 72 6c 65 68 64 68 71 20 64 75 73 7a 65 6d 6d 7a  rlehdhq duszemmz
1ea0: 6c 20 6a 6b 20 61 67 69 74 67 78 61 6d 78 65 20  l jk agitgxamxe 
1eb0: 6a 6b 22 0a 20 20 22 71 7a 7a 71 64 78 71 20 72  jk".  "qzzqdxq r
1ec0: 77 61 6a 20 6a 6b 20 6a 6b 20 7a 6d 20 78 71 66  waj jk jk zm xqf
1ed0: 20 6a 6b 20 75 65 6e 76 62 6d 20 6a 6b 20 7a 6b   jk uenvbm jk zk
1ee0: 22 0a 20 20 22 7a 6d 20 68 78 67 77 76 69 62 20  ".  "zm hxgwvib 
1ef0: 61 6b 6d 69 6b 72 71 79 74 20 7a 66 20 61 67 6d  akmikrqyt zf agm
1f00: 63 6b 75 69 75 20 75 65 6e 76 62 6d 20 62 71 20  ckuiu uenvbm bq 
1f10: 6e 70 79 77 67 64 76 67 7a 20 61 7a 61 76 77 6d  npywgdvgz azavwm
1f20: 20 6a 6b 22 0a 20 20 22 7a 66 20 6a 6d 66 69 71   jk".  "zf jmfiq
1f30: 68 77 6e 6a 67 20 6a 73 20 69 67 6a 75 20 7a 6d  hwnjg js igju zm
1f40: 20 61 61 79 78 70 6d 76 65 20 7a 6d 20 6d 62 78   aayxpmve zm mbx
1f50: 6e 6c 6a 6f 6d 69 76 20 63 73 6a 71 78 68 67 6a  nljomiv csjqxhgj
1f60: 20 6e 76 66 61 73 66 68 22 0a 20 20 22 7a 6d 20   nvfasfh".  "zm 
1f70: 6a 6b 20 6a 6b 20 67 61 7a 72 74 20 6a 6b 20 6a  jk jk gazrt jk j
1f80: 6b 20 6c 6b 63 20 6a 6b 20 6e 76 66 61 73 66 68  k lkc jk nvfasfh
1f90: 20 6a 6b 22 0a 20 20 22 78 6c 64 6c 70 79 20 6f   jk".  "xldlpy o
1fa0: 72 70 66 61 77 70 78 20 7a 6b 68 64 76 6b 77 20  rpfawpx zkhdvkw 
1fb0: 6a 6b 20 7a 6d 20 69 67 6a 75 20 7a 6d 20 75 72  jk zm igju zm ur
1fc0: 76 79 73 62 6e 79 6b 6b 20 64 7a 61 64 6e 71 7a  vysbnykk dzadnqz
1fd0: 70 72 72 20 6d 62 78 6e 6c 6a 6f 6d 69 76 22 0a  prr mbxnljomiv".
1fe0: 20 20 22 75 72 76 79 73 62 6e 79 6b 6b 20 6a 6b    "urvysbnykk jk
1ff0: 20 7a 6b 20 69 67 6a 75 20 7a 6d 20 75 65 6e 76   zk igju zm uenv
2000: 62 6d 20 6a 6b 20 7a 6d 20 69 74 68 74 69 72 20  bm jk zm ithtir 
2010: 6a 6b 22 0a 20 20 22 7a 6d 20 7a 6b 20 7a 6d 20  jk".  "zm zk zm 
2020: 7a 66 20 6f 66 6d 20 7a 6d 20 78 64 63 75 7a 20  zf ofm zm xdcuz 
2030: 64 7a 61 64 6e 71 7a 70 72 72 20 7a 6d 20 76 67  dzadnqzprr zm vg
2040: 73 6c 64 22 0a 20 20 22 73 62 70 74 6f 61 20 6a  sld".  "sbptoa j
2050: 6b 20 74 75 67 66 6c 69 78 6f 65 78 20 6a 6b 20  k tugflixoex jk 
2060: 7a 6d 20 7a 6d 20 76 67 73 6c 64 20 7a 6d 20 78  zm zm vgsld zm x
2070: 68 20 7a 6d 22 0a 20 20 22 75 68 7a 71 20 6a 6b  h zm".  "uhzq jk
2080: 20 7a 6b 20 65 76 76 69 76 6f 20 76 67 73 6c 64   zk evvivo vgsld
2090: 20 76 6e 69 71 6e 75 79 6e 76 66 20 61 67 6d 63   vniqnuynvf agmc
20a0: 6b 75 69 75 20 6a 6b 20 7a 6d 20 7a 6d 22 0a 20  kuiu jk zm zm". 
20b0: 20 22 7a 6d 20 6e 76 66 61 73 66 68 20 7a 6d 20   "zm nvfasfh zm 
20c0: 7a 6d 20 7a 6d 20 61 62 74 68 6e 7a 63 76 20 75  zm zm abthnzcv u
20d0: 65 6e 76 62 6d 20 6a 6b 20 7a 6b 20 64 7a 61 64  envbm jk zk dzad
20e0: 6e 71 7a 70 72 72 22 0a 20 20 22 7a 6d 20 61 7a  nqzprr".  "zm az
20f0: 61 76 77 6d 20 69 67 6a 75 20 71 7a 7a 71 64 78  avwm igju qzzqdx
2100: 71 20 6a 6b 20 78 6e 78 68 66 20 61 62 74 68 6e  q jk xnxhf abthn
2110: 7a 63 76 20 6a 6b 20 6e 76 66 61 73 66 68 20 7a  zcv jk nvfasfh z
2120: 6d 22 0a 20 20 22 71 62 61 6d 6f 6b 20 66 78 77  m".  "qbamok fxw
2130: 20 76 67 73 6c 64 20 69 67 6a 75 20 63 6d 6e 6e   vgsld igju cmnn
2140: 6b 6e 61 20 78 6e 78 68 66 20 76 6e 69 71 6e 75  kna xnxhf vniqnu
2150: 79 6e 76 66 20 7a 6b 20 78 68 20 7a 6d 22 0a 20  ynvf zk xh zm". 
2160: 20 22 6e 76 66 61 73 66 68 20 7a 6b 20 7a 6d 20   "nvfasfh zk zm 
2170: 6d 6a 70 61 76 6a 75 68 77 20 64 7a 61 64 6e 71  mjpavjuhw dzadnq
2180: 7a 70 72 72 20 6a 6b 20 6a 6b 20 64 75 73 7a 65  zprr jk jk dusze
2190: 6d 6d 7a 6c 20 78 6c 64 6c 70 79 20 6e 76 66 61  mmzl xldlpy nvfa
21a0: 73 66 68 22 0a 20 20 22 78 6e 78 68 66 20 73 76  sfh".  "xnxhf sv
21b0: 69 71 20 6e 73 61 62 20 6e 70 79 77 67 64 76 67  iq nsab npywgdvg
21c0: 7a 20 6f 73 66 66 20 76 67 73 6c 64 20 66 61 72  z osff vgsld far
21d0: 6c 65 68 64 68 71 20 66 69 62 6f 6b 64 72 79 20  lehdhq fibokdry 
21e0: 77 6a 62 6b 68 7a 73 61 20 68 68 61 63 22 0a 20  wjbkhzsa hhac". 
21f0: 20 22 7a 6d 20 61 7a 61 76 77 6d 20 73 63 70 67   "zm azavwm scpg
2200: 6e 61 20 6a 6b 20 6a 6b 20 62 71 20 6a 6b 20 64  na jk jk bq jk d
2210: 75 73 7a 65 6d 6d 7a 6c 20 66 69 62 6f 6b 64 72  uszemmzl fibokdr
2220: 79 20 6f 76 6b 79 65 76 6c 67 76 22 0a 20 20 22  y ovkyevlgv".  "
2230: 63 73 6a 71 78 68 67 6a 20 7a 6d 20 6a 6b 20 6a  csjqxhgj zm jk j
2240: 6b 20 64 75 73 7a 65 6d 6d 7a 6c 20 7a 6b 20 78  k duszemmzl zk x
2250: 68 20 7a 6d 20 6a 6b 20 7a 66 22 0a 20 20 22 75  h zm jk zf".  "u
2260: 72 76 79 73 62 6e 79 6b 6b 20 64 7a 61 64 6e 71  rvysbnykk dzadnq
2270: 7a 70 72 72 20 63 73 6a 71 78 68 67 6a 20 6d 6a  zprr csjqxhgj mj
2280: 70 61 76 6a 75 68 77 20 75 62 77 72 66 71 6e 62  pavjuhw ubwrfqnb
2290: 6a 66 20 6e 6b 61 6f 74 6d 20 6a 6b 20 6a 6b 20  jf nkaotm jk jk 
22a0: 7a 6d 20 64 72 69 72 22 0a 20 20 22 6e 76 66 61  zm drir".  "nvfa
22b0: 73 66 68 20 78 68 20 69 67 6a 75 20 7a 6d 20 77  sfh xh igju zm w
22c0: 6c 75 76 67 73 77 20 6a 6b 20 7a 6d 20 73 72 77  luvgsw jk zm srw
22d0: 77 6e 65 7a 71 6b 20 65 77 6c 65 20 6f 76 6e 71  wnezqk ewle ovnq
22e0: 22 0a 20 20 22 6a 6b 20 6e 76 66 61 73 66 68 20  ".  "jk nvfasfh 
22f0: 65 68 20 6b 74 78 64 74 79 20 75 72 76 79 73 62  eh ktxdty urvysb
2300: 6e 79 6b 6b 20 76 67 73 6c 64 20 7a 6d 20 6a 6b  nykk vgsld zm jk
2310: 20 65 68 20 75 65 6e 76 62 6d 22 0a 20 20 22 6f   eh uenvbm".  "o
2320: 72 70 66 61 77 70 78 20 70 61 68 6c 64 73 20 6a  rpfawpx pahlds j
2330: 6b 20 75 68 7a 71 20 68 69 20 7a 6d 20 7a 6d 20  k uhzq hi zm zm 
2340: 7a 66 20 6a 6b 20 64 7a 61 64 6e 71 7a 70 72 72  zf jk dzadnqzprr
2350: 22 0a 20 20 22 73 72 77 77 6e 65 7a 71 6b 20 63  ".  "srwwnezqk c
2360: 73 6a 71 78 68 67 6a 20 72 62 77 7a 75 66 20 6e  sjqxhgj rbwzuf n
2370: 76 66 61 73 66 68 20 6a 63 70 69 77 6a 20 78 6c  vfasfh jcpiwj xl
2380: 64 6c 70 79 20 6e 76 66 61 73 66 68 20 6a 6b 20  dlpy nvfasfh jk 
2390: 76 67 73 6c 64 20 77 6a 79 62 78 6d 69 65 6b 69  vgsld wjybxmieki
23a0: 22 0a 7d 0a 0a 70 72 6f 63 20 61 64 64 5f 65 6d  ".}..proc add_em
23b0: 70 74 79 5f 72 65 63 6f 72 64 73 20 7b 6e 7d 20  pty_records {n} 
23c0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 42 45 47 49  {.  execsql BEGI
23d0: 4e 0a 20 20 66 6f 72 20 7b 73 65 74 20 69 20 30  N.  for {set i 0
23e0: 7d 20 7b 24 69 20 3c 20 24 6e 7d 20 7b 69 6e 63  } {$i < $n} {inc
23f0: 72 20 69 7d 20 7b 0a 20 20 20 20 65 78 65 63 73  r i} {.    execs
2400: 71 6c 20 7b 20 49 4e 53 45 52 54 20 49 4e 54 4f  ql { INSERT INTO
2410: 20 74 31 20 56 41 4c 55 45 53 28 27 27 29 20 7d   t1 VALUES('') }
2420: 0a 20 20 7d 0a 20 20 65 78 65 63 73 71 6c 20 43  .  }.  execsql C
2430: 4f 4d 4d 49 54 0a 7d 0a 0a 0a 23 73 65 74 20 65  OMMIT.}...#set e
2440: 20 5b 6c 69 73 74 5d 0a 23 66 6f 72 65 61 63 68   [list].#foreach
2450: 20 64 20 24 64 61 74 61 20 7b 73 65 74 20 65 20   d $data {set e 
2460: 5b 63 6f 6e 63 61 74 20 24 65 20 24 64 5d 7d 0a  [concat $e $d]}.
2470: 23 70 75 74 73 20 5b 6c 73 6f 72 74 20 2d 75 6e  #puts [lsort -un
2480: 69 71 75 65 20 24 65 5d 0a 23 65 78 69 74 0a 0a  ique $e].#exit..
2490: 73 65 74 20 7a 65 72 6f 5f 6c 6f 6e 67 5f 64 6f  set zero_long_do
24a0: 63 6c 69 73 74 73 20 7b 0a 20 20 55 50 44 41 54  clists {.  UPDAT
24b0: 45 20 74 31 5f 73 65 67 6d 65 6e 74 73 20 53 45  E t1_segments SE
24c0: 54 20 62 6c 6f 63 6b 3d 7a 65 72 6f 62 6c 6f 62  T block=zeroblob
24d0: 28 6c 65 6e 67 74 68 28 62 6c 6f 63 6b 29 29 20  (length(block)) 
24e0: 57 48 45 52 45 20 6c 65 6e 67 74 68 28 62 6c 6f  WHERE length(blo
24f0: 63 6b 29 3e 31 30 30 30 30 0a 7d 0a 0a 66 6f 72  ck)>10000.}..for
2500: 65 61 63 68 20 7b 74 6e 20 73 65 74 75 70 7d 20  each {tn setup} 
2510: 7b 0a 20 20 31 20 7b 0a 20 20 20 20 73 65 74 20  {.  1 {.    set 
2520: 64 6d 74 5f 6d 6f 64 65 73 20 30 0a 20 20 20 20  dmt_modes 0.    
2530: 65 78 65 63 73 71 6c 20 7b 20 43 52 45 41 54 45  execsql { CREATE
2540: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74   VIRTUAL TABLE t
2550: 31 20 55 53 49 4e 47 20 46 54 53 33 20 7d 0a 20  1 USING FTS3 }. 
2560: 20 20 20 66 6f 72 65 61 63 68 20 64 6f 63 20 24     foreach doc $
2570: 64 61 74 61 20 7b 20 65 78 65 63 73 71 6c 20 7b  data { execsql {
2580: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
2590: 56 41 4c 55 45 53 28 24 64 6f 63 29 20 7d 20 7d  VALUES($doc) } }
25a0: 0a 20 20 7d 0a 20 20 32 20 7b 0a 20 20 20 20 73  .  }.  2 {.    s
25b0: 65 74 20 64 6d 74 5f 6d 6f 64 65 73 20 30 0a 20  et dmt_modes 0. 
25c0: 20 20 20 65 78 65 63 73 71 6c 20 7b 20 43 52 45     execsql { CRE
25d0: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
25e0: 45 20 74 31 20 55 53 49 4e 47 20 46 54 53 34 20  E t1 USING FTS4 
25f0: 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 64 6f  }.    foreach do
2600: 63 20 24 64 61 74 61 20 7b 20 65 78 65 63 73 71  c $data { execsq
2610: 6c 20 7b 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  l { INSERT INTO 
2620: 74 31 20 56 41 4c 55 45 53 28 24 64 6f 63 29 20  t1 VALUES($doc) 
2630: 7d 20 7d 0a 20 20 7d 0a 20 20 33 20 7b 0a 20 20  } }.  }.  3 {.  
2640: 20 20 73 65 74 20 64 6d 74 5f 6d 6f 64 65 73 20    set dmt_modes 
2650: 7b 30 20 31 20 32 7d 0a 20 20 20 20 65 78 65 63  {0 1 2}.    exec
2660: 73 71 6c 20 7b 20 43 52 45 41 54 45 20 56 49 52  sql { CREATE VIR
2670: 54 55 41 4c 20 54 41 42 4c 45 20 74 31 20 55 53  TUAL TABLE t1 US
2680: 49 4e 47 20 46 54 53 34 20 7d 0a 20 20 20 20 66  ING FTS4 }.    f
2690: 6f 72 65 61 63 68 20 64 6f 63 20 24 64 61 74 61  oreach doc $data
26a0: 20 7b 20 65 78 65 63 73 71 6c 20 7b 20 49 4e 53   { execsql { INS
26b0: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
26c0: 45 53 28 24 64 6f 63 29 20 7d 20 7d 0a 20 20 20  ES($doc) } }.   
26d0: 20 61 64 64 5f 65 6d 70 74 79 5f 72 65 63 6f 72   add_empty_recor
26e0: 64 73 20 31 30 30 30 0a 20 20 20 20 73 71 6c 69  ds 1000.    sqli
26f0: 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 20 64 62  te3_db_config db
2700: 20 44 45 46 45 4e 53 49 56 45 20 30 0a 20 20 20   DEFENSIVE 0.   
2710: 20 65 78 65 63 73 71 6c 20 24 7a 65 72 6f 5f 6c   execsql $zero_l
2720: 6f 6e 67 5f 64 6f 63 6c 69 73 74 73 0a 20 20 7d  ong_doclists.  }
2730: 0a 20 20 34 20 7b 0a 20 20 20 20 73 65 74 20 64  .  4 {.    set d
2740: 6d 74 5f 6d 6f 64 65 73 20 30 0a 20 20 20 20 65  mt_modes 0.    e
2750: 78 65 63 73 71 6c 20 7b 20 43 52 45 41 54 45 20  xecsql { CREATE 
2760: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 31  VIRTUAL TABLE t1
2770: 20 55 53 49 4e 47 20 46 54 53 34 20 7d 0a 20 20   USING FTS4 }.  
2780: 20 20 66 6f 72 65 61 63 68 20 64 6f 63 20 24 64    foreach doc $d
2790: 61 74 61 20 7b 20 65 78 65 63 73 71 6c 20 7b 20  ata { execsql { 
27a0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
27b0: 41 4c 55 45 53 28 24 64 6f 63 29 20 7d 20 7d 0a  ALUES($doc) } }.
27c0: 20 20 20 20 61 64 64 5f 65 6d 70 74 79 5f 72 65      add_empty_re
27d0: 63 6f 72 64 73 20 31 30 30 30 0a 20 20 20 20 65  cords 1000.    e
27e0: 78 65 63 73 71 6c 20 22 49 4e 53 45 52 54 20 49  xecsql "INSERT I
27f0: 4e 54 4f 20 74 31 28 74 31 29 20 56 41 4c 55 45  NTO t1(t1) VALUE
2800: 53 28 27 6f 70 74 69 6d 69 7a 65 27 29 22 0a 20  S('optimize')". 
2810: 20 20 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f     sqlite3_db_co
2820: 6e 66 69 67 20 64 62 20 44 45 46 45 4e 53 49 56  nfig db DEFENSIV
2830: 45 20 30 0a 20 20 20 20 65 78 65 63 73 71 6c 20  E 0.    execsql 
2840: 24 7a 65 72 6f 5f 6c 6f 6e 67 5f 64 6f 63 6c 69  $zero_long_docli
2850: 73 74 73 0a 20 20 7d 0a 20 20 35 20 7b 0a 20 20  sts.  }.  5 {.  
2860: 20 20 73 65 74 20 64 6d 74 5f 6d 6f 64 65 73 20    set dmt_modes 
2870: 30 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 20  0.    execsql { 
2880: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
2890: 41 42 4c 45 20 74 31 20 55 53 49 4e 47 20 46 54  ABLE t1 USING FT
28a0: 53 34 28 6d 61 74 63 68 69 6e 66 6f 3d 66 74 73  S4(matchinfo=fts
28b0: 33 29 20 7d 0a 20 20 20 20 66 6f 72 65 61 63 68  3) }.    foreach
28c0: 20 64 6f 63 20 24 64 61 74 61 20 7b 20 65 78 65   doc $data { exe
28d0: 63 73 71 6c 20 7b 20 49 4e 53 45 52 54 20 49 4e  csql { INSERT IN
28e0: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 24 64 6f  TO t1 VALUES($do
28f0: 63 29 20 7d 20 7d 0a 20 20 20 20 61 64 64 5f 65  c) } }.    add_e
2900: 6d 70 74 79 5f 72 65 63 6f 72 64 73 20 31 30 30  mpty_records 100
2910: 30 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 64 62  0.    sqlite3_db
2920: 5f 63 6f 6e 66 69 67 20 64 62 20 44 45 46 45 4e  _config db DEFEN
2930: 53 49 56 45 20 30 0a 20 20 20 20 65 78 65 63 73  SIVE 0.    execs
2940: 71 6c 20 24 7a 65 72 6f 5f 6c 6f 6e 67 5f 64 6f  ql $zero_long_do
2950: 63 6c 69 73 74 73 0a 20 20 7d 0a 7d 20 7b 0a 0a  clists.  }.} {..
2960: 20 20 65 78 65 63 73 71 6c 20 7b 20 44 52 4f 50    execsql { DROP
2970: 20 54 41 42 4c 45 20 49 46 20 45 58 49 53 54 53   TABLE IF EXISTS
2980: 20 74 31 20 7d 0a 20 20 65 76 61 6c 20 24 73 65   t1 }.  eval $se
2990: 74 75 70 0a 20 20 73 65 74 20 3a 3a 74 65 73 74  tup.  set ::test
29a0: 70 72 65 66 69 78 20 66 74 73 33 64 65 66 65 72  prefix fts3defer
29b0: 2d 32 2e 24 74 6e 0a 20 20 73 65 74 20 44 4f 5f  -2.$tn.  set DO_
29c0: 4d 41 4c 4c 4f 43 5f 54 45 53 54 20 30 0a 0a 20  MALLOC_TEST 0.. 
29d0: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
29e0: 20 30 20 7b 20 0a 20 20 20 20 53 45 4c 45 43 54   0 { .    SELECT
29f0: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
2a00: 31 5f 73 65 67 6d 65 6e 74 73 20 57 48 45 52 45  1_segments WHERE
2a10: 20 6c 65 6e 67 74 68 28 62 6c 6f 63 6b 29 3e 31   length(block)>1
2a20: 30 30 30 30 20 0a 20 20 7d 20 7b 32 7d 0a 0a 20  0000 .  } {2}.. 
2a30: 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65 73 74 20   do_select_test 
2a40: 31 2e 31 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  1.1 {.    SELECT
2a50: 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31 20 57   rowid FROM t1 W
2a60: 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 27 6a  HERE t1 MATCH 'j
2a70: 6b 20 78 6e 78 68 66 27 0a 20 20 7d 20 7b 31 33  k xnxhf'.  } {13
2a80: 20 32 39 20 34 30 20 34 37 20 34 38 20 35 32 20   29 40 47 48 52 
2a90: 36 33 20 39 32 7d 0a 20 20 64 6f 5f 73 65 6c 65  63 92}.  do_sele
2aa0: 63 74 5f 74 65 73 74 20 31 2e 32 20 7b 0a 20 20  ct_test 1.2 {.  
2ab0: 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46    SELECT rowid F
2ac0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31 20  ROM t1 WHERE t1 
2ad0: 4d 41 54 43 48 20 27 6a 6b 20 65 68 27 0a 20 20  MATCH 'jk eh'.  
2ae0: 7d 20 7b 31 30 30 7d 0a 20 20 64 6f 5f 73 65 6c  } {100}.  do_sel
2af0: 65 63 74 5f 74 65 73 74 20 31 2e 33 20 7b 0a 20  ect_test 1.3 {. 
2b00: 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20     SELECT rowid 
2b10: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31  FROM t1 WHERE t1
2b20: 20 4d 41 54 43 48 20 27 6a 6b 20 75 62 77 72 66   MATCH 'jk ubwrf
2b30: 71 6e 62 6a 66 27 0a 20 20 7d 20 7b 37 20 37 30  qnbjf'.  } {7 70
2b40: 20 39 38 7d 0a 20 20 64 6f 5f 73 65 6c 65 63 74   98}.  do_select
2b50: 5f 74 65 73 74 20 31 2e 34 20 7b 0a 20 20 20 20  _test 1.4 {.    
2b60: 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46 52 4f  SELECT rowid FRO
2b70: 4d 20 74 31 20 57 48 45 52 45 20 74 31 20 4d 41  M t1 WHERE t1 MA
2b80: 54 43 48 20 27 64 75 73 7a 65 6d 6d 7a 6c 20 6a  TCH 'duszemmzl j
2b90: 6b 27 0a 20 20 7d 20 7b 33 20 35 20 38 20 31 30  k'.  } {3 5 8 10
2ba0: 20 31 33 20 31 38 20 32 30 20 32 33 20 33 32 20   13 18 20 23 32 
2bb0: 33 37 20 34 31 20 34 33 20 35 35 20 36 30 20 36  37 41 43 55 60 6
2bc0: 35 20 36 37 20 37 32 20 37 34 20 37 36 20 38 31  5 67 72 74 76 81
2bd0: 20 39 34 20 39 36 20 39 37 7d 0a 20 20 64 6f 5f   94 96 97}.  do_
2be0: 73 65 6c 65 63 74 5f 74 65 73 74 20 31 2e 35 20  select_test 1.5 
2bf0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77  {.    SELECT row
2c00: 69 64 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  id FROM t1 WHERE
2c10: 20 74 31 20 4d 41 54 43 48 20 27 75 62 77 72 66   t1 MATCH 'ubwrf
2c20: 71 6e 62 6a 66 20 6a 6b 27 0a 20 20 7d 20 7b 37  qnbjf jk'.  } {7
2c30: 20 37 30 20 39 38 7d 0a 20 20 64 6f 5f 73 65 6c   70 98}.  do_sel
2c40: 65 63 74 5f 74 65 73 74 20 31 2e 36 20 7b 0a 20  ect_test 1.6 {. 
2c50: 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20     SELECT rowid 
2c60: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31  FROM t1 WHERE t1
2c70: 20 4d 41 54 43 48 20 27 6a 6b 20 75 62 77 72 66   MATCH 'jk ubwrf
2c80: 71 6e 62 6a 66 20 6a 6b 20 6a 6b 20 6a 6b 20 6a  qnbjf jk jk jk j
2c90: 6b 27 0a 20 20 7d 20 7b 37 20 37 30 20 39 38 7d  k'.  } {7 70 98}
2ca0: 0a 20 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65 73  .  do_select_tes
2cb0: 74 20 31 2e 37 20 7b 0a 20 20 20 20 53 45 4c 45  t 1.7 {.    SELE
2cc0: 43 54 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31  CT rowid FROM t1
2cd0: 20 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20   WHERE t1 MATCH 
2ce0: 27 7a 6d 20 78 6e 78 68 66 27 0a 20 20 7d 20 7b  'zm xnxhf'.  } {
2cf0: 31 32 20 31 33 20 32 39 20 33 30 20 34 30 20 34  12 13 29 30 40 4
2d00: 37 20 34 38 20 35 32 20 36 33 20 39 32 20 39 33  7 48 52 63 92 93
2d10: 7d 0a 20 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65  }.  do_select_te
2d20: 73 74 20 31 2e 38 20 7b 0a 20 20 20 20 53 45 4c  st 1.8 {.    SEL
2d30: 45 43 54 20 72 6f 77 69 64 20 46 52 4f 4d 20 74  ECT rowid FROM t
2d40: 31 20 57 48 45 52 45 20 74 31 20 4d 41 54 43 48  1 WHERE t1 MATCH
2d50: 20 27 7a 6d 20 65 68 27 0a 20 20 7d 20 7b 36 38   'zm eh'.  } {68
2d60: 20 31 30 30 7d 0a 20 20 64 6f 5f 73 65 6c 65 63   100}.  do_selec
2d70: 74 5f 74 65 73 74 20 31 2e 39 20 7b 0a 20 20 20  t_test 1.9 {.   
2d80: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46 52   SELECT rowid FR
2d90: 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31 20 4d  OM t1 WHERE t1 M
2da0: 41 54 43 48 20 27 7a 6d 20 75 62 77 72 66 71 6e  ATCH 'zm ubwrfqn
2db0: 62 6a 66 27 0a 20 20 7d 20 7b 37 20 37 30 20 39  bjf'.  } {7 70 9
2dc0: 38 7d 0a 20 20 64 6f 5f 73 65 6c 65 63 74 5f 74  8}.  do_select_t
2dd0: 65 73 74 20 31 2e 31 30 20 7b 0a 20 20 20 20 53  est 1.10 {.    S
2de0: 45 4c 45 43 54 20 72 6f 77 69 64 20 46 52 4f 4d  ELECT rowid FROM
2df0: 20 74 31 20 57 48 45 52 45 20 74 31 20 4d 41 54   t1 WHERE t1 MAT
2e00: 43 48 20 27 7a 2a 20 76 67 73 6c 64 27 0a 20 20  CH 'z* vgsld'.  
2e10: 7d 20 7b 31 30 20 31 33 20 31 37 20 33 31 20 33  } {10 13 17 31 3
2e20: 35 20 35 31 20 35 38 20 38 38 20 38 39 20 39 30  5 51 58 88 89 90
2e30: 20 39 33 20 31 30 30 7d 0a 0a 20 20 69 66 20 7b   93 100}..  if {
2e40: 20 24 66 74 73 33 5f 73 69 6d 70 6c 65 5f 64 65   $fts3_simple_de
2e50: 66 65 72 72 65 64 5f 74 6f 6b 65 6e 73 5f 6f 6e  ferred_tokens_on
2e60: 6c 79 3d 3d 30 20 7d 20 7b 0a 20 20 20 20 64 6f  ly==0 } {.    do
2e70: 5f 73 65 6c 65 63 74 5f 74 65 73 74 20 31 2e 31  _select_test 1.1
2e80: 31 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  1 {.      SELECT
2e90: 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31 20 0a   rowid FROM t1 .
2ea0: 20 20 20 20 20 20 57 48 45 52 45 20 74 31 20 4d        WHERE t1 M
2eb0: 41 54 43 48 20 27 28 0a 20 20 20 20 20 20 20 20  ATCH '(.        
2ec0: 7a 64 75 20 4f 52 20 7a 65 78 68 20 4f 52 20 7a  zdu OR zexh OR z
2ed0: 66 20 4f 52 20 7a 68 62 72 7a 61 64 62 20 4f 52  f OR zhbrzadb OR
2ee0: 20 7a 69 64 68 78 68 62 74 76 20 4f 52 20 0a 20   zidhxhbtv OR . 
2ef0: 20 20 20 20 20 20 20 7a 6b 20 4f 52 20 7a 6b 68         zk OR zkh
2f00: 64 76 6b 77 20 4f 52 20 7a 6d 20 4f 52 20 7a 73  dvkw OR zm OR zs
2f10: 6d 68 6e 66 0a 20 20 20 20 20 20 29 20 76 67 73  mhnf.      ) vgs
2f20: 6c 64 27 0a 20 20 20 20 7d 20 7b 31 30 20 31 33  ld'.    } {10 13
2f30: 20 31 37 20 33 31 20 33 35 20 35 31 20 35 38 20   17 31 35 51 58 
2f40: 38 38 20 38 39 20 39 30 20 39 33 20 31 30 30 7d  88 89 90 93 100}
2f50: 0a 20 20 7d 0a 0a 20 20 64 6f 5f 73 65 6c 65 63  .  }..  do_selec
2f60: 74 5f 74 65 73 74 20 32 2e 31 20 7b 0a 20 20 20  t_test 2.1 {.   
2f70: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46 52   SELECT rowid FR
2f80: 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31 20 4d  OM t1 WHERE t1 M
2f90: 41 54 43 48 20 27 22 7a 6d 20 61 67 6d 63 6b 75  ATCH '"zm agmcku
2fa0: 69 75 22 27 0a 20 20 7d 20 7b 33 20 32 34 20 35  iu"'.  } {3 24 5
2fb0: 32 20 35 33 7d 0a 20 20 64 6f 5f 73 65 6c 65 63  2 53}.  do_selec
2fc0: 74 5f 74 65 73 74 20 32 2e 32 20 7b 0a 20 20 20  t_test 2.2 {.   
2fd0: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46 52   SELECT rowid FR
2fe0: 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31 20 4d  OM t1 WHERE t1 M
2ff0: 41 54 43 48 20 27 22 7a 6d 20 7a 66 22 27 0a 20  ATCH '"zm zf"'. 
3000: 20 7d 20 7b 33 33 20 35 33 20 37 35 20 38 38 20   } {33 53 75 88 
3010: 31 30 31 7d 0a 20 20 64 6f 5f 73 65 6c 65 63 74  101}.  do_select
3020: 5f 74 65 73 74 20 32 2e 33 20 7b 0a 20 20 20 20  _test 2.3 {.    
3030: 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46 52 4f  SELECT rowid FRO
3040: 4d 20 74 31 20 57 48 45 52 45 20 74 31 20 4d 41  M t1 WHERE t1 MA
3050: 54 43 48 20 27 22 7a 6d 20 61 61 79 78 70 6d 76  TCH '"zm aayxpmv
3060: 65 22 27 0a 20 20 7d 20 7b 34 38 20 36 35 20 38  e"'.  } {48 65 8
3070: 34 7d 0a 20 20 64 6f 5f 73 65 6c 65 63 74 5f 74  4}.  do_select_t
3080: 65 73 74 20 32 2e 34 20 7b 0a 20 20 20 20 53 45  est 2.4 {.    SE
3090: 4c 45 43 54 20 72 6f 77 69 64 20 46 52 4f 4d 20  LECT rowid FROM 
30a0: 74 31 20 57 48 45 52 45 20 74 31 20 4d 41 54 43  t1 WHERE t1 MATC
30b0: 48 20 27 22 61 61 79 78 70 6d 76 65 20 7a 6d 22  H '"aayxpmve zm"
30c0: 27 0a 20 20 7d 20 7b 31 31 20 33 37 20 38 34 7d  '.  } {11 37 84}
30d0: 0a 20 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65 73  .  do_select_tes
30e0: 74 20 32 2e 35 20 7b 0a 20 20 20 20 53 45 4c 45  t 2.5 {.    SELE
30f0: 43 54 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31  CT rowid FROM t1
3100: 20 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20   WHERE t1 MATCH 
3110: 27 22 6a 6b 20 61 7a 61 76 77 6d 22 27 0a 20 20  '"jk azavwm"'.  
3120: 7d 20 7b 31 36 20 35 33 7d 0a 20 20 64 6f 5f 73  } {16 53}.  do_s
3130: 65 6c 65 63 74 5f 74 65 73 74 20 32 2e 36 20 7b  elect_test 2.6 {
3140: 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69  .    SELECT rowi
3150: 64 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  d FROM t1 WHERE 
3160: 74 31 20 4d 41 54 43 48 20 27 22 78 68 20 6a 6b  t1 MATCH '"xh jk
3170: 20 6a 6b 22 27 0a 20 20 7d 20 7b 31 38 7d 0a 20   jk"'.  } {18}. 
3180: 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65 73 74 20   do_select_test 
3190: 32 2e 37 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  2.7 {.    SELECT
31a0: 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31 20 57   rowid FROM t1 W
31b0: 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 27 22  HERE t1 MATCH '"
31c0: 7a 6d 20 6a 6b 20 76 67 73 6c 64 22 27 0a 20 20  zm jk vgsld"'.  
31d0: 7d 20 7b 31 33 20 31 37 7d 0a 20 20 64 6f 5f 73  } {13 17}.  do_s
31e0: 65 6c 65 63 74 5f 74 65 73 74 20 32 2e 38 20 7b  elect_test 2.8 {
31f0: 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69  .    SELECT rowi
3200: 64 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  d FROM t1 WHERE 
3210: 74 31 20 4d 41 54 43 48 20 27 22 7a 6d 20 6a 6b  t1 MATCH '"zm jk
3220: 20 76 67 73 6c 64 20 6c 6b 6a 6c 6b 6a 6c 6b 6a   vgsld lkjlkjlkj
3230: 22 27 0a 20 20 7d 20 7b 7d 0a 0a 20 20 64 6f 5f  "'.  } {}..  do_
3240: 73 65 6c 65 63 74 5f 74 65 73 74 20 33 2e 31 20  select_test 3.1 
3250: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 73 6e 69  {.    SELECT sni
3260: 70 70 65 74 28 74 31 2c 20 27 5b 27 2c 20 27 5d  ppet(t1, '[', ']
3270: 27 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  ') FROM t1 WHERE
3280: 20 74 31 20 4d 41 54 43 48 20 27 22 7a 6d 20 61   t1 MATCH '"zm a
3290: 67 6d 63 6b 75 69 75 22 27 0a 20 20 7d 20 7b 0a  gmckuiu"'.  } {.
32a0: 20 20 20 20 7b 7a 6d 20 5b 7a 6d 5d 20 5b 61 67      {zm [zm] [ag
32b0: 6d 63 6b 75 69 75 5d 20 75 68 7a 71 20 6e 73 61  mckuiu] uhzq nsa
32c0: 62 20 6a 6b 20 72 72 6b 78 20 64 75 73 7a 65 6d  b jk rrkx duszem
32d0: 6d 7a 6c 20 68 79 71 20 6a 6b 7d 20 0a 20 20 20  mzl hyq jk} .   
32e0: 20 7b 6a 6b 20 5b 7a 6d 5d 20 5b 61 67 6d 63 6b   {jk [zm] [agmck
32f0: 75 69 75 5d 20 75 72 76 79 73 62 6e 79 6b 6b 20  uiu] urvysbnykk 
3300: 6a 6b 20 6a 6b 20 7a 6d 20 7a 6d 20 6a 6b 20 6a  jk jk zm zm jk j
3310: 6b 7d 20 0a 20 20 20 20 7b 5b 7a 6d 5d 20 5b 61  k} .    {[zm] [a
3320: 67 6d 63 6b 75 69 75 5d 20 7a 65 78 68 20 66 69  gmckuiu] zexh fi
3330: 62 6f 6b 64 72 79 20 6a 6b 20 75 68 7a 71 20 62  bokdry jk uhzq b
3340: 75 20 74 75 67 66 6c 69 78 6f 65 78 20 78 6e 78  u tugflixoex xnx
3350: 68 66 20 73 6b 7d 20 0a 20 20 20 20 7b 7a 6d 20  hf sk} .    {zm 
3360: 7a 66 20 75 65 6e 76 62 6d 20 6a 6b 20 61 7a 61  zf uenvbm jk aza
3370: 76 77 6d 20 7a 6d 20 5b 7a 6d 5d 20 5b 61 67 6d  vwm zm [zm] [agm
3380: 63 6b 75 69 75 5d 20 7a 6d 20 6a 6b 7d 0a 20 20  ckuiu] zm jk}.  
3390: 7d 0a 0a 20 20 64 6f 5f 73 65 6c 65 63 74 5f 74  }..  do_select_t
33a0: 65 73 74 20 33 2e 32 20 7b 0a 20 20 20 20 53 45  est 3.2 {.    SE
33b0: 4c 45 43 54 20 73 6e 69 70 70 65 74 28 74 31 2c  LECT snippet(t1,
33c0: 20 27 5b 27 2c 20 27 5d 27 29 20 46 52 4f 4d 20   '[', ']') FROM 
33d0: 74 31 20 57 48 45 52 45 20 74 31 20 4d 41 54 43  t1 WHERE t1 MATC
33e0: 48 20 27 78 6e 78 68 66 20 6a 6b 27 0a 20 20 7d  H 'xnxhf jk'.  }
33f0: 20 7b 0a 20 20 20 20 7b 5b 78 6e 78 68 66 5d 20   {.    {[xnxhf] 
3400: 5b 6a 6b 5d 20 5b 6a 6b 5d 20 61 67 6d 63 6b 75  [jk] [jk] agmcku
3410: 69 75 20 64 75 73 7a 65 6d 6d 7a 6c 20 5b 6a 6b  iu duszemmzl [jk
3420: 5d 20 7a 6d 20 7a 6d 20 5b 6a 6b 5d 20 76 67 73  ] zm zm [jk] vgs
3430: 6c 64 7d 20 0a 20 20 20 20 7b 5b 6a 6b 5d 20 5b  ld} .    {[jk] [
3440: 78 6e 78 68 66 5d 20 69 67 6a 75 20 5b 6a 6b 5d  xnxhf] igju [jk]
3450: 20 78 68 20 5b 6a 6b 5d 20 6e 76 66 61 73 66 68   xh [jk] nvfasfh
3460: 20 7a 6d 20 6a 73 20 5b 6a 6b 5d 7d 20 0a 20 20   zm js [jk]} .  
3470: 20 20 7b 5b 6a 6b 5d 20 6a 63 70 69 77 6a 20 7a    {[jk] jcpiwj z
3480: 6d 20 5b 78 6e 78 68 66 5d 20 7a 6d 20 6d 6a 70  m [xnxhf] zm mjp
3490: 61 76 6a 75 68 77 20 6d 6a 20 64 72 69 72 20 70  avjuhw mj drir p
34a0: 61 20 70 76 6a 72 6a 6c 61 73 7d 20 0a 20 20 20  a pvjrjlas} .   
34b0: 20 7b 67 61 7a 72 74 20 5b 6a 6b 5d 20 65 70 68   {gazrt [jk] eph
34c0: 6b 6e 6f 6e 71 20 6d 79 6a 70 20 75 65 6e 76 62  knonq myjp uenvb
34d0: 6d 20 77 75 76 61 6a 68 77 71 7a 20 5b 6a 6b 5d  m wuvajhwqz [jk]
34e0: 20 7a 6d 20 5b 78 6e 78 68 66 5d 20 6e 76 66 61   zm [xnxhf] nvfa
34f0: 73 66 68 7d 20 0a 20 20 20 20 7b 7a 6d 20 61 61  sfh} .    {zm aa
3500: 79 78 70 6d 76 65 20 63 73 6a 71 78 68 67 6a 20  yxpmve csjqxhgj 
3510: 5b 78 6e 78 68 66 5d 20 78 72 20 5b 6a 6b 5d 20  [xnxhf] xr [jk] 
3520: 61 61 79 78 70 6d 76 65 20 5b 78 6e 78 68 66 5d  aayxpmve [xnxhf]
3530: 20 7a 6d 20 7a 6d 7d 20 0a 20 20 20 20 7b 7a 6d   zm zm} .    {zm
3540: 20 61 67 6d 63 6b 75 69 75 20 7a 65 78 68 20 66   agmckuiu zexh f
3550: 69 62 6f 6b 64 72 79 20 5b 6a 6b 5d 20 75 68 7a  ibokdry [jk] uhz
3560: 71 20 62 75 20 74 75 67 66 6c 69 78 6f 65 78 20  q bu tugflixoex 
3570: 5b 78 6e 78 68 66 5d 20 73 6b 7d 20 0a 20 20 20  [xnxhf] sk} .   
3580: 20 7b 6c 77 61 20 68 69 20 5b 78 6e 78 68 66 5d   {lwa hi [xnxhf]
3590: 20 71 64 79 65 72 62 77 73 20 7a 6b 20 6e 6a 74   qdyerbws zk njt
35a0: 63 20 5b 6a 6b 5d 20 75 68 7a 71 20 7a 6d 20 5b  c [jk] uhzq zm [
35b0: 6a 6b 5d 7d 20 0a 20 20 20 20 7b 7a 6d 20 61 7a  jk]} .    {zm az
35c0: 61 76 77 6d 20 69 67 6a 75 20 71 7a 7a 71 64 78  avwm igju qzzqdx
35d0: 71 20 5b 6a 6b 5d 20 5b 78 6e 78 68 66 5d 20 61  q [jk] [xnxhf] a
35e0: 62 74 68 6e 7a 63 76 20 5b 6a 6b 5d 20 6e 76 66  bthnzcv [jk] nvf
35f0: 61 73 66 68 20 7a 6d 7d 0a 20 20 7d 0a 0a 20 20  asfh zm}.  }..  
3600: 64 6f 5f 73 65 6c 65 63 74 5f 74 65 73 74 20 34  do_select_test 4
3610: 2e 31 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  .1 {.    SELECT 
3620: 6f 66 66 73 65 74 73 28 74 31 29 20 46 52 4f 4d  offsets(t1) FROM
3630: 20 74 31 20 57 48 45 52 45 20 74 31 20 4d 41 54   t1 WHERE t1 MAT
3640: 43 48 20 27 22 6a 6b 20 75 65 6e 76 62 6d 22 27  CH '"jk uenvbm"'
3650: 0a 20 20 7d 20 7b 0a 20 20 20 20 7b 30 20 30 20  .  } {.    {0 0 
3660: 31 30 20 32 20 30 20 31 20 31 33 20 36 7d 20 7b  10 2 0 1 13 6} {
3670: 30 20 30 20 32 36 20 32 20 30 20 31 20 32 39 20  0 0 26 2 0 1 29 
3680: 36 7d 0a 20 20 7d 0a 0a 20 20 64 6f 5f 73 65 6c  6}.  }..  do_sel
3690: 65 63 74 5f 74 65 73 74 20 34 2e 32 20 7b 0a 20  ect_test 4.2 {. 
36a0: 20 20 20 53 45 4c 45 43 54 20 6f 66 66 73 65 74     SELECT offset
36b0: 73 28 74 31 29 20 46 52 4f 4d 20 74 31 20 57 48  s(t1) FROM t1 WH
36c0: 45 52 45 20 74 31 20 4d 41 54 43 48 20 27 64 75  ERE t1 MATCH 'du
36d0: 73 7a 65 6d 6d 7a 6c 20 6a 6b 20 66 69 62 6f 6b  szemmzl jk fibok
36e0: 64 72 79 27 0a 20 20 7d 20 7b 0a 20 20 20 20 7b  dry'.  } {.    {
36f0: 30 20 32 20 33 20 38 20 30 20 31 20 33 36 20 32  0 2 3 8 0 1 36 2
3700: 20 30 20 30 20 35 38 20 39 7d 20 0a 20 20 20 20   0 0 58 9} .    
3710: 7b 30 20 30 20 30 20 39 20 30 20 31 20 31 33 20  {0 0 0 9 0 1 13 
3720: 32 20 30 20 31 20 31 36 20 32 20 30 20 32 20 31  2 0 1 16 2 0 2 1
3730: 39 20 38 20 30 20 31 20 35 33 20 32 7d 20 0a 20  9 8 0 1 53 2} . 
3740: 20 20 20 7b 30 20 31 20 34 20 32 20 30 20 30 20     {0 1 4 2 0 0 
3750: 32 30 20 39 20 30 20 31 20 33 30 20 32 20 30 20  20 9 0 1 30 2 0 
3760: 31 20 33 33 20 32 20 30 20 32 20 34 38 20 38 7d  1 33 2 0 2 48 8}
3770: 20 0a 20 20 20 20 7b 30 20 31 20 31 37 20 32 20   .    {0 1 17 2 
3780: 30 20 31 20 32 30 20 32 20 30 20 31 20 32 36 20  0 1 20 2 0 1 26 
3790: 32 20 30 20 30 20 32 39 20 39 20 30 20 32 20 33  2 0 0 29 9 0 2 3
37a0: 39 20 38 7d 0a 20 20 7d 0a 0a 20 20 64 6f 5f 73  9 8}.  }..  do_s
37b0: 65 6c 65 63 74 5f 74 65 73 74 20 34 2e 33 20 7b  elect_test 4.3 {
37c0: 0a 20 20 20 20 53 45 4c 45 43 54 20 6f 66 66 73  .    SELECT offs
37d0: 65 74 73 28 74 31 29 20 46 52 4f 4d 20 74 31 20  ets(t1) FROM t1 
37e0: 0a 20 20 20 20 57 48 45 52 45 20 74 31 20 4d 41  .    WHERE t1 MA
37f0: 54 43 48 20 27 76 67 73 6c 64 20 28 68 72 6c 69  TCH 'vgsld (hrli
3800: 70 64 6d 20 4f 52 20 28 61 61 70 6d 76 65 20 4e  pdm OR (aapmve N
3810: 45 41 52 20 64 75 73 7a 65 6d 6d 7a 6c 29 29 27  EAR duszemmzl))'
3820: 0a 20 20 7d 20 7b 7b 30 20 30 20 30 20 35 20 30  .  } {{0 0 0 5 0
3830: 20 31 20 31 35 20 37 20 30 20 30 20 33 36 20 35   1 15 7 0 0 36 5
3840: 7d 7d 0a 0a 20 20 23 20 54 68 65 20 66 6f 6c 6c  }}..  # The foll
3850: 6f 77 69 6e 67 20 62 6c 6f 63 6b 20 6f 66 20 74  owing block of t
3860: 65 73 74 73 20 72 75 6e 73 20 6e 6f 72 6d 61 6c  ests runs normal
3870: 6c 79 20 77 69 74 68 20 46 54 53 33 20 6f 72 20  ly with FTS3 or 
3880: 46 54 53 34 20 77 69 74 68 6f 75 74 20 74 68 65  FTS4 without the
3890: 0a 20 20 23 20 6c 6f 6e 67 20 64 6f 63 6c 69 73  .  # long doclis
38a0: 74 73 20 7a 65 72 6f 65 64 2e 20 41 6e 64 20 77  ts zeroed. And w
38b0: 69 74 68 20 4f 4f 4d 2d 69 6e 6a 65 63 74 69 6f  ith OOM-injectio
38c0: 6e 20 66 6f 72 20 46 54 53 34 20 77 69 74 68 20  n for FTS4 with 
38d0: 6c 6f 6e 67 20 64 6f 63 6c 69 73 74 73 0a 20 20  long doclists.  
38e0: 23 20 7a 65 72 6f 65 64 2e 20 43 68 61 6e 67 65  # zeroed. Change
38f0: 20 74 68 69 73 20 62 79 20 6d 65 73 73 69 6e 67   this by messing
3900: 20 77 69 74 68 20 74 68 65 20 5b 73 65 74 20 64   with the [set d
3910: 6d 74 5f 6d 6f 64 65 73 5d 20 63 6f 6d 6d 61 6e  mt_modes] comman
3920: 64 73 20 61 62 6f 76 65 2e 0a 20 20 23 0a 20 20  ds above..  #.  
3930: 66 6f 72 65 61 63 68 20 44 4f 5f 4d 41 4c 4c 4f  foreach DO_MALLO
3940: 43 5f 54 45 53 54 20 24 64 6d 74 5f 6d 6f 64 65  C_TEST $dmt_mode
3950: 73 20 7b 0a 20 20 20 20 0a 20 20 20 20 23 20 50  s {.    .    # P
3960: 68 72 61 73 65 20 73 65 61 72 63 68 2e 0a 20 20  hrase search..  
3970: 20 20 23 0a 20 20 20 20 64 6f 5f 73 65 6c 65 63    #.    do_selec
3980: 74 5f 74 65 73 74 20 35 2e 24 44 4f 5f 4d 41 4c  t_test 5.$DO_MAL
3990: 4c 4f 43 5f 54 45 53 54 2e 31 20 7b 0a 20 20 20  LOC_TEST.1 {.   
39a0: 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20     SELECT rowid 
39b0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31  FROM t1 WHERE t1
39c0: 20 4d 41 54 43 48 20 27 22 6a 6b 20 6d 6a 70 61   MATCH '"jk mjpa
39d0: 76 6a 75 68 77 22 27 0a 20 20 20 20 7d 20 7b 38  vjuhw"'.    } {8
39e0: 20 31 35 20 33 36 20 36 34 20 36 37 20 37 32 7d   15 36 64 67 72}
39f0: 0a 0a 20 20 20 20 23 20 4d 75 6c 74 69 70 6c 65  ..    # Multiple
3a00: 20 74 6f 6b 65 6e 73 20 73 65 61 72 63 68 2e 0a   tokens search..
3a10: 20 20 20 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65      do_select_te
3a20: 73 74 20 35 2e 24 44 4f 5f 4d 41 4c 4c 4f 43 5f  st 5.$DO_MALLOC_
3a30: 54 45 53 54 2e 32 20 7b 0a 20 20 20 20 20 20 53  TEST.2 {.      S
3a40: 45 4c 45 43 54 20 72 6f 77 69 64 20 46 52 4f 4d  ELECT rowid FROM
3a50: 20 74 31 20 57 48 45 52 45 20 74 31 20 4d 41 54   t1 WHERE t1 MAT
3a60: 43 48 20 27 64 75 73 7a 65 6d 6d 7a 6c 20 7a 6d  CH 'duszemmzl zm
3a70: 27 0a 20 20 20 20 7d 20 7b 33 20 35 20 38 20 31  '.    } {3 5 8 1
3a80: 30 20 31 32 20 31 33 20 31 38 20 32 30 20 32 33  0 12 13 18 20 23
3a90: 20 33 37 20 34 33 20 35 35 20 36 30 20 36 35 20   37 43 55 60 65 
3aa0: 36 37 20 37 32 20 37 34 20 38 31 20 39 34 20 39  67 72 74 81 94 9
3ab0: 36 20 39 37 7d 0a 0a 20 20 20 20 23 20 73 6e 69  6 97}..    # sni
3ac0: 70 70 65 74 28 29 20 66 75 6e 63 74 69 6f 6e 20  ppet() function 
3ad0: 77 69 74 68 20 70 68 72 61 73 65 2e 0a 20 20 20  with phrase..   
3ae0: 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65 73 74 20   do_select_test 
3af0: 35 2e 24 44 4f 5f 4d 41 4c 4c 4f 43 5f 54 45 53  5.$DO_MALLOC_TES
3b00: 54 2e 33 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  T.3 {.      SELE
3b10: 43 54 20 73 6e 69 70 70 65 74 28 74 31 2c 20 27  CT snippet(t1, '
3b20: 5b 27 2c 20 27 5d 27 29 20 46 52 4f 4d 20 74 31  [', ']') FROM t1
3b30: 20 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20   WHERE t1 MATCH 
3b40: 27 22 7a 6d 20 61 61 79 78 70 6d 76 65 22 27 0a  '"zm aayxpmve"'.
3b50: 20 20 20 20 7d 20 7b 0a 20 20 20 20 20 20 7b 5b      } {.      {[
3b60: 7a 6d 5d 20 5b 61 61 79 78 70 6d 76 65 5d 20 63  zm] [aayxpmve] c
3b70: 73 6a 71 78 68 67 6a 20 78 6e 78 68 66 20 78 72  sjqxhgj xnxhf xr
3b80: 20 6a 6b 20 61 61 79 78 70 6d 76 65 20 78 6e 78   jk aayxpmve xnx
3b90: 68 66 20 7a 6d 20 7a 6d 7d 20 0a 20 20 20 20 20  hf zm zm} .     
3ba0: 20 7b 64 75 73 7a 65 6d 6d 7a 6c 20 7a 6b 20 6a   {duszemmzl zk j
3bb0: 6b 20 6a 6b 20 66 69 62 6f 6b 64 72 79 20 6a 73  k jk fibokdry js
3bc0: 65 75 68 6a 6e 7a 6f 20 5b 7a 6d 5d 20 5b 61 61  euhjnzo [zm] [aa
3bd0: 79 78 70 6d 76 65 5d 20 7a 6b 20 6a 6b 7d 20 0a  yxpmve] zk jk} .
3be0: 20 20 20 20 20 20 7b 7a 66 20 6a 6d 66 69 71 68        {zf jmfiqh
3bf0: 77 6e 6a 67 20 6a 73 20 69 67 6a 75 20 5b 7a 6d  wnjg js igju [zm
3c00: 5d 20 5b 61 61 79 78 70 6d 76 65 5d 20 7a 6d 20  ] [aayxpmve] zm 
3c10: 6d 62 78 6e 6c 6a 6f 6d 69 76 20 63 73 6a 71 78  mbxnljomiv csjqx
3c20: 68 67 6a 20 6e 76 66 61 73 66 68 7d 0a 20 20 20  hgj nvfasfh}.   
3c30: 20 7d 0a 20 20 20 20 0a 20 20 20 20 23 20 73 6e   }.    .    # sn
3c40: 69 70 70 65 74 28 29 20 66 75 6e 63 74 69 6f 6e  ippet() function
3c50: 20 77 69 74 68 20 6d 75 6c 74 69 70 6c 65 20 74   with multiple t
3c60: 6f 6b 65 6e 73 2e 0a 20 20 20 20 64 6f 5f 73 65  okens..    do_se
3c70: 6c 65 63 74 5f 74 65 73 74 20 35 2e 24 44 4f 5f  lect_test 5.$DO_
3c80: 4d 41 4c 4c 4f 43 5f 54 45 53 54 2e 34 20 7b 0a  MALLOC_TEST.4 {.
3c90: 20 20 20 20 20 20 53 45 4c 45 43 54 20 73 6e 69        SELECT sni
3ca0: 70 70 65 74 28 74 31 2c 20 27 5b 27 2c 20 27 5d  ppet(t1, '[', ']
3cb0: 27 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  ') FROM t1 WHERE
3cc0: 20 74 31 20 4d 41 54 43 48 20 27 7a 6d 20 7a 68   t1 MATCH 'zm zh
3cd0: 62 72 7a 61 64 62 27 0a 20 20 20 20 7d 20 7b 0a  brzadb'.    } {.
3ce0: 20 20 20 20 20 20 7b 5b 7a 6d 5d 20 6a 6b 20 5b        {[zm] jk [
3cf0: 7a 6d 5d 20 5b 7a 6d 5d 20 5b 7a 68 62 72 7a 61  zm] [zm] [zhbrza
3d00: 64 62 5d 20 75 65 6e 76 62 6d 20 61 61 79 78 70  db] uenvbm aayxp
3d10: 6d 76 65 20 75 72 76 79 73 62 6e 79 6b 6b 20 64  mve urvysbnykk d
3d20: 75 73 7a 65 6d 6d 7a 6c 20 6a 6b 7d 0a 20 20 20  uszemmzl jk}.   
3d30: 20 7d 0a 20 20 20 20 0a 20 20 20 20 23 20 73 6e   }.    .    # sn
3d40: 69 70 70 65 74 28 29 20 66 75 6e 63 74 69 6f 6e  ippet() function
3d50: 20 77 69 74 68 20 70 68 72 61 73 65 2e 0a 20 20   with phrase..  
3d60: 20 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65 73 74    do_select_test
3d70: 20 35 2e 24 44 4f 5f 4d 41 4c 4c 4f 43 5f 54 45   5.$DO_MALLOC_TE
3d80: 53 54 2e 35 20 7b 0a 20 20 20 20 20 20 53 45 4c  ST.5 {.      SEL
3d90: 45 43 54 20 6f 66 66 73 65 74 73 28 74 31 29 20  ECT offsets(t1) 
3da0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31  FROM t1 WHERE t1
3db0: 20 4d 41 54 43 48 20 27 22 7a 6d 20 61 61 79 78   MATCH '"zm aayx
3dc0: 70 6d 76 65 22 27 0a 20 20 20 20 7d 20 7b 0a 20  pmve"'.    } {. 
3dd0: 20 20 20 20 20 7b 30 20 30 20 30 20 32 20 30 20       {0 0 0 2 0 
3de0: 31 20 33 20 38 7d 20 7b 30 20 30 20 33 38 20 32  1 3 8} {0 0 38 2
3df0: 20 30 20 31 20 34 31 20 38 7d 20 7b 30 20 30 20   0 1 41 8} {0 0 
3e00: 32 32 20 32 20 30 20 31 20 32 35 20 38 7d 0a 20  22 2 0 1 25 8}. 
3e10: 20 20 20 7d 0a 20 20 20 20 0a 20 20 20 20 23 20     }.    .    # 
3e20: 73 6e 69 70 70 65 74 28 29 20 66 75 6e 63 74 69  snippet() functi
3e30: 6f 6e 20 77 69 74 68 20 6d 75 6c 74 69 70 6c 65  on with multiple
3e40: 20 74 6f 6b 65 6e 73 2e 0a 20 20 20 20 64 6f 5f   tokens..    do_
3e50: 73 65 6c 65 63 74 5f 74 65 73 74 20 35 2e 24 44  select_test 5.$D
3e60: 4f 5f 4d 41 4c 4c 4f 43 5f 54 45 53 54 2e 36 20  O_MALLOC_TEST.6 
3e70: 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 6f  {.      SELECT o
3e80: 66 66 73 65 74 73 28 74 31 29 20 46 52 4f 4d 20  ffsets(t1) FROM 
3e90: 74 31 20 57 48 45 52 45 20 74 31 20 4d 41 54 43  t1 WHERE t1 MATC
3ea0: 48 20 27 7a 6d 20 7a 68 62 72 7a 61 64 62 27 0a  H 'zm zhbrzadb'.
3eb0: 20 20 20 20 7d 20 7b 0a 20 20 20 20 20 20 7b 30      } {.      {0
3ec0: 20 30 20 30 20 32 20 30 20 30 20 36 20 32 20 30   0 0 2 0 0 6 2 0
3ed0: 20 30 20 39 20 32 20 30 20 31 20 31 32 20 38 7d   0 9 2 0 1 12 8}
3ee0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 65 74 20  .    }..    set 
3ef0: 44 4f 5f 4d 41 4c 4c 4f 43 5f 54 45 53 54 20 30  DO_MALLOC_TEST 0
3f00: 0a 20 20 7d 0a 0a 20 20 64 6f 5f 73 65 6c 65 63  .  }..  do_selec
3f10: 74 5f 74 65 73 74 20 36 2e 31 20 7b 0a 20 20 20  t_test 6.1 {.   
3f20: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46 52   SELECT rowid FR
3f30: 4f 4d 20 74 31 20 0a 20 20 20 20 57 48 45 52 45  OM t1 .    WHERE
3f40: 20 74 31 20 4d 41 54 43 48 20 27 76 67 73 6c 64   t1 MATCH 'vgsld
3f50: 20 28 68 72 6c 69 70 64 6d 20 4f 52 20 28 61 61   (hrlipdm OR (aa
3f60: 79 78 70 6d 76 65 20 64 75 73 7a 65 6d 6d 7a 6c  yxpmve duszemmzl
3f70: 29 29 27 0a 20 20 7d 20 7b 31 30 7d 0a 20 20 64  ))'.  } {10}.  d
3f80: 6f 5f 73 65 6c 65 63 74 5f 74 65 73 74 20 36 2e  o_select_test 6.
3f90: 32 2e 31 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  2.1 {.    SELECT
3fa0: 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31 20 57   rowid FROM t1 W
3fb0: 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 27 22  HERE t1 MATCH '"
3fc0: 6a 6b 20 78 64 75 76 66 68 6b 22 27 0a 20 20 7d  jk xduvfhk"'.  }
3fd0: 20 7b 38 7d 0a 20 20 64 6f 5f 73 65 6c 65 63 74   {8}.  do_select
3fe0: 5f 74 65 73 74 20 36 2e 32 2e 32 20 7b 0a 20 20  _test 6.2.2 {.  
3ff0: 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46    SELECT rowid F
4000: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 74 31 20  ROM t1 WHERE t1 
4010: 4d 41 54 43 48 20 27 22 7a 6d 20 61 7a 61 76 77  MATCH '"zm azavw
4020: 6d 22 27 0a 20 20 7d 20 7b 31 35 20 32 36 20 39  m"'.  } {15 26 9
4030: 32 20 39 36 7d 0a 20 20 69 66 20 7b 24 66 74 73  2 96}.  if {$fts
4040: 33 5f 73 69 6d 70 6c 65 5f 64 65 66 65 72 72 65  3_simple_deferre
4050: 64 5f 74 6f 6b 65 6e 73 5f 6f 6e 6c 79 3d 3d 30  d_tokens_only==0
4060: 7d 20 7b 0a 20 20 20 20 64 6f 5f 73 65 6c 65 63  } {.    do_selec
4070: 74 5f 74 65 73 74 20 36 2e 32 2e 33 20 7b 0a 20  t_test 6.2.3 {. 
4080: 20 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69       SELECT rowi
4090: 64 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  d FROM t1 WHERE 
40a0: 74 31 20 4d 41 54 43 48 20 27 22 6a 6b 20 78 64  t1 MATCH '"jk xd
40b0: 75 76 66 68 6b 22 20 4f 52 20 22 7a 6d 20 61 7a  uvfhk" OR "zm az
40c0: 61 76 77 6d 22 27 0a 20 20 20 20 7d 20 7b 38 20  avwm"'.    } {8 
40d0: 31 35 20 32 36 20 39 32 20 39 36 7d 0a 20 20 7d  15 26 92 96}.  }
40e0: 0a 0a 20 20 69 66 20 7b 24 74 6e 3e 31 7d 20 7b  ..  if {$tn>1} {
40f0: 0a 20 20 20 20 23 20 54 68 65 73 65 20 74 65 73  .    # These tes
4100: 74 73 20 77 69 6c 6c 20 6e 6f 74 20 77 6f 72 6b  ts will not work
4110: 20 77 69 74 68 20 24 74 6e 3d 3d 31 2c 20 61 73   with $tn==1, as
4120: 20 69 6e 20 74 68 69 73 20 63 61 73 65 20 74 61   in this case ta
4130: 62 6c 65 20 74 31 20 69 73 0a 20 20 20 20 23 20  ble t1 is.    # 
4140: 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 46 54  created using FT
4150: 53 33 2e 20 54 68 65 20 5e 20 73 79 6e 74 61 78  S3. The ^ syntax
4160: 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62   is only availab
4170: 6c 65 20 77 69 74 68 20 46 54 53 34 20 74 61 62  le with FTS4 tab
4180: 6c 65 73 2e 0a 20 20 20 20 23 0a 20 20 20 20 64  les..    #.    d
4190: 6f 5f 73 65 6c 65 63 74 5f 74 65 73 74 20 37 2e  o_select_test 7.
41a0: 31 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  1 {.      SELECT
41b0: 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31 20 57   rowid FROM t1 W
41c0: 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 27 5e  HERE t1 MATCH '^
41d0: 7a 6d 20 6d 6a 70 61 76 6a 75 68 77 27 0a 20 20  zm mjpavjuhw'.  
41e0: 20 20 7d 20 7b 35 36 20 36 32 7d 0a 20 20 20 20    } {56 62}.    
41f0: 64 6f 5f 73 65 6c 65 63 74 5f 74 65 73 74 20 37  do_select_test 7
4200: 2e 32 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43  .2 {.      SELEC
4210: 54 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31 20  T rowid FROM t1 
4220: 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 27  WHERE t1 MATCH '
4230: 5e 61 7a 61 76 77 6d 20 7a 6d 27 0a 20 20 20 20  ^azavwm zm'.    
4240: 7d 20 7b 34 33 7d 0a 20 20 7d 0a 7d 0a 0a 73 65  } {43}.  }.}..se
4250: 74 20 74 65 73 74 70 72 65 66 69 78 20 66 74 73  t testprefix fts
4260: 33 64 65 66 65 72 0a 0a 64 6f 5f 65 78 65 63 73  3defer..do_execs
4270: 71 6c 5f 74 65 73 74 20 33 2e 31 20 7b 0a 20 20  ql_test 3.1 {.  
4280: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
4290: 41 42 4c 45 20 78 31 20 55 53 49 4e 47 20 66 74  ABLE x1 USING ft
42a0: 73 34 28 61 2c 20 62 29 3b 0a 20 20 49 4e 53 45  s4(a, b);.  INSE
42b0: 52 54 20 49 4e 54 4f 20 78 31 20 56 41 4c 55 45  RT INTO x1 VALUE
42c0: 53 28 27 61 20 62 20 63 27 2c 20 27 64 20 65 20  S('a b c', 'd e 
42d0: 66 27 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e  f');.  INSERT IN
42e0: 54 4f 20 78 31 20 53 45 4c 45 43 54 20 2a 20 46  TO x1 SELECT * F
42f0: 52 4f 4d 20 78 31 3b 0a 20 20 49 4e 53 45 52 54  ROM x1;.  INSERT
4300: 20 49 4e 54 4f 20 78 31 20 53 45 4c 45 43 54 20   INTO x1 SELECT 
4310: 2a 20 46 52 4f 4d 20 78 31 3b 0a 20 20 49 4e 53  * FROM x1;.  INS
4320: 45 52 54 20 49 4e 54 4f 20 78 31 20 53 45 4c 45  ERT INTO x1 SELE
4330: 43 54 20 2a 20 46 52 4f 4d 20 78 31 3b 0a 20 20  CT * FROM x1;.  
4340: 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 31 20 53  INSERT INTO x1 S
4350: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 31 3b  ELECT * FROM x1;
4360: 0a 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  .}.do_execsql_te
4370: 73 74 20 33 2e 32 20 22 0a 20 20 49 4e 53 45 52  st 3.2 ".  INSER
4380: 54 20 49 4e 54 4f 20 78 31 20 56 41 4c 55 45 53  T INTO x1 VALUES
4390: 28 0a 20 20 20 20 27 5b 73 74 72 69 6e 67 20 72  (.    '[string r
43a0: 65 70 65 61 74 20 7b 64 20 7d 20 33 30 30 30 5d  epeat {d } 3000]
43b0: 27 2c 20 27 5b 73 74 72 69 6e 67 20 72 65 70 65  ', '[string repe
43c0: 61 74 20 7b 66 20 7d 20 33 30 30 30 30 5d 27 0a  at {f } 30000]'.
43d0: 20 20 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e    );.  INSERT IN
43e0: 54 4f 20 78 31 28 78 31 29 20 56 41 4c 55 45 53  TO x1(x1) VALUES
43f0: 28 27 6f 70 74 69 6d 69 7a 65 27 29 3b 0a 22 0a  ('optimize');.".
4400: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
4410: 20 33 2e 33 20 7b 0a 20 20 53 45 4c 45 43 54 20   3.3 {.  SELECT 
4420: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 78 31  count(*) FROM x1
4430: 20 57 48 45 52 45 20 78 31 20 4d 41 54 43 48 20   WHERE x1 MATCH 
4440: 27 22 64 20 65 20 66 22 27 0a 7d 20 7b 31 36 7d  '"d e f"'.} {16}
4450: 0a 0a 23 20 41 74 20 6f 6e 65 20 70 6f 69 6e 74  ..# At one point
4460: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 77   the following w
4470: 61 73 20 63 61 75 73 69 6e 67 20 61 20 66 6c 6f  as causing a flo
4480: 61 74 69 6e 67 2d 70 6f 69 6e 74 20 65 78 63 65  ating-point exce
4490: 70 74 69 6f 6e 2e 0a 23 0a 64 6f 5f 65 78 65 63  ption..#.do_exec
44a0: 73 71 6c 5f 74 65 73 74 20 34 2e 31 20 7b 0a 20  sql_test 4.1 {. 
44b0: 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
44c0: 54 41 42 4c 45 20 78 32 20 55 53 49 4e 47 20 46  TABLE x2 USING F
44d0: 54 53 34 28 78 29 3b 0a 20 20 42 45 47 49 4e 3b  TS4(x);.  BEGIN;
44e0: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78  .  INSERT INTO x
44f0: 32 20 56 41 4c 55 45 53 28 27 6d 20 6d 20 6d 20  2 VALUES('m m m 
4500: 6d 20 6d 20 6d 20 6d 20 6d 20 6d 20 6d 20 6d 20  m m m m m m m m 
4510: 6d 20 6d 20 6d 20 6d 20 6d 20 6d 20 6d 20 6d 20  m m m m m m m m 
4520: 6d 20 6d 20 6d 20 6d 20 6d 20 6d 20 6d 27 29 3b  m m m m m m m');
4530: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78  .  INSERT INTO x
4540: 32 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  2 SELECT * FROM 
4550: 78 32 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  x2;.  INSERT INT
4560: 4f 20 78 32 20 53 45 4c 45 43 54 20 2a 20 46 52  O x2 SELECT * FR
4570: 4f 4d 20 78 32 3b 0a 20 20 49 4e 53 45 52 54 20  OM x2;.  INSERT 
4580: 49 4e 54 4f 20 78 32 20 53 45 4c 45 43 54 20 2a  INTO x2 SELECT *
4590: 20 46 52 4f 4d 20 78 32 3b 0a 20 20 49 4e 53 45   FROM x2;.  INSE
45a0: 52 54 20 49 4e 54 4f 20 78 32 20 53 45 4c 45 43  RT INTO x2 SELEC
45b0: 54 20 2a 20 46 52 4f 4d 20 78 32 3b 0a 20 20 49  T * FROM x2;.  I
45c0: 4e 53 45 52 54 20 49 4e 54 4f 20 78 32 20 53 45  NSERT INTO x2 SE
45d0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 32 3b 0a  LECT * FROM x2;.
45e0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 32    INSERT INTO x2
45f0: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78   SELECT * FROM x
4600: 32 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  2;.  INSERT INTO
4610: 20 78 32 20 53 45 4c 45 43 54 20 2a 20 46 52 4f   x2 SELECT * FRO
4620: 4d 20 78 32 3b 0a 20 20 49 4e 53 45 52 54 20 49  M x2;.  INSERT I
4630: 4e 54 4f 20 78 32 20 53 45 4c 45 43 54 20 2a 20  NTO x2 SELECT * 
4640: 46 52 4f 4d 20 78 32 3b 0a 20 20 49 4e 53 45 52  FROM x2;.  INSER
4650: 54 20 49 4e 54 4f 20 78 32 20 53 45 4c 45 43 54  T INTO x2 SELECT
4660: 20 2a 20 46 52 4f 4d 20 78 32 3b 0a 20 20 49 4e   * FROM x2;.  IN
4670: 53 45 52 54 20 49 4e 54 4f 20 78 32 20 53 45 4c  SERT INTO x2 SEL
4680: 45 43 54 20 2a 20 46 52 4f 4d 20 78 32 3b 0a 20  ECT * FROM x2;. 
4690: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 32 20   INSERT INTO x2 
46a0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 32  SELECT * FROM x2
46b0: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
46c0: 78 32 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  x2 SELECT * FROM
46d0: 20 78 32 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e   x2;.  INSERT IN
46e0: 54 4f 20 78 32 20 53 45 4c 45 43 54 20 2a 20 46  TO x2 SELECT * F
46f0: 52 4f 4d 20 78 32 3b 0a 20 20 49 4e 53 45 52 54  ROM x2;.  INSERT
4700: 20 49 4e 54 4f 20 78 32 20 53 45 4c 45 43 54 20   INTO x2 SELECT 
4710: 2a 20 46 52 4f 4d 20 78 32 3b 0a 20 20 49 4e 53  * FROM x2;.  INS
4720: 45 52 54 20 49 4e 54 4f 20 78 32 20 53 45 4c 45  ERT INTO x2 SELE
4730: 43 54 20 2a 20 46 52 4f 4d 20 78 32 3b 0a 20 20  CT * FROM x2;.  
4740: 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 32 20 56  INSERT INTO x2 V
4750: 41 4c 55 45 53 28 27 61 20 62 20 63 20 64 20 65  ALUES('a b c d e
4760: 20 66 20 67 20 68 20 69 20 6a 20 6b 20 6c 20 6d   f g h i j k l m
4770: 20 6e 20 6f 20 70 20 71 20 72 20 73 20 74 20 75   n o p q r s t u
4780: 20 76 20 77 20 78 20 79 20 6d 27 29 3b 0a 20 20   v w x y m');.  
4790: 43 4f 4d 4d 49 54 3b 0a 7d 0a 64 6f 5f 65 78 65  COMMIT;.}.do_exe
47a0: 63 73 71 6c 5f 74 65 73 74 20 34 2e 32 20 7b 0a  csql_test 4.2 {.
47b0: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
47c0: 78 32 20 57 48 45 52 45 20 78 32 20 4d 41 54 43  x2 WHERE x2 MATC
47d0: 48 20 27 61 20 62 20 63 20 64 20 65 20 66 20 67  H 'a b c d e f g
47e0: 20 68 20 69 20 6a 20 6b 20 6c 20 6d 20 6e 20 6f   h i j k l m n o
47f0: 20 70 20 71 20 72 20 73 27 3b 0a 7d 20 7b 7b 61   p q r s';.} {{a
4800: 20 62 20 63 20 64 20 65 20 66 20 67 20 68 20 69   b c d e f g h i
4810: 20 6a 20 6b 20 6c 20 6d 20 6e 20 6f 20 70 20 71   j k l m n o p q
4820: 20 72 20 73 20 74 20 75 20 76 20 77 20 78 20 79   r s t u v w x y
4830: 20 6d 7d 7d 0a 0a 73 65 74 20 74 6f 6b 65 6e 69   m}}..set tokeni
4840: 7a 65 72 73 20 7b 31 20 73 69 6d 70 6c 65 7d 0a  zers {1 simple}.
4850: 69 66 63 61 70 61 62 6c 65 20 69 63 75 20 7b 20  ifcapable icu { 
4860: 6c 61 70 70 65 6e 64 20 74 6f 6b 65 6e 69 7a 65  lappend tokenize
4870: 72 73 20 32 20 7b 69 63 75 20 65 6e 5f 55 53 7d  rs 2 {icu en_US}
4880: 20 7d 0a 66 6f 72 65 61 63 68 20 7b 74 6e 20 74   }.foreach {tn t
4890: 6f 6b 65 6e 69 7a 65 72 7d 20 24 74 6f 6b 65 6e  okenizer} $token
48a0: 69 7a 65 72 73 20 7b 0a 20 20 64 6f 5f 65 78 65  izers {.  do_exe
48b0: 63 73 71 6c 5f 74 65 73 74 20 35 2e 24 74 6e 2e  csql_test 5.$tn.
48c0: 31 20 22 0a 20 20 20 20 43 52 45 41 54 45 20 56  1 ".    CREATE V
48d0: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 78 33 20  IRTUAL TABLE x3 
48e0: 55 53 49 4e 47 20 46 54 53 34 28 61 2c 20 62 2c  USING FTS4(a, b,
48f0: 20 54 4f 4b 45 4e 49 5a 45 20 24 74 6f 6b 65 6e   TOKENIZE $token
4900: 69 7a 65 72 29 0a 20 20 22 0a 20 20 64 6f 5f 65  izer).  ".  do_e
4910: 78 65 63 73 71 6c 5f 74 65 73 74 20 35 2e 24 74  xecsql_test 5.$t
4920: 6e 2e 32 20 7b 0a 20 20 20 20 42 45 47 49 4e 3b  n.2 {.    BEGIN;
4930: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
4940: 20 78 33 20 56 41 4c 55 45 53 28 27 62 20 62 20   x3 VALUES('b b 
4950: 62 20 62 20 62 20 62 20 62 20 62 20 62 20 62 20  b b b b b b b b 
4960: 62 27 2c 20 27 62 20 62 20 62 20 62 20 62 20 62  b', 'b b b b b b
4970: 20 62 20 62 20 62 20 62 20 62 20 62 20 62 27 29   b b b b b b b')
4980: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
4990: 4f 20 78 33 20 53 45 4c 45 43 54 20 2a 20 46 52  O x3 SELECT * FR
49a0: 4f 4d 20 78 33 3b 0a 20 20 20 20 49 4e 53 45 52  OM x3;.    INSER
49b0: 54 20 49 4e 54 4f 20 78 33 20 53 45 4c 45 43 54  T INTO x3 SELECT
49c0: 20 2a 20 46 52 4f 4d 20 78 33 3b 0a 20 20 20 20   * FROM x3;.    
49d0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 33 20 53  INSERT INTO x3 S
49e0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 33 3b  ELECT * FROM x3;
49f0: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
4a00: 20 78 33 20 53 45 4c 45 43 54 20 2a 20 46 52 4f   x3 SELECT * FRO
4a10: 4d 20 78 33 3b 0a 20 20 20 20 49 4e 53 45 52 54  M x3;.    INSERT
4a20: 20 49 4e 54 4f 20 78 33 20 53 45 4c 45 43 54 20   INTO x3 SELECT 
4a30: 2a 20 46 52 4f 4d 20 78 33 3b 0a 20 20 20 20 49  * FROM x3;.    I
4a40: 4e 53 45 52 54 20 49 4e 54 4f 20 78 33 20 53 45  NSERT INTO x3 SE
4a50: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 33 3b 0a  LECT * FROM x3;.
4a60: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
4a70: 78 33 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  x3 SELECT * FROM
4a80: 20 78 33 3b 0a 20 20 20 20 49 4e 53 45 52 54 20   x3;.    INSERT 
4a90: 49 4e 54 4f 20 78 33 20 53 45 4c 45 43 54 20 2a  INTO x3 SELECT *
4aa0: 20 46 52 4f 4d 20 78 33 3b 0a 20 20 20 20 49 4e   FROM x3;.    IN
4ab0: 53 45 52 54 20 49 4e 54 4f 20 78 33 20 53 45 4c  SERT INTO x3 SEL
4ac0: 45 43 54 20 2a 20 46 52 4f 4d 20 78 33 3b 0a 20  ECT * FROM x3;. 
4ad0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78     INSERT INTO x
4ae0: 33 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  3 SELECT * FROM 
4af0: 78 33 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  x3;.    INSERT I
4b00: 4e 54 4f 20 78 33 20 53 45 4c 45 43 54 20 2a 20  NTO x3 SELECT * 
4b10: 46 52 4f 4d 20 78 33 3b 0a 20 20 20 20 49 4e 53  FROM x3;.    INS
4b20: 45 52 54 20 49 4e 54 4f 20 78 33 20 53 45 4c 45  ERT INTO x3 SELE
4b30: 43 54 20 2a 20 46 52 4f 4d 20 78 33 3b 0a 20 20  CT * FROM x3;.  
4b40: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 33    INSERT INTO x3
4b50: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78   SELECT * FROM x
4b60: 33 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  3;.    INSERT IN
4b70: 54 4f 20 78 33 20 53 45 4c 45 43 54 20 2a 20 46  TO x3 SELECT * F
4b80: 52 4f 4d 20 78 33 3b 0a 20 20 20 20 49 4e 53 45  ROM x3;.    INSE
4b90: 52 54 20 49 4e 54 4f 20 78 33 20 53 45 4c 45 43  RT INTO x3 SELEC
4ba0: 54 20 2a 20 46 52 4f 4d 20 78 33 3b 0a 20 20 20  T * FROM x3;.   
4bb0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 33 20   INSERT INTO x3 
4bc0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 33  SELECT * FROM x3
4bd0: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
4be0: 4f 20 78 33 20 56 41 4c 55 45 53 28 27 61 20 62  O x3 VALUES('a b
4bf0: 20 63 27 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20 20   c', NULL);.    
4c00: 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 33 20 56  INSERT INTO x3 V
4c10: 41 4c 55 45 53 28 27 61 20 78 20 63 27 2c 20 4e  ALUES('a x c', N
4c20: 55 4c 4c 29 3b 0a 20 20 20 20 43 4f 4d 4d 49 54  ULL);.    COMMIT
4c30: 3b 0a 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20  ;..    SELECT * 
4c40: 46 52 4f 4d 20 78 33 20 57 48 45 52 45 20 78 33  FROM x3 WHERE x3
4c50: 20 4d 41 54 43 48 20 27 61 20 62 27 3b 0a 20 20   MATCH 'a b';.  
4c60: 7d 20 7b 7b 61 20 62 20 63 7d 20 7b 7d 7d 0a 0a  } {{a b c} {}}..
4c70: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
4c80: 74 20 35 2e 24 74 6e 2e 33 20 7b 20 44 52 4f 50  t 5.$tn.3 { DROP
4c90: 20 54 41 42 4c 45 20 78 33 20 7d 0a 7d 0a 0a 66   TABLE x3 }.}..f
4ca0: 69 6e 69 73 68 5f 74 65 73 74 0a                 inish_test.