heroku-tokyotyrant 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (340) hide show
  1. data/COPYING +504 -0
  2. data/README.rdoc +231 -0
  3. data/Rakefile +72 -0
  4. data/benchmarks/balancer.rb +101 -0
  5. data/benchmarks/bulk_db.rb +74 -0
  6. data/benchmarks/bulk_table.rb +87 -0
  7. data/benchmarks/db.rb +114 -0
  8. data/benchmarks/table.rb +161 -0
  9. data/ext/extconf.rb +43 -0
  10. data/ext/tokyo/bin/tcamgr +0 -0
  11. data/ext/tokyo/bin/tcamttest +0 -0
  12. data/ext/tokyo/bin/tcatest +0 -0
  13. data/ext/tokyo/bin/tcbmgr +0 -0
  14. data/ext/tokyo/bin/tcbmttest +0 -0
  15. data/ext/tokyo/bin/tcbtest +0 -0
  16. data/ext/tokyo/bin/tcfmgr +0 -0
  17. data/ext/tokyo/bin/tcfmttest +0 -0
  18. data/ext/tokyo/bin/tcftest +0 -0
  19. data/ext/tokyo/bin/tchmgr +0 -0
  20. data/ext/tokyo/bin/tchmttest +0 -0
  21. data/ext/tokyo/bin/tchtest +0 -0
  22. data/ext/tokyo/bin/tcrmgr +0 -0
  23. data/ext/tokyo/bin/tcrmttest +0 -0
  24. data/ext/tokyo/bin/tcrtest +0 -0
  25. data/ext/tokyo/bin/tctmgr +0 -0
  26. data/ext/tokyo/bin/tctmttest +0 -0
  27. data/ext/tokyo/bin/tcttest +0 -0
  28. data/ext/tokyo/bin/tcucodec +0 -0
  29. data/ext/tokyo/bin/tcumttest +0 -0
  30. data/ext/tokyo/bin/tcutest +0 -0
  31. data/ext/tokyo/bin/ttserver +0 -0
  32. data/ext/tokyo/bin/ttulmgr +0 -0
  33. data/ext/tokyo/bin/ttultest +0 -0
  34. data/ext/tokyo/include/tcadb.h +548 -0
  35. data/ext/tokyo/include/tcbdb.h +1101 -0
  36. data/ext/tokyo/include/tcfdb.h +858 -0
  37. data/ext/tokyo/include/tchdb.h +871 -0
  38. data/ext/tokyo/include/tcrdb.h +801 -0
  39. data/ext/tokyo/include/tctdb.h +1086 -0
  40. data/ext/tokyo/include/tculog.h +392 -0
  41. data/ext/tokyo/include/tcutil.h +4184 -0
  42. data/ext/tokyo/include/ttutil.h +494 -0
  43. data/ext/tokyo/lib/libtokyocabinet.9.4.0.dylib +0 -0
  44. data/ext/tokyo/lib/libtokyocabinet.9.dylib +0 -0
  45. data/ext/tokyo/lib/libtokyocabinet.a +0 -0
  46. data/ext/tokyo/lib/libtokyocabinet.dylib +0 -0
  47. data/ext/tokyo/lib/libtokyotyrant.3.22.0.dylib +0 -0
  48. data/ext/tokyo/lib/libtokyotyrant.3.dylib +0 -0
  49. data/ext/tokyo/lib/libtokyotyrant.a +0 -0
  50. data/ext/tokyo/lib/libtokyotyrant.dylib +0 -0
  51. data/ext/tokyo/lib/pkgconfig/tokyocabinet.pc +14 -0
  52. data/ext/tokyo/lib/pkgconfig/tokyotyrant.pc +14 -0
  53. data/ext/tokyo/lib/ttskeldir.bundle +0 -0
  54. data/ext/tokyo/lib/ttskelmock.bundle +0 -0
  55. data/ext/tokyo/lib/ttskelnull.bundle +0 -0
  56. data/ext/tokyo/lib/ttskelproxy.bundle +0 -0
  57. data/ext/tokyo/libexec/tcawmgr.cgi +0 -0
  58. data/ext/tokyo/sbin/ttservctl +163 -0
  59. data/ext/tokyo/share/man/man1/tcamgr.1 +97 -0
  60. data/ext/tokyo/share/man/man1/tcamttest.1 +35 -0
  61. data/ext/tokyo/share/man/man1/tcatest.1 +55 -0
  62. data/ext/tokyo/share/man/man1/tcbmgr.1 +125 -0
  63. data/ext/tokyo/share/man/man1/tcbmttest.1 +81 -0
  64. data/ext/tokyo/share/man/man1/tcbtest.1 +107 -0
  65. data/ext/tokyo/share/man/man1/tcfmgr.1 +98 -0
  66. data/ext/tokyo/share/man/man1/tcfmttest.1 +62 -0
  67. data/ext/tokyo/share/man/man1/tcftest.1 +73 -0
  68. data/ext/tokyo/share/man/man1/tchmgr.1 +110 -0
  69. data/ext/tokyo/share/man/man1/tchmttest.1 +85 -0
  70. data/ext/tokyo/share/man/man1/tchtest.1 +95 -0
  71. data/ext/tokyo/share/man/man1/tcrmgr.1 +164 -0
  72. data/ext/tokyo/share/man/man1/tcrmttest.1 +55 -0
  73. data/ext/tokyo/share/man/man1/tcrtest.1 +89 -0
  74. data/ext/tokyo/share/man/man1/tctmgr.1 +140 -0
  75. data/ext/tokyo/share/man/man1/tctmttest.1 +92 -0
  76. data/ext/tokyo/share/man/man1/tcttest.1 +105 -0
  77. data/ext/tokyo/share/man/man1/tcucodec.1 +162 -0
  78. data/ext/tokyo/share/man/man1/tcumttest.1 +41 -0
  79. data/ext/tokyo/share/man/man1/tcutest.1 +81 -0
  80. data/ext/tokyo/share/man/man1/ttserver.1 +84 -0
  81. data/ext/tokyo/share/man/man1/ttulmgr.1 +40 -0
  82. data/ext/tokyo/share/man/man1/ttultest.1 +16 -0
  83. data/ext/tokyo/share/man/man3/tcadb.3 +676 -0
  84. data/ext/tokyo/share/man/man3/tcbdb.3 +1355 -0
  85. data/ext/tokyo/share/man/man3/tcfdb.3 +975 -0
  86. data/ext/tokyo/share/man/man3/tchdb.3 +898 -0
  87. data/ext/tokyo/share/man/man3/tclist.3 +1 -0
  88. data/ext/tokyo/share/man/man3/tcmap.3 +1 -0
  89. data/ext/tokyo/share/man/man3/tcmdb.3 +1 -0
  90. data/ext/tokyo/share/man/man3/tcmpool.3 +1 -0
  91. data/ext/tokyo/share/man/man3/tcrdb.3 +1309 -0
  92. data/ext/tokyo/share/man/man3/tctdb.3 +1110 -0
  93. data/ext/tokyo/share/man/man3/tctree.3 +1 -0
  94. data/ext/tokyo/share/man/man3/tculog.3 +15 -0
  95. data/ext/tokyo/share/man/man3/tcutil.3 +4518 -0
  96. data/ext/tokyo/share/man/man3/tcxstr.3 +1 -0
  97. data/ext/tokyo/share/man/man3/tokyocabinet.3 +132 -0
  98. data/ext/tokyo/share/man/man3/ttutil.3 +14 -0
  99. data/ext/tokyo/share/man/man8/ttservctl.8 +37 -0
  100. data/ext/tokyo/share/tokyocabinet/COPYING +504 -0
  101. data/ext/tokyo/share/tokyocabinet/ChangeLog +1252 -0
  102. data/ext/tokyo/share/tokyocabinet/THANKS +12 -0
  103. data/ext/tokyo/share/tokyocabinet/doc/benchmark.pdf +0 -0
  104. data/ext/tokyo/share/tokyocabinet/doc/common.css +211 -0
  105. data/ext/tokyo/share/tokyocabinet/doc/icon16.png +0 -0
  106. data/ext/tokyo/share/tokyocabinet/doc/index.html +156 -0
  107. data/ext/tokyo/share/tokyocabinet/doc/index.ja.html +197 -0
  108. data/ext/tokyo/share/tokyocabinet/doc/logo-ja.png +0 -0
  109. data/ext/tokyo/share/tokyocabinet/doc/logo.png +0 -0
  110. data/ext/tokyo/share/tokyocabinet/doc/spex-en.html +7145 -0
  111. data/ext/tokyo/share/tokyocabinet/doc/spex-ja.html +7476 -0
  112. data/ext/tokyo/share/tokyocabinet/doc/tokyoproducts.pdf +0 -0
  113. data/ext/tokyo/share/tokyocabinet/doc/tokyoproducts.ppt +0 -0
  114. data/ext/tokyo/share/tokyotyrant/COPYING +504 -0
  115. data/ext/tokyo/share/tokyotyrant/ChangeLog +578 -0
  116. data/ext/tokyo/share/tokyotyrant/THANKS +15 -0
  117. data/ext/tokyo/share/tokyotyrant/doc/common.css +211 -0
  118. data/ext/tokyo/share/tokyotyrant/doc/index.html +79 -0
  119. data/ext/tokyo/share/tokyotyrant/doc/spex.html +2264 -0
  120. data/ext/tokyo/share/tokyotyrant/ext/mapreduce.lua +57 -0
  121. data/ext/tokyo/share/tokyotyrant/ext/queue.lua +55 -0
  122. data/ext/tokyo/share/tokyotyrant/ext/senatus.lua +532 -0
  123. data/ext/tokyo/share/tokyotyrant/ext/usherette.lua +438 -0
  124. data/ext/tokyo_tyrant.c +147 -0
  125. data/ext/tokyo_tyrant.h +48 -0
  126. data/ext/tokyo_tyrant_db.c +227 -0
  127. data/ext/tokyo_tyrant_db.h +8 -0
  128. data/ext/tokyo_tyrant_module.c +453 -0
  129. data/ext/tokyo_tyrant_module.h +10 -0
  130. data/ext/tokyo_tyrant_query.c +226 -0
  131. data/ext/tokyo_tyrant_query.h +9 -0
  132. data/ext/tokyo_tyrant_table.c +319 -0
  133. data/ext/tokyo_tyrant_table.h +8 -0
  134. data/ext/tokyocabinet-1.4.41/COPYING +504 -0
  135. data/ext/tokyocabinet-1.4.41/ChangeLog +1252 -0
  136. data/ext/tokyocabinet-1.4.41/Makefile.in +825 -0
  137. data/ext/tokyocabinet-1.4.41/README +38 -0
  138. data/ext/tokyocabinet-1.4.41/THANKS +12 -0
  139. data/ext/tokyocabinet-1.4.41/bros/Makefile +133 -0
  140. data/ext/tokyocabinet-1.4.41/bros/bdbtest.c +438 -0
  141. data/ext/tokyocabinet-1.4.41/bros/cdbtest.c +219 -0
  142. data/ext/tokyocabinet-1.4.41/bros/cmpsqltctest.c +186 -0
  143. data/ext/tokyocabinet-1.4.41/bros/gdbmtest.c +216 -0
  144. data/ext/tokyocabinet-1.4.41/bros/mapreporter +72 -0
  145. data/ext/tokyocabinet-1.4.41/bros/maptest.cc +677 -0
  146. data/ext/tokyocabinet-1.4.41/bros/ndbmtest.c +204 -0
  147. data/ext/tokyocabinet-1.4.41/bros/qdbmtest.c +375 -0
  148. data/ext/tokyocabinet-1.4.41/bros/reporter +141 -0
  149. data/ext/tokyocabinet-1.4.41/bros/result.xls +0 -0
  150. data/ext/tokyocabinet-1.4.41/bros/sdbmtest.c +204 -0
  151. data/ext/tokyocabinet-1.4.41/bros/sqltest.c +404 -0
  152. data/ext/tokyocabinet-1.4.41/bros/tctest.c +748 -0
  153. data/ext/tokyocabinet-1.4.41/bros/tdbtest.c +205 -0
  154. data/ext/tokyocabinet-1.4.41/configure +7402 -0
  155. data/ext/tokyocabinet-1.4.41/configure.in +362 -0
  156. data/ext/tokyocabinet-1.4.41/doc/benchmark.pdf +0 -0
  157. data/ext/tokyocabinet-1.4.41/doc/common.css +211 -0
  158. data/ext/tokyocabinet-1.4.41/doc/icon16.png +0 -0
  159. data/ext/tokyocabinet-1.4.41/doc/index.html +156 -0
  160. data/ext/tokyocabinet-1.4.41/doc/index.ja.html +197 -0
  161. data/ext/tokyocabinet-1.4.41/doc/logo-ja.png +0 -0
  162. data/ext/tokyocabinet-1.4.41/doc/logo.png +0 -0
  163. data/ext/tokyocabinet-1.4.41/doc/spex-en.html +7145 -0
  164. data/ext/tokyocabinet-1.4.41/doc/spex-ja.html +7476 -0
  165. data/ext/tokyocabinet-1.4.41/doc/tokyoproducts.pdf +0 -0
  166. data/ext/tokyocabinet-1.4.41/doc/tokyoproducts.ppt +0 -0
  167. data/ext/tokyocabinet-1.4.41/example/Makefile +113 -0
  168. data/ext/tokyocabinet-1.4.41/example/tcadbex.c +55 -0
  169. data/ext/tokyocabinet-1.4.41/example/tcbdbex.c +64 -0
  170. data/ext/tokyocabinet-1.4.41/example/tcfdbex.c +60 -0
  171. data/ext/tokyocabinet-1.4.41/example/tchdbex.c +60 -0
  172. data/ext/tokyocabinet-1.4.41/example/tctchat.c +97 -0
  173. data/ext/tokyocabinet-1.4.41/example/tctchat.tmpl +141 -0
  174. data/ext/tokyocabinet-1.4.41/example/tctdbex.c +85 -0
  175. data/ext/tokyocabinet-1.4.41/example/tctsearch.c +95 -0
  176. data/ext/tokyocabinet-1.4.41/example/tctsearch.tmpl +122 -0
  177. data/ext/tokyocabinet-1.4.41/example/tcutilex.c +77 -0
  178. data/ext/tokyocabinet-1.4.41/f.tsv +2 -0
  179. data/ext/tokyocabinet-1.4.41/lab/calccomp +118 -0
  180. data/ext/tokyocabinet-1.4.41/lab/datechange +56 -0
  181. data/ext/tokyocabinet-1.4.41/lab/diffcheck +45 -0
  182. data/ext/tokyocabinet-1.4.41/lab/htmltotsv +102 -0
  183. data/ext/tokyocabinet-1.4.41/lab/magic +19 -0
  184. data/ext/tokyocabinet-1.4.41/lab/printenv.cgi +27 -0
  185. data/ext/tokyocabinet-1.4.41/lab/stepcount +26 -0
  186. data/ext/tokyocabinet-1.4.41/lab/stopwatch +61 -0
  187. data/ext/tokyocabinet-1.4.41/lab/tabcheck +43 -0
  188. data/ext/tokyocabinet-1.4.41/lab/wgettsv +239 -0
  189. data/ext/tokyocabinet-1.4.41/lab/widthcheck +57 -0
  190. data/ext/tokyocabinet-1.4.41/man/htmltoman +104 -0
  191. data/ext/tokyocabinet-1.4.41/man/tcadb.3 +676 -0
  192. data/ext/tokyocabinet-1.4.41/man/tcamgr.1 +97 -0
  193. data/ext/tokyocabinet-1.4.41/man/tcamttest.1 +35 -0
  194. data/ext/tokyocabinet-1.4.41/man/tcatest.1 +55 -0
  195. data/ext/tokyocabinet-1.4.41/man/tcbdb.3 +1355 -0
  196. data/ext/tokyocabinet-1.4.41/man/tcbmgr.1 +125 -0
  197. data/ext/tokyocabinet-1.4.41/man/tcbmttest.1 +81 -0
  198. data/ext/tokyocabinet-1.4.41/man/tcbtest.1 +107 -0
  199. data/ext/tokyocabinet-1.4.41/man/tcfdb.3 +975 -0
  200. data/ext/tokyocabinet-1.4.41/man/tcfmgr.1 +98 -0
  201. data/ext/tokyocabinet-1.4.41/man/tcfmttest.1 +62 -0
  202. data/ext/tokyocabinet-1.4.41/man/tcftest.1 +73 -0
  203. data/ext/tokyocabinet-1.4.41/man/tchdb.3 +898 -0
  204. data/ext/tokyocabinet-1.4.41/man/tchmgr.1 +110 -0
  205. data/ext/tokyocabinet-1.4.41/man/tchmttest.1 +85 -0
  206. data/ext/tokyocabinet-1.4.41/man/tchtest.1 +95 -0
  207. data/ext/tokyocabinet-1.4.41/man/tclist.3 +1 -0
  208. data/ext/tokyocabinet-1.4.41/man/tcmap.3 +1 -0
  209. data/ext/tokyocabinet-1.4.41/man/tcmdb.3 +1 -0
  210. data/ext/tokyocabinet-1.4.41/man/tcmpool.3 +1 -0
  211. data/ext/tokyocabinet-1.4.41/man/tctdb.3 +1110 -0
  212. data/ext/tokyocabinet-1.4.41/man/tctmgr.1 +140 -0
  213. data/ext/tokyocabinet-1.4.41/man/tctmttest.1 +92 -0
  214. data/ext/tokyocabinet-1.4.41/man/tctree.3 +1 -0
  215. data/ext/tokyocabinet-1.4.41/man/tcttest.1 +105 -0
  216. data/ext/tokyocabinet-1.4.41/man/tcucodec.1 +162 -0
  217. data/ext/tokyocabinet-1.4.41/man/tcumttest.1 +41 -0
  218. data/ext/tokyocabinet-1.4.41/man/tcutest.1 +81 -0
  219. data/ext/tokyocabinet-1.4.41/man/tcutil.3 +4518 -0
  220. data/ext/tokyocabinet-1.4.41/man/tcxstr.3 +1 -0
  221. data/ext/tokyocabinet-1.4.41/man/tokyocabinet.3 +132 -0
  222. data/ext/tokyocabinet-1.4.41/md5.c +381 -0
  223. data/ext/tokyocabinet-1.4.41/md5.h +101 -0
  224. data/ext/tokyocabinet-1.4.41/myconf.c +493 -0
  225. data/ext/tokyocabinet-1.4.41/myconf.h +549 -0
  226. data/ext/tokyocabinet-1.4.41/tcadb.c +4339 -0
  227. data/ext/tokyocabinet-1.4.41/tcadb.h +548 -0
  228. data/ext/tokyocabinet-1.4.41/tcamgr.c +1019 -0
  229. data/ext/tokyocabinet-1.4.41/tcamttest.c +542 -0
  230. data/ext/tokyocabinet-1.4.41/tcatest.c +1845 -0
  231. data/ext/tokyocabinet-1.4.41/tcawmgr.c +482 -0
  232. data/ext/tokyocabinet-1.4.41/tcbdb.c +4180 -0
  233. data/ext/tokyocabinet-1.4.41/tcbdb.h +1101 -0
  234. data/ext/tokyocabinet-1.4.41/tcbmgr.c +1012 -0
  235. data/ext/tokyocabinet-1.4.41/tcbmttest.c +1810 -0
  236. data/ext/tokyocabinet-1.4.41/tcbtest.c +2586 -0
  237. data/ext/tokyocabinet-1.4.41/tcfdb.c +2746 -0
  238. data/ext/tokyocabinet-1.4.41/tcfdb.h +858 -0
  239. data/ext/tokyocabinet-1.4.41/tcfmgr.c +786 -0
  240. data/ext/tokyocabinet-1.4.41/tcfmttest.c +1220 -0
  241. data/ext/tokyocabinet-1.4.41/tcftest.c +1695 -0
  242. data/ext/tokyocabinet-1.4.41/tchdb.c +5153 -0
  243. data/ext/tokyocabinet-1.4.41/tchdb.h +871 -0
  244. data/ext/tokyocabinet-1.4.41/tchmgr.c +842 -0
  245. data/ext/tokyocabinet-1.4.41/tchmttest.c +1757 -0
  246. data/ext/tokyocabinet-1.4.41/tchtest.c +2129 -0
  247. data/ext/tokyocabinet-1.4.41/tctdb.c +6199 -0
  248. data/ext/tokyocabinet-1.4.41/tctdb.h +1086 -0
  249. data/ext/tokyocabinet-1.4.41/tctmgr.c +1241 -0
  250. data/ext/tokyocabinet-1.4.41/tctmttest.c +1563 -0
  251. data/ext/tokyocabinet-1.4.41/tcttest.c +2062 -0
  252. data/ext/tokyocabinet-1.4.41/tcucodec.c +1357 -0
  253. data/ext/tokyocabinet-1.4.41/tcumttest.c +578 -0
  254. data/ext/tokyocabinet-1.4.41/tcutest.c +1875 -0
  255. data/ext/tokyocabinet-1.4.41/tcutil.c +10528 -0
  256. data/ext/tokyocabinet-1.4.41/tcutil.h +4184 -0
  257. data/ext/tokyocabinet-1.4.41/tokyocabinet.idl +336 -0
  258. data/ext/tokyocabinet-1.4.41/tokyocabinet.pc.in +14 -0
  259. data/ext/tokyotyrant-1.1.39/COPYING +504 -0
  260. data/ext/tokyotyrant-1.1.39/ChangeLog +578 -0
  261. data/ext/tokyotyrant-1.1.39/Makefile.in +365 -0
  262. data/ext/tokyotyrant-1.1.39/README +38 -0
  263. data/ext/tokyotyrant-1.1.39/THANKS +15 -0
  264. data/ext/tokyotyrant-1.1.39/configure +6979 -0
  265. data/ext/tokyotyrant-1.1.39/configure.in +300 -0
  266. data/ext/tokyotyrant-1.1.39/doc/common.css +211 -0
  267. data/ext/tokyotyrant-1.1.39/doc/index.html +79 -0
  268. data/ext/tokyotyrant-1.1.39/doc/spex.html +2264 -0
  269. data/ext/tokyotyrant-1.1.39/example/Makefile +68 -0
  270. data/ext/tokyotyrant-1.1.39/example/httptest.pl +88 -0
  271. data/ext/tokyotyrant-1.1.39/example/mcftest.pl +39 -0
  272. data/ext/tokyotyrant-1.1.39/example/mctest.pl +43 -0
  273. data/ext/tokyotyrant-1.1.39/example/tcrdbex +0 -0
  274. data/ext/tokyotyrant-1.1.39/example/tcrdbex.c +49 -0
  275. data/ext/tokyotyrant-1.1.39/example/tcrdbex.o +0 -0
  276. data/ext/tokyotyrant-1.1.39/example/tcrdbtblex +0 -0
  277. data/ext/tokyotyrant-1.1.39/example/tcrdbtblex.c +79 -0
  278. data/ext/tokyotyrant-1.1.39/example/tcrdbtblex.o +0 -0
  279. data/ext/tokyotyrant-1.1.39/ext/mapreduce.lua +57 -0
  280. data/ext/tokyotyrant-1.1.39/ext/queue.lua +55 -0
  281. data/ext/tokyotyrant-1.1.39/ext/senatus.lua +532 -0
  282. data/ext/tokyotyrant-1.1.39/ext/usherette.lua +438 -0
  283. data/ext/tokyotyrant-1.1.39/lab/datechange +56 -0
  284. data/ext/tokyotyrant-1.1.39/lab/diffcheck +45 -0
  285. data/ext/tokyotyrant-1.1.39/lab/fibonacci.lua +20 -0
  286. data/ext/tokyotyrant-1.1.39/lab/footprint.lua +67 -0
  287. data/ext/tokyotyrant-1.1.39/lab/highlow.lua +88 -0
  288. data/ext/tokyotyrant-1.1.39/lab/killdualmaster +12 -0
  289. data/ext/tokyotyrant-1.1.39/lab/rundualmaster +38 -0
  290. data/ext/tokyotyrant-1.1.39/lab/stepcount +26 -0
  291. data/ext/tokyotyrant-1.1.39/lab/tabcheck +43 -0
  292. data/ext/tokyotyrant-1.1.39/lab/ushrtregister.pl +55 -0
  293. data/ext/tokyotyrant-1.1.39/lab/widthcheck +57 -0
  294. data/ext/tokyotyrant-1.1.39/man/htmltoman +100 -0
  295. data/ext/tokyotyrant-1.1.39/man/tcrdb.3 +1309 -0
  296. data/ext/tokyotyrant-1.1.39/man/tcrmgr.1 +164 -0
  297. data/ext/tokyotyrant-1.1.39/man/tcrmttest.1 +55 -0
  298. data/ext/tokyotyrant-1.1.39/man/tcrtest.1 +89 -0
  299. data/ext/tokyotyrant-1.1.39/man/tculog.3 +15 -0
  300. data/ext/tokyotyrant-1.1.39/man/ttservctl.8 +37 -0
  301. data/ext/tokyotyrant-1.1.39/man/ttserver.1 +84 -0
  302. data/ext/tokyotyrant-1.1.39/man/ttulmgr.1 +40 -0
  303. data/ext/tokyotyrant-1.1.39/man/ttultest.1 +16 -0
  304. data/ext/tokyotyrant-1.1.39/man/ttutil.3 +14 -0
  305. data/ext/tokyotyrant-1.1.39/myconf.c +169 -0
  306. data/ext/tokyotyrant-1.1.39/myconf.h +408 -0
  307. data/ext/tokyotyrant-1.1.39/scrext.c +2394 -0
  308. data/ext/tokyotyrant-1.1.39/scrext.h +96 -0
  309. data/ext/tokyotyrant-1.1.39/tcrdb.c +2637 -0
  310. data/ext/tokyotyrant-1.1.39/tcrdb.h +801 -0
  311. data/ext/tokyotyrant-1.1.39/tcrmgr.c +1559 -0
  312. data/ext/tokyotyrant-1.1.39/tcrmttest.c +915 -0
  313. data/ext/tokyotyrant-1.1.39/tcrtest.c +1542 -0
  314. data/ext/tokyotyrant-1.1.39/tculog.c +1211 -0
  315. data/ext/tokyotyrant-1.1.39/tculog.h +392 -0
  316. data/ext/tokyotyrant-1.1.39/tokyotyrant.idl +143 -0
  317. data/ext/tokyotyrant-1.1.39/tokyotyrant.pc.in +14 -0
  318. data/ext/tokyotyrant-1.1.39/ttservctl +163 -0
  319. data/ext/tokyotyrant-1.1.39/ttserver.c +3583 -0
  320. data/ext/tokyotyrant-1.1.39/ttskeldir.c +141 -0
  321. data/ext/tokyotyrant-1.1.39/ttskelmock.c +64 -0
  322. data/ext/tokyotyrant-1.1.39/ttskelnull.c +79 -0
  323. data/ext/tokyotyrant-1.1.39/ttskelproxy.c +74 -0
  324. data/ext/tokyotyrant-1.1.39/ttulmgr.c +266 -0
  325. data/ext/tokyotyrant-1.1.39/ttultest.c +371 -0
  326. data/ext/tokyotyrant-1.1.39/ttutil.c +1510 -0
  327. data/ext/tokyotyrant-1.1.39/ttutil.h +494 -0
  328. data/lib/tokyo_tyrant/balancer.rb +189 -0
  329. data/spec/ext.lua +4 -0
  330. data/spec/plu_db.rb +538 -0
  331. data/spec/spec.rb +1 -0
  332. data/spec/spec_base.rb +17 -0
  333. data/spec/start_tyrants.sh +36 -0
  334. data/spec/stop_tyrants.sh +9 -0
  335. data/spec/tokyo_tyrant_balancer_db_spec.rb +160 -0
  336. data/spec/tokyo_tyrant_balancer_table_spec.rb +177 -0
  337. data/spec/tokyo_tyrant_query_spec.rb +159 -0
  338. data/spec/tokyo_tyrant_spec.rb +254 -0
  339. data/spec/tokyo_tyrant_table_spec.rb +301 -0
  340. metadata +402 -0
@@ -0,0 +1,189 @@
1
+ require 'tokyo_tyrant'
2
+ # require 'hash_ring'
3
+ require 'fast_hash_ring'
4
+
5
+ module TokyoTyrant
6
+ module Balancer
7
+ class Base
8
+ def initialize(servers = [], weights = {})
9
+ servers.collect! do |server|
10
+ host, port = server.split(':')
11
+ klass.new(host, port.to_i)
12
+ end
13
+ @servers = servers
14
+ # @ring = HashRing.new(servers, weights)
15
+ @ring = FastHashRing.new(servers, weights)
16
+ end
17
+
18
+ def ring
19
+ @ring
20
+ end
21
+
22
+ def servers
23
+ @servers
24
+ end
25
+
26
+ def db_for_key(key)
27
+ ring.get_node(key)
28
+ end
29
+
30
+ # Delegate Methods
31
+ def get(key)
32
+ db = db_for_key(key)
33
+ db.get(key)
34
+ end
35
+ alias :[] :get
36
+
37
+ def add_int(key, i = 1)
38
+ db = db_for_key(key)
39
+ db.add_int(key, i)
40
+ end
41
+ alias :addint :add_int
42
+ alias :increment :add_int
43
+
44
+ def get_int(key)
45
+ db = db_for_key(key)
46
+ db.get_int(key)
47
+ end
48
+
49
+ def add_double(key, i = 1.0)
50
+ db = db_for_key(key)
51
+ db.add_double(key, i)
52
+ end
53
+ alias :adddouble :add_double
54
+
55
+ def get_double(key)
56
+ db = db_for_key(key)
57
+ db.get_double(key)
58
+ end
59
+
60
+ def put(key, value)
61
+ db = db_for_key(key)
62
+ db.put(key, value)
63
+ end
64
+ alias :[]= :put
65
+
66
+ def putkeep(key, value)
67
+ db = db_for_key(key)
68
+ db.putkeep(key, value)
69
+ end
70
+
71
+ def putcat(key, value)
72
+ db = db_for_key(key)
73
+ db.putcat(key, value)
74
+ end
75
+
76
+ def putshl(key, value, width)
77
+ db = db_for_key(key)
78
+ db.putshl(key, value, width)
79
+ end
80
+
81
+ def putnr(key, value)
82
+ db = db_for_key(key)
83
+ db.putnr(key, value)
84
+ end
85
+
86
+ def vsiz(key)
87
+ db = db_for_key(key)
88
+ db.vsiz(key)
89
+ end
90
+
91
+ def fetch(key, &block)
92
+ db = db_for_key(key)
93
+ db.fetch(key, &block)
94
+ end
95
+
96
+ def out(key)
97
+ db = db_for_key(key)
98
+ db.out(key)
99
+ end
100
+ alias :delete :out
101
+
102
+ # Aggregate Methods
103
+ def close
104
+ @servers.all?{ |server| server.close }
105
+ end
106
+
107
+ def rnum
108
+ @servers.collect{ |server| server.rnum }.inject(nil){ |sum,x| sum ? sum+x : x }
109
+ end
110
+ alias :count :rnum
111
+ alias :size :rnum
112
+ alias :length :rnum
113
+
114
+ def empty?
115
+ @servers.all?{ |server| server.empty? }
116
+ end
117
+
118
+ def vanish
119
+ @servers.all?{ |server| server.vanish }
120
+ end
121
+ alias :clear :vanish
122
+
123
+ def sync
124
+ @servers.each{ |server| server.sync }
125
+ end
126
+
127
+ def optimize(*args)
128
+ @servers.all?{ |server| server.optimize(*args) }
129
+ end
130
+
131
+ def check(key)
132
+ @servers.any?{ |server| server.check(key) }
133
+ end
134
+ alias :has_key? :check
135
+ alias :key? :check
136
+ alias :include? :check
137
+ alias :member? :check
138
+
139
+ def set_index(name, type)
140
+ @servers.all?{ |server| server.set_index(name, type) }
141
+ end
142
+
143
+ def fwmkeys(prefix, max = -1)
144
+ @servers.collect{ |server| server.fwmkeys(prefix, max) }.flatten
145
+ end
146
+
147
+ def delete_keys_with_prefix(prefix, max = -1)
148
+ @servers.each{ |server| server.delete_keys_with_prefix(prefix, max) }
149
+ nil
150
+ end
151
+ alias :dfwmkeys :delete_keys_with_prefix
152
+
153
+ def keys
154
+ @servers.collect{ |server| server.keys }.flatten.uniq
155
+ end
156
+
157
+ def values
158
+ @servers.collect{ |server| server.values }.flatten.uniq
159
+ end
160
+ end
161
+ end
162
+ end
163
+
164
+ module TokyoTyrant
165
+ module Balancer
166
+ class DB < Base
167
+ def klass
168
+ TokyoTyrant::DB
169
+ end
170
+ end
171
+ end
172
+ end
173
+
174
+ module TokyoTyrant
175
+ module Balancer
176
+ class Table < Base
177
+ def klass
178
+ TokyoTyrant::Table
179
+ end
180
+
181
+ def find(&block)
182
+ queries = @servers.collect{ |server|
183
+ server.prepare_query(&block)
184
+ }
185
+ TokyoTyrant::Query.parallel_search(*queries)
186
+ end
187
+ end
188
+ end
189
+ end
data/spec/ext.lua ADDED
@@ -0,0 +1,4 @@
1
+ -- echo back the key and the value
2
+ function echo(key, value)
3
+ return key .. "\t" .. value
4
+ end
data/spec/plu_db.rb ADDED
@@ -0,0 +1,538 @@
1
+ $codes = {
2
+ '3000' => { :code => '3000', :type => 'Apple', :variety => 'Alkmene' },
3
+ '3001' => { :code => '3001', :type => 'Apple', :variety => 'Aurora / Southern Rose, small' },
4
+ '3002' => { :code => '3002', :type => 'Apple', :variety => 'Cantared' },
5
+ '3003' => { :code => '3003', :type => 'Apple', :variety => 'D\'Estivale' },
6
+ '3004' => { :code => '3004', :type => 'Apple', :variety => 'Discovery' },
7
+ '3005' => { :code => '3005', :type => 'Apple', :variety => 'Golden Delicious Blush' },
8
+ '3006' => { :code => '3006', :type => 'Apple', :variety => 'Ingrid Marie' },
9
+ '3007' => { :code => '3007', :type => 'Apple', :variety => 'Lochbuie' },
10
+ '3008' => { :code => '3008', :type => 'Apple', :variety => 'Rubinette' },
11
+ '3009' => { :code => '3009', :type => 'Apple', :variety => 'Russet' },
12
+ '3011' => { :code => '3011', :type => 'Apple', :variety => 'Worcester' },
13
+ '3012' => { :code => '3012', :type => 'Pear', :variety => 'Abate Fetel' },
14
+ '3013' => { :code => '3013', :type => 'Pear', :variety => 'Beurre Hardy' },
15
+ '3014' => { :code => '3014', :type => 'Pear', :variety => 'Bon Rouge' },
16
+ '3015' => { :code => '3015', :type => 'Pear', :variety => 'Clara Friis' },
17
+ '3016' => { :code => '3016', :type => 'Pear', :variety => 'Concorde' },
18
+ '3017' => { :code => '3017', :type => 'Pear', :variety => 'Conference' },
19
+ '3018' => { :code => '3018', :type => 'Pear', :variety => 'Durondeau' },
20
+ '3019' => { :code => '3019', :type => 'Pear', :variety => 'Flamingo' },
21
+ '3020' => { :code => '3020', :type => 'Pear', :variety => 'General Leclerc' },
22
+ '3021' => { :code => '3021', :type => 'Pear', :variety => 'Guyot' },
23
+ '3022' => { :code => '3022', :type => 'Pear', :variety => 'Josephine' },
24
+ '3024' => { :code => '3024', :type => 'Pear', :variety => 'Rocha' },
25
+ '3025' => { :code => '3025', :type => 'Pear', :variety => 'Rosemarie' },
26
+ '3026' => { :code => '3026', :type => 'Pear', :variety => 'Triumph de Vienne' },
27
+ '3027' => { :code => '3027', :type => 'Orange', :variety => 'Shamouti' },
28
+ '3030' => { :code => '3030', :type => 'Tangerine / Mandarin', :variety => 'Nova' },
29
+ '3031' => { :code => '3031', :type => 'Tangerine / Mandarin', :variety => 'Jamaican Tangor' },
30
+ '3037' => { :code => '3037', :type => 'Pineapple', :variety => 'Queen' },
31
+ '3038' => { :code => '3038', :type => 'Passion Fruit', :variety => 'Granadilla / Grenadilla Orange' },
32
+ '3039' => { :code => '3039', :type => 'Berries', :variety => 'Gooseberry / Ground Cherry / Physalis / Cape' },
33
+ '3041' => { :code => '3041', :type => 'Rambutan', :variety => '' },
34
+ '3042' => { :code => '3042', :type => 'Mangosteen', :variety => '' },
35
+ '3043' => { :code => '3043', :type => 'Grape', :variety => 'Italian, seeded' },
36
+ '3046' => { :code => '3046', :type => 'Date', :variety => 'Fresh / Frozen' },
37
+ '3047' => { :code => '3047', :type => 'Date', :variety => 'Medjool' },
38
+ '3048' => { :code => '3048', :type => 'Bean', :variety => 'Helda / Flat' },
39
+ '3049' => { :code => '3049', :type => 'Bean', :variety => 'Fine' },
40
+ '3050' => { :code => '3050', :type => 'Cabbage', :variety => 'Dutch White / Winter White' },
41
+ '3051' => { :code => '3051', :type => 'Cabbage', :variety => 'Spring Cabbage / Spring Greens' },
42
+ '3052' => { :code => '3052', :type => 'Garlic', :variety => 'String' },
43
+ '3053' => { :code => '3053', :type => 'Parsnip', :variety => 'Baby' },
44
+ '3059' => { :code => '3059', :type => 'Squash', :variety => 'Crown Prince' },
45
+ '3060' => { :code => '3060', :type => 'Squash', :variety => 'Vegetable Marrow' },
46
+ '3061' => { :code => '3061', :type => 'Tomato', :variety => 'Beef / Beefsteak' },
47
+ '3062' => { :code => '3062', :type => 'Herbs', :variety => 'Bay Leaves' },
48
+ '3063' => { :code => '3063', :type => 'Herbs', :variety => 'Fennel Leaves' },
49
+ '3064' => { :code => '3064', :type => 'Herbs', :variety => 'Aloe Vera Leaves' },
50
+ '3072' => { :code => '3072', :type => 'Apple', :variety => 'Lady' },
51
+ '3073' => { :code => '3073', :type => 'Apple', :variety => 'Macoun' },
52
+ '3074' => { :code => '3074', :type => 'Apple', :variety => 'Greening / Rhode Island' },
53
+ '3075' => { :code => '3075', :type => 'Apple', :variety => 'Baldwin' },
54
+ '3076' => { :code => '3076', :type => 'Apple', :variety => 'Melrose' },
55
+ '3077' => { :code => '3077', :type => 'Apple', :variety => 'Northern Spy' },
56
+ '3078' => { :code => '3078', :type => 'Apple', :variety => 'Liberty' },
57
+ '3080' => { :code => '3080', :type => 'Avocado', :variety => 'Pinkerton' },
58
+ '3081' => { :code => '3081', :type => 'Berries', :variety => 'Saskatoons' },
59
+ '3082' => { :code => '3082', :type => 'Broccoli', :variety => 'Crowns' },
60
+ '3083' => { :code => '3083', :type => 'Brussels Sprout', :variety => 'Stalk' },
61
+ '3084' => { :code => '3084', :type => 'Herbs', :variety => 'Chervil' },
62
+ '3088' => { :code => '3088', :type => 'Currant', :variety => 'Red' },
63
+ '3089' => { :code => '3089', :type => 'Eggplant', :variety => 'Chinese' },
64
+ '3090' => { :code => '3090', :type => 'Eggplant', :variety => 'Thai' },
65
+ '3091' => { :code => '3091', :type => 'Gobo Root', :variety => 'Gobo Root / Burdock Root' },
66
+ '3092' => { :code => '3092', :type => 'Grapefruit', :variety => 'Blanco / Sweetie' },
67
+ '3099' => { :code => '3099', :type => 'Lotus Root', :variety => '' },
68
+ '3100' => { :code => '3100', :type => 'Melon', :variety => 'Gold Honeydew' },
69
+ '3101' => { :code => '3101', :type => 'Melon', :variety => 'Piel de Sapo' },
70
+ '3102' => { :code => '3102', :type => 'Mushroom', :variety => 'Morel' },
71
+ '3103' => { :code => '3103', :type => 'Mushroom', :variety => 'Enoki' },
72
+ '3105' => { :code => '3105', :type => 'Nuts', :variety => 'Cashews' },
73
+ '3106' => { :code => '3106', :type => 'Nuts', :variety => 'Macadamia' },
74
+ '3109' => { :code => '3109', :type => 'Orange', :variety => 'Seville / Marmalade type' },
75
+ '3111' => { :code => '3111', :type => 'Papaya / Pawpaw', :variety => 'Red-Fleshed / Solo Sunrise' },
76
+ '3112' => { :code => '3112', :type => 'Papaya / Pawpaw', :variety => 'Meridol' },
77
+ '3113' => { :code => '3113', :type => 'Peach', :variety => 'Donut / Flat Chinese' },
78
+ '3118' => { :code => '3118', :type => 'Pear', :variety => 'Starkrimson' },
79
+ '3125' => { :code => '3125', :type => 'Pepper', :variety => 'Habanero' },
80
+ '3126' => { :code => '3126', :type => 'Plumcot', :variety => '' },
81
+ '3130' => { :code => '3130', :type => 'Pumpkin', :variety => 'Jumbo' },
82
+ '3131' => { :code => '3131', :type => 'Pumpkin', :variety => 'Decorative / Painted' },
83
+ '3132' => { :code => '3132', :type => 'Pumpkin', :variety => 'White' },
84
+ '3134' => { :code => '3134', :type => 'Pumpkin', :variety => 'Pie Pumpkin' },
85
+ '3135' => { :code => '3135', :type => 'Pumpkin', :variety => 'Ornamental' },
86
+ '3136' => { :code => '3136', :type => 'Sapote', :variety => 'Sapodillo / Nispero' },
87
+ '3139' => { :code => '3139', :type => 'Herbs', :variety => 'Savory' },
88
+ '3140' => { :code => '3140', :type => 'Squash', :variety => 'Cucuzza' },
89
+ '3141' => { :code => '3141', :type => 'Squash', :variety => 'Opo' },
90
+ '3142' => { :code => '3142', :type => 'Squash', :variety => 'Carnival' },
91
+ '3144' => { :code => '3144', :type => 'Tangerine / Mandarin', :variety => 'Fall Glo' },
92
+ '3152' => { :code => '3152', :type => 'Grapefruit', :variety => 'Melogold' },
93
+ '3160' => { :code => '3160', :type => 'Choy', :variety => 'Gai Lan / Chinese Broccoli' },
94
+ '3162' => { :code => '3162', :type => 'Choy', :variety => 'On Choy / Water Spinach' },
95
+ '3163' => { :code => '3163', :type => 'Choy', :variety => 'Bok Choy / Pak Choy / Shanghai' },
96
+ '3164' => { :code => '3164', :type => 'Choy', :variety => 'Yu Choy' },
97
+ '3165' => { :code => '3165', :type => 'Radicchio', :variety => 'Treviso' },
98
+ '3166' => { :code => '3166', :type => 'Cabbage', :variety => 'Tuscan' },
99
+ '3167' => { :code => '3167', :type => 'Endive / Chicory', :variety => 'Frisee' },
100
+ '3168' => { :code => '3168', :type => 'Radicchio', :variety => 'Castlelfranco' },
101
+ '3169' => { :code => '3169', :type => 'Lettuce', :variety => 'Catalogna' },
102
+ '3271' => { :code => '3271', :type => 'Apple', :variety => 'Virginia Gold' },
103
+ '3272' => { :code => '3272', :type => 'Apple', :variety => 'Sommerfeld' },
104
+ '3273' => { :code => '3273', :type => 'Beet', :variety => 'Golden' },
105
+ '3277' => { :code => '3277', :type => 'Broccoli', :variety => 'Baby' },
106
+ '3278' => { :code => '3278', :type => 'Plum', :variety => 'InterSpecific' },
107
+ '3279' => { :code => '3279', :type => 'Kiwi Fruit', :variety => 'Golden' },
108
+ '3283' => { :code => '3283', :type => 'Apple', :variety => 'Honeycrisp' },
109
+ '3286' => { :code => '3286', :type => 'Onion', :variety => 'Sweet, red, Italian, [flat]' },
110
+ '3287' => { :code => '3287', :type => 'Banana', :variety => 'Hawaiian Plantain' },
111
+ '3289' => { :code => '3289', :type => 'Melon', :variety => 'Sprite' },
112
+ '3291' => { :code => '3291', :type => 'Apple', :variety => 'Boskoop / Belle de Boskoop, small' },
113
+ '3292' => { :code => '3292', :type => 'Apple', :variety => 'Boskoop / Belle de Boskoop, large' },
114
+ '3297' => { :code => '3297', :type => 'Apple', :variety => 'Scired / Pacific Queen' },
115
+ '3303' => { :code => '3303', :type => 'Papaya / Pawpaw', :variety => 'Babaco' },
116
+ '3304' => { :code => '3304', :type => 'Berries', :variety => 'Loganberries' },
117
+ '3305' => { :code => '3305', :type => 'Currant', :variety => 'Black' },
118
+ '3309' => { :code => '3309', :type => 'Orange', :variety => 'Lima' },
119
+ '3310' => { :code => '3310', :type => 'Orange', :variety => 'Pera' },
120
+ '3311' => { :code => '3311', :type => 'Passion Fruit', :variety => 'Curuba / Banana' },
121
+ '3312' => { :code => '3312', :type => 'Passion Fruit', :variety => 'Granadilla Yellow / Maracuya' },
122
+ '3320' => { :code => '3320', :type => 'Broccoli', :variety => 'Romanesco / Broccoflower / Caulibroc' },
123
+ '3325' => { :code => '3325', :type => 'Lettuce', :variety => 'Lollo Bionda / Coral Green' },
124
+ '3326' => { :code => '3326', :type => 'Lettuce', :variety => 'Lollo Rossa / Coral Red' },
125
+ '3327' => { :code => '3327', :type => 'Lettuce', :variety => 'Mignonette, compact red-tinged butterhead varieties' },
126
+ '3328' => { :code => '3328', :type => 'Lettuce', :variety => 'Mixed, small-leaf, salad [eg, Sucrine / Mesclun / Rocket / Arugula]' },
127
+ '3332' => { :code => '3332', :type => 'Spinach', :variety => 'Baby' },
128
+ '3336' => { :code => '3336', :type => 'Tomato', :variety => 'Cocktail / Intermediate Red / Plum / Italian / Saladette / Roma, on the vine [Truss]' },
129
+ '3337' => { :code => '3337', :type => 'Fig', :variety => 'dried' },
130
+ '3338' => { :code => '3338', :type => 'Herbs', :variety => 'Anise' },
131
+ '3339' => { :code => '3339', :type => 'Apple', :variety => 'Belchard / Chantecler' },
132
+ '3340' => { :code => '3340', :type => 'Apple', :variety => 'Bertanne / Golden Russet' },
133
+ '3341' => { :code => '3341', :type => 'Apple', :variety => 'Charles Ross' },
134
+ '3342' => { :code => '3342', :type => 'Apple', :variety => 'Delblush / Tentation' },
135
+ '3343' => { :code => '3343', :type => 'Apple', :variety => 'Dessert' },
136
+ '3346' => { :code => '3346', :type => 'Apple', :variety => 'Holstein' },
137
+ '3347' => { :code => '3347', :type => 'Apple', :variety => 'Laxtons Fortune' },
138
+ '3348' => { :code => '3348', :type => 'Apple', :variety => 'Lord Lambourne' },
139
+ '3349' => { :code => '3349', :type => 'Apple', :variety => 'Michaelmas Red' },
140
+ '3352' => { :code => '3352', :type => 'Apple', :variety => 'Reinettes and Heritage varieties' },
141
+ '3353' => { :code => '3353', :type => 'Apple', :variety => 'St. Edmunds Pippin' },
142
+ '3359' => { :code => '3359', :type => 'Grape', :variety => 'Chasselas' },
143
+ '3360' => { :code => '3360', :type => 'Grape', :variety => 'Muscat de Hambourg' },
144
+ '3363' => { :code => '3363', :type => 'Mango', :variety => 'Bowen & Kensington Pride, extra large' },
145
+ '3364' => { :code => '3364', :type => 'Mango', :variety => 'R2E2,ArtwoEetwo, extra large' },
146
+ '3366' => { :code => '3366', :type => 'Madro?a', :variety => '' },
147
+ '3368' => { :code => '3368', :type => 'Melon', :variety => 'Ogen' },
148
+ '3369' => { :code => '3369', :type => 'Nectarine', :variety => 'Nectavigne, red flesh' },
149
+ '3370' => { :code => '3370', :type => 'Orange', :variety => 'Maltaise' },
150
+ '3371' => { :code => '3371', :type => 'Orange', :variety => 'Salustiana' },
151
+ '3372' => { :code => '3372', :type => 'Orange', :variety => 'Navelate / other late Navel varieties' },
152
+ '3373' => { :code => '3373', :type => 'Orange', :variety => 'Navelina, including Newhall' },
153
+ '3375' => { :code => '3375', :type => 'Peach', :variety => 'Peche de Vigne / Sanguine, red flesh' },
154
+ '3376' => { :code => '3376', :type => 'Pear', :variety => 'Alexander Lucas' },
155
+ '3377' => { :code => '3377', :type => 'Pear', :variety => 'Louise Bonne' },
156
+ '3378' => { :code => '3378', :type => 'Pear', :variety => 'Santa Maria' },
157
+ '3379' => { :code => '3379', :type => 'Pineapple', :variety => 'Mini' },
158
+ '3380' => { :code => '3380', :type => 'Pineapple', :variety => 'Perola' },
159
+ '3381' => { :code => '3381', :type => 'Soursop', :variety => '' },
160
+ '3382' => { :code => '3382', :type => 'Apple', :variety => 'Sugar Apple' },
161
+ '3390' => { :code => '3390', :type => 'Arracach', :variety => '' },
162
+ '3391' => { :code => '3391', :type => 'Artichoke', :variety => 'Rouge Salambo, red' },
163
+ '3397' => { :code => '3397', :type => 'Cabbage', :variety => 'Summer, pointed type' },
164
+ '3398' => { :code => '3398', :type => 'Pea', :variety => 'Chick Pea / Garbanzo' },
165
+ '3401' => { :code => '3401', :type => 'Garlic', :variety => 'One-clove types' },
166
+ '3404' => { :code => '3404', :type => 'Mushroom', :variety => 'Cep' },
167
+ '3405' => { :code => '3405', :type => 'Mushroom', :variety => 'Fairy Ring Champignon' },
168
+ '3406' => { :code => '3406', :type => 'Mushroom', :variety => 'Grey Tricholoma' },
169
+ '3407' => { :code => '3407', :type => 'Mushroom', :variety => 'Grisette' },
170
+ '3408' => { :code => '3408', :type => 'Mushroom', :variety => 'Horn of Plenty / Black Trumpet' },
171
+ '3409' => { :code => '3409', :type => 'Mushroom', :variety => 'Pioppino' },
172
+ '3410' => { :code => '3410', :type => 'Mushroom', :variety => 'Saffron Milk-Cap' },
173
+ '3411' => { :code => '3411', :type => 'Mushroom', :variety => 'Sheep Polypore' },
174
+ '3413' => { :code => '3413', :type => 'Pepper', :variety => 'Tabasco' },
175
+ '3419' => { :code => '3419', :type => 'Herbs', :variety => 'Borage' },
176
+ '3421' => { :code => '3421', :type => 'Melon', :variety => 'Mini, seedless [3-7 pounds]' },
177
+ '3422' => { :code => '3422', :type => 'Apricot', :variety => 'InterSpecific' },
178
+ '3423' => { :code => '3423', :type => 'Tomato', :variety => 'Heirloom' },
179
+ '3424' => { :code => '3424', :type => 'Carrot', :variety => 'Purple / Red / Beta Sweet' },
180
+ '4033' => { :code => '4033', :type => 'LEMON', :variety => 'Lemons' },
181
+ '4034' => { :code => '4034', :type => 'MELON', :variety => 'Honeydew' },
182
+ '4035' => { :code => '4035', :type => 'CITRUS', :variety => 'Nectarines' },
183
+ '4036' => { :code => '4036', :type => 'NECTARINE', :variety => 'California Nectarines' },
184
+ '4040' => { :code => '4040', :type => 'PLUM', :variety => 'Black Plums' },
185
+ '4041' => { :code => '4041', :type => 'PLUM', :variety => 'Plums' },
186
+ '4042' => { :code => '4042', :type => 'PLUM', :variety => 'Large Plums' },
187
+ '4045' => { :code => '4045', :type => 'BERRIES', :variety => 'Cherries' },
188
+ '4048' => { :code => '4048', :type => 'MELON', :variety => 'Lime' },
189
+ '4050' => { :code => '4050', :type => 'MELON', :variety => 'Cantelope' },
190
+ '4051' => { :code => '4051', :type => 'MANGO', :variety => '' },
191
+ '4053' => { :code => '4053', :type => 'LEMON', :variety => 'lemons' },
192
+ '4054' => { :code => '4054', :type => 'Berries', :variety => 'Raspberries, red' },
193
+ '4055' => { :code => '4055', :type => 'Tangerine / Mandarin', :variety => '' },
194
+ '4060' => { :code => '4060', :type => 'BROCOLLI', :variety => 'Broccoli' },
195
+ '4061' => { :code => '4061', :type => 'LETTUCE', :variety => 'Iceberg lettuce' },
196
+ '4062' => { :code => '4062', :type => 'CUCUMBER', :variety => 'Cucumbers' },
197
+ '4064' => { :code => '4064', :type => 'TOMATO', :variety => 'Tomatoes' },
198
+ '4065' => { :code => '4065', :type => 'PEPPER', :variety => 'Green Peppers' },
199
+ '4066' => { :code => '4066', :type => 'BEAN', :variety => 'Green Beans' },
200
+ '4067' => { :code => '4067', :type => 'SQUASH', :variety => 'green squash' },
201
+ '4068' => { :code => '4068', :type => 'ONION', :variety => 'Green Scallions (bunch)' },
202
+ '4069' => { :code => '4069', :type => 'CABBAGE', :variety => 'Green Cabbage' },
203
+ '4070' => { :code => '4070', :type => 'CELERY', :variety => '' },
204
+ '4071' => { :code => '4071', :type => 'POTATO', :variety => 'Red Potatoes' },
205
+ '4072' => { :code => '4072', :type => 'POTATO', :variety => 'Russet Potatoes' },
206
+ '4075' => { :code => '4075', :type => 'LETTUCE', :variety => 'Red Leaf Lettuce' },
207
+ '4076' => { :code => '4076', :type => 'LETTUCE', :variety => 'Green Leaf Lettuce' },
208
+ '4078' => { :code => '4078', :type => 'CORN', :variety => '' },
209
+ '4079' => { :code => '4079', :type => 'Cauliflower', :variety => '' },
210
+ '4080' => { :code => '4080', :type => 'ASPARAGUS', :variety => '' },
211
+ '4081' => { :code => '4081', :type => 'EGGPLANT', :variety => '' },
212
+ '4082' => { :code => '4082', :type => 'ONION', :variety => 'Red Onions' },
213
+ '4084' => { :code => '4084', :type => 'Artichoke', :variety => 'Artichokes' },
214
+ '4086' => { :code => '4086', :type => 'Squash', :variety => 'Yellow Zucchini / Gold Bar / Yellow Courgette' },
215
+ '4087' => { :code => '4087', :type => 'TOMATO', :variety => 'Plum Tomatoes' },
216
+ '4088' => { :code => '4088', :type => 'PEPPER', :variety => 'Red peppers' },
217
+ '4089' => { :code => '4089', :type => 'RADISH', :variety => 'Radishes (bunch)' },
218
+ '4090' => { :code => '4090', :type => 'SPINICH', :variety => 'Spinach Bunch' },
219
+ '4092' => { :code => '4092', :type => 'Pea', :variety => 'Chinese Snow Pea / Pea Pod / Mange Tout' },
220
+ '4094' => { :code => '4094', :type => 'Carrot', :variety => 'Bunch' },
221
+ '4095' => { :code => '4095', :type => 'Turnip / Rutabaga / Swede', :variety => 'Yellow' },
222
+ '4098' => { :code => '4098', :type => 'Apple', :variety => 'Akane, small' },
223
+ '4099' => { :code => '4099', :type => 'Apple', :variety => 'Akane, large' },
224
+ '4101' => { :code => '4101', :type => 'Apple', :variety => 'Braeburn, small' },
225
+ '4103' => { :code => '4103', :type => 'APPLE', :variety => 'Braeburn Apples' },
226
+ '4105' => { :code => '4105', :type => 'Apple', :variety => 'Cox Orange Pippin' },
227
+ '4107' => { :code => '4107', :type => 'Apple', :variety => 'Crab' },
228
+ '4120' => { :code => '4120', :type => 'APPLE', :variety => 'Idared Apples/Fiesta' },
229
+ '4124' => { :code => '4124', :type => 'APPLE', :variety => 'Empire Apples' },
230
+ '4133' => { :code => '4133', :type => 'APPLE', :variety => 'Small Gala Apple' },
231
+ '4152' => { :code => '4152', :type => 'APPLE', :variety => 'Macintosh Apples' },
232
+ '4159' => { :code => '4159', :type => 'Onion', :variety => 'Vidalia' },
233
+ '4161' => { :code => '4161', :type => 'Onion', :variety => 'Texas Sweet' },
234
+ '4163' => { :code => '4163', :type => 'Onion', :variety => 'Walla Walla' },
235
+ '4164' => { :code => '4164', :type => 'Onion', :variety => 'Maui' },
236
+ '4165' => { :code => '4165', :type => 'Onion', :variety => 'California Sweet' },
237
+ '4166' => { :code => '4166', :type => 'Onion', :variety => 'Other Sweet' },
238
+ '4176' => { :code => '4176', :type => 'Apple', :variety => 'Southern Snap' },
239
+ '4182' => { :code => '4182', :type => 'Apple', :variety => 'Sturmer Pippin' },
240
+ '4218' => { :code => '4218', :type => 'APRICOT', :variety => 'Apricots' },
241
+ '4220' => { :code => '4220', :type => 'Atemoya', :variety => '' },
242
+ '4225' => { :code => '4225', :type => 'AVACADO', :variety => '' },
243
+ '4226' => { :code => '4226', :type => 'Avocado', :variety => 'Cocktail / Seedless' },
244
+ '4229' => { :code => '4229', :type => 'Banana', :variety => 'Burro' },
245
+ '4230' => { :code => '4230', :type => 'Banana', :variety => 'Dominique' },
246
+ '4231' => { :code => '4231', :type => 'Banana', :variety => 'Green' },
247
+ '4232' => { :code => '4232', :type => 'Banana', :variety => 'Banana Leaves' },
248
+ '4233' => { :code => '4233', :type => 'Banana', :variety => 'Manzano / Apple Banana' },
249
+ '4234' => { :code => '4234', :type => 'Banana', :variety => 'Nino' },
250
+ '4235' => { :code => '4235', :type => 'BANANA', :variety => 'Plantains/Macho' },
251
+ '4236' => { :code => '4236', :type => 'Banana', :variety => 'Red' },
252
+ '4239' => { :code => '4239', :type => 'Berries', :variety => 'Blackberries' },
253
+ '4240' => { :code => '4240', :type => 'Berries', :variety => 'Blueberries' },
254
+ '4241' => { :code => '4241', :type => 'Berries', :variety => 'Boysenberries' },
255
+ '4242' => { :code => '4242', :type => 'Berries', :variety => 'Cranberries' },
256
+ '4243' => { :code => '4243', :type => 'Berries', :variety => 'Gooseberries' },
257
+ '4244' => { :code => '4244', :type => 'Berries', :variety => 'Black Raspberries' },
258
+ '4245' => { :code => '4245', :type => 'Berries', :variety => 'Golden Raspberries' },
259
+ '4248' => { :code => '4248', :type => 'Berries', :variety => 'Quart' },
260
+ '4251' => { :code => '4251', :type => 'Berries', :variety => 'Long-stemmed' },
261
+ '4254' => { :code => '4254', :type => 'Breadfruit', :variety => '' },
262
+ '4255' => { :code => '4255', :type => 'Cactus', :variety => 'Cactus Pear / Prickly Pear' },
263
+ '4256' => { :code => '4256', :type => 'Carambola / Starfruit', :variety => '' },
264
+ '4257' => { :code => '4257', :type => 'Cherimoya', :variety => '' },
265
+ '4258' => { :code => '4258', :type => 'Cherry', :variety => 'Golden / Ranier / White' },
266
+ '4260' => { :code => '4260', :type => 'Coconut', :variety => 'In Husk / Waternut' },
267
+ '4261' => { :code => '4261', :type => 'Coconut', :variety => 'Husked' },
268
+ '4265' => { :code => '4265', :type => 'Feijoa', :variety => '' },
269
+ '4266' => { :code => '4266', :type => 'Fig', :variety => 'Black' },
270
+ '4267' => { :code => '4267', :type => 'Fig', :variety => 'Brown' },
271
+ '4268' => { :code => '4268', :type => 'Fig', :variety => 'White / Green' },
272
+ '4271' => { :code => '4271', :type => 'Grape', :variety => 'Champagne' },
273
+ '4272' => { :code => '4272', :type => 'Grape', :variety => 'Concord' },
274
+ '4299' => { :code => '4299', :type => 'Guava', :variety => '' },
275
+ '4300' => { :code => '4300', :type => 'Homli Fruit', :variety => '' },
276
+ '4302' => { :code => '4302', :type => 'Melon', :variety => 'Horned Melon / Kiwano' },
277
+ '4303' => { :code => '4303', :type => 'Kumquat', :variety => '' },
278
+ '4305' => { :code => '4305', :type => 'Lime', :variety => 'Key, including Mexican / West Indian' },
279
+ '4307' => { :code => '4307', :type => 'Longan', :variety => '' },
280
+ '4308' => { :code => '4308', :type => 'Loquat', :variety => '' },
281
+ '4309' => { :code => '4309', :type => 'Lychee', :variety => '' },
282
+ '4310' => { :code => '4310', :type => 'Mamey', :variety => '' },
283
+ '4311' => { :code => '4311', :type => 'Mango', :variety => 'Green' },
284
+ '4312' => { :code => '4312', :type => 'Mango', :variety => 'Yellow' },
285
+ '4317' => { :code => '4317', :type => 'Melon', :variety => 'Canary / Yellow Honeydew' },
286
+ '4320' => { :code => '4320', :type => 'Melon', :variety => 'Casaba' },
287
+ '4321' => { :code => '4321', :type => 'Melon', :variety => 'Cinnabar' },
288
+ '4322' => { :code => '4322', :type => 'Melon', :variety => 'Crenshaw' },
289
+ '4324' => { :code => '4324', :type => 'Melon', :variety => 'French Afternoon' },
290
+ '4325' => { :code => '4325', :type => 'Melon', :variety => 'French Breakfast' },
291
+ '4326' => { :code => '4326', :type => 'Melon', :variety => 'Galia' },
292
+ '4327' => { :code => '4327', :type => 'Melon', :variety => 'Orange Flesh / Cantaline' },
293
+ '4328' => { :code => '4328', :type => 'Limequat', :variety => '' },
294
+ '4329' => { :code => '4329', :type => 'MELON', :variety => 'Honeydew Melon' },
295
+ '4330' => { :code => '4330', :type => 'Melon', :variety => 'Mayan' },
296
+ '4331' => { :code => '4331', :type => 'Melon', :variety => 'Mickey Lee / Sugarbaby' },
297
+ '4332' => { :code => '4332', :type => 'Melon', :variety => 'Muskmelon' },
298
+ '4333' => { :code => '4333', :type => 'Melon', :variety => 'Pepino' },
299
+ '4334' => { :code => '4334', :type => 'Melon', :variety => 'Persian' },
300
+ '4335' => { :code => '4335', :type => 'Melon', :variety => 'Prince' },
301
+ '4336' => { :code => '4336', :type => 'Melon', :variety => 'Santa Claus' },
302
+ '4337' => { :code => '4337', :type => 'Melon', :variety => 'Saticoy' },
303
+ '4338' => { :code => '4338', :type => 'Melon', :variety => 'Sharlin' },
304
+ '4339' => { :code => '4339', :type => 'Melon', :variety => 'Spanish / Tendral' },
305
+ '4381' => { :code => '4381', :type => 'Orange', :variety => 'Blood' },
306
+ '4382' => { :code => '4382', :type => 'Orange', :variety => 'Juice' },
307
+ '4383' => { :code => '4383', :type => 'Orange', :variety => 'Tangelo Minneola' },
308
+ '4395' => { :code => '4395', :type => 'Papaya / Pawpaw', :variety => 'Cooking / Mexican' },
309
+ '4397' => { :code => '4397', :type => 'Passion Fruit', :variety => 'Purple' },
310
+ '4399' => { :code => '4399', :type => 'Peach', :variety => 'Indian' },
311
+ '4401' => { :code => '4401', :type => 'PEACH', :variety => 'White Peaches' },
312
+ '4402' => { :code => '4402', :type => 'PEACH', :variety => 'Peaches' },
313
+ '4409' => { :code => '4409', :type => 'PEAR', :variety => 'Bartlett Pears' },
314
+ '4410' => { :code => '4410', :type => 'Pear', :variety => 'Bartlett Red / Red Sensation' },
315
+ '4412' => { :code => '4412', :type => 'PEAR', :variety => 'Bosc Pears' },
316
+ '4415' => { :code => '4415', :type => 'Pear', :variety => 'Red' },
317
+ '4418' => { :code => '4418', :type => 'Pear', :variety => 'Forelle / Corella' },
318
+ '4419' => { :code => '4419', :type => 'Pear', :variety => 'French' },
319
+ '4420' => { :code => '4420', :type => 'Pear', :variety => 'King Royal' },
320
+ '4422' => { :code => '4422', :type => 'Pear', :variety => 'Seckel' },
321
+ '4423' => { :code => '4423', :type => 'Pear', :variety => 'Tree Ripened' },
322
+ '4424' => { :code => '4424', :type => 'Pear', :variety => 'Winter Nelis / Honey' },
323
+ '4427' => { :code => '4427', :type => 'Persimmon', :variety => 'Regular / American Persimmon' },
324
+ '4428' => { :code => '4428', :type => 'Persimmon', :variety => 'Japanese / Sharonfruit [Kaki]' },
325
+ '4436' => { :code => '4436', :type => 'Plum', :variety => 'Italian Prune / Sugar' },
326
+ '4447' => { :code => '4447', :type => 'Quince', :variety => '' },
327
+ '4448' => { :code => '4448', :type => 'Tamarindo', :variety => '' },
328
+ '4449' => { :code => '4449', :type => 'Tangerine / Mandarin', :variety => 'Sunburst' },
329
+ '4451' => { :code => '4451', :type => 'Tangerine / Mandarin', :variety => 'Dancy' },
330
+ '4452' => { :code => '4452', :type => 'Tangerine / Mandarin', :variety => 'Fairchild' },
331
+ '4454' => { :code => '4454', :type => 'Tangerine / Mandarin', :variety => 'Kinnow' },
332
+ '4455' => { :code => '4455', :type => 'Tangerine / Mandarin', :variety => 'Mandarin / Royal' },
333
+ '4470' => { :code => '4470', :type => 'Salad Bar', :variety => '' },
334
+ '4497' => { :code => '4497', :type => 'Grape', :variety => 'Sugarone / Autumn, seedless' },
335
+ '4499' => { :code => '4499', :type => 'Grape', :variety => 'Crimson / Majestic' },
336
+ '4514' => { :code => '4514', :type => 'Alfalfa Sprouts', :variety => '' },
337
+ '4515' => { :code => '4515', :type => 'ANISE', :variety => 'Fennel / Florence / Sweet Fennel / Fennel Bulb' },
338
+ '4519' => { :code => '4519', :type => 'Artichoke', :variety => 'Baby / Cocktail' },
339
+ '4524' => { :code => '4524', :type => 'Asparagus', :variety => 'Tips' },
340
+ '4527' => { :code => '4527', :type => 'Bean', :variety => 'Chinese Long / Snake' },
341
+ '4528' => { :code => '4528', :type => 'Bean', :variety => 'Fava / Broad' },
342
+ '4529' => { :code => '4529', :type => 'Bean', :variety => 'Lima' },
343
+ '4530' => { :code => '4530', :type => 'Bean', :variety => 'Pole / Runner / Stick' },
344
+ '4531' => { :code => '4531', :type => 'Bean', :variety => 'Purple Hull' },
345
+ '4532' => { :code => '4532', :type => 'Bean', :variety => 'Shell' },
346
+ '4533' => { :code => '4533', :type => 'Bean', :variety => 'Wax / Yellow' },
347
+ '4534' => { :code => '4534', :type => 'Bean', :variety => 'Winged' },
348
+ '4536' => { :code => '4536', :type => 'Bean', :variety => 'Bean Sprouts / Mung Bean Sprouts' },
349
+ '4537' => { :code => '4537', :type => 'Beet', :variety => 'Baby Golden' },
350
+ '4538' => { :code => '4538', :type => 'Beet', :variety => 'Baby Red' },
351
+ '4539' => { :code => '4539', :type => 'Beet', :variety => 'Bunch' },
352
+ '4540' => { :code => '4540', :type => 'Beet', :variety => 'Loose' },
353
+ '4542' => { :code => '4542', :type => 'Beet', :variety => 'Beet Greens' },
354
+ '4543' => { :code => '4543', :type => 'ENDIVE', :variety => 'Belgium endive' },
355
+ '4545' => { :code => '4545', :type => 'CHOY', :variety => 'Bok Choy' },
356
+ '4546' => { :code => '4546', :type => 'Potato', :variety => 'Boniato / Sweet Potato' },
357
+ '4547' => { :code => '4547', :type => 'Broccoli', :variety => 'Broccoli Rabe / Italian Rapini / Chinese Broccoli / Gai Lan' },
358
+ '4548' => { :code => '4548', :type => 'BROCOLLI', :variety => 'Broccoli Crowns' },
359
+ '4550' => { :code => '4550', :type => 'Brussels Sprout', :variety => '' },
360
+ '4552' => { :code => '4552', :type => 'Cabbage', :variety => 'Chinese / Napa / Wong Bok' },
361
+ '4553' => { :code => '4553', :type => 'Pear', :variety => 'Taylors Gold' },
362
+ '4554' => { :code => '4554', :type => 'Cabbage', :variety => 'Red' },
363
+ '4558' => { :code => '4558', :type => 'Cactus', :variety => 'Cactus Leaves / Nopales / Cactus Pads' },
364
+ '4559' => { :code => '4559', :type => 'Cardoon / Cardoni', :variety => '' },
365
+ '4560' => { :code => '4560', :type => 'Carrot', :variety => 'Baby' },
366
+ '4561' => { :code => '4561', :type => 'Carrot', :variety => 'French' },
367
+ '4562' => { :code => '4562', :type => 'Carrot', :variety => 'Loose' },
368
+ '4563' => { :code => '4563', :type => 'Carrot', :variety => 'Carrot Sticks' },
369
+ '4566' => { :code => '4566', :type => 'Cauliflower', :variety => 'Florettes' },
370
+ '4567' => { :code => '4567', :type => 'Cauliflower', :variety => 'Green' },
371
+ '4568' => { :code => '4568', :type => 'Cauliflower', :variety => 'Purple' },
372
+ '4573' => { :code => '4573', :type => 'Cauliflower', :variety => 'Baby' },
373
+ '4575' => { :code => '4575', :type => 'Celery', :variety => 'Hearts' },
374
+ '4576' => { :code => '4576', :type => 'CELERY', :variety => 'Celery Sticks' },
375
+ '4592' => { :code => '4592', :type => 'Cucumber', :variety => 'Armenian' },
376
+ '4593' => { :code => '4593', :type => 'Cucumber', :variety => 'English / Hot House / Long Seedless / Telegraph / Continental' },
377
+ '4594' => { :code => '4594', :type => 'Cucumber', :variety => 'Japanese / White' },
378
+ '4595' => { :code => '4595', :type => 'Cucumber', :variety => 'Lemon' },
379
+ '4596' => { :code => '4596', :type => 'Cucumber', :variety => 'Pickling / Gherkin' },
380
+ '4598' => { :code => '4598', :type => 'RADISH', :variety => 'Daikon / Radish' },
381
+ '4599' => { :code => '4599', :type => 'KUMQUAT', :variety => '' },
382
+ '4601' => { :code => '4601', :type => 'Eggplant', :variety => 'Japanese' },
383
+ '4602' => { :code => '4602', :type => 'Eggplant', :variety => 'White' },
384
+ '4604' => { :code => '4604', :type => 'ENDIVE', :variety => 'Endive / Chicory' },
385
+ '4606' => { :code => '4606', :type => 'Fiddlehead Ferns', :variety => '' },
386
+ '4608' => { :code => '4608', :type => 'GARLIC', :variety => 'Loose Garlic' },
387
+ '4609' => { :code => '4609', :type => 'Garlic', :variety => 'Elephant' },
388
+ '4612' => { :code => '4612', :type => 'GINGER', :variety => 'Ginger Root' },
389
+ '4614' => { :code => '4614', :type => 'Greens', :variety => 'Collards' },
390
+ '4615' => { :code => '4615', :type => 'Greens', :variety => 'Dandelion' },
391
+ '4616' => { :code => '4616', :type => 'Greens', :variety => 'Mustard' },
392
+ '4617' => { :code => '4617', :type => 'Greens', :variety => 'Polk Greens' },
393
+ '4618' => { :code => '4618', :type => 'Greens', :variety => 'Texas Mustard' },
394
+ '4619' => { :code => '4619', :type => 'Greens', :variety => 'Turnip' },
395
+ '4625' => { :code => '4625', :type => 'Horseradish Root', :variety => '' },
396
+ '4626' => { :code => '4626', :type => 'Jicama / Yam Bean', :variety => '' },
397
+ '4631' => { :code => '4631', :type => 'Lettuce', :variety => 'Bibb / Flat / Round' },
398
+ '4632' => { :code => '4632', :type => 'LETTUCE', :variety => 'Boston Lettuce' },
399
+ '4633' => { :code => '4633', :type => 'Lettuce', :variety => 'Hydroponic' },
400
+ '4636' => { :code => '4636', :type => 'GRAPES', :variety => 'Red Globe Grapes' },
401
+ '4638' => { :code => '4638', :type => 'Grape', :variety => 'Fantasy / Marroo' },
402
+ '4639' => { :code => '4639', :type => 'Lettuce', :variety => 'Mache' },
403
+ '4640' => { :code => '4640', :type => 'LETTUCE', :variety => 'Romaine Lettuce' },
404
+ '4644' => { :code => '4644', :type => 'Malanga', :variety => '' },
405
+ '4645' => { :code => '4645', :type => 'MUSHROOM', :variety => 'Mushrooms' },
406
+ '4646' => { :code => '4646', :type => 'Mushroom', :variety => 'Black Forest' },
407
+ '4647' => { :code => '4647', :type => 'Mushroom', :variety => 'Chanterelle' },
408
+ '4648' => { :code => '4648', :type => 'Mushroom', :variety => 'Cremini / Brown / Swiss Brown' },
409
+ '4649' => { :code => '4649', :type => 'Mushroom', :variety => 'Oyster' },
410
+ '4650' => { :code => '4650', :type => 'MUSHROOM', :variety => 'Portabello Mushrooms' },
411
+ '4651' => { :code => '4651', :type => 'Mushroom', :variety => 'Shiitake' },
412
+ '4652' => { :code => '4652', :type => 'Mushroom', :variety => 'Wood Ear' },
413
+ '4655' => { :code => '4655', :type => 'Okra', :variety => 'Regular, green' },
414
+ '4656' => { :code => '4656', :type => 'Okra', :variety => 'Chinese' },
415
+ '4657' => { :code => '4657', :type => 'Okra', :variety => 'Red' },
416
+ '4658' => { :code => '4658', :type => 'Onion', :variety => 'Boiling' },
417
+ '4659' => { :code => '4659', :type => 'Onion', :variety => 'Bulb' },
418
+ '4660' => { :code => '4660', :type => 'Onion', :variety => 'Pearl' },
419
+ '4661' => { :code => '4661', :type => 'Onion', :variety => 'Pickling, white' },
420
+ '4662' => { :code => '4662', :type => 'Onion', :variety => 'Shallots' },
421
+ '4663' => { :code => '4663', :type => 'ONION', :variety => 'White Onions' },
422
+ '4664' => { :code => '4664', :type => 'TOMATO', :variety => 'Tomatoes on a Vine' },
423
+ '4665' => { :code => '4665', :type => 'ONION', :variety => 'Yellow Cooking Onions' },
424
+ '4671' => { :code => '4671', :type => 'Herbs', :variety => 'Parsley Root / Hamburg Parsley' },
425
+ '4672' => { :code => '4672', :type => 'Parsnip', :variety => 'Parsnips' },
426
+ '4673' => { :code => '4673', :type => 'Pea', :variety => 'Blackeyed' },
427
+ '4674' => { :code => '4674', :type => 'Pea', :variety => 'Green' },
428
+ '4675' => { :code => '4675', :type => 'Pea', :variety => 'Sugar Snap' },
429
+ '4677' => { :code => '4677', :type => 'Pepper', :variety => 'Anaheim, green, red' },
430
+ '4678' => { :code => '4678', :type => 'Pepper', :variety => 'Banana, yellow, long' },
431
+ '4681' => { :code => '4681', :type => 'PEPPER', :variety => 'Green Peppers' },
432
+ '4687' => { :code => '4687', :type => 'PEPPER', :variety => 'Cubenelle Peppers' },
433
+ '4688' => { :code => '4688', :type => 'PEPPER', :variety => 'Red Sweet Peppers' },
434
+ '4690' => { :code => '4690', :type => 'Pepper', :variety => 'Hot / Hungarian Hot' },
435
+ '4691' => { :code => '4691', :type => 'Pepper', :variety => 'Hot Mixed' },
436
+ '4692' => { :code => '4692', :type => 'Pepper', :variety => 'Hungarian Wax' },
437
+ '4693' => { :code => '4693', :type => 'PEPPER', :variety => 'Jalapeno Peppers' },
438
+ '4695' => { :code => '4695', :type => 'Pepper', :variety => 'Japanese, red' },
439
+ '4698' => { :code => '4698', :type => 'Pepper', :variety => 'Morita Chili' },
440
+ '4699' => { :code => '4699', :type => 'Pepper', :variety => 'Negro' },
441
+ '4700' => { :code => '4700', :type => 'Pepper', :variety => 'New Mexico' },
442
+ '4704' => { :code => '4704', :type => 'Pepper', :variety => 'Pinole' },
443
+ '4705' => { :code => '4705', :type => 'Pepper', :variety => 'Poblano' },
444
+ '4706' => { :code => '4706', :type => 'Pepper', :variety => 'Red Cheese' },
445
+ '4707' => { :code => '4707', :type => 'Pepper', :variety => 'Red Finger' },
446
+ '4708' => { :code => '4708', :type => 'Pepper', :variety => 'Red Pimiento / Red, sweet, long' },
447
+ '4709' => { :code => '4709', :type => 'Pepper', :variety => 'Serrano' },
448
+ '4726' => { :code => '4726', :type => 'Potato', :variety => 'Long, white' },
449
+ '4727' => { :code => '4727', :type => 'POTATO', :variety => 'Yukon Potato' },
450
+ '4735' => { :code => '4735', :type => 'Pumpkin', :variety => 'Regular' },
451
+ '4738' => { :code => '4738', :type => 'RADICCHIO', :variety => '' },
452
+ '4739' => { :code => '4739', :type => 'Radish', :variety => 'Black' },
453
+ '4741' => { :code => '4741', :type => 'Radish', :variety => 'Italian, red' },
454
+ '4742' => { :code => '4742', :type => 'Radish', :variety => 'Red' },
455
+ '4743' => { :code => '4743', :type => 'Radish', :variety => 'White / Icicle' },
456
+ '4747' => { :code => '4747', :type => 'RUTABAGA', :variety => '' },
457
+ '4753' => { :code => '4753', :type => 'Squash', :variety => 'Australian Blue' },
458
+ '4755' => { :code => '4755', :type => 'Squash', :variety => 'Summer, green, baby' },
459
+ '4757' => { :code => '4757', :type => 'Squash', :variety => 'Banana' },
460
+ '4758' => { :code => '4758', :type => 'Squash', :variety => 'Buttercup' },
461
+ '4759' => { :code => '4759', :type => 'Squash', :variety => 'Butternut' },
462
+ '4760' => { :code => '4760', :type => 'Squash', :variety => 'Calabaza' },
463
+ '4761' => { :code => '4761', :type => 'Squash', :variety => 'Chayote / Choko' },
464
+ '4763' => { :code => '4763', :type => 'Squash', :variety => 'Delicata / Sweet Potato Squash' },
465
+ '4764' => { :code => '4764', :type => 'Squash', :variety => 'Sweet Dumpling' },
466
+ '4765' => { :code => '4765', :type => 'Squash', :variety => 'Gem' },
467
+ '4766' => { :code => '4766', :type => 'Squash', :variety => 'Golden Delicious' },
468
+ '4767' => { :code => '4767', :type => 'Squash', :variety => 'Golden Nugget' },
469
+ '4768' => { :code => '4768', :type => 'Squash', :variety => 'Hubbard' },
470
+ '4769' => { :code => '4769', :type => 'Squash', :variety => 'Kabocha' },
471
+ '4771' => { :code => '4771', :type => 'AVACADO', :variety => '' },
472
+ '4773' => { :code => '4773', :type => 'Squash', :variety => 'Patty Pan / Summer' },
473
+ '4774' => { :code => '4774', :type => 'Squash', :variety => 'Red Kuri' },
474
+ '4776' => { :code => '4776', :type => 'Squash', :variety => 'Spaghetti / Vegetable Spaghetti' },
475
+ '4777' => { :code => '4777', :type => 'Squash', :variety => 'Sunburst, yellow' },
476
+ '4779' => { :code => '4779', :type => 'Squash', :variety => 'Sweet Mama' },
477
+ '4780' => { :code => '4780', :type => 'Squash', :variety => 'Turban' },
478
+ '4781' => { :code => '4781', :type => 'Squash', :variety => 'White' },
479
+ '4782' => { :code => '4782', :type => 'PEPPER', :variety => 'Yellow Straigtneck Peppers' },
480
+ '4783' => { :code => '4783', :type => 'Squash', :variety => 'Bitter Melon / Bitter Gourd / Foo Qua' },
481
+ '4784' => { :code => '4784', :type => 'Squash', :variety => 'Yellow Crookneck' },
482
+ '4790' => { :code => '4790', :type => 'Sugar Cane', :variety => '' },
483
+ '4791' => { :code => '4791', :type => 'Artichoke', :variety => 'Sunchokes / Jerusalem Artichokes' },
484
+ '4792' => { :code => '4792', :type => 'Tamarillo', :variety => 'Golden' },
485
+ '4793' => { :code => '4793', :type => 'Tamarillo', :variety => 'Red' },
486
+ '4799' => { :code => '4799', :type => 'TOMATO', :variety => '' },
487
+ '4800' => { :code => '4800', :type => 'Tomato', :variety => 'Native / Home Grown' },
488
+ '4801' => { :code => '4801', :type => 'Tomato', :variety => 'Tomatillos / Husk Tomatoes' },
489
+ '4802' => { :code => '4802', :type => 'Tomato', :variety => 'dried' },
490
+ '4809' => { :code => '4809', :type => 'Turnip / Rutabaga / Swede', :variety => 'Baby' },
491
+ '4810' => { :code => '4810', :type => 'Turnip / Rutabaga / Swede', :variety => 'Bunch / Banded' },
492
+ '4811' => { :code => '4811', :type => 'Turnip / Rutabaga / Swede', :variety => 'Purple Top' },
493
+ '4812' => { :code => '4812', :type => 'Turnip / Rutabaga / Swede', :variety => 'White' },
494
+ '4814' => { :code => '4814', :type => 'Waterchestnuts', :variety => '' },
495
+ '4815' => { :code => '4815', :type => 'Herbs', :variety => 'Watercress' },
496
+ '4816' => { :code => '4816', :type => 'POTATO', :variety => 'Yams' },
497
+ '4819' => { :code => '4819', :type => 'Yucca Root', :variety => '' },
498
+ '4860' => { :code => '4860', :type => 'Apple', :variety => 'dried apple slices' },
499
+ '4861' => { :code => '4861', :type => 'Apricot', :variety => 'dried' },
500
+ '4862' => { :code => '4862', :type => 'Date', :variety => 'dried' },
501
+ '4864' => { :code => '4864', :type => 'Pineapple', :variety => 'dried' },
502
+ '4884' => { :code => '4884', :type => 'Greens', :variety => 'Arugula / Rocket' },
503
+ '4888' => { :code => '4888', :type => 'Herbs', :variety => 'Chives' },
504
+ '4889' => { :code => '4889', :type => 'HERBS', :variety => 'Cilantro / Coriander / Chinese Parsley' },
505
+ '4890' => { :code => '4890', :type => 'Pear', :variety => 'Chinese Yali' },
506
+ '4891' => { :code => '4891', :type => 'HERBS', :variety => 'Dill' },
507
+ '4892' => { :code => '4892', :type => 'Herbs', :variety => 'Baby Dill' },
508
+ '4893' => { :code => '4893', :type => 'Herbs', :variety => 'Pickling Dill' },
509
+ '4894' => { :code => '4894', :type => 'Herbs', :variety => 'Lemon Grass' },
510
+ '4895' => { :code => '4895', :type => 'Herbs', :variety => 'Marjoram' },
511
+ '4896' => { :code => '4896', :type => 'Herbs', :variety => 'Mint' },
512
+ '4897' => { :code => '4897', :type => 'Herbs', :variety => 'Oregano' },
513
+ '4898' => { :code => '4898', :type => 'Herbs', :variety => 'Oyster Plant / Salsify' },
514
+ '4900' => { :code => '4900', :type => 'HERBS', :variety => 'Parsley' },
515
+ '4901' => { :code => '4901', :type => 'HERBS', :variety => 'Italian Parsley' },
516
+ '4903' => { :code => '4903', :type => 'Herbs', :variety => 'Rosemary' },
517
+ '4904' => { :code => '4904', :type => 'Herbs', :variety => 'Sage' },
518
+ '4905' => { :code => '4905', :type => 'Herbs', :variety => 'Sorrel' },
519
+ '4906' => { :code => '4906', :type => 'Herbs', :variety => 'Tarragon' },
520
+ '4907' => { :code => '4907', :type => 'Herbs', :variety => 'Thyme' },
521
+ '4908' => { :code => '4908', :type => 'Herbs', :variety => 'Vanilla Bean' },
522
+ '4924' => { :code => '4924', :type => 'Nuts', :variety => 'Almonds' },
523
+ '4926' => { :code => '4926', :type => 'Nuts', :variety => 'Brazil nuts' },
524
+ '4927' => { :code => '4927', :type => 'Nuts', :variety => 'Chestnuts' },
525
+ '4928' => { :code => '4928', :type => 'Nuts', :variety => 'Filberts / Cobnut / Hazelnut' },
526
+ '4929' => { :code => '4929', :type => 'Nuts', :variety => 'Mixed' },
527
+ '4936' => { :code => '4936', :type => 'Nuts', :variety => 'Pecans' },
528
+ '4938' => { :code => '4938', :type => 'Nuts', :variety => 'Pine Nuts / Pignoli' },
529
+ '4942' => { :code => '4942', :type => 'Nuts', :variety => 'Sunflower Seeds' },
530
+ '4948' => { :code => '4948', :type => 'LIMES', :variety => '' },
531
+ '33543' => { :code => '33543', :type => 'Avocado', :variety => 'Ripe, ready-to-eat' },
532
+ '33653' => { :code => '33653', :type => 'Mango', :variety => 'Ripe, ready-to-eat' },
533
+ '33673' => { :code => '33673', :type => 'Melon', :variety => 'Glasshouse, netted varieties' },
534
+ '34173' => { :code => '34173', :type => 'Spinach', :variety => 'New Zealand' },
535
+ '42461' => { :code => '42461', :type => 'Berries', :variety => 'Pint' },
536
+ '46341' => { :code => '46341', :type => 'Lettuce', :variety => 'Iceberg' },
537
+ '47251' => { :code => '47251', :type => 'Potato', :variety => 'Russet' }
538
+ }