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