Update mojo sdk to rev 1dc8a9a5db73d3718d99917fadf31f5fb2ebad4f
[chromium-blink-merge.git] / third_party / sqlite / src / test / fuzzer1.test
blob4ee573080762edbe2f658c7dd19a6a793ef7ecdf
1 # 2011 March 25
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
11 # This file implements regression tests for TCL interface to the
12 # SQLite library. 
14 # The focus of the tests is the word-fuzzer virtual table.
17 set testdir [file dirname $argv0]
18 source $testdir/tester.tcl
20 ifcapable !vtab {
21   finish_test
22   return
25 set ::testprefix fuzzer1
27 load_static_extension db fuzzer
29 # Check configuration errors.
31 do_catchsql_test fuzzer1-1.1 {
32   CREATE VIRTUAL TABLE f USING fuzzer;
33 } {1 {fuzzer: wrong number of CREATE VIRTUAL TABLE arguments}}
35 do_catchsql_test fuzzer1-1.2 {
36   CREATE VIRTUAL TABLE f USING fuzzer(one, two);
37 } {1 {fuzzer: wrong number of CREATE VIRTUAL TABLE arguments}}
39 do_catchsql_test fuzzer1-1.3 {
40   CREATE VIRTUAL TABLE f USING fuzzer(nosuchtable);
41 } {1 {fuzzer: no such table: main.nosuchtable}}
43 do_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}}
48 do_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}}
54 do_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}}
60 do_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}}
67 do_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);
73   CREATE VIRTUAL TABLE f1 USING fuzzer(f1_rules);
74 } {}
76 do_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
84 do_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);
89   DROP TABLE f1;
90   CREATE VIRTUAL TABLE f1 USING fuzzer(f1_rules);
91 } {}
93 do_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
101 do_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
109 do_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
116 do_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}
121 do_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}
126 do_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}
132 do_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}
138 do_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}
144 do_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}
150 do_test fuzzer1-1.14 {
151   catchsql {INSERT INTO f1 VALUES(1)}
152 } {1 {table f1 may not be modified}}
153 do_test fuzzer1-1.15 {
154   catchsql {DELETE FROM f1}
155 } {1 {table f1 may not be modified}}
156 do_test fuzzer1-1.16 {
157   catchsql {UPDATE f1 SET rowid=rowid+10000}
158 } {1 {table f1 may not be modified}}
161 do_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);
179     INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('t','th',70);
180     INSERT INTO f2_rules(cFrom,cTo,cost) VALUES('th','t',66);
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);
246     CREATE VIRTUAL TABLE temp.f2 USING fuzzer(f2_rules);
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');
1480     SELECT count(*) FROM streetname;
1481   }
1482 } {1228}
1484 do_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}
1492 do_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}
1500 do_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}
1508 do_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}}
1519 do_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 } {}
1531 forcedelete test.db2
1532 do_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}
1541 #-------------------------------------------------------------------------
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 ('').
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.
1552 #  1.5.4 - Test out-of-range values for the string fields of the data table.
1554 #  1.5.5 - Test out-of-range values for the ruleset field of the data table.
1556 do_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}
1563 do_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);
1569   DROP TABLE x;
1570   CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1572   SELECT word, distance FROM x WHERE word MATCH 'xx';
1573 } {xx 0 x 20 {} 40}
1575 do_execsql_test 5.3.1 {
1576   DROP TABLE IF EXISTS x;
1577   INSERT INTO "fuzzer [x] rules table" VALUES(0, 'c', 'd', 1001);
1579 do_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}}
1583 do_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);
1588 do_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}}
1592 do_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);
1597 do_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}}
1601 do_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}
1611 do_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   );
1618 do_catchsql_test 5.4.3 {
1619   CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1620 } {1 {fuzzer: maximum string length is 50}}
1622 do_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   );
1629 do_catchsql_test 5.4.5 {
1630   CREATE VIRTUAL TABLE x USING fuzzer('fuzzer [x] rules table');
1631 } {1 {fuzzer: maximum string length is 50}}
1633 do_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);
1638 do_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}}
1642 do_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);
1647 do_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}}
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).
1659 do_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);
1664 puts "This test is slow - perhaps around 7 seconds on an average pc"
1665 do_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 } {}
1683 do_execsql_test 6.2 {
1684   SELECT count(*) FROM x1_rules WHERE cTo!=cFrom;
1685 } [expr 26*26*26*26 - 26*26]
1687 do_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}
1691 do_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}
1696 #-------------------------------------------------------------------------
1697 # Test using different types of quotes with CREATE VIRTUAL TABLE 
1698 # arguments.
1700 do_execsql_test 7.1 {
1701   CREATE TABLE [x2 "rules] (a, b, c, d);
1702   INSERT INTO [x2 "rules] VALUES(0, 'a', 'b', 5);
1704 foreach {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}
1717 #-------------------------------------------------------------------------
1718 # Test using a fuzzer table in different contexts.
1720 do_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);
1728 do_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}
1735 do_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}
1742 do_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}
1749 do_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}
1756 do_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}
1764 do_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}
1768 do_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}
1775 do_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 } {}
1782 do_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
1798 do_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}}
1802 do_execsql_test 8.2.10 {
1803   SELECT word FROM x3 WHERE ruleset=1 AND word MATCH 'a'
1804 } {a v u t}
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.
1810 do_execsql_test 8.2.11 {
1811   SELECT word FROM x3 WHERE ruleset<=1 AND word MATCH 'a'
1812 } {}
1814 do_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}
1818 do_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}
1822 do_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}
1826 do_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}
1830 #-------------------------------------------------------------------------
1832 do_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);
1842 do_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}
1847 do_execsql_test 10.1 {
1848   CREATE TABLE x5_rules(a, b, c, d);
1849   CREATE VIRTUAL TABLE x5 USING fuzzer(x5_rules);
1852 do_execsql_test 10.2 {
1853   SELECT word, distance FROM x5 WHERE word MATCH 
1854     'aaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaa' || 
1855     'aaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaa' || 
1856     'aaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaaXaaaaaaaaa'
1857 } {}
1859 do_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}
1866 finish_test