xref: /sqlite-3.40.0/test/fuzzer1.test (revision be7721d1)
1# 2011 March 25
2#
3# The author disclaims copyright to this source code.  In place of
4# a legal notice, here is a blessing:
5#
6#    May you do good and not evil.
7#    May you find forgiveness for yourself and forgive others.
8#    May you share freely, never taking more than you give.
9#
10#***********************************************************************
11# This file implements regression tests for TCL interface to the
12# SQLite library.
13#
14# The focus of the tests is the word-fuzzer virtual table.
15#
16
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19
20ifcapable !vtab {
21  finish_test
22  return
23}
24
25set ::testprefix fuzzer1
26load_static_extension db fuzzer
27
28# Check configuration errors.
29#
30do_catchsql_test fuzzer1-1.1 {
31  CREATE VIRTUAL TABLE f USING fuzzer;
32} {1 {fuzzer: wrong number of CREATE VIRTUAL TABLE arguments}}
33
34do_catchsql_test fuzzer1-1.2 {
35  CREATE VIRTUAL TABLE f USING fuzzer(one, two);
36} {1 {fuzzer: wrong number of CREATE VIRTUAL TABLE arguments}}
37
38do_catchsql_test fuzzer1-1.3 {
39  CREATE VIRTUAL TABLE f USING fuzzer(nosuchtable);
40} {1 {fuzzer: no such table: main.nosuchtable}}
41
42do_catchsql_test fuzzer1-1.4 {
43  CREATE TEMP TABLE nosuchtable(a, b, c, d);
44  CREATE VIRTUAL TABLE f USING fuzzer(nosuchtable);
45} {1 {fuzzer: no such table: main.nosuchtable}}
46
47do_catchsql_test fuzzer1-1.5 {
48  DROP TABLE temp.nosuchtable;
49  CREATE TABLE nosuchtable(a, b, c, d);
50  CREATE VIRTUAL TABLE temp.f USING fuzzer(nosuchtable);
51} {1 {fuzzer: no such table: temp.nosuchtable}}
52
53do_catchsql_test fuzzer1-1.6 {
54  DROP TABLE IF EXISTS f_rules;
55  CREATE TABLE f_rules(a, b, c);
56  CREATE VIRTUAL TABLE f USING fuzzer(f_rules);
57} {1 {fuzzer: f_rules has 3 columns, expected 4}}
58
59do_catchsql_test fuzzer1-1.7 {
60  DROP TABLE IF EXISTS f_rules;
61  CREATE TABLE f_rules(a, b, c, d, e);
62  CREATE VIRTUAL TABLE f USING fuzzer(f_rules);
63} {1 {fuzzer: f_rules has 5 columns, expected 4}}
64
65
66do_execsql_test fuzzer1-2.1 {
67  CREATE TABLE f1_rules(ruleset DEFAULT 0, cfrom, cto, cost);
68  INSERT INTO f1_rules(cfrom, cto, cost) VALUES('e','a',1);
69  INSERT INTO f1_rules(cfrom, cto, cost) VALUES('a','e',10);
70  INSERT INTO f1_rules(cfrom, cto, cost) VALUES('e','o',100);
71
72  CREATE VIRTUAL TABLE f1 USING fuzzer(f1_rules);
73} {}
74
75do_execsql_test fuzzer1-2.1 {
76    SELECT word, distance FROM f1 WHERE word MATCH 'abcde'
77} {
78  abcde 0   abcda 1   ebcde 10
79  ebcda 11  abcdo 100 ebcdo 110
80  obcde 110 obcda 111 obcdo 210
81}
82
83do_execsql_test fuzzer1-2.4 {
84  INSERT INTO f1_rules(ruleset, cfrom, cto, cost) VALUES(1,'b','x',1);
85  INSERT INTO f1_rules(ruleset, cfrom, cto, cost) VALUES(1,'d','y',10);
86  INSERT INTO f1_rules(ruleset, cfrom, cto, cost) VALUES(1,'y','z',100);
87
88  DROP TABLE f1;
89  CREATE VIRTUAL TABLE f1 USING fuzzer(f1_rules);
90} {}
91
92do_execsql_test fuzzer1-2.5 {
93  SELECT word, distance FROM f1 WHERE word MATCH 'abcde'
94} {
95  abcde 0   abcda 1   ebcde 10
96  ebcda 11  abcdo 100 ebcdo 110
97  obcde 110 obcda 111 obcdo 210
98}
99
100do_execsql_test fuzzer1-2.6 {
101  SELECT word, distance FROM f1 WHERE word MATCH 'abcde' AND ruleset=0
102} {
103  abcde 0   abcda 1   ebcde 10
104  ebcda 11  abcdo 100 ebcdo 110
105  obcde 110 obcda 111 obcdo 210
106}
107
108do_execsql_test fuzzer1-2.7 {
109  SELECT word, distance FROM f1 WHERE word MATCH 'abcde' AND ruleset=1
110} {
111  abcde 0 axcde 1 abcye 10
112  axcye 11 abcze 110 axcze 111
113}
114
115do_test fuzzer1-1.8 {
116  db eval {
117    SELECT word, distance FROM f1 WHERE word MATCH 'abcde' AND distance<100
118  }
119} {abcde 0 abcda 1 ebcde 10 ebcda 11}
120do_test fuzzer1-1.9 {
121  db eval {
122    SELECT word, distance FROM f1 WHERE word MATCH 'abcde' AND distance<=100
123  }
124} {abcde 0 abcda 1 ebcde 10 ebcda 11 abcdo 100}
125do_test fuzzer1-1.10 {
126  db eval {
127    SELECT word, distance FROM f1
128     WHERE word MATCH 'abcde' AND distance<100 AND ruleset=0
129  }
130} {abcde 0 abcda 1 ebcde 10 ebcda 11}
131do_test fuzzer1-1.11 {
132  db eval {
133    SELECT word, distance FROM f1
134    WHERE word MATCH 'abcde' AND distance<=100 AND ruleset=0
135  }
136} {abcde 0 abcda 1 ebcde 10 ebcda 11 abcdo 100}
137do_test fuzzer1-1.12 {
138  db eval {
139    SELECT word, distance FROM f1
140     WHERE word MATCH 'abcde' AND distance<11 AND ruleset=1
141  }
142} {abcde 0 axcde 1 abcye 10}
143do_test fuzzer1-1.13 {
144  db eval {
145    SELECT word, distance FROM f1
146    WHERE word MATCH 'abcde' AND distance<=11 AND ruleset=1
147  }
148} {abcde 0 axcde 1 abcye 10 axcye 11}
149do_test fuzzer1-1.14 {
150  catchsql {INSERT INTO f1 VALUES(1)}
151} {1 {table f1 may not be modified}}
152do_test fuzzer1-1.15 {
153  catchsql {DELETE FROM f1}
154} {1 {table f1 may not be modified}}
155do_test fuzzer1-1.16 {
156  catchsql {UPDATE f1 SET rowid=rowid+10000}
157} {1 {table f1 may not be modified}}
158
159
160do_test fuzzer1-2.0 {
161  execsql {
162    -- costs based on English letter frequencies
163    CREATE TEMP TABLE f2_rules(ruleset DEFAULT 0, cFrom, cTo, cost);
164    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('a','e',24);
165    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('a','o',47);
166    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('a','u',50);
167    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('e','a',23);
168    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('e','i',33);
169    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('e','o',37);
170    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('i','e',33);
171    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('i','y',33);
172    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('o','a',41);
173    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('o','e',46);
174    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('o','u',57);
175    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('u','o',58);
176    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('y','i',33);
177
178    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('t','th',70);
179    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('th','t',66);
180
181    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('a','',84);
182    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','b',106);
183    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('b','',106);
184    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','c',94);
185    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('c','',94);
186    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','d',89);
187    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('d','',89);
188    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','e',83);
189    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('e','',83);
190    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','f',97);
191    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('f','',97);
192    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','g',99);
193    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('g','',99);
194    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','h',86);
195    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('h','',86);
196    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','i',85);
197    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('i','',85);
198    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','j',120);
199    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('j','',120);
200    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','k',120);
201    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('k','',120);
202    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','l',89);
203    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('l','',89);
204    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','m',96);
205    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('m','',96);
206    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','n',85);
207    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('n','',85);
208    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','o',85);
209    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('o','',85);
210    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','p',100);
211    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('p','',100);
212    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','q',120);
213    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('q','',120);
214    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','r',86);
215    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('r','',86);
216    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','s',86);
217    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('s','',86);
218    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','t',84);
219    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('t','',84);
220    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','u',94);
221    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('u','',94);
222    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','v',120);
223    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('v','',120);
224    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','w',96);
225    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('w','',96);
226    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','x',120);
227    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('x','',120);
228    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','y',100);
229    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('y','',100);
230    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('','z',120);
231    INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('z','',120);
232    INSERT INTO f2_rules(ruleset,cFrom,cTo,cost)
233      SELECT 1, cFrom, cTo, 100 FROM f2_rules WHERE ruleset=0;
234    INSERT INTO f2_rules(ruleset,cFrom,cTo,cost)
235      SELECT 2, cFrom, cTo, 200-cost FROM f2_rules WHERE ruleset=0;
236    INSERT INTO f2_rules(ruleset,cFrom,cTo,cost)
237      SELECT 3, cFrom, cTo, cost FROM f2_rules WHERE ruleset=0;
238    INSERT INTO f2_rules(ruleset,cFrom,cTo,cost)
239      VALUES(3, 'mallard','duck',50),
240            (3, 'duck', 'mallard', 50),
241            (3, 'rock', 'stone', 50),
242            (3, 'stone', 'rock', 50);
243
244
245    CREATE VIRTUAL TABLE temp.f2 USING fuzzer(f2_rules);
246
247    -- Street names for the 28269 ZIPCODE.
248    --
249    CREATE TEMP TABLE streetname(n TEXT UNIQUE);
250    INSERT INTO streetname VALUES('abbotsinch');
251    INSERT INTO streetname VALUES('abbottsgate');
252    INSERT INTO streetname VALUES('abbywood');
253    INSERT INTO streetname VALUES('abner');
254    INSERT INTO streetname VALUES('acacia ridge');
255    INSERT INTO streetname VALUES('acorn creek');
256    INSERT INTO streetname VALUES('acorn forest');
257    INSERT INTO streetname VALUES('adel');
258    INSERT INTO streetname VALUES('ainslie');
259    INSERT INTO streetname VALUES('airways');
260    INSERT INTO streetname VALUES('alabaster');
261    INSERT INTO streetname VALUES('alba');
262    INSERT INTO streetname VALUES('albertine');
263    INSERT INTO streetname VALUES('alden glen');
264    INSERT INTO streetname VALUES('alderson');
265    INSERT INTO streetname VALUES('allen');
266    INSERT INTO streetname VALUES('allen a brown');
267    INSERT INTO streetname VALUES('allness glen');
268    INSERT INTO streetname VALUES('aloysia');
269    INSERT INTO streetname VALUES('alpine');
270    INSERT INTO streetname VALUES('alwyn');
271    INSERT INTO streetname VALUES('amaranthus');
272    INSERT INTO streetname VALUES('amber glen');
273    INSERT INTO streetname VALUES('amber leigh way');
274    INSERT INTO streetname VALUES('amber meadows');
275    INSERT INTO streetname VALUES('amberway');
276    INSERT INTO streetname VALUES('ame');
277    INSERT INTO streetname VALUES('amesbury hill');
278    INSERT INTO streetname VALUES('anderson');
279    INSERT INTO streetname VALUES('andrew thomas');
280    INSERT INTO streetname VALUES('anduin falls');
281    INSERT INTO streetname VALUES('ankeny');
282    INSERT INTO streetname VALUES('annandale');
283    INSERT INTO streetname VALUES('annbick');
284    INSERT INTO streetname VALUES('antelope');
285    INSERT INTO streetname VALUES('anzack');
286    INSERT INTO streetname VALUES('apple glen');
287    INSERT INTO streetname VALUES('applevalley');
288    INSERT INTO streetname VALUES('appley mead');
289    INSERT INTO streetname VALUES('aragorn');
290    INSERT INTO streetname VALUES('arbor creek');
291    INSERT INTO streetname VALUES('arbor day');
292    INSERT INTO streetname VALUES('arbor meadows');
293    INSERT INTO streetname VALUES('arbor spring');
294    INSERT INTO streetname VALUES('arborview');
295    INSERT INTO streetname VALUES('arklow');
296    INSERT INTO streetname VALUES('armitage');
297    INSERT INTO streetname VALUES('arvin');
298    INSERT INTO streetname VALUES('ash cove');
299    INSERT INTO streetname VALUES('ashford leigh');
300    INSERT INTO streetname VALUES('ashmont');
301    INSERT INTO streetname VALUES('atlas');
302    INSERT INTO streetname VALUES('atwater');
303    INSERT INTO streetname VALUES('auburn hill');
304    INSERT INTO streetname VALUES('aulton link');
305    INSERT INTO streetname VALUES('austin dekota');
306    INSERT INTO streetname VALUES('austin knoll');
307    INSERT INTO streetname VALUES('auten');
308    INSERT INTO streetname VALUES('autumn harvest');
309    INSERT INTO streetname VALUES('autumn oak');
310    INSERT INTO streetname VALUES('autumn ridge');
311    INSERT INTO streetname VALUES('avalon forest');
312    INSERT INTO streetname VALUES('avalon loop');
313    INSERT INTO streetname VALUES('avon farm');
314    INSERT INTO streetname VALUES('avonhurst');
315    INSERT INTO streetname VALUES('avonlea');
316    INSERT INTO streetname VALUES('aynrand');
317    INSERT INTO streetname VALUES('azure valley');
318    INSERT INTO streetname VALUES('baberton');
319    INSERT INTO streetname VALUES('baffin');
320    INSERT INTO streetname VALUES('baggins');
321    INSERT INTO streetname VALUES('balata');
322    INSERT INTO streetname VALUES('ballantray');
323    INSERT INTO streetname VALUES('ballston');
324    INSERT INTO streetname VALUES('balsam tree');
325    INSERT INTO streetname VALUES('bambi');
326    INSERT INTO streetname VALUES('banwell');
327    INSERT INTO streetname VALUES('barbee');
328    INSERT INTO streetname VALUES('barefoot forest');
329    INSERT INTO streetname VALUES('barnview');
330    INSERT INTO streetname VALUES('baroda');
331    INSERT INTO streetname VALUES('barson');
332    INSERT INTO streetname VALUES('baskerville');
333    INSERT INTO streetname VALUES('battle creek');
334    INSERT INTO streetname VALUES('baucom');
335    INSERT INTO streetname VALUES('bay pines');
336    INSERT INTO streetname VALUES('beaker');
337    INSERT INTO streetname VALUES('beard');
338    INSERT INTO streetname VALUES('beardsley');
339    INSERT INTO streetname VALUES('bearoak');
340    INSERT INTO streetname VALUES('beauvista');
341    INSERT INTO streetname VALUES('beaver creek');
342    INSERT INTO streetname VALUES('beaver hollow');
343    INSERT INTO streetname VALUES('bedlington');
344    INSERT INTO streetname VALUES('beech cove');
345    INSERT INTO streetname VALUES('beech crest');
346    INSERT INTO streetname VALUES('beith');
347    INSERT INTO streetname VALUES('bell glen');
348    INSERT INTO streetname VALUES('bellmore');
349    INSERT INTO streetname VALUES('bells mill');
350    INSERT INTO streetname VALUES('bellville');
351    INSERT INTO streetname VALUES('belmar place');
352    INSERT INTO streetname VALUES('bembridge');
353    INSERT INTO streetname VALUES('bennett neely');
354    INSERT INTO streetname VALUES('bentgrass run');
355    INSERT INTO streetname VALUES('benthaven');
356    INSERT INTO streetname VALUES('bernardy');
357    INSERT INTO streetname VALUES('bernbrook shadow');
358    INSERT INTO streetname VALUES('berrybrook');
359    INSERT INTO streetname VALUES('berrybush');
360    INSERT INTO streetname VALUES('berwick');
361    INSERT INTO streetname VALUES('betterton');
362    INSERT INTO streetname VALUES('bickham');
363    INSERT INTO streetname VALUES('billingham');
364    INSERT INTO streetname VALUES('birchcroft');
365    INSERT INTO streetname VALUES('birchstone');
366    INSERT INTO streetname VALUES('birdwell');
367    INSERT INTO streetname VALUES('bisaner');
368    INSERT INTO streetname VALUES('bitterbush');
369    INSERT INTO streetname VALUES('bitterroot');
370    INSERT INTO streetname VALUES('black fox');
371    INSERT INTO streetname VALUES('black maple');
372    INSERT INTO streetname VALUES('black trail');
373    INSERT INTO streetname VALUES('blackbird');
374    INSERT INTO streetname VALUES('blake a dare');
375    INSERT INTO streetname VALUES('blasdell');
376    INSERT INTO streetname VALUES('blue aster');
377    INSERT INTO streetname VALUES('blue finch');
378    INSERT INTO streetname VALUES('blue lilac');
379    INSERT INTO streetname VALUES('blue sky');
380    INSERT INTO streetname VALUES('blue tick');
381    INSERT INTO streetname VALUES('bob beatty');
382    INSERT INTO streetname VALUES('bobcat');
383    INSERT INTO streetname VALUES('bolton');
384    INSERT INTO streetname VALUES('boomerang');
385    INSERT INTO streetname VALUES('boulder');
386    INSERT INTO streetname VALUES('boxer');
387    INSERT INTO streetname VALUES('boxmeer');
388    INSERT INTO streetname VALUES('brachnell view');
389    INSERT INTO streetname VALUES('bradford lake');
390    INSERT INTO streetname VALUES('bradwell');
391    INSERT INTO streetname VALUES('brady');
392    INSERT INTO streetname VALUES('braids bend');
393    INSERT INTO streetname VALUES('bralers');
394    INSERT INTO streetname VALUES('brandie glen');
395    INSERT INTO streetname VALUES('brandy ridge');
396    INSERT INTO streetname VALUES('brandybuck');
397    INSERT INTO streetname VALUES('branthurst');
398    INSERT INTO streetname VALUES('brassy creek');
399    INSERT INTO streetname VALUES('brathay');
400    INSERT INTO streetname VALUES('brawer farm');
401    INSERT INTO streetname VALUES('breezy morn');
402    INSERT INTO streetname VALUES('brenda');
403    INSERT INTO streetname VALUES('brenly');
404    INSERT INTO streetname VALUES('brenock');
405    INSERT INTO streetname VALUES('brianwood');
406    INSERT INTO streetname VALUES('briar rose');
407    INSERT INTO streetname VALUES('briarcrest');
408    INSERT INTO streetname VALUES('briarthorne');
409    INSERT INTO streetname VALUES('brick dust');
410    INSERT INTO streetname VALUES('bridgepath');
411    INSERT INTO streetname VALUES('bridle ridge');
412    INSERT INTO streetname VALUES('briggs');
413    INSERT INTO streetname VALUES('brightleaf');
414    INSERT INTO streetname VALUES('brigstock');
415    INSERT INTO streetname VALUES('broad ridge');
416    INSERT INTO streetname VALUES('brock');
417    INSERT INTO streetname VALUES('brockhampton');
418    INSERT INTO streetname VALUES('broken pine');
419    INSERT INTO streetname VALUES('brompton');
420    INSERT INTO streetname VALUES('brook falls');
421    INSERT INTO streetname VALUES('brookings');
422    INSERT INTO streetname VALUES('browne');
423    INSERT INTO streetname VALUES('brownes creek');
424    INSERT INTO streetname VALUES('brownes ferry');
425    INSERT INTO streetname VALUES('brownestone view');
426    INSERT INTO streetname VALUES('brumit');
427    INSERT INTO streetname VALUES('bryn athyn');
428    INSERT INTO streetname VALUES('buck');
429    INSERT INTO streetname VALUES('bucklebury');
430    INSERT INTO streetname VALUES('buckminister');
431    INSERT INTO streetname VALUES('buckspring');
432    INSERT INTO streetname VALUES('burch');
433    INSERT INTO streetname VALUES('burch shire');
434    INSERT INTO streetname VALUES('burkston');
435    INSERT INTO streetname VALUES('burmith');
436    INSERT INTO streetname VALUES('burnaby');
437    INSERT INTO streetname VALUES('butterfly');
438    INSERT INTO streetname VALUES('cabin creek');
439    INSERT INTO streetname VALUES('cairns mill');
440    INSERT INTO streetname VALUES('callender');
441    INSERT INTO streetname VALUES('cambellton');
442    INSERT INTO streetname VALUES('cambridge bay');
443    INSERT INTO streetname VALUES('canary');
444    INSERT INTO streetname VALUES('canbury');
445    INSERT INTO streetname VALUES('candle leaf');
446    INSERT INTO streetname VALUES('canipe');
447    INSERT INTO streetname VALUES('canipe farm');
448    INSERT INTO streetname VALUES('cannon');
449    INSERT INTO streetname VALUES('canopy');
450    INSERT INTO streetname VALUES('canso');
451    INSERT INTO streetname VALUES('canterbrook');
452    INSERT INTO streetname VALUES('cardinal glen');
453    INSERT INTO streetname VALUES('cardinal point');
454    INSERT INTO streetname VALUES('cardinals nest');
455    INSERT INTO streetname VALUES('carlota');
456    INSERT INTO streetname VALUES('carmathen');
457    INSERT INTO streetname VALUES('carver');
458    INSERT INTO streetname VALUES('carver pond');
459    INSERT INTO streetname VALUES('casa loma');
460    INSERT INTO streetname VALUES('caselton');
461    INSERT INTO streetname VALUES('castello');
462    INSERT INTO streetname VALUES('castle ridge');
463    INSERT INTO streetname VALUES('castleglen');
464    INSERT INTO streetname VALUES('castlemaine');
465    INSERT INTO streetname VALUES('cavett');
466    INSERT INTO streetname VALUES('caymus');
467    INSERT INTO streetname VALUES('cedardale ridge');
468    INSERT INTO streetname VALUES('cedarhurst');
469    INSERT INTO streetname VALUES('cemkey way');
470    INSERT INTO streetname VALUES('cerise');
471    INSERT INTO streetname VALUES('chaceview');
472    INSERT INTO streetname VALUES('chadsworth');
473    INSERT INTO streetname VALUES('chadwell');
474    INSERT INTO streetname VALUES('champions crest');
475    INSERT INTO streetname VALUES('chandler haven');
476    INSERT INTO streetname VALUES('chapel crossing');
477    INSERT INTO streetname VALUES('chapel ridge');
478    INSERT INTO streetname VALUES('charles crawford');
479    INSERT INTO streetname VALUES('charminster');
480    INSERT INTO streetname VALUES('chasewind');
481    INSERT INTO streetname VALUES('chavel');
482    INSERT INTO streetname VALUES('chelsea jade');
483    INSERT INTO streetname VALUES('chestnut knoll');
484    INSERT INTO streetname VALUES('cheviot');
485    INSERT INTO streetname VALUES('chickadee');
486    INSERT INTO streetname VALUES('chidley');
487    INSERT INTO streetname VALUES('chimney ridge');
488    INSERT INTO streetname VALUES('chimney springs');
489    INSERT INTO streetname VALUES('chinaberry');
490    INSERT INTO streetname VALUES('chinemist');
491    INSERT INTO streetname VALUES('chinquapin');
492    INSERT INTO streetname VALUES('chiswell');
493    INSERT INTO streetname VALUES('christenbury');
494    INSERT INTO streetname VALUES('christenbury hills');
495    INSERT INTO streetname VALUES('churchill');
496    INSERT INTO streetname VALUES('cindy');
497    INSERT INTO streetname VALUES('cinnamon teal');
498    INSERT INTO streetname VALUES('citadel');
499    INSERT INTO streetname VALUES('clare olivia');
500    INSERT INTO streetname VALUES('clarke creek');
501    INSERT INTO streetname VALUES('clarke ridge');
502    INSERT INTO streetname VALUES('clear day');
503    INSERT INTO streetname VALUES('clear stream');
504    INSERT INTO streetname VALUES('cleve brown');
505    INSERT INTO streetname VALUES('cliff cameron');
506    INSERT INTO streetname VALUES('cliffvale');
507    INSERT INTO streetname VALUES('cloverside');
508    INSERT INTO streetname VALUES('clymer');
509    INSERT INTO streetname VALUES('coatbridge');
510    INSERT INTO streetname VALUES('cobble glen');
511    INSERT INTO streetname VALUES('cochran farm');
512    INSERT INTO streetname VALUES('cochrane');
513    INSERT INTO streetname VALUES('coleridge');
514    INSERT INTO streetname VALUES('coleshire');
515    INSERT INTO streetname VALUES('collins');
516    INSERT INTO streetname VALUES('colvard');
517    INSERT INTO streetname VALUES('colvard park');
518    INSERT INTO streetname VALUES('condor');
519    INSERT INTO streetname VALUES('conner ridge');
520    INSERT INTO streetname VALUES('connery');
521    INSERT INTO streetname VALUES('cooper run');
522    INSERT INTO streetname VALUES('coopers ridge');
523    INSERT INTO streetname VALUES('copper hill');
524    INSERT INTO streetname VALUES('coppermine');
525    INSERT INTO streetname VALUES('cornelia');
526    INSERT INTO streetname VALUES('corner');
527    INSERT INTO streetname VALUES('cornerstone');
528    INSERT INTO streetname VALUES('cottage oaks');
529    INSERT INTO streetname VALUES('cougar');
530    INSERT INTO streetname VALUES('coves end');
531    INSERT INTO streetname VALUES('cragland');
532    INSERT INTO streetname VALUES('crail');
533    INSERT INTO streetname VALUES('cranberry nook');
534    INSERT INTO streetname VALUES('crawford brook');
535    INSERT INTO streetname VALUES('crayton');
536    INSERT INTO streetname VALUES('creek breeze');
537    INSERT INTO streetname VALUES('crescent ridge');
538    INSERT INTO streetname VALUES('crescent view');
539    INSERT INTO streetname VALUES('cresta');
540    INSERT INTO streetname VALUES('crestfield');
541    INSERT INTO streetname VALUES('crestland');
542    INSERT INTO streetname VALUES('crestwick');
543    INSERT INTO streetname VALUES('crisfield');
544    INSERT INTO streetname VALUES('crisp wood');
545    INSERT INTO streetname VALUES('croft haven');
546    INSERT INTO streetname VALUES('crofton springs');
547    INSERT INTO streetname VALUES('cross');
548    INSERT INTO streetname VALUES('crosspoint center');
549    INSERT INTO streetname VALUES('crownvista');
550    INSERT INTO streetname VALUES('crystal arms');
551    INSERT INTO streetname VALUES('crystal crest');
552    INSERT INTO streetname VALUES('crystal leaf');
553    INSERT INTO streetname VALUES('cunningham park');
554    INSERT INTO streetname VALUES('cypress pond');
555    INSERT INTO streetname VALUES('daffodil');
556    INSERT INTO streetname VALUES('daisyfield');
557    INSERT INTO streetname VALUES('dalecrest');
558    INSERT INTO streetname VALUES('dannelly park');
559    INSERT INTO streetname VALUES('daphne');
560    INSERT INTO streetname VALUES('daria');
561    INSERT INTO streetname VALUES('dartmouth');
562    INSERT INTO streetname VALUES('datha');
563    INSERT INTO streetname VALUES('david cox');
564    INSERT INTO streetname VALUES('davis');
565    INSERT INTO streetname VALUES('davis crossing');
566    INSERT INTO streetname VALUES('davis lake');
567    INSERT INTO streetname VALUES('davis ridge');
568    INSERT INTO streetname VALUES('dawnmist');
569    INSERT INTO streetname VALUES('daybreak');
570    INSERT INTO streetname VALUES('dearmon');
571    INSERT INTO streetname VALUES('dearview');
572    INSERT INTO streetname VALUES('deaton hill');
573    INSERT INTO streetname VALUES('deer cross');
574    INSERT INTO streetname VALUES('deerton');
575    INSERT INTO streetname VALUES('degrasse');
576    INSERT INTO streetname VALUES('delamere');
577    INSERT INTO streetname VALUES('dellfield');
578    INSERT INTO streetname VALUES('dellinger');
579    INSERT INTO streetname VALUES('demington');
580    INSERT INTO streetname VALUES('denmeade');
581    INSERT INTO streetname VALUES('derita');
582    INSERT INTO streetname VALUES('derita woods');
583    INSERT INTO streetname VALUES('deruyter');
584    INSERT INTO streetname VALUES('dervish');
585    INSERT INTO streetname VALUES('devas');
586    INSERT INTO streetname VALUES('devon croft');
587    INSERT INTO streetname VALUES('devonbridge');
588    INSERT INTO streetname VALUES('devongate');
589    INSERT INTO streetname VALUES('devonhill');
590    INSERT INTO streetname VALUES('dewmorn');
591    INSERT INTO streetname VALUES('distribution center');
592    INSERT INTO streetname VALUES('dominion crest');
593    INSERT INTO streetname VALUES('dominion green');
594    INSERT INTO streetname VALUES('dominion village');
595    INSERT INTO streetname VALUES('dorshire');
596    INSERT INTO streetname VALUES('double creek crossing');
597    INSERT INTO streetname VALUES('dow');
598    INSERT INTO streetname VALUES('downfield wood');
599    INSERT INTO streetname VALUES('downing creek');
600    INSERT INTO streetname VALUES('driscol');
601    INSERT INTO streetname VALUES('driwood');
602    INSERT INTO streetname VALUES('dry brook');
603    INSERT INTO streetname VALUES('dumont');
604    INSERT INTO streetname VALUES('dunblane');
605    INSERT INTO streetname VALUES('dunfield');
606    INSERT INTO streetname VALUES('dunoon');
607    INSERT INTO streetname VALUES('dunslow');
608    INSERT INTO streetname VALUES('dunstaff');
609    INSERT INTO streetname VALUES('durham');
610    INSERT INTO streetname VALUES('durston');
611    INSERT INTO streetname VALUES('dusty cedar');
612    INSERT INTO streetname VALUES('dusty trail');
613    INSERT INTO streetname VALUES('dutchess');
614    INSERT INTO streetname VALUES('duxford');
615    INSERT INTO streetname VALUES('eagle creek');
616    INSERT INTO streetname VALUES('eagles field');
617    INSERT INTO streetname VALUES('eargle');
618    INSERT INTO streetname VALUES('earlswood');
619    INSERT INTO streetname VALUES('early mist');
620    INSERT INTO streetname VALUES('earthenware');
621    INSERT INTO streetname VALUES('eastfield park');
622    INSERT INTO streetname VALUES('eastfield village');
623    INSERT INTO streetname VALUES('easy');
624    INSERT INTO streetname VALUES('eben');
625    INSERT INTO streetname VALUES('edgepine');
626    INSERT INTO streetname VALUES('edgewier');
627    INSERT INTO streetname VALUES('edinburgh');
628    INSERT INTO streetname VALUES('edinmeadow');
629    INSERT INTO streetname VALUES('edmonton');
630    INSERT INTO streetname VALUES('edwin jones');
631    INSERT INTO streetname VALUES('elberon');
632    INSERT INTO streetname VALUES('elderslie');
633    INSERT INTO streetname VALUES('elementary view');
634    INSERT INTO streetname VALUES('elendil');
635    INSERT INTO streetname VALUES('elizabeth');
636    INSERT INTO streetname VALUES('elm cove');
637    INSERT INTO streetname VALUES('elrond');
638    INSERT INTO streetname VALUES('elsenham');
639    INSERT INTO streetname VALUES('elven');
640    INSERT INTO streetname VALUES('emma lynn');
641    INSERT INTO streetname VALUES('english setter');
642    INSERT INTO streetname VALUES('enoch');
643    INSERT INTO streetname VALUES('equipment');
644    INSERT INTO streetname VALUES('ernest russell');
645    INSERT INTO streetname VALUES('ernie');
646    INSERT INTO streetname VALUES('esmeralda');
647    INSERT INTO streetname VALUES('evergreen hollow');
648    INSERT INTO streetname VALUES('eversfield');
649    INSERT INTO streetname VALUES('ewen');
650    INSERT INTO streetname VALUES('ewert cut');
651    INSERT INTO streetname VALUES('exbury');
652    INSERT INTO streetname VALUES('fair grounds park');
653    INSERT INTO streetname VALUES('fairbourne');
654    INSERT INTO streetname VALUES('fairchase');
655    INSERT INTO streetname VALUES('faircreek');
656    INSERT INTO streetname VALUES('fairglen');
657    INSERT INTO streetname VALUES('fairlea');
658    INSERT INTO streetname VALUES('fairmead');
659    INSERT INTO streetname VALUES('fairmeadows');
660    INSERT INTO streetname VALUES('fairstone');
661    INSERT INTO streetname VALUES('fairvista');
662    INSERT INTO streetname VALUES('fairway point');
663    INSERT INTO streetname VALUES('falconcrest');
664    INSERT INTO streetname VALUES('falls ridge');
665    INSERT INTO streetname VALUES('falmouth');
666    INSERT INTO streetname VALUES('far west');
667    INSERT INTO streetname VALUES('farlow');
668    INSERT INTO streetname VALUES('farris wheel');
669    INSERT INTO streetname VALUES('fawndale');
670    INSERT INTO streetname VALUES('feather bend');
671    INSERT INTO streetname VALUES('fernledge');
672    INSERT INTO streetname VALUES('fernmoss');
673    INSERT INTO streetname VALUES('ferrell commons');
674    INSERT INTO streetname VALUES('fieldstone');
675    INSERT INTO streetname VALUES('fillian');
676    INSERT INTO streetname VALUES('fincher');
677    INSERT INTO streetname VALUES('foggy meadow');
678    INSERT INTO streetname VALUES('fordyce');
679    INSERT INTO streetname VALUES('forest grove');
680    INSERT INTO streetname VALUES('forest path');
681    INSERT INTO streetname VALUES('forestridge commons');
682    INSERT INTO streetname VALUES('forestrock');
683    INSERT INTO streetname VALUES('fortunes ridge');
684    INSERT INTO streetname VALUES('founders club');
685    INSERT INTO streetname VALUES('fountaingrass');
686    INSERT INTO streetname VALUES('fox chase');
687    INSERT INTO streetname VALUES('fox glen');
688    INSERT INTO streetname VALUES('fox hill');
689    INSERT INTO streetname VALUES('fox point');
690    INSERT INTO streetname VALUES('fox trot');
691    INSERT INTO streetname VALUES('foxbriar');
692    INSERT INTO streetname VALUES('frank little');
693    INSERT INTO streetname VALUES('franzia');
694    INSERT INTO streetname VALUES('french woods');
695    INSERT INTO streetname VALUES('frostmoor');
696    INSERT INTO streetname VALUES('frye');
697    INSERT INTO streetname VALUES('furlong');
698    INSERT INTO streetname VALUES('galena view');
699    INSERT INTO streetname VALUES('gallery pointe');
700    INSERT INTO streetname VALUES('gammon');
701    INSERT INTO streetname VALUES('garden grove');
702    INSERT INTO streetname VALUES('gardendale');
703    INSERT INTO streetname VALUES('garganey');
704    INSERT INTO streetname VALUES('garnet field');
705    INSERT INTO streetname VALUES('garrison');
706    INSERT INTO streetname VALUES('garvin');
707    INSERT INTO streetname VALUES('garvis');
708    INSERT INTO streetname VALUES('gaskill');
709    INSERT INTO streetname VALUES('gemstone');
710    INSERT INTO streetname VALUES('gibbon');
711    INSERT INTO streetname VALUES('gibbon terrace');
712    INSERT INTO streetname VALUES('gibbons link');
713    INSERT INTO streetname VALUES('gillman');
714    INSERT INTO streetname VALUES('gladwood');
715    INSERT INTO streetname VALUES('gladwyne');
716    INSERT INTO streetname VALUES('glamorgan');
717    INSERT INTO streetname VALUES('glaze');
718    INSERT INTO streetname VALUES('glen brook');
719    INSERT INTO streetname VALUES('glen cove');
720    INSERT INTO streetname VALUES('glen hope');
721    INSERT INTO streetname VALUES('glen manor');
722    INSERT INTO streetname VALUES('glen olden');
723    INSERT INTO streetname VALUES('glencairn');
724    INSERT INTO streetname VALUES('glendock');
725    INSERT INTO streetname VALUES('glenolden');
726    INSERT INTO streetname VALUES('glenover');
727    INSERT INTO streetname VALUES('glenshire');
728    INSERT INTO streetname VALUES('glenstone');
729    INSERT INTO streetname VALUES('gold dust');
730    INSERT INTO streetname VALUES('golden pond');
731    INSERT INTO streetname VALUES('goldenblush');
732    INSERT INTO streetname VALUES('goldenfield');
733    INSERT INTO streetname VALUES('goose landing');
734    INSERT INTO streetname VALUES('gorham gate');
735    INSERT INTO streetname VALUES('grabill');
736    INSERT INTO streetname VALUES('graburns ford');
737    INSERT INTO streetname VALUES('graham');
738    INSERT INTO streetname VALUES('grahamson');
739    INSERT INTO streetname VALUES('granard');
740    INSERT INTO streetname VALUES('grand teton');
741    INSERT INTO streetname VALUES('grande heights');
742    INSERT INTO streetname VALUES('grandeur');
743    INSERT INTO streetname VALUES('granite creek');
744    INSERT INTO streetname VALUES('grasset');
745    INSERT INTO streetname VALUES('graypark');
746    INSERT INTO streetname VALUES('grays ridge');
747    INSERT INTO streetname VALUES('great bear');
748    INSERT INTO streetname VALUES('green clover');
749    INSERT INTO streetname VALUES('green hedge');
750    INSERT INTO streetname VALUES('green meadow');
751    INSERT INTO streetname VALUES('green pasture');
752    INSERT INTO streetname VALUES('greene');
753    INSERT INTO streetname VALUES('greenloch');
754    INSERT INTO streetname VALUES('greenock ridge');
755    INSERT INTO streetname VALUES('greenware');
756    INSERT INTO streetname VALUES('greenway village');
757    INSERT INTO streetname VALUES('grenelefe village');
758    INSERT INTO streetname VALUES('grey dogwood');
759    INSERT INTO streetname VALUES('greyhound');
760    INSERT INTO streetname VALUES('greylock ridge');
761    INSERT INTO streetname VALUES('grosbeak');
762    INSERT INTO streetname VALUES('grove');
763    INSERT INTO streetname VALUES('groveton');
764    INSERT INTO streetname VALUES('groveview');
765    INSERT INTO streetname VALUES('hackberry creek');
766    INSERT INTO streetname VALUES('hackberry grove');
767    INSERT INTO streetname VALUES('hackett');
768    INSERT INTO streetname VALUES('haddington');
769    INSERT INTO streetname VALUES('hagler');
770    INSERT INTO streetname VALUES('halcott');
771    INSERT INTO streetname VALUES('half dome');
772    INSERT INTO streetname VALUES('hallam');
773    INSERT INTO streetname VALUES('hamilton russell');
774    INSERT INTO streetname VALUES('hampton place');
775    INSERT INTO streetname VALUES('hankins');
776    INSERT INTO streetname VALUES('harburn forest');
777    INSERT INTO streetname VALUES('harringham');
778    INSERT INTO streetname VALUES('harrington woods');
779    INSERT INTO streetname VALUES('harris corners');
780    INSERT INTO streetname VALUES('harris cove');
781    INSERT INTO streetname VALUES('harris glen');
782    INSERT INTO streetname VALUES('harris hill');
783    INSERT INTO streetname VALUES('harris oak');
784    INSERT INTO streetname VALUES('harris pointe');
785    INSERT INTO streetname VALUES('harris pond');
786    INSERT INTO streetname VALUES('harris ridge');
787    INSERT INTO streetname VALUES('harris technology');
788    INSERT INTO streetname VALUES('harris woods');
789    INSERT INTO streetname VALUES('hartfield downs');
790    INSERT INTO streetname VALUES('hattie little');
791    INSERT INTO streetname VALUES('hatwynn');
792    INSERT INTO streetname VALUES('hawkins');
793    INSERT INTO streetname VALUES('hawksnest');
794    INSERT INTO streetname VALUES('haybridge');
795    INSERT INTO streetname VALUES('hayden');
796    INSERT INTO streetname VALUES('hazelcroft');
797    INSERT INTO streetname VALUES('hazlitt');
798    INSERT INTO streetname VALUES('hazy valley');
799    INSERT INTO streetname VALUES('hearst');
800    INSERT INTO streetname VALUES('heathcrest');
801    INSERT INTO streetname VALUES('heathcroft');
802    INSERT INTO streetname VALUES('hedge maple');
803    INSERT INTO streetname VALUES('hedgecrest');
804    INSERT INTO streetname VALUES('hedingham');
805    INSERT INTO streetname VALUES('heman');
806    INSERT INTO streetname VALUES('henderson');
807    INSERT INTO streetname VALUES('henderson oaks');
808    INSERT INTO streetname VALUES('henderson valley');
809    INSERT INTO streetname VALUES('hendry');
810    INSERT INTO streetname VALUES('heritage hills');
811    INSERT INTO streetname VALUES('heritage woods');
812    INSERT INTO streetname VALUES('heron cove');
813    INSERT INTO streetname VALUES('heron glen');
814    INSERT INTO streetname VALUES('hewitt');
815    INSERT INTO streetname VALUES('hey rock');
816    INSERT INTO streetname VALUES('heysham');
817    INSERT INTO streetname VALUES('hickory cove');
818    INSERT INTO streetname VALUES('hidden meadow');
819    INSERT INTO streetname VALUES('high glen');
820    INSERT INTO streetname VALUES('high laurel');
821    INSERT INTO streetname VALUES('high valley');
822    INSERT INTO streetname VALUES('highcroft');
823    INSERT INTO streetname VALUES('highland');
824    INSERT INTO streetname VALUES('highland commons');
825    INSERT INTO streetname VALUES('highland creek');
826    INSERT INTO streetname VALUES('highland glen');
827    INSERT INTO streetname VALUES('highland park');
828    INSERT INTO streetname VALUES('highlander');
829    INSERT INTO streetname VALUES('highstream');
830    INSERT INTO streetname VALUES('hilltop');
831    INSERT INTO streetname VALUES('hobbitshire');
832    INSERT INTO streetname VALUES('hoffman');
833    INSERT INTO streetname VALUES('hogans way');
834    INSERT INTO streetname VALUES('holbert');
835    INSERT INTO streetname VALUES('hollow ridge');
836    INSERT INTO streetname VALUES('holly vista');
837    INSERT INTO streetname VALUES('hollywood');
838    INSERT INTO streetname VALUES('hoover');
839    INSERT INTO streetname VALUES('hopkins');
840    INSERT INTO streetname VALUES('horace mann');
841    INSERT INTO streetname VALUES('hornbeam');
842    INSERT INTO streetname VALUES('horse pasture');
843    INSERT INTO streetname VALUES('hosta');
844    INSERT INTO streetname VALUES('howard');
845    INSERT INTO streetname VALUES('hubbard');
846    INSERT INTO streetname VALUES('hubbard falls');
847    INSERT INTO streetname VALUES('hubbard woods');
848    INSERT INTO streetname VALUES('hucks');
849    INSERT INTO streetname VALUES('hunters creek');
850    INSERT INTO streetname VALUES('hunters pointe');
851    INSERT INTO streetname VALUES('hunters spring');
852    INSERT INTO streetname VALUES('hunters whip');
853    INSERT INTO streetname VALUES('huntmeadow');
854    INSERT INTO streetname VALUES('hutchison mcdonald');
855    INSERT INTO streetname VALUES('ingleton');
856    INSERT INTO streetname VALUES('insdale');
857    INSERT INTO streetname VALUES('interstate 85 service');
858    INSERT INTO streetname VALUES('iola');
859    INSERT INTO streetname VALUES('iredell');
860    INSERT INTO streetname VALUES('iron brigade');
861    INSERT INTO streetname VALUES('irwin valley');
862    INSERT INTO streetname VALUES('irwin wood');
863    INSERT INTO streetname VALUES('ivy brook');
864    INSERT INTO streetname VALUES('ivy ridge');
865    INSERT INTO streetname VALUES('jack russell');
866    INSERT INTO streetname VALUES('jackson');
867    INSERT INTO streetname VALUES('jacob martin');
868    INSERT INTO streetname VALUES('jamison');
869    INSERT INTO streetname VALUES('jane');
870    INSERT INTO streetname VALUES('jaspar crest');
871    INSERT INTO streetname VALUES('jessica');
872    INSERT INTO streetname VALUES('jimmy oehler');
873    INSERT INTO streetname VALUES('jocelyn');
874    INSERT INTO streetname VALUES('johnston mill');
875    INSERT INTO streetname VALUES('johnston oehler');
876    INSERT INTO streetname VALUES('judal');
877    INSERT INTO streetname VALUES('junipeous');
878    INSERT INTO streetname VALUES('juniper');
879    INSERT INTO streetname VALUES('juniperus');
880    INSERT INTO streetname VALUES('kalispell');
881    INSERT INTO streetname VALUES('karylsturn');
882    INSERT INTO streetname VALUES('katelyn');
883    INSERT INTO streetname VALUES('kayron');
884    INSERT INTO streetname VALUES('keaton');
885    INSERT INTO streetname VALUES('keble');
886    INSERT INTO streetname VALUES('keels');
887    INSERT INTO streetname VALUES('keith');
888    INSERT INTO streetname VALUES('keithwood');
889    INSERT INTO streetname VALUES('kelden walker');
890    INSERT INTO streetname VALUES('kelsey emma');
891    INSERT INTO streetname VALUES('kendrick');
892    INSERT INTO streetname VALUES('kenmont');
893    INSERT INTO streetname VALUES('kennerly cove');
894    INSERT INTO streetname VALUES('kenninghall');
895    INSERT INTO streetname VALUES('kent village');
896    INSERT INTO streetname VALUES('kestral ridge');
897    INSERT INTO streetname VALUES('kestrel');
898    INSERT INTO streetname VALUES('kilmartin');
899    INSERT INTO streetname VALUES('kilty');
900    INSERT INTO streetname VALUES('kinglet');
901    INSERT INTO streetname VALUES('kingsland');
902    INSERT INTO streetname VALUES('kingsnorth');
903    INSERT INTO streetname VALUES('kinsmore');
904    INSERT INTO streetname VALUES('kirkgard');
905    INSERT INTO streetname VALUES('kirkmont');
906    INSERT INTO streetname VALUES('knightsgate');
907    INSERT INTO streetname VALUES('kobuk');
908    INSERT INTO streetname VALUES('kotlik');
909    INSERT INTO streetname VALUES('kotz');
910    INSERT INTO streetname VALUES('kyndall walk');
911    INSERT INTO streetname VALUES('laborde');
912    INSERT INTO streetname VALUES('lady bank');
913    INSERT INTO streetname VALUES('lagrande');
914    INSERT INTO streetname VALUES('lake');
915    INSERT INTO streetname VALUES('lakeridge commons');
916    INSERT INTO streetname VALUES('lakeview');
917    INSERT INTO streetname VALUES('lakewood edge');
918    INSERT INTO streetname VALUES('lakota');
919    INSERT INTO streetname VALUES('lambrook');
920    INSERT INTO streetname VALUES('lampkin');
921    INSERT INTO streetname VALUES('lampkin park');
922    INSERT INTO streetname VALUES('langham');
923    INSERT INTO streetname VALUES('lanzerac manor');
924    INSERT INTO streetname VALUES('larkmead forest');
925    INSERT INTO streetname VALUES('lattice');
926    INSERT INTO streetname VALUES('laurel crest');
927    INSERT INTO streetname VALUES('laurel ridge');
928    INSERT INTO streetname VALUES('laurel run');
929    INSERT INTO streetname VALUES('laurenfield');
930    INSERT INTO streetname VALUES('laveta');
931    INSERT INTO streetname VALUES('lazy day');
932    INSERT INTO streetname VALUES('leawood run');
933    INSERT INTO streetname VALUES('lee marie');
934    INSERT INTO streetname VALUES('legacy lake');
935    INSERT INTO streetname VALUES('legacy park');
936    INSERT INTO streetname VALUES('legato');
937    INSERT INTO streetname VALUES('legolas');
938    INSERT INTO streetname VALUES('leigh glen');
939    INSERT INTO streetname VALUES('lence');
940    INSERT INTO streetname VALUES('lenox hill');
941    INSERT INTO streetname VALUES('leonine');
942    INSERT INTO streetname VALUES('leslie');
943    INSERT INTO streetname VALUES('lester hill');
944    INSERT INTO streetname VALUES('levisey');
945    INSERT INTO streetname VALUES('liberty bell');
946    INSERT INTO streetname VALUES('linden berry');
947    INSERT INTO streetname VALUES('lisbon');
948    INSERT INTO streetname VALUES('little stoney');
949    INSERT INTO streetname VALUES('livengood');
950    INSERT INTO streetname VALUES('lochway');
951    INSERT INTO streetname VALUES('lockman');
952    INSERT INTO streetname VALUES('loganville');
953    INSERT INTO streetname VALUES('lone tree');
954    INSERT INTO streetname VALUES('long creek park');
955    INSERT INTO streetname VALUES('long forest');
956    INSERT INTO streetname VALUES('looking glass');
957    INSERT INTO streetname VALUES('lookout point');
958    INSERT INTO streetname VALUES('lowen');
959    INSERT INTO streetname VALUES('lusby');
960    INSERT INTO streetname VALUES('lyleton');
961    INSERT INTO streetname VALUES('lynn lee');
962    INSERT INTO streetname VALUES('lynnewood glen');
963    INSERT INTO streetname VALUES('machrie');
964    INSERT INTO streetname VALUES('mackinac');
965    INSERT INTO streetname VALUES('maddox');
966    INSERT INTO streetname VALUES('madison park');
967    INSERT INTO streetname VALUES('mallard');
968    INSERT INTO streetname VALUES('mallard cove');
969    INSERT INTO streetname VALUES('mallard forest');
970    INSERT INTO streetname VALUES('mallard grove');
971    INSERT INTO streetname VALUES('mallard hill');
972    INSERT INTO streetname VALUES('mallard park');
973    INSERT INTO streetname VALUES('mallard ridge');
974    INSERT INTO streetname VALUES('mallard view');
975    INSERT INTO streetname VALUES('manbey');
976    INSERT INTO streetname VALUES('manning');
977    INSERT INTO streetname VALUES('mantario');
978    INSERT INTO streetname VALUES('maple');
979    INSERT INTO streetname VALUES('maple cove');
980    INSERT INTO streetname VALUES('maple park');
981    INSERT INTO streetname VALUES('marathon hill');
982    INSERT INTO streetname VALUES('marbury');
983    INSERT INTO streetname VALUES('marett');
984    INSERT INTO streetname VALUES('marigold');
985    INSERT INTO streetname VALUES('marionwood');
986    INSERT INTO streetname VALUES('marshbank');
987    INSERT INTO streetname VALUES('mason');
988    INSERT INTO streetname VALUES('mayapple');
989    INSERT INTO streetname VALUES('maylandia');
990    INSERT INTO streetname VALUES('mayspring');
991    INSERT INTO streetname VALUES('mcadam');
992    INSERT INTO streetname VALUES('mcchesney');
993    INSERT INTO streetname VALUES('mccurdy');
994    INSERT INTO streetname VALUES('mcgrath');
995    INSERT INTO streetname VALUES('mckendree');
996    INSERT INTO streetname VALUES('mclaughlin');
997    INSERT INTO streetname VALUES('mctaggart');
998    INSERT INTO streetname VALUES('meadow green');
999    INSERT INTO streetname VALUES('meadow knoll');
1000    INSERT INTO streetname VALUES('meadow post');
1001    INSERT INTO streetname VALUES('meadowmont');
1002    INSERT INTO streetname VALUES('meadowmont view');
1003    INSERT INTO streetname VALUES('meadowview hills');
1004    INSERT INTO streetname VALUES('melshire');
1005    INSERT INTO streetname VALUES('melstrand');
1006    INSERT INTO streetname VALUES('mentone');
1007    INSERT INTO streetname VALUES('meridale crossing');
1008    INSERT INTO streetname VALUES('merion hills');
1009    INSERT INTO streetname VALUES('merlot');
1010    INSERT INTO streetname VALUES('mersham');
1011    INSERT INTO streetname VALUES('metromont');
1012    INSERT INTO streetname VALUES('metromont industrial');
1013    INSERT INTO streetname VALUES('michaw');
1014    INSERT INTO streetname VALUES('milhaven');
1015    INSERT INTO streetname VALUES('milhof');
1016    INSERT INTO streetname VALUES('millstream ridge');
1017    INSERT INTO streetname VALUES('mineral ridge');
1018    INSERT INTO streetname VALUES('mint thistle');
1019    INSERT INTO streetname VALUES('mintleaf');
1020    INSERT INTO streetname VALUES('mintvale');
1021    INSERT INTO streetname VALUES('misty');
1022    INSERT INTO streetname VALUES('misty arbor');
1023    INSERT INTO streetname VALUES('misty creek');
1024    INSERT INTO streetname VALUES('misty oaks');
1025    INSERT INTO streetname VALUES('misty wood');
1026    INSERT INTO streetname VALUES('mitzi deborah');
1027    INSERT INTO streetname VALUES('mobile');
1028    INSERT INTO streetname VALUES('molly elizabeth');
1029    INSERT INTO streetname VALUES('monmouth');
1030    INSERT INTO streetname VALUES('montrose');
1031    INSERT INTO streetname VALUES('moonlight');
1032    INSERT INTO streetname VALUES('moose');
1033    INSERT INTO streetname VALUES('morning dew');
1034    INSERT INTO streetname VALUES('morningsong');
1035    INSERT INTO streetname VALUES('morningview');
1036    INSERT INTO streetname VALUES('morsey');
1037    INSERT INTO streetname VALUES('moss glen');
1038    INSERT INTO streetname VALUES('mossy bank');
1039    INSERT INTO streetname VALUES('motor sport');
1040    INSERT INTO streetname VALUES('mountain laurel');
1041    INSERT INTO streetname VALUES('mourning dove');
1042    INSERT INTO streetname VALUES('mozart');
1043    INSERT INTO streetname VALUES('munsing');
1044    INSERT INTO streetname VALUES('murray');
1045    INSERT INTO streetname VALUES('nathan');
1046    INSERT INTO streetname VALUES('netherhall');
1047    INSERT INTO streetname VALUES('netherton');
1048    INSERT INTO streetname VALUES('neuhoff');
1049    INSERT INTO streetname VALUES('nevin');
1050    INSERT INTO streetname VALUES('nevin brook');
1051    INSERT INTO streetname VALUES('nevin glen');
1052    INSERT INTO streetname VALUES('nevin place');
1053    INSERT INTO streetname VALUES('new england');
1054    INSERT INTO streetname VALUES('new house');
1055    INSERT INTO streetname VALUES('newbary');
1056    INSERT INTO streetname VALUES('newchurch');
1057    INSERT INTO streetname VALUES('newfane');
1058    INSERT INTO streetname VALUES('newgard');
1059    INSERT INTO streetname VALUES('nicholas');
1060    INSERT INTO streetname VALUES('nicole');
1061    INSERT INTO streetname VALUES('nobility');
1062    INSERT INTO streetname VALUES('norcroft');
1063    INSERT INTO streetname VALUES('northridge');
1064    INSERT INTO streetname VALUES('northside');
1065    INSERT INTO streetname VALUES('northwoods business');
1066    INSERT INTO streetname VALUES('norway');
1067    INSERT INTO streetname VALUES('nottinghill');
1068    INSERT INTO streetname VALUES('numenore');
1069    INSERT INTO streetname VALUES('nyewood');
1070    INSERT INTO streetname VALUES('oak');
1071    INSERT INTO streetname VALUES('oak cove');
1072    INSERT INTO streetname VALUES('oak pasture');
1073    INSERT INTO streetname VALUES('oakburn');
1074    INSERT INTO streetname VALUES('oakwinds');
1075    INSERT INTO streetname VALUES('oakwood');
1076    INSERT INTO streetname VALUES('obrien');
1077    INSERT INTO streetname VALUES('ocala');
1078    INSERT INTO streetname VALUES('old bridge');
1079    INSERT INTO streetname VALUES('old fox');
1080    INSERT INTO streetname VALUES('old potters');
1081    INSERT INTO streetname VALUES('old statesville');
1082    INSERT INTO streetname VALUES('old steine');
1083    INSERT INTO streetname VALUES('old stoney creek');
1084    INSERT INTO streetname VALUES('old sugar creek');
1085    INSERT INTO streetname VALUES('old timber');
1086    INSERT INTO streetname VALUES('old wagon');
1087    INSERT INTO streetname VALUES('old willow');
1088    INSERT INTO streetname VALUES('oldenway');
1089    INSERT INTO streetname VALUES('oneida');
1090    INSERT INTO streetname VALUES('ontario');
1091    INSERT INTO streetname VALUES('oriole');
1092    INSERT INTO streetname VALUES('orofino');
1093    INSERT INTO streetname VALUES('orr');
1094    INSERT INTO streetname VALUES('osage');
1095    INSERT INTO streetname VALUES('osceola');
1096    INSERT INTO streetname VALUES('osprey knoll');
1097    INSERT INTO streetname VALUES('oxford hill');
1098    INSERT INTO streetname VALUES('painted fern');
1099    INSERT INTO streetname VALUES('painted pony');
1100    INSERT INTO streetname VALUES('paisley');
1101    INSERT INTO streetname VALUES('pale moss');
1102    INSERT INTO streetname VALUES('palladium');
1103    INSERT INTO streetname VALUES('palmutum');
1104    INSERT INTO streetname VALUES('palustris');
1105    INSERT INTO streetname VALUES('panglemont');
1106    INSERT INTO streetname VALUES('panther');
1107    INSERT INTO streetname VALUES('panthersville');
1108    INSERT INTO streetname VALUES('paper whites');
1109    INSERT INTO streetname VALUES('park');
1110    INSERT INTO streetname VALUES('parker green');
1111    INSERT INTO streetname VALUES('parkhouse');
1112    INSERT INTO streetname VALUES('passour ridge');
1113    INSERT INTO streetname VALUES('pasture view');
1114    INSERT INTO streetname VALUES('patricia ann');
1115    INSERT INTO streetname VALUES('patton');
1116    INSERT INTO streetname VALUES('patton ridge');
1117    INSERT INTO streetname VALUES('pawpaw');
1118    INSERT INTO streetname VALUES('peach');
1119    INSERT INTO streetname VALUES('peakwood');
1120    INSERT INTO streetname VALUES('pebble creek');
1121    INSERT INTO streetname VALUES('pecan cove');
1122    INSERT INTO streetname VALUES('pedigree');
1123    INSERT INTO streetname VALUES('pelorus');
1124    INSERT INTO streetname VALUES('penmore');
1125    INSERT INTO streetname VALUES('pensfold');
1126    INSERT INTO streetname VALUES('pepperstone');
1127    INSERT INTO streetname VALUES('peregrine');
1128    INSERT INTO streetname VALUES('periwinkle');
1129    INSERT INTO streetname VALUES('perkins');
1130    INSERT INTO streetname VALUES('pete brown');
1131    INSERT INTO streetname VALUES('phillips');
1132    INSERT INTO streetname VALUES('pickway');
1133    INSERT INTO streetname VALUES('piercy woods');
1134    INSERT INTO streetname VALUES('pierpoint');
1135    INSERT INTO streetname VALUES('pine');
1136    INSERT INTO streetname VALUES('pine branch');
1137    INSERT INTO streetname VALUES('pine meadow');
1138    INSERT INTO streetname VALUES('pineleaf');
1139    INSERT INTO streetname VALUES('pinewood');
1140    INSERT INTO streetname VALUES('pintail');
1141    INSERT INTO streetname VALUES('pipestone');
1142    INSERT INTO streetname VALUES('placer maple');
1143    INSERT INTO streetname VALUES('plover');
1144    INSERT INTO streetname VALUES('plum');
1145    INSERT INTO streetname VALUES('po box');
1146    INSERT INTO streetname VALUES('pochard');
1147    INSERT INTO streetname VALUES('pointview');
1148    INSERT INTO streetname VALUES('polk and white');
1149    INSERT INTO streetname VALUES('pond valley');
1150    INSERT INTO streetname VALUES('pondridge');
1151    INSERT INTO streetname VALUES('pope farm');
1152    INSERT INTO streetname VALUES('poplar grove');
1153    INSERT INTO streetname VALUES('poplar springs');
1154    INSERT INTO streetname VALUES('portola');
1155    INSERT INTO streetname VALUES('potters glen');
1156    INSERT INTO streetname VALUES('powatan');
1157    INSERT INTO streetname VALUES('prairie valley');
1158    INSERT INTO streetname VALUES('prescott');
1159    INSERT INTO streetname VALUES('presmann');
1160    INSERT INTO streetname VALUES('prestigious');
1161    INSERT INTO streetname VALUES('princess');
1162    INSERT INTO streetname VALUES('prosperity');
1163    INSERT INTO streetname VALUES('prosperity church');
1164    INSERT INTO streetname VALUES('prosperity commons');
1165    INSERT INTO streetname VALUES('prosperity park');
1166    INSERT INTO streetname VALUES('prosperity point');
1167    INSERT INTO streetname VALUES('prosperity ridge');
1168    INSERT INTO streetname VALUES('prosperity view');
1169    INSERT INTO streetname VALUES('purple finch');
1170    INSERT INTO streetname VALUES('quail');
1171    INSERT INTO streetname VALUES('queensbury');
1172    INSERT INTO streetname VALUES('quinn');
1173    INSERT INTO streetname VALUES('racine');
1174    INSERT INTO streetname VALUES('radbourne');
1175    INSERT INTO streetname VALUES('raddington');
1176    INSERT INTO streetname VALUES('raku');
1177    INSERT INTO streetname VALUES('rancliffe');
1178    INSERT INTO streetname VALUES('ravencrest');
1179    INSERT INTO streetname VALUES('reames');
1180    INSERT INTO streetname VALUES('rebecca run');
1181    INSERT INTO streetname VALUES('red bluff');
1182    INSERT INTO streetname VALUES('red clay');
1183    INSERT INTO streetname VALUES('red clover');
1184    INSERT INTO streetname VALUES('red rose');
1185    INSERT INTO streetname VALUES('red shed');
1186    INSERT INTO streetname VALUES('red tail');
1187    INSERT INTO streetname VALUES('redbridge');
1188    INSERT INTO streetname VALUES('redstart');
1189    INSERT INTO streetname VALUES('redstone view');
1190    INSERT INTO streetname VALUES('reedmont');
1191    INSERT INTO streetname VALUES('reeves');
1192    INSERT INTO streetname VALUES('regal');
1193    INSERT INTO streetname VALUES('reinbeck');
1194    INSERT INTO streetname VALUES('retriever');
1195    INSERT INTO streetname VALUES('ribbonwalk');
1196    INSERT INTO streetname VALUES('richardson park');
1197    INSERT INTO streetname VALUES('richfield');
1198    INSERT INTO streetname VALUES('riddings');
1199    INSERT INTO streetname VALUES('ridge');
1200    INSERT INTO streetname VALUES('ridge cliff');
1201    INSERT INTO streetname VALUES('ridge path');
1202    INSERT INTO streetname VALUES('ridge peak');
1203    INSERT INTO streetname VALUES('ridgefield');
1204    INSERT INTO streetname VALUES('ridgeline');
1205    INSERT INTO streetname VALUES('ridgeview commons');
1206    INSERT INTO streetname VALUES('riley');
1207    INSERT INTO streetname VALUES('riley woods');
1208    INSERT INTO streetname VALUES('rillet');
1209    INSERT INTO streetname VALUES('rindle');
1210    INSERT INTO streetname VALUES('rivendell');
1211    INSERT INTO streetname VALUES('robin');
1212    INSERT INTO streetname VALUES('robins nest');
1213    INSERT INTO streetname VALUES('robur');
1214    INSERT INTO streetname VALUES('robyns glen');
1215    INSERT INTO streetname VALUES('rock stream');
1216    INSERT INTO streetname VALUES('rockwell');
1217    INSERT INTO streetname VALUES('rockwell church');
1218    INSERT INTO streetname VALUES('rocky brook');
1219    INSERT INTO streetname VALUES('rocky ford club');
1220    INSERT INTO streetname VALUES('rotary');
1221    INSERT INTO streetname VALUES('rouda');
1222    INSERT INTO streetname VALUES('royal bluff');
1223    INSERT INTO streetname VALUES('royal celadon');
1224    INSERT INTO streetname VALUES('rubin lura');
1225    INSERT INTO streetname VALUES('runswyck');
1226    INSERT INTO streetname VALUES('ruth ferrell');
1227    INSERT INTO streetname VALUES('ruth polk');
1228    INSERT INTO streetname VALUES('ryan jay');
1229    INSERT INTO streetname VALUES('sackett');
1230    INSERT INTO streetname VALUES('saddle pace');
1231    INSERT INTO streetname VALUES('saddle run');
1232    INSERT INTO streetname VALUES('saddle trail');
1233    INSERT INTO streetname VALUES('saguaro');
1234    INSERT INTO streetname VALUES('saint audrey');
1235    INSERT INTO streetname VALUES('saint bernard');
1236    INSERT INTO streetname VALUES('saint frances');
1237    INSERT INTO streetname VALUES('sam roper');
1238    INSERT INTO streetname VALUES('samara');
1239    INSERT INTO streetname VALUES('sanders creek');
1240    INSERT INTO streetname VALUES('saquache');
1241    INSERT INTO streetname VALUES('sarnia');
1242    INSERT INTO streetname VALUES('savannah springs');
1243    INSERT INTO streetname VALUES('sawgrass ridge');
1244    INSERT INTO streetname VALUES('saxonbury');
1245    INSERT INTO streetname VALUES('scotch moss');
1246    INSERT INTO streetname VALUES('seasons');
1247    INSERT INTO streetname VALUES('serenity');
1248    INSERT INTO streetname VALUES('seths');
1249    INSERT INTO streetname VALUES('shadow lawn');
1250    INSERT INTO streetname VALUES('shadow oaks');
1251    INSERT INTO streetname VALUES('shadow pine');
1252    INSERT INTO streetname VALUES('shadyside');
1253    INSERT INTO streetname VALUES('shallow oak');
1254    INSERT INTO streetname VALUES('shelley');
1255    INSERT INTO streetname VALUES('shining oak');
1256    INSERT INTO streetname VALUES('ship');
1257    INSERT INTO streetname VALUES('shore haven');
1258    INSERT INTO streetname VALUES('shuman');
1259    INSERT INTO streetname VALUES('sidney');
1260    INSERT INTO streetname VALUES('silver birch');
1261    INSERT INTO streetname VALUES('silvermere');
1262    INSERT INTO streetname VALUES('simonton');
1263    INSERT INTO streetname VALUES('singing hills');
1264    INSERT INTO streetname VALUES('singing oak');
1265    INSERT INTO streetname VALUES('sipes');
1266    INSERT INTO streetname VALUES('six point');
1267    INSERT INTO streetname VALUES('skycrest');
1268    INSERT INTO streetname VALUES('skyline');
1269    INSERT INTO streetname VALUES('small');
1270    INSERT INTO streetname VALUES('smith corners');
1271    INSERT INTO streetname VALUES('smithwood');
1272    INSERT INTO streetname VALUES('snow hill');
1273    INSERT INTO streetname VALUES('soapstone');
1274    INSERT INTO streetname VALUES('sobeck');
1275    INSERT INTO streetname VALUES('socata');
1276    INSERT INTO streetname VALUES('solace');
1277    INSERT INTO streetname VALUES('solway');
1278    INSERT INTO streetname VALUES('song sparrow');
1279    INSERT INTO streetname VALUES('sorrento');
1280    INSERT INTO streetname VALUES('spector');
1281    INSERT INTO streetname VALUES('spin drift');
1282    INSERT INTO streetname VALUES('spring crest');
1283    INSERT INTO streetname VALUES('spring lee');
1284    INSERT INTO streetname VALUES('spring park');
1285    INSERT INTO streetname VALUES('spring terrace');
1286    INSERT INTO streetname VALUES('spring trace');
1287    INSERT INTO streetname VALUES('springhaven');
1288    INSERT INTO streetname VALUES('squirrel trail');
1289    INSERT INTO streetname VALUES('stardust');
1290    INSERT INTO streetname VALUES('stargaze');
1291    INSERT INTO streetname VALUES('starita');
1292    INSERT INTO streetname VALUES('starmount');
1293    INSERT INTO streetname VALUES('statesville');
1294    INSERT INTO streetname VALUES('steed');
1295    INSERT INTO streetname VALUES('steelewood');
1296    INSERT INTO streetname VALUES('steepleglen');
1297    INSERT INTO streetname VALUES('stephens farm');
1298    INSERT INTO streetname VALUES('stewarton');
1299    INSERT INTO streetname VALUES('stone park');
1300    INSERT INTO streetname VALUES('stonebrook');
1301    INSERT INTO streetname VALUES('stonefield');
1302    INSERT INTO streetname VALUES('stoneglen');
1303    INSERT INTO streetname VALUES('stonemarsh');
1304    INSERT INTO streetname VALUES('stoney garden');
1305    INSERT INTO streetname VALUES('stoney run');
1306    INSERT INTO streetname VALUES('stoney valley');
1307    INSERT INTO streetname VALUES('stoneykirk');
1308    INSERT INTO streetname VALUES('stream bank');
1309    INSERT INTO streetname VALUES('stream ridge');
1310    INSERT INTO streetname VALUES('suburban');
1311    INSERT INTO streetname VALUES('suffield');
1312    INSERT INTO streetname VALUES('sugar creek');
1313    INSERT INTO streetname VALUES('sugarberry');
1314    INSERT INTO streetname VALUES('sugarstone');
1315    INSERT INTO streetname VALUES('summer creek');
1316    INSERT INTO streetname VALUES('summer valley');
1317    INSERT INTO streetname VALUES('summercrest');
1318    INSERT INTO streetname VALUES('summercroft');
1319    INSERT INTO streetname VALUES('summerford');
1320    INSERT INTO streetname VALUES('summergold');
1321    INSERT INTO streetname VALUES('sunbeam');
1322    INSERT INTO streetname VALUES('sunbridge');
1323    INSERT INTO streetname VALUES('sunpath');
1324    INSERT INTO streetname VALUES('sunset');
1325    INSERT INTO streetname VALUES('sunset ridge');
1326    INSERT INTO streetname VALUES('sunstone');
1327    INSERT INTO streetname VALUES('suntrace');
1328    INSERT INTO streetname VALUES('sunwalk');
1329    INSERT INTO streetname VALUES('sutters hill');
1330    INSERT INTO streetname VALUES('suttonview');
1331    INSERT INTO streetname VALUES('swallow tail');
1332    INSERT INTO streetname VALUES('swanston');
1333    INSERT INTO streetname VALUES('sweet grove');
1334    INSERT INTO streetname VALUES('sweet rose');
1335    INSERT INTO streetname VALUES('sweetbriar ridge');
1336    INSERT INTO streetname VALUES('sweetfield');
1337    INSERT INTO streetname VALUES('sydney overlook');
1338    INSERT INTO streetname VALUES('sylvan');
1339    INSERT INTO streetname VALUES('symphony woods');
1340    INSERT INTO streetname VALUES('tallia');
1341    INSERT INTO streetname VALUES('tallu');
1342    INSERT INTO streetname VALUES('talwyn');
1343    INSERT INTO streetname VALUES('tanager');
1344    INSERT INTO streetname VALUES('tanager park');
1345    INSERT INTO streetname VALUES('tangley');
1346    INSERT INTO streetname VALUES('taranasay');
1347    INSERT INTO streetname VALUES('tarby');
1348    INSERT INTO streetname VALUES('tarland');
1349    INSERT INTO streetname VALUES('tarpway');
1350    INSERT INTO streetname VALUES('tauten');
1351    INSERT INTO streetname VALUES('taymouth');
1352    INSERT INTO streetname VALUES('ten trees');
1353    INSERT INTO streetname VALUES('terrace view');
1354    INSERT INTO streetname VALUES('terrier');
1355    INSERT INTO streetname VALUES('tesh');
1356    INSERT INTO streetname VALUES('teton');
1357    INSERT INTO streetname VALUES('tewkesbury');
1358    INSERT INTO streetname VALUES('thelema');
1359    INSERT INTO streetname VALUES('thistle bloom');
1360    INSERT INTO streetname VALUES('thistledown');
1361    INSERT INTO streetname VALUES('thomas ridge');
1362    INSERT INTO streetname VALUES('thornbrook');
1363    INSERT INTO streetname VALUES('tifton grass');
1364    INSERT INTO streetname VALUES('tigerton');
1365    INSERT INTO streetname VALUES('tomsie efird');
1366    INSERT INTO streetname VALUES('tor');
1367    INSERT INTO streetname VALUES('torphin');
1368    INSERT INTO streetname VALUES('torrence');
1369    INSERT INTO streetname VALUES('towering pine');
1370    INSERT INTO streetname VALUES('towhee');
1371    INSERT INTO streetname VALUES('toxaway');
1372    INSERT INTO streetname VALUES('tracy glenn');
1373    INSERT INTO streetname VALUES('tradition view');
1374    INSERT INTO streetname VALUES('trailer');
1375    INSERT INTO streetname VALUES('transport');
1376    INSERT INTO streetname VALUES('trehurst');
1377    INSERT INTO streetname VALUES('trexler');
1378    INSERT INTO streetname VALUES('trillium fields');
1379    INSERT INTO streetname VALUES('trimbach');
1380    INSERT INTO streetname VALUES('tucker');
1381    INSERT INTO streetname VALUES('tullamore');
1382    INSERT INTO streetname VALUES('tullock creek');
1383    INSERT INTO streetname VALUES('tunston');
1384    INSERT INTO streetname VALUES('tupelo');
1385    INSERT INTO streetname VALUES('turnabout');
1386    INSERT INTO streetname VALUES('turney');
1387    INSERT INTO streetname VALUES('turtle cross');
1388    INSERT INTO streetname VALUES('turtleback');
1389    INSERT INTO streetname VALUES('twelvestone');
1390    INSERT INTO streetname VALUES('twin');
1391    INSERT INTO streetname VALUES('twin brook');
1392    INSERT INTO streetname VALUES('twin lakes');
1393    INSERT INTO streetname VALUES('twisted pine');
1394    INSERT INTO streetname VALUES('tyler finley');
1395    INSERT INTO streetname VALUES('university station');
1396    INSERT INTO streetname VALUES('uphill');
1397    INSERT INTO streetname VALUES('valeview');
1398    INSERT INTO streetname VALUES('valhalla');
1399    INSERT INTO streetname VALUES('van');
1400    INSERT INTO streetname VALUES('vance davis');
1401    INSERT INTO streetname VALUES('vanhoy');
1402    INSERT INTO streetname VALUES('veckman');
1403    INSERT INTO streetname VALUES('victoria');
1404    INSERT INTO streetname VALUES('victory');
1405    INSERT INTO streetname VALUES('village glen');
1406    INSERT INTO streetname VALUES('vireo');
1407    INSERT INTO streetname VALUES('viscount');
1408    INSERT INTO streetname VALUES('voeltz');
1409    INSERT INTO streetname VALUES('wade e morgan');
1410    INSERT INTO streetname VALUES('wake');
1411    INSERT INTO streetname VALUES('wales');
1412    INSERT INTO streetname VALUES('wallace ridge');
1413    INSERT INTO streetname VALUES('waltham');
1414    INSERT INTO streetname VALUES('wanamassa');
1415    INSERT INTO streetname VALUES('warbler wood');
1416    INSERT INTO streetname VALUES('washington');
1417    INSERT INTO streetname VALUES('water');
1418    INSERT INTO streetname VALUES('waterelm');
1419    INSERT INTO streetname VALUES('waterford hills');
1420    INSERT INTO streetname VALUES('waterford valley');
1421    INSERT INTO streetname VALUES('waterloo');
1422    INSERT INTO streetname VALUES('waterton leas');
1423    INSERT INTO streetname VALUES('waverly lynn');
1424    INSERT INTO streetname VALUES('waverlyglen');
1425    INSERT INTO streetname VALUES('wayside');
1426    INSERT INTO streetname VALUES('westbury lake');
1427    INSERT INTO streetname VALUES('westray');
1428    INSERT INTO streetname VALUES('whistlers chase');
1429    INSERT INTO streetname VALUES('whistley green');
1430    INSERT INTO streetname VALUES('whistling oak');
1431    INSERT INTO streetname VALUES('whitcomb');
1432    INSERT INTO streetname VALUES('white aspen');
1433    INSERT INTO streetname VALUES('white cascade');
1434    INSERT INTO streetname VALUES('white mist');
1435    INSERT INTO streetname VALUES('white rock');
1436    INSERT INTO streetname VALUES('white stag');
1437    INSERT INTO streetname VALUES('whitegate');
1438    INSERT INTO streetname VALUES('whitehill');
1439    INSERT INTO streetname VALUES('whitetail');
1440    INSERT INTO streetname VALUES('whitewood');
1441    INSERT INTO streetname VALUES('wilburn park');
1442    INSERT INTO streetname VALUES('wild garden');
1443    INSERT INTO streetname VALUES('wild rose');
1444    INSERT INTO streetname VALUES('wilkins terrace');
1445    INSERT INTO streetname VALUES('william ficklen');
1446    INSERT INTO streetname VALUES('wiltshire ridge');
1447    INSERT INTO streetname VALUES('windchase');
1448    INSERT INTO streetname VALUES('winding jordan');
1449    INSERT INTO streetname VALUES('windy meadow');
1450    INSERT INTO streetname VALUES('winghaven');
1451    INSERT INTO streetname VALUES('wingmont');
1452    INSERT INTO streetname VALUES('winslow');
1453    INSERT INTO streetname VALUES('winter pine');
1454    INSERT INTO streetname VALUES('winter view');
1455    INSERT INTO streetname VALUES('wolf creek');
1456    INSERT INTO streetname VALUES('wondering oak');
1457    INSERT INTO streetname VALUES('woodard');
1458    INSERT INTO streetname VALUES('woodfire');
1459    INSERT INTO streetname VALUES('woodland commons');
1460    INSERT INTO streetname VALUES('woodland hills');
1461    INSERT INTO streetname VALUES('woodnotch');
1462    INSERT INTO streetname VALUES('woodstone');
1463    INSERT INTO streetname VALUES('worsley');
1464    INSERT INTO streetname VALUES('wren creek');
1465    INSERT INTO streetname VALUES('wrens nest');
1466    INSERT INTO streetname VALUES('wrexham');
1467    INSERT INTO streetname VALUES('wt harris');
1468    INSERT INTO streetname VALUES('wylie meadow');
1469    INSERT INTO streetname VALUES('wynborough');
1470    INSERT INTO streetname VALUES('wynbrook');
1471    INSERT INTO streetname VALUES('wyndham hill');
1472    INSERT INTO streetname VALUES('yandem');
1473    INSERT INTO streetname VALUES('yellow rose');
1474    INSERT INTO streetname VALUES('yellow spaniel');
1475    INSERT INTO streetname VALUES('yorkford');
1476    INSERT INTO streetname VALUES('ziegler');
1477    INSERT INTO streetname VALUES('zion renaissance');
1478
1479    SELECT count(*) FROM streetname;
1480  }
1481} {1228}
1482
1483do_test fuzzer1-2.1 {
1484  execsql {
1485    SELECT n, distance FROM f2, streetname
1486     WHERE f2.word MATCH 'wersley'
1487       AND f2.distance<=150
1488       AND f2.word=streetname.n
1489  }
1490} {worsley 37}
1491do_test fuzzer1-2.2 {
1492  execsql {
1493    SELECT n, distance FROM f2, streetname
1494     WHERE f2.word MATCH 'testledown'
1495       AND f2.distance<=150
1496       AND f2.word=streetname.n
1497  }
1498} {thistledown 103}
1499do_test fuzzer1-2.3 {
1500  execsql {
1501    SELECT DISTINCT streetname.n FROM f2, streetname
1502     WHERE f2.word MATCH 'tayle'
1503       AND f2.distance<=200
1504       AND streetname.n>=f2.word AND streetname.n<=(f2.word || x'F7BFBFBF')
1505  }
1506} {{tyler finley} trailer taymouth steelewood tallia tallu talwyn thelema}
1507do_test fuzzer1-2.4 {
1508  execsql {
1509    SELECT DISTINCT streetname.n
1510      FROM f2 JOIN streetname
1511        ON (streetname.n>=f2.word AND streetname.n<=(f2.word || 'zzzzzz'))
1512     WHERE f2.word MATCH 'duck'
1513       AND f2.distance<150
1514       AND f2.ruleset=3
1515     ORDER BY 1
1516  }
1517} {mallard {mallard cove} {mallard forest} {mallard grove} {mallard hill} {mallard park} {mallard ridge} {mallard view}}
1518do_test fuzzer1-2.5 {
1519  execsql {
1520    SELECT DISTINCT streetname.n
1521      FROM f2 JOIN streetname
1522        ON (streetname.n>=f2.word AND streetname.n<=(f2.word || 'zzzzzz'))
1523     WHERE f2.word MATCH 'duck'
1524       AND f2.distance<150
1525       AND f2.ruleset=2
1526     ORDER BY 1
1527  }
1528} {}
1529
1530forcedelete test.db2
1531do_execsql_test fuzzer1-4.1 {
1532  ATTACH 'test.db2' AS aux;
1533  CREATE TABLE aux.f3_rules(ruleset, cfrom, cto, cost);
1534  INSERT INTO f3_rules(ruleset, cfrom, cto, cost) VALUES(0, 'x','y', 10);
1535  INSERT INTO f3_rules(ruleset, cfrom, cto, cost) VALUES(1, 'a','b', 10);
1536  CREATE VIRTUAL TABLE aux.f3 USING fuzzer(f3_rules);
1537  SELECT word FROM f3 WHERE word MATCH 'ax'
1538} {ax ay}
1539
1540#-------------------------------------------------------------------------
1541#
1542#  1.5.1 - Check things work with a fuzzer data table name that requires
1543#          quoting. Also that NULL entries in the "from" column of the
1544#          data table are treated as zero length strings ('').
1545#
1546#  1.5.2 - Check that no-op rules (i.e. C->C) are ignored. Test NULL in
1547#          the "to" column of a fuzzer data table.
1548#
1549#  1.5.3 - Test out-of-range values for the cost field of the data table.
1550#
1551#  1.5.4 - Test out-of-range values for the string fields of the data table.
1552#
1553#  1.5.5 - Test out-of-range values for the ruleset field of the data table.
1554#
1555do_execsql_test 5.1 {
1556  CREATE TABLE "fuzzer [x] rules table"(a, b, c, d);
1557  INSERT INTO "fuzzer [x] rules table" VALUES(0, NULL, 'abc', 10);
1558  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1559  SELECT word, distance FROM x WHERE word MATCH '123' LIMIT 4;
1560} {123 0 abc123 10 1abc23 10 12abc3 10}
1561
1562do_execsql_test 5.2 {
1563  DELETE FROM "fuzzer [x] rules table";
1564  INSERT INTO "fuzzer [x] rules table" VALUES(0, 'x', NULL, 20);
1565  INSERT INTO "fuzzer [x] rules table" VALUES(0, NULL, NULL, 10);
1566  INSERT INTO "fuzzer [x] rules table" VALUES(0, 'x', 'x', 10);
1567
1568  DROP TABLE x;
1569  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1570
1571  SELECT word, distance FROM x WHERE word MATCH 'xx';
1572} {xx 0 x 20 {} 40}
1573
1574do_execsql_test 5.3.1 {
1575  DROP TABLE IF EXISTS x;
1576  INSERT INTO "fuzzer [x] rules table" VALUES(0, 'c', 'd', 1001);
1577}
1578do_catchsql_test 5.3.2 {
1579  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1580} {1 {fuzzer: cost must be between 1 and 1000}}
1581
1582do_execsql_test 5.3.3 {
1583  DROP TABLE IF EXISTS x;
1584  DELETE FROM "fuzzer [x] rules table";
1585  INSERT INTO "fuzzer [x] rules table" VALUES(0, 'd', 'c', 0);
1586}
1587do_catchsql_test 5.3.4 {
1588  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1589} {1 {fuzzer: cost must be between 1 and 1000}}
1590
1591do_execsql_test 5.3.5 {
1592  DROP TABLE IF EXISTS x;
1593  DELETE FROM "fuzzer [x] rules table";
1594  INSERT INTO "fuzzer [x] rules table" VALUES(0, 'd', 'c', -20);
1595}
1596do_catchsql_test 5.3.6 {
1597  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1598} {1 {fuzzer: cost must be between 1 and 1000}}
1599
1600do_execsql_test 5.4.1 {
1601  DROP TABLE IF EXISTS x;
1602  DELETE FROM "fuzzer [x] rules table";
1603  INSERT INTO "fuzzer [x] rules table" VALUES(
1604    0, 'x', '12345678901234567890123456789012345678901234567890', 2
1605  );
1606  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1607  SELECT word FROM x WHERE word MATCH 'x';
1608} {x 12345678901234567890123456789012345678901234567890}
1609
1610do_execsql_test 5.4.2 {
1611  DROP TABLE IF EXISTS x;
1612  DELETE FROM "fuzzer [x] rules table";
1613  INSERT INTO "fuzzer [x] rules table" VALUES(
1614    0, 'x', '123456789012345678901234567890123456789012345678901', 2
1615  );
1616}
1617do_catchsql_test 5.4.3 {
1618  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1619} {1 {fuzzer: maximum string length is 50}}
1620
1621do_execsql_test 5.4.4 {
1622  DROP TABLE IF EXISTS x;
1623  DELETE FROM "fuzzer [x] rules table";
1624  INSERT INTO "fuzzer [x] rules table" VALUES(
1625    0, '123456789012345678901234567890123456789012345678901', 'x', 2
1626  );
1627}
1628do_catchsql_test 5.4.5 {
1629  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1630} {1 {fuzzer: maximum string length is 50}}
1631
1632do_execsql_test 5.5.1 {
1633  DROP TABLE IF EXISTS x;
1634  DELETE FROM "fuzzer [x] rules table";
1635  INSERT INTO "fuzzer [x] rules table" VALUES(-1, 'x', 'y', 2);
1636}
1637do_catchsql_test 5.5.2 {
1638  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1639} {1 {fuzzer: ruleset must be between 0 and 2147483647}}
1640
1641do_execsql_test 5.5.3 {
1642  DROP TABLE IF EXISTS x;
1643  DELETE FROM "fuzzer [x] rules table";
1644  INSERT INTO "fuzzer [x] rules table" VALUES((1<<32)+100, 'x', 'y', 2);
1645}
1646do_catchsql_test 5.5.4 {
1647  CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1648} {1 {fuzzer: ruleset must be between 0 and 2147483647}}
1649
1650#-------------------------------------------------------------------------
1651# Test using different types of quotes with CREATE VIRTUAL TABLE
1652# arguments.
1653#
1654do_execsql_test 7.1 {
1655  CREATE TABLE [x2 "rules] (a, b, c, d);
1656  INSERT INTO [x2 "rules] VALUES(0, 'a', 'b', 5);
1657}
1658foreach {tn sql} {
1659  1 { CREATE VIRTUAL TABLE x2 USING fuzzer( [x2 "rules] ) }
1660  2 { CREATE VIRTUAL TABLE x2 USING fuzzer( "x2 ""rules" ) }
1661  3 { CREATE VIRTUAL TABLE x2 USING fuzzer( 'x2 "rules' ) }
1662  4 { CREATE VIRTUAL TABLE x2 USING fuzzer( `x2 "rules` ) }
1663} {
1664  do_execsql_test 7.2.$tn.1 { DROP TABLE IF EXISTS x2 }
1665  do_execsql_test 7.2.$tn.2 $sql
1666  do_execsql_test 7.2.$tn.3 {
1667    SELECT word FROM x2 WHERE word MATCH 'aaa'
1668  } {aaa baa aba aab bab abb bba bbb}
1669}
1670
1671#-------------------------------------------------------------------------
1672# Test using a fuzzer table in different contexts.
1673#
1674do_execsql_test 8.1 {
1675  CREATE TABLE x3_rules(rule_set, cFrom, cTo, cost);
1676  INSERT INTO x3_rules VALUES(2, 'a', 'x', 10);
1677  INSERT INTO x3_rules VALUES(2, 'a', 'y',  9);
1678  INSERT INTO x3_rules VALUES(2, 'a', 'z',  8);
1679  CREATE VIRTUAL TABLE x3 USING fuzzer(x3_rules);
1680}
1681
1682do_execsql_test 8.2.1 {
1683  SELECT cFrom, cTo, word
1684    FROM x3_rules CROSS JOIN x3
1685    WHERE word MATCH 'a' AND cost=distance AND ruleset=2
1686    ORDER BY +cTo;
1687} {a x x a y y a z z}
1688
1689do_execsql_test 8.2.2 {
1690  SELECT cFrom, cTo, word
1691    FROM x3 CROSS JOIN x3_rules
1692    WHERE word MATCH 'a' AND cost=distance AND ruleset=2
1693    ORDER BY +cTo DESC
1694} {a z z a y y a x x}
1695
1696do_execsql_test 8.2.3 {
1697  SELECT cFrom, cTo, word
1698    FROM x3_rules, x3
1699    WHERE word MATCH 'a' AND cost=distance AND ruleset=2
1700    ORDER BY +cTo DESC;
1701} {a z z a y y a x x}
1702
1703do_execsql_test 8.2.4 {
1704  SELECT cFrom, cTo, word
1705    FROM x3, x3_rules
1706    WHERE word MATCH 'a' AND cost=distance AND ruleset=2
1707    ORDER BY +cTo DESC;
1708} {a z z a y y a x x}
1709
1710do_execsql_test 8.2.5 {
1711  CREATE INDEX i1 ON x3_rules(cost);
1712  SELECT cFrom, cTo, word
1713    FROM x3_rules, x3
1714    WHERE word MATCH 'a' AND cost=distance AND ruleset=2
1715    ORDER BY +cTo DESC;
1716} {a z z a y y a x x}
1717
1718do_execsql_test 8.2.5 {
1719  SELECT word FROM x3_rules, x3 WHERE word MATCH x3_rules.cFrom AND ruleset=2
1720} {a z y x a z y x a z y x}
1721
1722do_execsql_test 8.2.6 {
1723  SELECT word FROM x3_rules, x3
1724  WHERE word MATCH x3_rules.cFrom
1725    AND ruleset=2
1726    AND x3_rules.cost=8;
1727} {a z y x}
1728
1729do_execsql_test 8.2.7 {
1730  CREATE TABLE t1(a, b);
1731  CREATE INDEX i2 ON t1(b);
1732  SELECT word, distance FROM x3, t1
1733    WHERE x3.word MATCH t1.a AND ruleset=2 AND distance=t1.b;
1734} {}
1735
1736do_execsql_test 8.2.8 {
1737  INSERT INTO x3_rules VALUES(1, 'a', 't',  5);
1738  INSERT INTO x3_rules VALUES(1, 'a', 'u',  4);
1739  INSERT INTO x3_rules VALUES(1, 'a', 'v',  3);
1740  DROP TABLE x3;
1741  CREATE VIRTUAL TABLE x3 USING fuzzer(x3_rules);
1742  SELECT * FROM x3_rules;
1743} {
1744  2 a x 10
1745  2 a y 9
1746  2 a z 8
1747  1 a t 5
1748  1 a u 4
1749  1 a v 3
1750}
1751
1752do_catchsql_test 8.2.9 {
1753  SELECT word FROM x3 WHERE ruleset=2 AND word MATCH 'a' AND WORD MATCH 'b';
1754} {1 {unable to use function MATCH in the requested context}}
1755
1756do_execsql_test 8.2.10 {
1757  SELECT word FROM x3 WHERE ruleset=1 AND word MATCH 'a'
1758} {a v u t}
1759
1760# The term "ruleset<=1" is not handled by the fuzzer module. Instead, it
1761# is handled by SQLite, which assumes that all rows have a NULL value in
1762# the ruleset column. Since NULL<=1 is never true, this query returns
1763# no rows.
1764do_execsql_test 8.2.11 {
1765  SELECT word FROM x3 WHERE ruleset<=1 AND word MATCH 'a'
1766} {}
1767
1768do_execsql_test 8.2.12 {
1769  SELECT word FROM x3 WHERE ruleset=1 AND word MATCH 'a' ORDER BY distance ASC;
1770} {a v u t}
1771
1772do_execsql_test 8.2.13 {
1773  SELECT word FROM x3 WHERE ruleset=1 AND word MATCH 'a' ORDER BY distance DESC;
1774} {t u v a}
1775
1776do_execsql_test 8.2.13 {
1777  SELECT word FROM x3 WHERE ruleset=1 AND word MATCH 'a' ORDER BY word ASC;
1778} {a t u v}
1779
1780do_execsql_test 8.2.14 {
1781  SELECT word FROM x3 WHERE ruleset=1 AND word MATCH 'a' ORDER BY word DESC;
1782} {v u t a}
1783
1784#-------------------------------------------------------------------------
1785#
1786do_execsql_test 9.1 {
1787  CREATE TABLE x4_rules(a, b, c, d);
1788  INSERT INTO x4_rules VALUES(0, 'a', 'b', 10);
1789  INSERT INTO x4_rules VALUES(0, 'a', 'c', 11);
1790  INSERT INTO x4_rules VALUES(0, 'bx', 'zz', 20);
1791  INSERT INTO x4_rules VALUES(0, 'cx', 'yy', 15);
1792  INSERT INTO x4_rules VALUES(0, 'zz', '!!', 50);
1793  CREATE VIRTUAL TABLE x4 USING fuzzer(x4_rules);
1794}
1795
1796do_execsql_test 9.2 {
1797  SELECT word, distance FROM x4 WHERE word MATCH 'ax';
1798} {ax 0 bx 10 cx 11 yy 26 zz 30 !! 80}
1799
1800
1801do_execsql_test 10.1 {
1802  CREATE TABLE x5_rules(a, b, c, d);
1803  CREATE VIRTUAL TABLE x5 USING fuzzer(x5_rules);
1804}
1805
1806do_execsql_test 10.2 {
1807  SELECT word, distance FROM x5 WHERE word MATCH
1808    'aaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaa' ||
1809    'aaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaa' ||
1810    'aaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaa'
1811} {}
1812
1813do_execsql_test 10.3 {
1814  INSERT INTO x5_rules VALUES(0, 'a', '0.1.2.3.4.5.6.7.8.9.a', 1);
1815  DROP TABLE x5;
1816  CREATE VIRTUAL TABLE x5 USING fuzzer(x5_rules);
1817  SELECT length(word) FROM x5 WHERE word MATCH 'a' LIMIT 50;
1818} {1 21 41 61 81}
1819
1820finish_test
1821