gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/fuzzer1.test (about)

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