1
0

fuzzer1.test 79 KB

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