rroonga 7.1.1-x64-mingw32 → 9.0.2-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (980) hide show
  1. checksums.yaml +5 -5
  2. data/Rakefile +3 -3
  3. data/doc/text/news.md +22 -0
  4. data/ext/groonga/extconf.rb +29 -26
  5. data/ext/groonga/rb-grn.h +3 -3
  6. data/lib/2.2/groonga.so +0 -0
  7. data/lib/2.3/groonga.so +0 -0
  8. data/lib/2.4/groonga.so +0 -0
  9. data/lib/2.5/groonga.so +0 -0
  10. data/lib/groonga/expression-builder.rb +1 -1
  11. data/lib/groonga/schema.rb +13 -0
  12. data/rroonga-build.rb +4 -11
  13. data/test/test-expression-builder.rb +8 -0
  14. data/vendor/local/bin/cv2pdb.exe +0 -0
  15. data/vendor/local/bin/generate-pdb.bat +38 -36
  16. data/vendor/local/bin/grndb.exe +0 -0
  17. data/vendor/local/bin/groonga-benchmark.exe +0 -0
  18. data/vendor/local/bin/groonga-suggest-create-dataset.exe +0 -0
  19. data/vendor/local/bin/groonga.exe +0 -0
  20. data/vendor/local/bin/libgroonga-0.dll +0 -0
  21. data/vendor/local/bin/libmecab-2.dll +0 -0
  22. data/vendor/local/bin/libmsgpackc.dll +0 -0
  23. data/vendor/local/bin/libonigmo-6.dll +0 -0
  24. data/vendor/local/bin/libpcre-1.dll +0 -0
  25. data/vendor/local/bin/libpcrecpp-0.dll +0 -0
  26. data/vendor/local/bin/libpcreposix-0.dll +0 -0
  27. data/vendor/local/bin/lz4.exe +0 -0
  28. data/vendor/local/bin/lz4c.exe +0 -0
  29. data/vendor/local/bin/{lz4cat → lz4cat.exe} +0 -0
  30. data/vendor/local/bin/mecab.exe +0 -0
  31. data/vendor/local/bin/pcre-config +1 -1
  32. data/vendor/local/bin/pcregrep.exe +0 -0
  33. data/vendor/local/bin/pcretest.exe +0 -0
  34. data/vendor/local/bin/unlz4.exe +0 -0
  35. data/vendor/local/bin/zlib1.dll +0 -0
  36. data/vendor/local/include/groonga/groonga.h +16 -1
  37. data/vendor/local/include/groonga/groonga/accessor.h +5 -1
  38. data/vendor/local/include/groonga/groonga/column.h +4 -0
  39. data/vendor/local/include/groonga/groonga/db.h +3 -1
  40. data/vendor/local/include/groonga/groonga/expr.h +5 -0
  41. data/vendor/local/include/groonga/groonga/groonga.h +124 -171
  42. data/vendor/local/include/groonga/groonga/highlighter.h +57 -0
  43. data/vendor/local/include/groonga/groonga/ii.h +2 -0
  44. data/vendor/local/include/groonga/groonga/index_column.h +31 -0
  45. data/vendor/local/include/groonga/groonga/memory.h +29 -0
  46. data/vendor/local/include/groonga/groonga/msgpack.h +50 -0
  47. data/vendor/local/include/groonga/groonga/obj.h +22 -1
  48. data/vendor/local/include/groonga/groonga/option.h +61 -0
  49. data/vendor/local/include/groonga/groonga/output.h +57 -2
  50. data/vendor/local/include/groonga/groonga/output_columns.h +38 -0
  51. data/vendor/local/include/groonga/groonga/plugin.h +5 -0
  52. data/vendor/local/include/groonga/groonga/raw_string.h +60 -0
  53. data/vendor/local/include/groonga/groonga/string.h +113 -0
  54. data/vendor/local/include/groonga/groonga/table.h +89 -1
  55. data/vendor/local/include/groonga/groonga/thread.h +15 -0
  56. data/vendor/local/include/groonga/groonga/time.h +1 -0
  57. data/vendor/local/include/groonga/groonga/token.h +60 -10
  58. data/vendor/local/include/groonga/groonga/token_cursor.h +59 -0
  59. data/vendor/local/include/groonga/groonga/token_filter.h +24 -0
  60. data/vendor/local/include/groonga/groonga/token_metadata.h +49 -0
  61. data/vendor/local/include/groonga/groonga/tokenizer.h +99 -25
  62. data/vendor/local/include/groonga/groonga/tokenizer_query_deprecated.h +50 -0
  63. data/vendor/local/include/groonga/groonga/vector.h +80 -0
  64. data/vendor/local/include/groonga/groonga/version.h +32 -0
  65. data/vendor/local/include/groonga/groonga/window_function.h +18 -8
  66. data/vendor/local/include/groonga/groonga/window_function_executor.h +68 -0
  67. data/vendor/local/include/lz4.h +504 -212
  68. data/vendor/local/include/lz4frame.h +433 -153
  69. data/vendor/local/include/lz4frame_static.h +47 -0
  70. data/vendor/local/include/lz4hc.h +281 -108
  71. data/vendor/local/include/msgpack.hpp +4 -0
  72. data/vendor/local/include/msgpack/adaptor/adaptor_base.hpp +1 -0
  73. data/vendor/local/include/msgpack/adaptor/adaptor_base_decl.hpp +1 -0
  74. data/vendor/local/include/msgpack/adaptor/array_ref_decl.hpp +1 -0
  75. data/vendor/local/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp +1 -0
  76. data/vendor/local/include/msgpack/adaptor/boost/string_view.hpp +15 -0
  77. data/vendor/local/include/msgpack/adaptor/check_container_size_decl.hpp +1 -0
  78. data/vendor/local/include/msgpack/adaptor/cpp17/optional.hpp +16 -0
  79. data/vendor/local/include/msgpack/adaptor/cpp17/string_view.hpp +16 -0
  80. data/vendor/local/include/msgpack/adaptor/define_decl.hpp +2 -0
  81. data/vendor/local/include/msgpack/adaptor/ext_decl.hpp +1 -0
  82. data/vendor/local/include/msgpack/adaptor/fixint_decl.hpp +1 -0
  83. data/vendor/local/include/msgpack/adaptor/int_decl.hpp +1 -0
  84. data/vendor/local/include/msgpack/adaptor/map_decl.hpp +1 -0
  85. data/vendor/local/include/msgpack/adaptor/msgpack_tuple_decl.hpp +1 -0
  86. data/vendor/local/include/msgpack/adaptor/nil_decl.hpp +1 -0
  87. data/vendor/local/include/msgpack/adaptor/raw_decl.hpp +1 -0
  88. data/vendor/local/include/msgpack/adaptor/size_equal_only_decl.hpp +1 -0
  89. data/vendor/local/include/msgpack/adaptor/tr1/unordered_map.hpp +2 -2
  90. data/vendor/local/include/msgpack/adaptor/tr1/unordered_set.hpp +2 -2
  91. data/vendor/local/include/msgpack/adaptor/v4raw_decl.hpp +1 -0
  92. data/vendor/local/include/msgpack/cpp_config_decl.hpp +1 -0
  93. data/vendor/local/include/msgpack/create_object_visitor.hpp +17 -0
  94. data/vendor/local/include/msgpack/create_object_visitor_decl.hpp +16 -0
  95. data/vendor/local/include/msgpack/fbuffer.h +1 -1
  96. data/vendor/local/include/msgpack/fbuffer_decl.hpp +1 -0
  97. data/vendor/local/include/msgpack/gcc_atomic.hpp +0 -2
  98. data/vendor/local/include/msgpack/iterator_decl.hpp +2 -1
  99. data/vendor/local/include/msgpack/meta_decl.hpp +1 -0
  100. data/vendor/local/include/msgpack/null_visitor.hpp +17 -0
  101. data/vendor/local/include/msgpack/null_visitor_decl.hpp +16 -0
  102. data/vendor/local/include/msgpack/object.h +5 -0
  103. data/vendor/local/include/msgpack/object_decl.hpp +1 -0
  104. data/vendor/local/include/msgpack/object_fwd.hpp +1 -0
  105. data/vendor/local/include/msgpack/object_fwd_decl.hpp +1 -0
  106. data/vendor/local/include/msgpack/pack.h +1 -0
  107. data/vendor/local/include/msgpack/pack_decl.hpp +1 -0
  108. data/vendor/local/include/msgpack/parse.hpp +18 -0
  109. data/vendor/local/include/msgpack/parse_decl.hpp +16 -0
  110. data/vendor/local/include/msgpack/parse_return.hpp +17 -0
  111. data/vendor/local/include/msgpack/sbuffer_decl.hpp +1 -0
  112. data/vendor/local/include/msgpack/sysdep.h +34 -26
  113. data/vendor/local/include/msgpack/type.hpp +9 -0
  114. data/vendor/local/include/msgpack/unpack.h +12 -1
  115. data/vendor/local/include/msgpack/unpack.hpp +1 -0
  116. data/vendor/local/include/msgpack/unpack_decl.hpp +1 -0
  117. data/vendor/local/include/msgpack/unpack_exception.hpp +15 -0
  118. data/vendor/local/include/msgpack/unpack_template.h +22 -30
  119. data/vendor/local/include/msgpack/v1/adaptor/array_ref.hpp +6 -6
  120. data/vendor/local/include/msgpack/v1/adaptor/boost/fusion.hpp +49 -6
  121. data/vendor/local/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp +6 -4
  122. data/vendor/local/include/msgpack/v1/adaptor/boost/string_view.hpp +87 -0
  123. data/vendor/local/include/msgpack/v1/adaptor/carray.hpp +11 -11
  124. data/vendor/local/include/msgpack/v1/adaptor/char_ptr.hpp +1 -1
  125. data/vendor/local/include/msgpack/v1/adaptor/cpp11/array.hpp +1 -1
  126. data/vendor/local/include/msgpack/v1/adaptor/cpp11/array_char.hpp +8 -1
  127. data/vendor/local/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp +8 -1
  128. data/vendor/local/include/msgpack/v1/adaptor/cpp11/forward_list.hpp +1 -1
  129. data/vendor/local/include/msgpack/v1/adaptor/cpp11/tuple.hpp +2 -2
  130. data/vendor/local/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp +4 -4
  131. data/vendor/local/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp +2 -2
  132. data/vendor/local/include/msgpack/v1/adaptor/cpp17/optional.hpp +90 -0
  133. data/vendor/local/include/msgpack/v1/adaptor/cpp17/string_view.hpp +86 -0
  134. data/vendor/local/include/msgpack/v1/adaptor/deque.hpp +1 -1
  135. data/vendor/local/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp +1088 -32
  136. data/vendor/local/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp +32 -16
  137. data/vendor/local/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp +32 -32
  138. data/vendor/local/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp +45 -0
  139. data/vendor/local/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp +4 -3
  140. data/vendor/local/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp +4 -2
  141. data/vendor/local/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp +2 -2
  142. data/vendor/local/include/msgpack/v1/adaptor/ext.hpp +1 -1
  143. data/vendor/local/include/msgpack/v1/adaptor/fixint.hpp +40 -24
  144. data/vendor/local/include/msgpack/v1/adaptor/float.hpp +4 -4
  145. data/vendor/local/include/msgpack/v1/adaptor/int.hpp +55 -33
  146. data/vendor/local/include/msgpack/v1/adaptor/list.hpp +1 -1
  147. data/vendor/local/include/msgpack/v1/adaptor/map.hpp +10 -10
  148. data/vendor/local/include/msgpack/v1/adaptor/pair.hpp +2 -2
  149. data/vendor/local/include/msgpack/v1/adaptor/set.hpp +2 -2
  150. data/vendor/local/include/msgpack/v1/adaptor/string.hpp +1 -1
  151. data/vendor/local/include/msgpack/v1/adaptor/tr1/unordered_map.hpp +2 -2
  152. data/vendor/local/include/msgpack/v1/adaptor/tr1/unordered_set.hpp +2 -2
  153. data/vendor/local/include/msgpack/v1/adaptor/vector.hpp +5 -5
  154. data/vendor/local/include/msgpack/v1/adaptor/vector_bool.hpp +1 -1
  155. data/vendor/local/include/msgpack/v1/adaptor/vector_char.hpp +9 -9
  156. data/vendor/local/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +9 -9
  157. data/vendor/local/include/msgpack/v1/cpp_config.hpp +6 -0
  158. data/vendor/local/include/msgpack/v1/cpp_config_decl.hpp +6 -0
  159. data/vendor/local/include/msgpack/v1/detail/cpp03_zone.hpp +41 -34
  160. data/vendor/local/include/msgpack/v1/detail/cpp03_zone_decl.hpp +8 -0
  161. data/vendor/local/include/msgpack/v1/detail/cpp11_zone.hpp +25 -19
  162. data/vendor/local/include/msgpack/v1/detail/cpp11_zone_decl.hpp +8 -0
  163. data/vendor/local/include/msgpack/v1/meta.hpp +6 -0
  164. data/vendor/local/include/msgpack/v1/meta_decl.hpp +5 -0
  165. data/vendor/local/include/msgpack/v1/object.hpp +768 -393
  166. data/vendor/local/include/msgpack/v1/object_decl.hpp +11 -1
  167. data/vendor/local/include/msgpack/v1/object_fwd.hpp +4 -1
  168. data/vendor/local/include/msgpack/v1/object_fwd_decl.hpp +3 -1
  169. data/vendor/local/include/msgpack/v1/parse_return.hpp +36 -0
  170. data/vendor/local/include/msgpack/v1/unpack.hpp +39 -120
  171. data/vendor/local/include/msgpack/v1/unpack_decl.hpp +2 -9
  172. data/vendor/local/include/msgpack/v1/unpack_exception.hpp +122 -0
  173. data/vendor/local/include/msgpack/v1/vrefbuffer.hpp +2 -2
  174. data/vendor/local/include/msgpack/v2/create_object_visitor.hpp +250 -0
  175. data/vendor/local/include/msgpack/v2/create_object_visitor_decl.hpp +33 -0
  176. data/vendor/local/include/msgpack/v2/meta_decl.hpp +4 -0
  177. data/vendor/local/include/msgpack/v2/null_visitor.hpp +96 -0
  178. data/vendor/local/include/msgpack/v2/null_visitor_decl.hpp +29 -0
  179. data/vendor/local/include/msgpack/v2/object_decl.hpp +4 -0
  180. data/vendor/local/include/msgpack/v2/object_fwd.hpp +1 -1
  181. data/vendor/local/include/msgpack/v2/object_fwd_decl.hpp +2 -0
  182. data/vendor/local/include/msgpack/v2/pack_decl.hpp +1 -0
  183. data/vendor/local/include/msgpack/v2/parse.hpp +1072 -0
  184. data/vendor/local/include/msgpack/v2/parse_decl.hpp +79 -0
  185. data/vendor/local/include/msgpack/v2/parse_return.hpp +37 -0
  186. data/vendor/local/include/msgpack/v2/unpack.hpp +21 -1298
  187. data/vendor/local/include/msgpack/v2/unpack_decl.hpp +9 -45
  188. data/vendor/local/include/msgpack/v2/x3_parse.hpp +875 -0
  189. data/vendor/local/include/msgpack/v2/x3_parse_decl.hpp +36 -0
  190. data/vendor/local/include/msgpack/v2/x3_unpack.hpp +120 -0
  191. data/vendor/local/include/msgpack/v2/x3_unpack_decl.hpp +71 -0
  192. data/vendor/local/include/msgpack/v3/adaptor/adaptor_base.hpp +58 -0
  193. data/vendor/local/include/msgpack/v3/adaptor/adaptor_base_decl.hpp +52 -0
  194. data/vendor/local/include/msgpack/v3/adaptor/array_ref_decl.hpp +36 -0
  195. data/vendor/local/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp +42 -0
  196. data/vendor/local/include/msgpack/v3/adaptor/check_container_size_decl.hpp +39 -0
  197. data/vendor/local/include/msgpack/v3/adaptor/define_decl.hpp +23 -0
  198. data/vendor/local/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp +31 -0
  199. data/vendor/local/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp +31 -0
  200. data/vendor/local/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp +43 -0
  201. data/vendor/local/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp +32 -0
  202. data/vendor/local/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp +31 -0
  203. data/vendor/local/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp +59 -0
  204. data/vendor/local/include/msgpack/v3/adaptor/ext_decl.hpp +34 -0
  205. data/vendor/local/include/msgpack/v3/adaptor/fixint_decl.hpp +43 -0
  206. data/vendor/local/include/msgpack/v3/adaptor/int_decl.hpp +54 -0
  207. data/vendor/local/include/msgpack/v3/adaptor/map_decl.hpp +33 -0
  208. data/vendor/local/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp +21 -0
  209. data/vendor/local/include/msgpack/v3/adaptor/nil_decl.hpp +42 -0
  210. data/vendor/local/include/msgpack/v3/adaptor/raw_decl.hpp +33 -0
  211. data/vendor/local/include/msgpack/v3/adaptor/size_equal_only_decl.hpp +35 -0
  212. data/vendor/local/include/msgpack/v3/adaptor/v4raw_decl.hpp +34 -0
  213. data/vendor/local/include/msgpack/v3/cpp_config_decl.hpp +84 -0
  214. data/vendor/local/include/msgpack/v3/create_object_visitor_decl.hpp +33 -0
  215. data/vendor/local/include/msgpack/v3/detail/cpp03_zone_decl.hpp +31 -0
  216. data/vendor/local/include/msgpack/v3/detail/cpp11_zone_decl.hpp +31 -0
  217. data/vendor/local/include/msgpack/v3/fbuffer_decl.hpp +32 -0
  218. data/vendor/local/include/msgpack/v3/iterator_decl.hpp +33 -0
  219. data/vendor/local/include/msgpack/v3/meta_decl.hpp +50 -0
  220. data/vendor/local/include/msgpack/v3/null_visitor_decl.hpp +29 -0
  221. data/vendor/local/include/msgpack/v3/object_decl.hpp +53 -0
  222. data/vendor/local/include/msgpack/v3/object_fwd.hpp +70 -0
  223. data/vendor/local/include/msgpack/v3/object_fwd_decl.hpp +75 -0
  224. data/vendor/local/include/msgpack/v3/pack_decl.hpp +55 -0
  225. data/vendor/local/include/msgpack/v3/parse.hpp +677 -0
  226. data/vendor/local/include/msgpack/v3/parse_decl.hpp +49 -0
  227. data/vendor/local/include/msgpack/v3/parse_return.hpp +35 -0
  228. data/vendor/local/include/msgpack/v3/sbuffer_decl.hpp +33 -0
  229. data/vendor/local/include/msgpack/v3/unpack.hpp +192 -0
  230. data/vendor/local/include/msgpack/v3/unpack_decl.hpp +304 -0
  231. data/vendor/local/include/msgpack/v3/vrefbuffer_decl.hpp +29 -0
  232. data/vendor/local/include/msgpack/v3/x3_parse_decl.hpp +34 -0
  233. data/vendor/local/include/msgpack/v3/x3_unpack.hpp +97 -0
  234. data/vendor/local/include/msgpack/v3/x3_unpack_decl.hpp +65 -0
  235. data/vendor/local/include/msgpack/v3/zbuffer_decl.hpp +29 -0
  236. data/vendor/local/include/msgpack/v3/zone_decl.hpp +21 -0
  237. data/vendor/local/include/msgpack/version_master.h +2 -2
  238. data/vendor/local/include/msgpack/versioning.hpp +5 -3
  239. data/vendor/local/include/msgpack/vrefbuffer.h +1 -2
  240. data/vendor/local/include/msgpack/vrefbuffer_decl.hpp +1 -0
  241. data/vendor/local/include/msgpack/x3_parse.hpp +15 -0
  242. data/vendor/local/include/msgpack/x3_parse_decl.hpp +16 -0
  243. data/vendor/local/include/msgpack/x3_unpack.hpp +16 -0
  244. data/vendor/local/include/msgpack/x3_unpack_decl.hpp +16 -0
  245. data/vendor/local/include/msgpack/zbuffer_decl.hpp +1 -0
  246. data/vendor/local/include/msgpack/zone_decl.hpp +1 -0
  247. data/vendor/local/include/pcre.h +6 -6
  248. data/vendor/local/lib/cmake/msgpack/msgpack-config-version.cmake +46 -0
  249. data/vendor/local/lib/cmake/msgpack/msgpack-config.cmake +47 -0
  250. data/vendor/local/lib/cmake/msgpack/msgpack-targets-noconfig.cmake +29 -0
  251. data/vendor/local/lib/cmake/msgpack/msgpack-targets.cmake +101 -0
  252. data/vendor/local/lib/groonga/plugins/functions/index_column.a +0 -0
  253. data/vendor/local/lib/groonga/plugins/functions/index_column.dll +0 -0
  254. data/vendor/local/lib/groonga/plugins/functions/index_column.dll.a +0 -0
  255. data/vendor/local/lib/groonga/plugins/functions/index_column.la +1 -1
  256. data/vendor/local/lib/groonga/plugins/functions/math.a +0 -0
  257. data/vendor/local/lib/groonga/plugins/functions/math.dll +0 -0
  258. data/vendor/local/lib/groonga/plugins/functions/math.dll.a +0 -0
  259. data/vendor/local/lib/groonga/plugins/functions/math.la +1 -1
  260. data/vendor/local/lib/groonga/plugins/functions/number.a +0 -0
  261. data/vendor/local/lib/groonga/plugins/functions/number.dll +0 -0
  262. data/vendor/local/lib/groonga/plugins/functions/number.dll.a +0 -0
  263. data/vendor/local/lib/groonga/plugins/functions/number.la +1 -1
  264. data/vendor/local/lib/groonga/plugins/functions/string.a +0 -0
  265. data/vendor/local/lib/groonga/plugins/functions/string.dll +0 -0
  266. data/vendor/local/lib/groonga/plugins/functions/string.dll.a +0 -0
  267. data/vendor/local/lib/groonga/plugins/functions/string.la +1 -1
  268. data/vendor/local/lib/groonga/plugins/functions/time.a +0 -0
  269. data/vendor/local/lib/groonga/plugins/functions/time.dll +0 -0
  270. data/vendor/local/lib/groonga/plugins/functions/time.dll.a +0 -0
  271. data/vendor/local/lib/groonga/plugins/functions/time.la +1 -1
  272. data/vendor/local/lib/groonga/plugins/functions/vector.a +0 -0
  273. data/vendor/local/lib/groonga/plugins/functions/vector.dll +0 -0
  274. data/vendor/local/lib/groonga/plugins/functions/vector.dll.a +0 -0
  275. data/vendor/local/lib/groonga/plugins/functions/vector.la +1 -1
  276. data/vendor/local/lib/groonga/plugins/normalizers/mysql.a +0 -0
  277. data/vendor/local/lib/groonga/plugins/normalizers/mysql.dll +0 -0
  278. data/vendor/local/lib/groonga/plugins/normalizers/mysql.dll.a +0 -0
  279. data/vendor/local/lib/groonga/plugins/normalizers/mysql.la +2 -2
  280. data/vendor/local/lib/groonga/plugins/query_expanders/tsv.a +0 -0
  281. data/vendor/local/lib/groonga/plugins/query_expanders/tsv.dll +0 -0
  282. data/vendor/local/lib/groonga/plugins/query_expanders/tsv.dll.a +0 -0
  283. data/vendor/local/lib/groonga/plugins/query_expanders/tsv.la +1 -1
  284. data/vendor/local/lib/groonga/plugins/sharding/dynamic_columns.rb +150 -19
  285. data/vendor/local/lib/groonga/plugins/sharding/logical_count.rb +123 -65
  286. data/vendor/local/lib/groonga/plugins/sharding/logical_range_filter.rb +528 -113
  287. data/vendor/local/lib/groonga/plugins/sharding/logical_select.rb +142 -40
  288. data/vendor/local/lib/groonga/plugins/suggest/suggest.a +0 -0
  289. data/vendor/local/lib/groonga/plugins/suggest/suggest.dll +0 -0
  290. data/vendor/local/lib/groonga/plugins/suggest/suggest.dll.a +0 -0
  291. data/vendor/local/lib/groonga/plugins/suggest/suggest.la +1 -1
  292. data/vendor/local/lib/groonga/plugins/token_filters/stop_word.a +0 -0
  293. data/vendor/local/lib/groonga/plugins/token_filters/stop_word.dll +0 -0
  294. data/vendor/local/lib/groonga/plugins/token_filters/stop_word.dll.a +0 -0
  295. data/vendor/local/lib/groonga/plugins/token_filters/stop_word.la +1 -1
  296. data/vendor/local/lib/groonga/plugins/tokenizers/mecab.a +0 -0
  297. data/vendor/local/lib/groonga/plugins/tokenizers/mecab.dll +0 -0
  298. data/vendor/local/lib/groonga/plugins/tokenizers/mecab.dll.a +0 -0
  299. data/vendor/local/lib/groonga/plugins/tokenizers/mecab.la +1 -1
  300. data/vendor/local/lib/groonga/scripts/ruby/backtrace_entry.rb +1 -1
  301. data/vendor/local/lib/groonga/scripts/ruby/command_line/grndb.rb +64 -35
  302. data/vendor/local/lib/groonga/scripts/ruby/expression.rb +3 -1
  303. data/vendor/local/lib/groonga/scripts/ruby/expression_rewriters.rb +15 -21
  304. data/vendor/local/lib/groonga/scripts/ruby/expression_rewriters/optimizer.rb +274 -0
  305. data/vendor/local/lib/groonga/scripts/ruby/expression_tree.rb +8 -2
  306. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/assign.rb +22 -0
  307. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/assign_binary_operation.rb +24 -0
  308. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/binary_operation.rb +206 -8
  309. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/constant.rb +16 -1
  310. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/function_call.rb +30 -1
  311. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/logical_operation.rb +6 -0
  312. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/member.rb +18 -0
  313. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/null.rb +17 -0
  314. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/reference.rb +18 -0
  315. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/table.rb +14 -0
  316. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/unary_operation.rb +26 -0
  317. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/variable.rb +4 -0
  318. data/vendor/local/lib/groonga/scripts/ruby/expression_tree_builder.rb +78 -8
  319. data/vendor/local/lib/groonga/scripts/ruby/index_column.rb +10 -0
  320. data/vendor/local/lib/groonga/scripts/ruby/initialize/post.rb +2 -0
  321. data/vendor/local/lib/groonga/scripts/ruby/locale_output.rb +28 -0
  322. data/vendor/local/lib/groonga/scripts/ruby/logger.rb +36 -4
  323. data/vendor/local/lib/groonga/scripts/ruby/record.rb +1 -1
  324. data/vendor/local/lib/groonga/scripts/ruby/scan_info_builder.rb +0 -3
  325. data/vendor/local/lib/groonga/scripts/ruby/scan_info_data.rb +46 -5
  326. data/vendor/local/lib/groonga/scripts/ruby/scan_info_data_size_estimator.rb +5 -136
  327. data/vendor/local/lib/groonga/scripts/ruby/table.rb +2 -2
  328. data/vendor/local/lib/libgroonga.a +0 -0
  329. data/vendor/local/lib/libgroonga.dll.a +0 -0
  330. data/vendor/local/lib/libgroonga.la +1 -1
  331. data/vendor/local/lib/liblz4.a +0 -0
  332. data/vendor/local/lib/liblz4.dll +0 -0
  333. data/vendor/local/lib/liblz4.dll.1 +0 -0
  334. data/vendor/local/lib/{liblz4.dll.1.5.0 → liblz4.dll.1.8.2} +0 -0
  335. data/vendor/local/lib/libmecab.dll.a +0 -0
  336. data/vendor/local/lib/libmsgpackc.a +0 -0
  337. data/vendor/local/lib/libmsgpackc.dll.a +0 -0
  338. data/vendor/local/lib/libonigmo.a +0 -0
  339. data/vendor/local/lib/libonigmo.dll.a +0 -0
  340. data/vendor/local/lib/libpcre.a +0 -0
  341. data/vendor/local/lib/libpcre.dll.a +0 -0
  342. data/vendor/local/lib/libpcre.la +2 -2
  343. data/vendor/local/lib/libpcrecpp.dll.a +0 -0
  344. data/vendor/local/lib/libpcrecpp.la +1 -1
  345. data/vendor/local/lib/libpcreposix.a +0 -0
  346. data/vendor/local/lib/libpcreposix.dll.a +0 -0
  347. data/vendor/local/lib/libpcreposix.la +2 -2
  348. data/vendor/local/lib/libz.dll.a +0 -0
  349. data/vendor/local/lib/pkgconfig/groonga-normalizer-mysql.pc +1 -1
  350. data/vendor/local/lib/pkgconfig/groonga.pc +2 -2
  351. data/vendor/local/lib/pkgconfig/liblz4.pc +3 -3
  352. data/vendor/local/lib/pkgconfig/libpcre.pc +1 -1
  353. data/vendor/local/lib/pkgconfig/libpcrecpp.pc +1 -1
  354. data/vendor/local/lib/pkgconfig/libpcreposix.pc +1 -1
  355. data/vendor/local/lib/pkgconfig/msgpack.pc +1 -1
  356. data/vendor/local/libexec/mecab/mecab-cost-train.exe +0 -0
  357. data/vendor/local/libexec/mecab/mecab-dict-gen.exe +0 -0
  358. data/vendor/local/libexec/mecab/mecab-dict-index.exe +0 -0
  359. data/vendor/local/libexec/mecab/mecab-system-eval.exe +0 -0
  360. data/vendor/local/libexec/mecab/mecab-test-gen.exe +0 -0
  361. data/vendor/local/share/doc/groonga-normalizer-mysql/README.md +14 -22
  362. data/vendor/local/share/doc/groonga-normalizer-mysql/news.md +22 -2
  363. data/vendor/local/share/doc/groonga/en/html/.buildinfo +1 -1
  364. data/vendor/local/share/doc/groonga/en/html/_static/basic.css +113 -4
  365. data/vendor/local/share/doc/groonga/en/html/_static/doctools.js +46 -19
  366. data/vendor/local/share/doc/groonga/en/html/_static/documentation_options.js +10 -0
  367. data/vendor/local/share/doc/groonga/en/html/_static/{jquery-3.1.0.js → jquery-3.2.1.js} +474 -295
  368. data/vendor/local/share/doc/groonga/en/html/_static/jquery.js +4 -4
  369. data/vendor/local/share/doc/groonga/en/html/_static/language_data.js +297 -0
  370. data/vendor/local/share/doc/groonga/en/html/_static/pygments.css +4 -0
  371. data/vendor/local/share/doc/groonga/en/html/_static/searchtools.js +69 -322
  372. data/vendor/local/share/doc/groonga/en/html/characteristic.html +16 -24
  373. data/vendor/local/share/doc/groonga/en/html/client.html +15 -23
  374. data/vendor/local/share/doc/groonga/en/html/community.html +30 -38
  375. data/vendor/local/share/doc/groonga/en/html/contribution.html +23 -31
  376. data/vendor/local/share/doc/groonga/en/html/contribution/development.html +15 -23
  377. data/vendor/local/share/doc/groonga/en/html/contribution/development/build.html +15 -23
  378. data/vendor/local/share/doc/groonga/en/html/contribution/development/build/unix_autotools.html +58 -66
  379. data/vendor/local/share/doc/groonga/en/html/contribution/development/build/unix_cmake.html +51 -56
  380. data/vendor/local/share/doc/groonga/en/html/contribution/development/build/windows_cmake.html +52 -56
  381. data/vendor/local/share/doc/groonga/en/html/contribution/development/com.html +27 -35
  382. data/vendor/local/share/doc/groonga/en/html/contribution/development/cooperation.html +19 -27
  383. data/vendor/local/share/doc/groonga/en/html/contribution/development/query.html +26 -34
  384. data/vendor/local/share/doc/groonga/en/html/contribution/development/release.html +167 -167
  385. data/vendor/local/share/doc/groonga/en/html/contribution/development/repository.html +16 -24
  386. data/vendor/local/share/doc/groonga/en/html/contribution/development/test.html +28 -36
  387. data/vendor/local/share/doc/groonga/en/html/contribution/documentation.html +15 -23
  388. data/vendor/local/share/doc/groonga/en/html/contribution/documentation/c-api.html +15 -23
  389. data/vendor/local/share/doc/groonga/en/html/contribution/documentation/i18n.html +59 -67
  390. data/vendor/local/share/doc/groonga/en/html/contribution/documentation/introduction.html +31 -39
  391. data/vendor/local/share/doc/groonga/en/html/contribution/report.html +18 -26
  392. data/vendor/local/share/doc/groonga/en/html/development.html +15 -23
  393. data/vendor/local/share/doc/groonga/en/html/development/travis-ci.html +38 -43
  394. data/vendor/local/share/doc/groonga/en/html/genindex.html +50 -28
  395. data/vendor/local/share/doc/groonga/en/html/index.html +248 -234
  396. data/vendor/local/share/doc/groonga/en/html/install.html +43 -47
  397. data/vendor/local/share/doc/groonga/en/html/install/centos.html +43 -51
  398. data/vendor/local/share/doc/groonga/en/html/install/debian.html +52 -131
  399. data/vendor/local/share/doc/groonga/en/html/install/docker.html +155 -0
  400. data/vendor/local/share/doc/groonga/en/html/install/fedora.html +41 -49
  401. data/vendor/local/share/doc/groonga/en/html/install/mac_os_x.html +29 -37
  402. data/vendor/local/share/doc/groonga/en/html/install/others.html +142 -150
  403. data/vendor/local/share/doc/groonga/en/html/install/solaris.html +30 -38
  404. data/vendor/local/share/doc/groonga/en/html/install/ubuntu.html +43 -51
  405. data/vendor/local/share/doc/groonga/en/html/install/windows.html +33 -41
  406. data/vendor/local/share/doc/groonga/en/html/limitations.html +36 -42
  407. data/vendor/local/share/doc/groonga/en/html/news.html +1586 -598
  408. data/vendor/local/share/doc/groonga/en/html/news/0.x.html +83 -83
  409. data/vendor/local/share/doc/groonga/en/html/news/1.0.x.html +147 -155
  410. data/vendor/local/share/doc/groonga/en/html/news/1.1.x.html +26 -34
  411. data/vendor/local/share/doc/groonga/en/html/news/1.2.x.html +225 -233
  412. data/vendor/local/share/doc/groonga/en/html/news/1.3.x.html +48 -56
  413. data/vendor/local/share/doc/groonga/en/html/news/2.x.html +378 -386
  414. data/vendor/local/share/doc/groonga/en/html/news/3.x.html +320 -328
  415. data/vendor/local/share/doc/groonga/en/html/news/4.x.html +442 -448
  416. data/vendor/local/share/doc/groonga/en/html/news/5.x.html +742 -860
  417. data/vendor/local/share/doc/groonga/en/html/news/6.x.html +544 -621
  418. data/vendor/local/share/doc/groonga/en/html/news/senna.html +32 -40
  419. data/vendor/local/share/doc/groonga/en/html/objects.inv +0 -0
  420. data/vendor/local/share/doc/groonga/en/html/reference.html +208 -198
  421. data/vendor/local/share/doc/groonga/en/html/reference/alias.html +85 -93
  422. data/vendor/local/share/doc/groonga/en/html/reference/api.html +50 -57
  423. data/vendor/local/share/doc/groonga/en/html/reference/api/global_configurations.html +62 -77
  424. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_cache.html +117 -149
  425. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_column.html +140 -176
  426. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_command_version.html +43 -55
  427. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_content_type.html +48 -56
  428. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_ctx.html +194 -254
  429. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_db.html +106 -138
  430. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_encoding.html +62 -82
  431. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_expr.html +117 -137
  432. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_geo.html +74 -98
  433. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_hook.html +79 -103
  434. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_ii.html +40 -48
  435. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_index_cursor.html +57 -73
  436. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_info.html +75 -99
  437. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_inspect.html +495 -0
  438. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_match_escalation.html +52 -68
  439. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_obj.html +291 -357
  440. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_proc.html +69 -89
  441. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_search.html +47 -59
  442. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_table.html +226 -306
  443. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_table_cursor.html +120 -160
  444. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_thread.html +80 -103
  445. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_type.html +46 -58
  446. data/vendor/local/share/doc/groonga/en/html/reference/api/grn_user_data.html +40 -52
  447. data/vendor/local/share/doc/groonga/en/html/reference/api/overview.html +52 -66
  448. data/vendor/local/share/doc/groonga/en/html/reference/api/plugin.html +98 -122
  449. data/vendor/local/share/doc/groonga/en/html/reference/cast.html +40 -26
  450. data/vendor/local/share/doc/groonga/en/html/reference/column.html +16 -24
  451. data/vendor/local/share/doc/groonga/en/html/reference/columns/index.html +16 -24
  452. data/vendor/local/share/doc/groonga/en/html/reference/columns/pseudo.html +30 -34
  453. data/vendor/local/share/doc/groonga/en/html/reference/columns/scalar.html +16 -24
  454. data/vendor/local/share/doc/groonga/en/html/reference/columns/vector.html +92 -100
  455. data/vendor/local/share/doc/groonga/en/html/reference/command.html +76 -84
  456. data/vendor/local/share/doc/groonga/en/html/reference/command/command_version.html +26 -34
  457. data/vendor/local/share/doc/groonga/en/html/reference/command/output_format.html +64 -72
  458. data/vendor/local/share/doc/groonga/en/html/reference/command/pretty_print.html +21 -29
  459. data/vendor/local/share/doc/groonga/en/html/reference/command/request_id.html +25 -33
  460. data/vendor/local/share/doc/groonga/en/html/reference/command/request_timeout.html +32 -40
  461. data/vendor/local/share/doc/groonga/en/html/reference/command/return_code.html +105 -113
  462. data/vendor/local/share/doc/groonga/en/html/reference/commands/cache_limit.html +44 -50
  463. data/vendor/local/share/doc/groonga/en/html/reference/commands/check.html +85 -73
  464. data/vendor/local/share/doc/groonga/en/html/reference/commands/clearlock.html +31 -37
  465. data/vendor/local/share/doc/groonga/en/html/reference/commands/column_copy.html +131 -139
  466. data/vendor/local/share/doc/groonga/en/html/reference/commands/column_create.html +370 -326
  467. data/vendor/local/share/doc/groonga/en/html/reference/commands/column_list.html +115 -117
  468. data/vendor/local/share/doc/groonga/en/html/reference/commands/column_remove.html +38 -44
  469. data/vendor/local/share/doc/groonga/en/html/reference/commands/column_rename.html +47 -53
  470. data/vendor/local/share/doc/groonga/en/html/reference/commands/config_delete.html +40 -48
  471. data/vendor/local/share/doc/groonga/en/html/reference/commands/config_get.html +42 -50
  472. data/vendor/local/share/doc/groonga/en/html/reference/commands/config_set.html +41 -49
  473. data/vendor/local/share/doc/groonga/en/html/reference/commands/database_unmap.html +37 -45
  474. data/vendor/local/share/doc/groonga/en/html/reference/commands/define_selector.html +71 -63
  475. data/vendor/local/share/doc/groonga/en/html/reference/commands/defrag.html +31 -37
  476. data/vendor/local/share/doc/groonga/en/html/reference/commands/delete.html +49 -51
  477. data/vendor/local/share/doc/groonga/en/html/reference/commands/dump.html +64 -71
  478. data/vendor/local/share/doc/groonga/en/html/reference/commands/io_flush.html +335 -138
  479. data/vendor/local/share/doc/groonga/en/html/reference/commands/load.html +233 -87
  480. data/vendor/local/share/doc/groonga/en/html/reference/commands/lock_acquire.html +45 -53
  481. data/vendor/local/share/doc/groonga/en/html/reference/commands/lock_clear.html +42 -48
  482. data/vendor/local/share/doc/groonga/en/html/reference/commands/lock_release.html +43 -51
  483. data/vendor/local/share/doc/groonga/en/html/reference/commands/log_level.html +58 -64
  484. data/vendor/local/share/doc/groonga/en/html/reference/commands/log_put.html +33 -38
  485. data/vendor/local/share/doc/groonga/en/html/reference/commands/log_reopen.html +31 -38
  486. data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_count.html +295 -218
  487. data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_parameters.html +56 -64
  488. data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_range_filter.html +532 -214
  489. data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_select.html +797 -388
  490. data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_shard_list.html +35 -43
  491. data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_table_remove.html +188 -196
  492. data/vendor/local/share/doc/groonga/en/html/reference/commands/normalize.html +83 -90
  493. data/vendor/local/share/doc/groonga/en/html/reference/commands/normalizer_list.html +41 -48
  494. data/vendor/local/share/doc/groonga/en/html/reference/commands/object_exist.html +41 -49
  495. data/vendor/local/share/doc/groonga/en/html/reference/commands/object_inspect.html +401 -403
  496. data/vendor/local/share/doc/groonga/en/html/reference/commands/object_list.html +253 -261
  497. data/vendor/local/share/doc/groonga/en/html/reference/commands/object_remove.html +60 -68
  498. data/vendor/local/share/doc/groonga/en/html/reference/commands/plugin_register.html +36 -44
  499. data/vendor/local/share/doc/groonga/en/html/reference/commands/plugin_unregister.html +35 -43
  500. data/vendor/local/share/doc/groonga/en/html/reference/commands/query_expand.html +21 -29
  501. data/vendor/local/share/doc/groonga/en/html/reference/commands/quit.html +22 -30
  502. data/vendor/local/share/doc/groonga/en/html/reference/commands/range_filter.html +21 -29
  503. data/vendor/local/share/doc/groonga/en/html/reference/commands/register.html +39 -47
  504. data/vendor/local/share/doc/groonga/en/html/reference/commands/reindex.html +47 -53
  505. data/vendor/local/share/doc/groonga/en/html/reference/commands/request_cancel.html +72 -74
  506. data/vendor/local/share/doc/groonga/en/html/reference/commands/ruby_eval.html +38 -45
  507. data/vendor/local/share/doc/groonga/en/html/reference/commands/ruby_load.html +38 -45
  508. data/vendor/local/share/doc/groonga/en/html/reference/commands/schema.html +330 -338
  509. data/vendor/local/share/doc/groonga/en/html/reference/commands/select.html +1545 -1194
  510. data/vendor/local/share/doc/groonga/en/html/reference/commands/shutdown.html +57 -65
  511. data/vendor/local/share/doc/groonga/en/html/reference/commands/status.html +83 -91
  512. data/vendor/local/share/doc/groonga/en/html/reference/commands/suggest.html +119 -133
  513. data/vendor/local/share/doc/groonga/en/html/reference/commands/table_copy.html +30 -38
  514. data/vendor/local/share/doc/groonga/en/html/reference/commands/table_create.html +165 -174
  515. data/vendor/local/share/doc/groonga/en/html/reference/commands/table_list.html +50 -50
  516. data/vendor/local/share/doc/groonga/en/html/reference/commands/table_remove.html +104 -112
  517. data/vendor/local/share/doc/groonga/en/html/reference/commands/table_rename.html +42 -50
  518. data/vendor/local/share/doc/groonga/en/html/reference/commands/table_tokenize.html +49 -57
  519. data/vendor/local/share/doc/groonga/en/html/reference/commands/thread_limit.html +46 -54
  520. data/vendor/local/share/doc/groonga/en/html/reference/commands/tokenize.html +110 -117
  521. data/vendor/local/share/doc/groonga/en/html/reference/commands/tokenizer_list.html +41 -48
  522. data/vendor/local/share/doc/groonga/en/html/reference/commands/truncate.html +40 -46
  523. data/vendor/local/share/doc/groonga/en/html/reference/configuration.html +37 -45
  524. data/vendor/local/share/doc/groonga/en/html/reference/executables.html +19 -27
  525. data/vendor/local/share/doc/groonga/en/html/reference/executables/grndb.html +134 -114
  526. data/vendor/local/share/doc/groonga/en/html/reference/executables/grnslap.html +25 -31
  527. data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-benchmark.html +66 -66
  528. data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-httpd.html +174 -182
  529. data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-server-http.html +25 -33
  530. data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-suggest-create-dataset.html +27 -35
  531. data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-suggest-httpd.html +191 -199
  532. data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-suggest-learner.html +32 -40
  533. data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga.html +189 -163
  534. data/vendor/local/share/doc/groonga/en/html/reference/function.html +59 -64
  535. data/vendor/local/share/doc/groonga/en/html/reference/functions/between.html +71 -79
  536. data/vendor/local/share/doc/groonga/en/html/reference/functions/cast_loose.html +210 -0
  537. data/vendor/local/share/doc/groonga/en/html/reference/functions/edit_distance.html +49 -55
  538. data/vendor/local/share/doc/groonga/en/html/reference/functions/fuzzy_search.html +38 -46
  539. data/vendor/local/share/doc/groonga/en/html/reference/functions/geo_distance.html +133 -142
  540. data/vendor/local/share/doc/groonga/en/html/reference/functions/geo_in_circle.html +67 -73
  541. data/vendor/local/share/doc/groonga/en/html/reference/functions/geo_in_rectangle.html +56 -62
  542. data/vendor/local/share/doc/groonga/en/html/reference/functions/highlight_full.html +80 -88
  543. data/vendor/local/share/doc/groonga/en/html/reference/functions/highlight_html.html +70 -78
  544. data/vendor/local/share/doc/groonga/en/html/reference/functions/html_untag.html +56 -64
  545. data/vendor/local/share/doc/groonga/en/html/reference/functions/in_records.html +87 -94
  546. data/vendor/local/share/doc/groonga/en/html/reference/functions/in_values.html +54 -62
  547. data/vendor/local/share/doc/groonga/en/html/reference/functions/math_abs.html +55 -63
  548. data/vendor/local/share/doc/groonga/en/html/reference/functions/now.html +40 -48
  549. data/vendor/local/share/doc/groonga/en/html/reference/functions/number_classify.html +36 -44
  550. data/vendor/local/share/doc/groonga/en/html/reference/functions/prefix_rk_search.html +74 -82
  551. data/vendor/local/share/doc/groonga/en/html/reference/functions/query.html +152 -160
  552. data/vendor/local/share/doc/groonga/en/html/reference/functions/rand.html +45 -52
  553. data/vendor/local/share/doc/groonga/en/html/reference/functions/snippet_html.html +76 -84
  554. data/vendor/local/share/doc/groonga/en/html/reference/functions/string_length.html +37 -45
  555. data/vendor/local/share/doc/groonga/en/html/reference/functions/string_substring.html +39 -47
  556. data/vendor/local/share/doc/groonga/en/html/reference/functions/sub_filter.html +76 -84
  557. data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_day.html +37 -45
  558. data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_day_of_week.html +278 -0
  559. data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_hour.html +37 -45
  560. data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_minute.html +36 -44
  561. data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_month.html +36 -44
  562. data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_second.html +36 -44
  563. data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_week.html +36 -44
  564. data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_year.html +37 -45
  565. data/vendor/local/share/doc/groonga/en/html/reference/functions/vector_find.html +368 -0
  566. data/vendor/local/share/doc/groonga/en/html/reference/functions/vector_new.html +40 -48
  567. data/vendor/local/share/doc/groonga/en/html/reference/functions/vector_size.html +54 -62
  568. data/vendor/local/share/doc/groonga/en/html/reference/functions/vector_slice.html +40 -47
  569. data/vendor/local/share/doc/groonga/en/html/reference/grn_expr.html +44 -52
  570. data/vendor/local/share/doc/groonga/en/html/reference/grn_expr/query_syntax.html +307 -316
  571. data/vendor/local/share/doc/groonga/en/html/reference/grn_expr/script_syntax.html +486 -492
  572. data/vendor/local/share/doc/groonga/en/html/reference/indexing.html +44 -52
  573. data/vendor/local/share/doc/groonga/en/html/reference/log.html +128 -147
  574. data/vendor/local/share/doc/groonga/en/html/reference/normalizers.html +43 -92
  575. data/vendor/local/share/doc/groonga/en/html/reference/normalizers/normalizer_auto.html +179 -0
  576. data/vendor/local/share/doc/groonga/en/html/reference/normalizers/normalizer_nfkc100.html +897 -0
  577. data/vendor/local/share/doc/groonga/en/html/reference/normalizers/normalizer_nfkc51.html +162 -0
  578. data/vendor/local/share/doc/groonga/en/html/reference/operations.html +26 -34
  579. data/vendor/local/share/doc/groonga/en/html/reference/operations/geolocation_search.html +48 -56
  580. data/vendor/local/share/doc/groonga/en/html/reference/operations/prefix_rk_search.html +47 -55
  581. data/vendor/local/share/doc/groonga/en/html/reference/output.html +47 -55
  582. data/vendor/local/share/doc/groonga/en/html/reference/query_expanders.html +20 -28
  583. data/vendor/local/share/doc/groonga/en/html/reference/query_expanders/tsv.html +93 -101
  584. data/vendor/local/share/doc/groonga/en/html/reference/regular_expression.html +228 -225
  585. data/vendor/local/share/doc/groonga/en/html/reference/scorer.html +59 -67
  586. data/vendor/local/share/doc/groonga/en/html/reference/scorers/scorer_tf_at_most.html +50 -58
  587. data/vendor/local/share/doc/groonga/en/html/reference/scorers/scorer_tf_idf.html +57 -65
  588. data/vendor/local/share/doc/groonga/en/html/reference/sharding.html +76 -86
  589. data/vendor/local/share/doc/groonga/en/html/reference/suggest.html +43 -51
  590. data/vendor/local/share/doc/groonga/en/html/reference/suggest/completion.html +159 -167
  591. data/vendor/local/share/doc/groonga/en/html/reference/suggest/correction.html +93 -101
  592. data/vendor/local/share/doc/groonga/en/html/reference/suggest/introduction.html +85 -93
  593. data/vendor/local/share/doc/groonga/en/html/reference/suggest/suggestion.html +88 -96
  594. data/vendor/local/share/doc/groonga/en/html/reference/tables.html +142 -150
  595. data/vendor/local/share/doc/groonga/en/html/reference/token_filter/summary.html +147 -0
  596. data/vendor/local/share/doc/groonga/en/html/reference/token_filters.html +31 -223
  597. data/vendor/local/share/doc/groonga/en/html/reference/token_filters/token_filter_nfkc100.html +626 -0
  598. data/vendor/local/share/doc/groonga/en/html/reference/token_filters/token_filter_stem.html +291 -0
  599. data/vendor/local/share/doc/groonga/en/html/reference/token_filters/token_filter_stop_word.html +287 -0
  600. data/vendor/local/share/doc/groonga/en/html/reference/tokenizer/summary.html +259 -0
  601. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers.html +42 -1455
  602. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram.html +368 -0
  603. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_ignore_blank.html +221 -0
  604. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol.html +240 -0
  605. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol_alpha.html +270 -0
  606. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol_alpha_digit.html +292 -0
  607. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_split_symbol.html +179 -0
  608. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_split_symbol_alpha.html +200 -0
  609. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_split_symbol_alpha_digit.html +212 -0
  610. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_delimit.html +357 -0
  611. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_delimit_null.html +162 -0
  612. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_mecab.html +783 -0
  613. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_regexp.html +289 -0
  614. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_trigram.html +194 -0
  615. data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_unigram.html +194 -0
  616. data/vendor/local/share/doc/groonga/en/html/reference/tuning.html +71 -79
  617. data/vendor/local/share/doc/groonga/en/html/reference/types.html +64 -72
  618. data/vendor/local/share/doc/groonga/en/html/reference/window_function.html +29 -37
  619. data/vendor/local/share/doc/groonga/en/html/reference/window_functions/record_number.html +38 -46
  620. data/vendor/local/share/doc/groonga/en/html/reference/window_functions/window_count.html +38 -46
  621. data/vendor/local/share/doc/groonga/en/html/reference/window_functions/window_record_number.html +38 -46
  622. data/vendor/local/share/doc/groonga/en/html/reference/window_functions/window_sum.html +38 -46
  623. data/vendor/local/share/doc/groonga/en/html/search.html +13 -24
  624. data/vendor/local/share/doc/groonga/en/html/searchindex.js +1 -1
  625. data/vendor/local/share/doc/groonga/en/html/server.html +15 -23
  626. data/vendor/local/share/doc/groonga/en/html/server/gqtp.html +27 -35
  627. data/vendor/local/share/doc/groonga/en/html/server/http.html +18 -26
  628. data/vendor/local/share/doc/groonga/en/html/server/http/comparison.html +94 -102
  629. data/vendor/local/share/doc/groonga/en/html/server/http/groonga-httpd.html +15 -23
  630. data/vendor/local/share/doc/groonga/en/html/server/http/groonga.html +15 -23
  631. data/vendor/local/share/doc/groonga/en/html/server/memcached.html +18 -26
  632. data/vendor/local/share/doc/groonga/en/html/server/package.html +101 -109
  633. data/vendor/local/share/doc/groonga/en/html/spec.html +19 -27
  634. data/vendor/local/share/doc/groonga/en/html/spec/gqtp.html +207 -215
  635. data/vendor/local/share/doc/groonga/en/html/spec/search.html +39 -39
  636. data/vendor/local/share/doc/groonga/en/html/troubleshooting.html +15 -23
  637. data/vendor/local/share/doc/groonga/en/html/troubleshooting/different_results_with_the_same_keyword.html +46 -50
  638. data/vendor/local/share/doc/groonga/en/html/troubleshooting/how_to_analyze_error_message.html +27 -35
  639. data/vendor/local/share/doc/groonga/en/html/troubleshooting/mmap_cannot_allocate_memory.html +26 -31
  640. data/vendor/local/share/doc/groonga/en/html/tutorial.html +17 -25
  641. data/vendor/local/share/doc/groonga/en/html/tutorial/data.html +46 -54
  642. data/vendor/local/share/doc/groonga/en/html/tutorial/drilldown.html +63 -71
  643. data/vendor/local/share/doc/groonga/en/html/tutorial/index.html +30 -38
  644. data/vendor/local/share/doc/groonga/en/html/tutorial/introduction.html +88 -97
  645. data/vendor/local/share/doc/groonga/en/html/tutorial/lexicon.html +19 -27
  646. data/vendor/local/share/doc/groonga/en/html/tutorial/match_columns.html +61 -69
  647. data/vendor/local/share/doc/groonga/en/html/tutorial/micro_blog.html +108 -116
  648. data/vendor/local/share/doc/groonga/en/html/tutorial/network.html +24 -32
  649. data/vendor/local/share/doc/groonga/en/html/tutorial/patricia_trie.html +19 -27
  650. data/vendor/local/share/doc/groonga/en/html/tutorial/query_expansion.html +32 -40
  651. data/vendor/local/share/doc/groonga/en/html/tutorial/search.html +52 -60
  652. data/vendor/local/share/doc/groonga/ja/html/.buildinfo +1 -1
  653. data/vendor/local/share/doc/groonga/ja/html/_static/basic.css +113 -4
  654. data/vendor/local/share/doc/groonga/ja/html/_static/doctools.js +46 -19
  655. data/vendor/local/share/doc/groonga/ja/html/_static/documentation_options.js +10 -0
  656. data/vendor/local/share/doc/groonga/ja/html/_static/{jquery-3.1.0.js → jquery-3.2.1.js} +474 -295
  657. data/vendor/local/share/doc/groonga/ja/html/_static/jquery.js +4 -4
  658. data/vendor/local/share/doc/groonga/ja/html/_static/language_data.js +124 -0
  659. data/vendor/local/share/doc/groonga/ja/html/_static/pygments.css +4 -0
  660. data/vendor/local/share/doc/groonga/ja/html/_static/searchtools.js +70 -150
  661. data/vendor/local/share/doc/groonga/ja/html/characteristic.html +15 -23
  662. data/vendor/local/share/doc/groonga/ja/html/client.html +15 -23
  663. data/vendor/local/share/doc/groonga/ja/html/community.html +29 -37
  664. data/vendor/local/share/doc/groonga/ja/html/contribution.html +23 -31
  665. data/vendor/local/share/doc/groonga/ja/html/contribution/development.html +15 -23
  666. data/vendor/local/share/doc/groonga/ja/html/contribution/development/build.html +15 -23
  667. data/vendor/local/share/doc/groonga/ja/html/contribution/development/build/unix_autotools.html +50 -58
  668. data/vendor/local/share/doc/groonga/ja/html/contribution/development/build/unix_cmake.html +43 -48
  669. data/vendor/local/share/doc/groonga/ja/html/contribution/development/build/windows_cmake.html +47 -51
  670. data/vendor/local/share/doc/groonga/ja/html/contribution/development/com.html +26 -34
  671. data/vendor/local/share/doc/groonga/ja/html/contribution/development/cooperation.html +18 -26
  672. data/vendor/local/share/doc/groonga/ja/html/contribution/development/query.html +23 -31
  673. data/vendor/local/share/doc/groonga/ja/html/contribution/development/release.html +162 -162
  674. data/vendor/local/share/doc/groonga/ja/html/contribution/development/repository.html +16 -24
  675. data/vendor/local/share/doc/groonga/ja/html/contribution/development/test.html +26 -34
  676. data/vendor/local/share/doc/groonga/ja/html/contribution/documentation.html +15 -23
  677. data/vendor/local/share/doc/groonga/ja/html/contribution/documentation/c-api.html +15 -23
  678. data/vendor/local/share/doc/groonga/ja/html/contribution/documentation/i18n.html +50 -58
  679. data/vendor/local/share/doc/groonga/ja/html/contribution/documentation/introduction.html +28 -36
  680. data/vendor/local/share/doc/groonga/ja/html/contribution/report.html +17 -25
  681. data/vendor/local/share/doc/groonga/ja/html/development.html +15 -23
  682. data/vendor/local/share/doc/groonga/ja/html/development/travis-ci.html +32 -37
  683. data/vendor/local/share/doc/groonga/ja/html/genindex.html +50 -28
  684. data/vendor/local/share/doc/groonga/ja/html/index.html +247 -233
  685. data/vendor/local/share/doc/groonga/ja/html/install.html +41 -45
  686. data/vendor/local/share/doc/groonga/ja/html/install/centos.html +44 -52
  687. data/vendor/local/share/doc/groonga/ja/html/install/debian.html +52 -121
  688. data/vendor/local/share/doc/groonga/ja/html/install/docker.html +155 -0
  689. data/vendor/local/share/doc/groonga/ja/html/install/fedora.html +40 -48
  690. data/vendor/local/share/doc/groonga/ja/html/install/mac_os_x.html +28 -36
  691. data/vendor/local/share/doc/groonga/ja/html/install/others.html +116 -124
  692. data/vendor/local/share/doc/groonga/ja/html/install/solaris.html +28 -36
  693. data/vendor/local/share/doc/groonga/ja/html/install/ubuntu.html +43 -51
  694. data/vendor/local/share/doc/groonga/ja/html/install/windows.html +29 -37
  695. data/vendor/local/share/doc/groonga/ja/html/limitations.html +30 -36
  696. data/vendor/local/share/doc/groonga/ja/html/news.html +1234 -384
  697. data/vendor/local/share/doc/groonga/ja/html/news/0.x.html +82 -82
  698. data/vendor/local/share/doc/groonga/ja/html/news/1.0.x.html +146 -154
  699. data/vendor/local/share/doc/groonga/ja/html/news/1.1.x.html +25 -33
  700. data/vendor/local/share/doc/groonga/ja/html/news/1.2.x.html +191 -199
  701. data/vendor/local/share/doc/groonga/ja/html/news/1.3.x.html +41 -49
  702. data/vendor/local/share/doc/groonga/ja/html/news/2.x.html +283 -291
  703. data/vendor/local/share/doc/groonga/ja/html/news/3.x.html +229 -237
  704. data/vendor/local/share/doc/groonga/ja/html/news/4.x.html +274 -280
  705. data/vendor/local/share/doc/groonga/ja/html/news/5.x.html +475 -593
  706. data/vendor/local/share/doc/groonga/ja/html/news/6.x.html +313 -390
  707. data/vendor/local/share/doc/groonga/ja/html/news/senna.html +31 -39
  708. data/vendor/local/share/doc/groonga/ja/html/objects.inv +0 -0
  709. data/vendor/local/share/doc/groonga/ja/html/reference.html +208 -198
  710. data/vendor/local/share/doc/groonga/ja/html/reference/alias.html +70 -78
  711. data/vendor/local/share/doc/groonga/ja/html/reference/api.html +50 -57
  712. data/vendor/local/share/doc/groonga/ja/html/reference/api/global_configurations.html +57 -72
  713. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_cache.html +107 -139
  714. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_column.html +137 -173
  715. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_command_version.html +40 -52
  716. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_content_type.html +46 -54
  717. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_ctx.html +184 -244
  718. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_db.html +99 -131
  719. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_encoding.html +57 -77
  720. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_expr.html +100 -120
  721. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_geo.html +71 -95
  722. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_hook.html +75 -99
  723. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_ii.html +37 -45
  724. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_index_cursor.html +54 -70
  725. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_info.html +71 -95
  726. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_inspect.html +487 -0
  727. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_match_escalation.html +49 -65
  728. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_obj.html +286 -352
  729. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_proc.html +64 -84
  730. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_search.html +44 -56
  731. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_table.html +219 -299
  732. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_table_cursor.html +116 -156
  733. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_thread.html +70 -93
  734. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_type.html +42 -54
  735. data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_user_data.html +36 -48
  736. data/vendor/local/share/doc/groonga/ja/html/reference/api/overview.html +48 -62
  737. data/vendor/local/share/doc/groonga/ja/html/reference/api/plugin.html +94 -118
  738. data/vendor/local/share/doc/groonga/ja/html/reference/cast.html +39 -25
  739. data/vendor/local/share/doc/groonga/ja/html/reference/column.html +15 -23
  740. data/vendor/local/share/doc/groonga/ja/html/reference/columns/index.html +15 -23
  741. data/vendor/local/share/doc/groonga/ja/html/reference/columns/pseudo.html +28 -32
  742. data/vendor/local/share/doc/groonga/ja/html/reference/columns/scalar.html +15 -23
  743. data/vendor/local/share/doc/groonga/ja/html/reference/columns/vector.html +76 -84
  744. data/vendor/local/share/doc/groonga/ja/html/reference/command.html +76 -84
  745. data/vendor/local/share/doc/groonga/ja/html/reference/command/command_version.html +25 -33
  746. data/vendor/local/share/doc/groonga/ja/html/reference/command/output_format.html +51 -59
  747. data/vendor/local/share/doc/groonga/ja/html/reference/command/pretty_print.html +20 -28
  748. data/vendor/local/share/doc/groonga/ja/html/reference/command/request_id.html +21 -29
  749. data/vendor/local/share/doc/groonga/ja/html/reference/command/request_timeout.html +27 -35
  750. data/vendor/local/share/doc/groonga/ja/html/reference/command/return_code.html +101 -109
  751. data/vendor/local/share/doc/groonga/ja/html/reference/commands/cache_limit.html +39 -45
  752. data/vendor/local/share/doc/groonga/ja/html/reference/commands/check.html +84 -72
  753. data/vendor/local/share/doc/groonga/ja/html/reference/commands/clearlock.html +30 -36
  754. data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_copy.html +104 -112
  755. data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_create.html +271 -237
  756. data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_list.html +100 -102
  757. data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_remove.html +37 -43
  758. data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_rename.html +41 -47
  759. data/vendor/local/share/doc/groonga/ja/html/reference/commands/config_delete.html +38 -46
  760. data/vendor/local/share/doc/groonga/ja/html/reference/commands/config_get.html +39 -47
  761. data/vendor/local/share/doc/groonga/ja/html/reference/commands/config_set.html +39 -47
  762. data/vendor/local/share/doc/groonga/ja/html/reference/commands/database_unmap.html +34 -42
  763. data/vendor/local/share/doc/groonga/ja/html/reference/commands/define_selector.html +70 -62
  764. data/vendor/local/share/doc/groonga/ja/html/reference/commands/defrag.html +30 -36
  765. data/vendor/local/share/doc/groonga/ja/html/reference/commands/delete.html +42 -44
  766. data/vendor/local/share/doc/groonga/ja/html/reference/commands/dump.html +59 -68
  767. data/vendor/local/share/doc/groonga/ja/html/reference/commands/io_flush.html +300 -126
  768. data/vendor/local/share/doc/groonga/ja/html/reference/commands/load.html +212 -80
  769. data/vendor/local/share/doc/groonga/ja/html/reference/commands/lock_acquire.html +42 -50
  770. data/vendor/local/share/doc/groonga/ja/html/reference/commands/lock_clear.html +40 -46
  771. data/vendor/local/share/doc/groonga/ja/html/reference/commands/lock_release.html +41 -49
  772. data/vendor/local/share/doc/groonga/ja/html/reference/commands/log_level.html +57 -63
  773. data/vendor/local/share/doc/groonga/ja/html/reference/commands/log_put.html +32 -37
  774. data/vendor/local/share/doc/groonga/ja/html/reference/commands/log_reopen.html +30 -37
  775. data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_count.html +246 -178
  776. data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_parameters.html +51 -59
  777. data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_range_filter.html +479 -175
  778. data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_select.html +718 -326
  779. data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_shard_list.html +34 -42
  780. data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_table_remove.html +145 -153
  781. data/vendor/local/share/doc/groonga/ja/html/reference/commands/normalize.html +78 -85
  782. data/vendor/local/share/doc/groonga/ja/html/reference/commands/normalizer_list.html +40 -47
  783. data/vendor/local/share/doc/groonga/ja/html/reference/commands/object_exist.html +36 -44
  784. data/vendor/local/share/doc/groonga/ja/html/reference/commands/object_inspect.html +360 -362
  785. data/vendor/local/share/doc/groonga/ja/html/reference/commands/object_list.html +221 -229
  786. data/vendor/local/share/doc/groonga/ja/html/reference/commands/object_remove.html +47 -55
  787. data/vendor/local/share/doc/groonga/ja/html/reference/commands/plugin_register.html +32 -40
  788. data/vendor/local/share/doc/groonga/ja/html/reference/commands/plugin_unregister.html +33 -41
  789. data/vendor/local/share/doc/groonga/ja/html/reference/commands/query_expand.html +20 -28
  790. data/vendor/local/share/doc/groonga/ja/html/reference/commands/quit.html +21 -29
  791. data/vendor/local/share/doc/groonga/ja/html/reference/commands/range_filter.html +20 -28
  792. data/vendor/local/share/doc/groonga/ja/html/reference/commands/register.html +35 -43
  793. data/vendor/local/share/doc/groonga/ja/html/reference/commands/reindex.html +42 -48
  794. data/vendor/local/share/doc/groonga/ja/html/reference/commands/request_cancel.html +57 -57
  795. data/vendor/local/share/doc/groonga/ja/html/reference/commands/ruby_eval.html +36 -43
  796. data/vendor/local/share/doc/groonga/ja/html/reference/commands/ruby_load.html +36 -43
  797. data/vendor/local/share/doc/groonga/ja/html/reference/commands/schema.html +317 -325
  798. data/vendor/local/share/doc/groonga/ja/html/reference/commands/select.html +1246 -917
  799. data/vendor/local/share/doc/groonga/ja/html/reference/commands/shutdown.html +50 -58
  800. data/vendor/local/share/doc/groonga/ja/html/reference/commands/status.html +77 -85
  801. data/vendor/local/share/doc/groonga/ja/html/reference/commands/suggest.html +109 -123
  802. data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_copy.html +29 -37
  803. data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_create.html +131 -140
  804. data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_list.html +49 -49
  805. data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_remove.html +87 -95
  806. data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_rename.html +36 -44
  807. data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_tokenize.html +44 -52
  808. data/vendor/local/share/doc/groonga/ja/html/reference/commands/thread_limit.html +38 -46
  809. data/vendor/local/share/doc/groonga/ja/html/reference/commands/tokenize.html +93 -100
  810. data/vendor/local/share/doc/groonga/ja/html/reference/commands/tokenizer_list.html +40 -47
  811. data/vendor/local/share/doc/groonga/ja/html/reference/commands/truncate.html +39 -45
  812. data/vendor/local/share/doc/groonga/ja/html/reference/configuration.html +36 -44
  813. data/vendor/local/share/doc/groonga/ja/html/reference/executables.html +19 -27
  814. data/vendor/local/share/doc/groonga/ja/html/reference/executables/grndb.html +125 -107
  815. data/vendor/local/share/doc/groonga/ja/html/reference/executables/grnslap.html +23 -29
  816. data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-benchmark.html +62 -62
  817. data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-httpd.html +132 -140
  818. data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-server-http.html +23 -31
  819. data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-suggest-create-dataset.html +25 -33
  820. data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-suggest-httpd.html +166 -174
  821. data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-suggest-learner.html +31 -39
  822. data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga.html +189 -165
  823. data/vendor/local/share/doc/groonga/ja/html/reference/function.html +59 -64
  824. data/vendor/local/share/doc/groonga/ja/html/reference/functions/between.html +69 -77
  825. data/vendor/local/share/doc/groonga/ja/html/reference/functions/cast_loose.html +208 -0
  826. data/vendor/local/share/doc/groonga/ja/html/reference/functions/edit_distance.html +48 -54
  827. data/vendor/local/share/doc/groonga/ja/html/reference/functions/fuzzy_search.html +37 -45
  828. data/vendor/local/share/doc/groonga/ja/html/reference/functions/geo_distance.html +115 -124
  829. data/vendor/local/share/doc/groonga/ja/html/reference/functions/geo_in_circle.html +66 -72
  830. data/vendor/local/share/doc/groonga/ja/html/reference/functions/geo_in_rectangle.html +55 -61
  831. data/vendor/local/share/doc/groonga/ja/html/reference/functions/highlight_full.html +69 -77
  832. data/vendor/local/share/doc/groonga/ja/html/reference/functions/highlight_html.html +60 -68
  833. data/vendor/local/share/doc/groonga/ja/html/reference/functions/html_untag.html +54 -62
  834. data/vendor/local/share/doc/groonga/ja/html/reference/functions/in_records.html +85 -93
  835. data/vendor/local/share/doc/groonga/ja/html/reference/functions/in_values.html +54 -62
  836. data/vendor/local/share/doc/groonga/ja/html/reference/functions/math_abs.html +54 -62
  837. data/vendor/local/share/doc/groonga/ja/html/reference/functions/now.html +39 -47
  838. data/vendor/local/share/doc/groonga/ja/html/reference/functions/number_classify.html +35 -43
  839. data/vendor/local/share/doc/groonga/ja/html/reference/functions/prefix_rk_search.html +67 -75
  840. data/vendor/local/share/doc/groonga/ja/html/reference/functions/query.html +130 -138
  841. data/vendor/local/share/doc/groonga/ja/html/reference/functions/rand.html +44 -51
  842. data/vendor/local/share/doc/groonga/ja/html/reference/functions/snippet_html.html +61 -69
  843. data/vendor/local/share/doc/groonga/ja/html/reference/functions/string_length.html +36 -44
  844. data/vendor/local/share/doc/groonga/ja/html/reference/functions/string_substring.html +38 -46
  845. data/vendor/local/share/doc/groonga/ja/html/reference/functions/sub_filter.html +63 -71
  846. data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_day.html +36 -44
  847. data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_day_of_week.html +276 -0
  848. data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_hour.html +36 -44
  849. data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_minute.html +35 -43
  850. data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_month.html +35 -43
  851. data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_second.html +35 -43
  852. data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_week.html +35 -43
  853. data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_year.html +36 -44
  854. data/vendor/local/share/doc/groonga/ja/html/reference/functions/vector_find.html +353 -0
  855. data/vendor/local/share/doc/groonga/ja/html/reference/functions/vector_new.html +39 -47
  856. data/vendor/local/share/doc/groonga/ja/html/reference/functions/vector_size.html +52 -61
  857. data/vendor/local/share/doc/groonga/ja/html/reference/functions/vector_slice.html +38 -46
  858. data/vendor/local/share/doc/groonga/ja/html/reference/grn_expr.html +38 -46
  859. data/vendor/local/share/doc/groonga/ja/html/reference/grn_expr/query_syntax.html +200 -208
  860. data/vendor/local/share/doc/groonga/ja/html/reference/grn_expr/script_syntax.html +375 -382
  861. data/vendor/local/share/doc/groonga/ja/html/reference/indexing.html +39 -47
  862. data/vendor/local/share/doc/groonga/ja/html/reference/log.html +125 -144
  863. data/vendor/local/share/doc/groonga/ja/html/reference/normalizers.html +36 -70
  864. data/vendor/local/share/doc/groonga/ja/html/reference/normalizers/normalizer_auto.html +168 -0
  865. data/vendor/local/share/doc/groonga/ja/html/reference/normalizers/normalizer_nfkc100.html +887 -0
  866. data/vendor/local/share/doc/groonga/ja/html/reference/normalizers/normalizer_nfkc51.html +160 -0
  867. data/vendor/local/share/doc/groonga/ja/html/reference/operations.html +26 -34
  868. data/vendor/local/share/doc/groonga/ja/html/reference/operations/geolocation_search.html +38 -46
  869. data/vendor/local/share/doc/groonga/ja/html/reference/operations/prefix_rk_search.html +41 -49
  870. data/vendor/local/share/doc/groonga/ja/html/reference/output.html +42 -50
  871. data/vendor/local/share/doc/groonga/ja/html/reference/query_expanders.html +20 -28
  872. data/vendor/local/share/doc/groonga/ja/html/reference/query_expanders/tsv.html +68 -76
  873. data/vendor/local/share/doc/groonga/ja/html/reference/regular_expression.html +178 -184
  874. data/vendor/local/share/doc/groonga/ja/html/reference/scorer.html +38 -46
  875. data/vendor/local/share/doc/groonga/ja/html/reference/scorers/scorer_tf_at_most.html +38 -46
  876. data/vendor/local/share/doc/groonga/ja/html/reference/scorers/scorer_tf_idf.html +39 -47
  877. data/vendor/local/share/doc/groonga/ja/html/reference/sharding.html +63 -73
  878. data/vendor/local/share/doc/groonga/ja/html/reference/suggest.html +43 -51
  879. data/vendor/local/share/doc/groonga/ja/html/reference/suggest/completion.html +130 -138
  880. data/vendor/local/share/doc/groonga/ja/html/reference/suggest/correction.html +72 -80
  881. data/vendor/local/share/doc/groonga/ja/html/reference/suggest/introduction.html +68 -76
  882. data/vendor/local/share/doc/groonga/ja/html/reference/suggest/suggestion.html +76 -86
  883. data/vendor/local/share/doc/groonga/ja/html/reference/tables.html +129 -137
  884. data/vendor/local/share/doc/groonga/ja/html/reference/token_filter/summary.html +145 -0
  885. data/vendor/local/share/doc/groonga/ja/html/reference/token_filters.html +31 -215
  886. data/vendor/local/share/doc/groonga/ja/html/reference/token_filters/token_filter_nfkc100.html +617 -0
  887. data/vendor/local/share/doc/groonga/ja/html/reference/token_filters/token_filter_stem.html +289 -0
  888. data/vendor/local/share/doc/groonga/ja/html/reference/token_filters/token_filter_stop_word.html +284 -0
  889. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizer/summary.html +233 -0
  890. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers.html +42 -1349
  891. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram.html +344 -0
  892. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_ignore_blank.html +219 -0
  893. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol.html +237 -0
  894. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol_alpha.html +267 -0
  895. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol_alpha_digit.html +287 -0
  896. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_split_symbol.html +179 -0
  897. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_split_symbol_alpha.html +199 -0
  898. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_split_symbol_alpha_digit.html +209 -0
  899. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_delimit.html +344 -0
  900. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_delimit_null.html +160 -0
  901. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_mecab.html +764 -0
  902. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_regexp.html +284 -0
  903. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_trigram.html +191 -0
  904. data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_unigram.html +191 -0
  905. data/vendor/local/share/doc/groonga/ja/html/reference/tuning.html +65 -73
  906. data/vendor/local/share/doc/groonga/ja/html/reference/types.html +48 -56
  907. data/vendor/local/share/doc/groonga/ja/html/reference/window_function.html +29 -37
  908. data/vendor/local/share/doc/groonga/ja/html/reference/window_functions/record_number.html +37 -45
  909. data/vendor/local/share/doc/groonga/ja/html/reference/window_functions/window_count.html +37 -45
  910. data/vendor/local/share/doc/groonga/ja/html/reference/window_functions/window_record_number.html +37 -45
  911. data/vendor/local/share/doc/groonga/ja/html/reference/window_functions/window_sum.html +37 -45
  912. data/vendor/local/share/doc/groonga/ja/html/search.html +13 -24
  913. data/vendor/local/share/doc/groonga/ja/html/searchindex.js +1 -1
  914. data/vendor/local/share/doc/groonga/ja/html/server.html +15 -23
  915. data/vendor/local/share/doc/groonga/ja/html/server/gqtp.html +22 -30
  916. data/vendor/local/share/doc/groonga/ja/html/server/http.html +17 -25
  917. data/vendor/local/share/doc/groonga/ja/html/server/http/comparison.html +82 -90
  918. data/vendor/local/share/doc/groonga/ja/html/server/http/groonga-httpd.html +15 -23
  919. data/vendor/local/share/doc/groonga/ja/html/server/http/groonga.html +15 -23
  920. data/vendor/local/share/doc/groonga/ja/html/server/memcached.html +16 -24
  921. data/vendor/local/share/doc/groonga/ja/html/server/package.html +99 -107
  922. data/vendor/local/share/doc/groonga/ja/html/spec.html +19 -27
  923. data/vendor/local/share/doc/groonga/ja/html/spec/gqtp.html +201 -209
  924. data/vendor/local/share/doc/groonga/ja/html/spec/search.html +36 -36
  925. data/vendor/local/share/doc/groonga/ja/html/troubleshooting.html +15 -23
  926. data/vendor/local/share/doc/groonga/ja/html/troubleshooting/different_results_with_the_same_keyword.html +44 -48
  927. data/vendor/local/share/doc/groonga/ja/html/troubleshooting/how_to_analyze_error_message.html +21 -29
  928. data/vendor/local/share/doc/groonga/ja/html/troubleshooting/mmap_cannot_allocate_memory.html +24 -29
  929. data/vendor/local/share/doc/groonga/ja/html/tutorial.html +16 -24
  930. data/vendor/local/share/doc/groonga/ja/html/tutorial/data.html +32 -40
  931. data/vendor/local/share/doc/groonga/ja/html/tutorial/drilldown.html +62 -70
  932. data/vendor/local/share/doc/groonga/ja/html/tutorial/index.html +22 -30
  933. data/vendor/local/share/doc/groonga/ja/html/tutorial/introduction.html +77 -86
  934. data/vendor/local/share/doc/groonga/ja/html/tutorial/lexicon.html +15 -23
  935. data/vendor/local/share/doc/groonga/ja/html/tutorial/match_columns.html +56 -64
  936. data/vendor/local/share/doc/groonga/ja/html/tutorial/micro_blog.html +84 -92
  937. data/vendor/local/share/doc/groonga/ja/html/tutorial/network.html +20 -28
  938. data/vendor/local/share/doc/groonga/ja/html/tutorial/patricia_trie.html +18 -26
  939. data/vendor/local/share/doc/groonga/ja/html/tutorial/query_expansion.html +21 -29
  940. data/vendor/local/share/doc/groonga/ja/html/tutorial/search.html +43 -51
  941. data/vendor/local/share/doc/pcre/AUTHORS +3 -3
  942. data/vendor/local/share/doc/pcre/ChangeLog +53 -0
  943. data/vendor/local/share/doc/pcre/LICENCE +3 -3
  944. data/vendor/local/share/doc/pcre/NEWS +6 -0
  945. data/vendor/local/share/doc/pcre/html/NON-AUTOTOOLS-BUILD.txt +8 -7
  946. data/vendor/local/share/groonga/mruby/LEGAL +35 -35
  947. data/vendor/local/share/license/cv2pdb/{README → README.MD} +28 -10
  948. data/vendor/local/share/license/groonga-normalizer-mysql/README.md +14 -22
  949. data/vendor/local/share/license/lz4/LICENSE +2 -2
  950. data/vendor/local/share/license/mruby/AUTHORS +3 -0
  951. data/vendor/local/share/license/mruby/MITL +1 -1
  952. data/vendor/local/share/license/mruby/README.md +1 -1
  953. data/vendor/local/share/license/msgpack/README.md +5 -34
  954. data/vendor/local/share/license/pcre/LICENCE +3 -3
  955. data/vendor/local/share/man/man1/lz4.1 +221 -86
  956. data/vendor/local/share/man/man1/lz4c.1 +222 -32
  957. data/vendor/local/share/man/man1/lz4cat.1 +221 -30
  958. data/vendor/local/share/man/man1/unlz4.1 +223 -0
  959. metadata +231 -87
  960. data/lib/2.1/groonga.so +0 -0
  961. data/vendor/local/lib/groonga/plugins/expression_rewriters/optimizer.rb +0 -147
  962. data/vendor/local/lib/groonga/scripts/ruby/expression_tree/options.rb +0 -14
  963. data/vendor/local/share/doc/groonga/en/html/_static/ajax-loader.gif +0 -0
  964. data/vendor/local/share/doc/groonga/en/html/_static/comment-bright.png +0 -0
  965. data/vendor/local/share/doc/groonga/en/html/_static/comment-close.png +0 -0
  966. data/vendor/local/share/doc/groonga/en/html/_static/comment.png +0 -0
  967. data/vendor/local/share/doc/groonga/en/html/_static/down-pressed.png +0 -0
  968. data/vendor/local/share/doc/groonga/en/html/_static/down.png +0 -0
  969. data/vendor/local/share/doc/groonga/en/html/_static/up-pressed.png +0 -0
  970. data/vendor/local/share/doc/groonga/en/html/_static/up.png +0 -0
  971. data/vendor/local/share/doc/groonga/en/html/_static/websupport.js +0 -808
  972. data/vendor/local/share/doc/groonga/ja/html/_static/ajax-loader.gif +0 -0
  973. data/vendor/local/share/doc/groonga/ja/html/_static/comment-bright.png +0 -0
  974. data/vendor/local/share/doc/groonga/ja/html/_static/comment-close.png +0 -0
  975. data/vendor/local/share/doc/groonga/ja/html/_static/comment.png +0 -0
  976. data/vendor/local/share/doc/groonga/ja/html/_static/down-pressed.png +0 -0
  977. data/vendor/local/share/doc/groonga/ja/html/_static/down.png +0 -0
  978. data/vendor/local/share/doc/groonga/ja/html/_static/up-pressed.png +0 -0
  979. data/vendor/local/share/doc/groonga/ja/html/_static/up.png +0 -0
  980. data/vendor/local/share/doc/groonga/ja/html/_static/websupport.js +0 -808
@@ -10,6 +10,7 @@ module Groonga
10
10
  "max",
11
11
  "max_border",
12
12
  "filter",
13
+ "post_filter",
13
14
  ])
14
15
 
15
16
  def run_body(input)
@@ -18,9 +19,14 @@ module Groonga
18
19
  counter = Counter.new(input, enumerator.target_range)
19
20
  total = 0
20
21
  have_shard = false
21
- enumerator.each do |shard, shard_range|
22
- have_shard = true
23
- total += counter.count(shard, shard_range)
22
+ begin
23
+ enumerator.each do |shard, shard_range|
24
+ have_shard = true
25
+ counter.count_pre(shard, shard_range)
26
+ end
27
+ total += counter.count
28
+ ensure
29
+ counter.close
24
30
  end
25
31
  unless have_shard
26
32
  message =
@@ -43,22 +49,40 @@ module Groonga
43
49
  key << "#{input[:max]}\0"
44
50
  key << "#{input[:max_border]}\0"
45
51
  key << "#{input[:filter]}\0"
52
+ key << "#{input[:post_filter]}\0"
46
53
  dynamic_columns = DynamicColumns.parse(input)
47
54
  key << dynamic_columns.cache_key
48
55
  key
49
56
  end
50
57
 
58
+ class ShardCountContext
59
+ attr_reader :shard
60
+ attr_reader :cover_type
61
+ attr_reader :range_index
62
+ attr_accessor :table
63
+ def initialize(shard, cover_type, range_index)
64
+ @shard = shard
65
+ @cover_type = cover_type
66
+ @range_idnex = range_index
67
+ @table = shard.table
68
+ end
69
+ end
70
+
51
71
  class Counter
52
72
  def initialize(input, target_range)
53
73
  @logger = Context.instance.logger
54
74
  @filter = input[:filter]
75
+ @post_filter = input[:post_filter]
55
76
  @dynamic_columns = DynamicColumns.parse(input)
56
77
  @target_range = target_range
78
+ @contexts = []
79
+ @temporary_tables = []
80
+ @temporary_expressions = []
57
81
  end
58
82
 
59
- def count(shard, shard_range)
83
+ def count_pre(shard, shard_range)
60
84
  cover_type = @target_range.cover_type(shard_range)
61
- return 0 if cover_type == :none
85
+ return if cover_type == :none
62
86
 
63
87
  shard_key = shard.key
64
88
  if shard_key.nil?
@@ -66,41 +90,41 @@ module Groonga
66
90
  "<#{shard.key_name}>"
67
91
  raise InvalidArgument, message
68
92
  end
69
- table_name = shard.table_name
70
93
 
71
- prepare_table(shard) do |table|
72
- if cover_type == :all
73
- log_use_range_index(false, table_name, "covered",
74
- __LINE__, __method__)
75
- if @filter
76
- return filtered_count_n_records(table, shard_key, cover_type)
77
- else
78
- return table.size
79
- end
80
- end
81
-
82
- range_index = nil
83
- if @filter
84
- log_use_range_index(false, table_name, "need filter",
94
+ table_name = shard.table_name
95
+ range_index = nil
96
+ if @filter or @post_filter
97
+ log_use_range_index(false, table_name, "need filter",
98
+ __LINE__, __method__)
99
+ elsif cover_type == :all
100
+ log_use_range_index(false, table_name, "covered",
101
+ __LINE__, __method__)
102
+ else
103
+ index_info = shard_key.find_index(Operator::LESS)
104
+ range_index = index_info.index if index_info
105
+ if range_index
106
+ log_use_range_index(true, table_name, "range index is available",
85
107
  __LINE__, __method__)
86
108
  else
87
- index_info = shard_key.find_index(Operator::LESS)
88
- range_index = index_info.index if index_info
89
- if range_index
90
- log_use_range_index(true, table_name, "range index is available",
91
- __LINE__, __method__)
92
- else
93
- log_use_range_index(false, table_name, "no range index",
94
- __LINE__, __method__)
95
- end
109
+ log_use_range_index(false, table_name, "no range index",
110
+ __LINE__, __method__)
96
111
  end
112
+ end
113
+ @contexts << ShardCountContext.new(shard, cover_type, range_index)
114
+ end
97
115
 
98
- if range_index
99
- count_n_records_in_range(range_index, cover_type)
100
- else
101
- filtered_count_n_records(table, shard_key, cover_type)
102
- end
116
+ def count
117
+ prepare_contexts
118
+ total = 0
119
+ @contexts.each do |context|
120
+ total += count_shard(context)
103
121
  end
122
+ total
123
+ end
124
+
125
+ def close
126
+ @temporary_tables.each(&:close)
127
+ @temporary_expressions.each(&:close)
104
128
  end
105
129
 
106
130
  private
@@ -119,34 +143,51 @@ module Groonga
119
143
  message)
120
144
  end
121
145
 
122
- def prepare_table(shard)
123
- table = shard.table
124
- return yield(table) if @filter.nil?
125
-
126
- @dynamic_columns.each_initial do |dynamic_column|
127
- if table == shard.table
128
- table = table.select_all
146
+ def prepare_contexts
147
+ if @filter or @post_filter
148
+ if @dynamic_columns.have_initial?
149
+ apply_targets = []
150
+ @contexts.each do |context|
151
+ table = context.table.select_all
152
+ @temporary_tables << table
153
+ context.table = table
154
+ apply_targets << [table]
155
+ end
156
+ @dynamic_columns.apply_initial(apply_targets)
129
157
  end
130
- dynamic_column.apply(table)
131
158
  end
132
-
133
- begin
134
- yield(table)
135
- ensure
136
- table.close if table != shard.table
159
+ @contexts.each do |context|
160
+ filter_shard(context)
161
+ end
162
+ if @post_filter
163
+ if @dynamic_columns.have_filtered?
164
+ apply_targets = @contexts.collect do |context|
165
+ [context.table]
166
+ end
167
+ @dynamic_columns.apply_filtered(apply_targets)
168
+ end
169
+ @contexts.each do |context|
170
+ post_filter_shard(context)
171
+ end
137
172
  end
138
173
  end
139
174
 
140
- def filtered_count_n_records(table, shard_key, cover_type)
141
- expression = nil
142
- filtered_table = nil
143
-
144
- expression_builder = RangeExpressionBuilder.new(shard_key,
145
- @target_range)
146
- expression_builder.filter = @filter
147
- begin
148
- expression = Expression.create(table)
149
- case cover_type
175
+ def filter_shard(context)
176
+ return if context.range_index
177
+
178
+ if context.cover_type == :all and @filter.nil?
179
+ if @post_filter and @dynamic_columns.have_filtered?
180
+ filtered_table = context.table.select_all
181
+ @temporary_tables << filtered_table
182
+ context.table = filtered_table
183
+ end
184
+ else
185
+ expression = Expression.create(context.table)
186
+ @temporary_expressions << expression
187
+ expression_builder = RangeExpressionBuilder.new(context.shard.key,
188
+ @target_range)
189
+ expression_builder.filter = @filter
190
+ case context.cover_type
150
191
  when :all
151
192
  expression_builder.build_all(expression)
152
193
  when :partial_min
@@ -156,16 +197,33 @@ module Groonga
156
197
  when :partial_min_and_max
157
198
  expression_builder.build_partial_min_and_max(expression)
158
199
  end
159
- filtered_table = table.select(expression)
160
- filtered_table.size
161
- ensure
162
- filtered_table.close if filtered_table
163
- expression.close if expression
200
+ filtered_table = context.table.select(expression)
201
+ @temporary_tables << filtered_table
202
+ context.table = filtered_table
164
203
  end
165
204
  end
166
205
 
167
- def count_n_records_in_range(range_index, cover_type)
168
- case cover_type
206
+ def count_shard(context)
207
+ if context.range_index
208
+ count_n_records_in_range(context)
209
+ else
210
+ context.table.size
211
+ end
212
+ end
213
+
214
+ def post_filter_shard(context)
215
+ expression = nil
216
+ post_filtered_table = nil
217
+ expression = Expression.create(context.table)
218
+ @temporary_expressions << expression
219
+ expression.parse(@post_filter)
220
+ filtered_table = context.table.select(expression)
221
+ @temporary_tables << filtered_table
222
+ context.table = filtered_table
223
+ end
224
+
225
+ def count_n_records_in_range(context)
226
+ case context.cover_type
169
227
  when :partial_min
170
228
  min = @target_range.min
171
229
  min_border = @target_range.min_border
@@ -197,7 +255,7 @@ module Groonga
197
255
  flags |= TableCursorFlags::LT
198
256
  end
199
257
 
200
- TableCursor.open(range_index.table,
258
+ TableCursor.open(context.range_index.table,
201
259
  :min => min,
202
260
  :max => max,
203
261
  :flags => flags) do |table_cursor|
@@ -16,6 +16,7 @@ module Groonga
16
16
  "output_columns",
17
17
  "use_range_index",
18
18
  "post_filter",
19
+ "sort_keys",
19
20
  ])
20
21
 
21
22
  def run_body(input)
@@ -73,26 +74,30 @@ module Groonga
73
74
  key << "#{input[:output_columns]}\0"
74
75
  key << "#{input[:use_range_index]}\0"
75
76
  key << "#{input[:post_filter]}\0"
77
+ key << "#{input[:sort_keys]}\0"
76
78
  dynamic_columns = DynamicColumns.parse(input)
77
79
  key << dynamic_columns.cache_key
78
80
  key
79
81
  end
80
82
 
81
83
  class ExecuteContext
84
+ include KeysParsable
85
+
82
86
  attr_reader :use_range_index
83
87
  attr_reader :enumerator
84
88
  attr_reader :order
85
89
  attr_reader :filter
86
90
  attr_reader :offset
87
91
  attr_reader :limit
92
+ attr_reader :post_filter
93
+ attr_reader :sort_keys
88
94
  attr_reader :dynamic_columns
89
95
  attr_accessor :current_offset
90
96
  attr_accessor :current_limit
91
97
  attr_reader :result_sets
92
- attr_reader :unsorted_result_sets
93
98
  attr_reader :temporary_tables
94
99
  attr_reader :threshold
95
- attr_reader :post_filter
100
+ attr_reader :time_classify_types
96
101
  def initialize(input)
97
102
  @input = input
98
103
  @use_range_index = parse_use_range_index(@input[:use_range_index])
@@ -101,34 +106,34 @@ module Groonga
101
106
  @filter = @input[:filter]
102
107
  @offset = (@input[:offset] || 0).to_i
103
108
  @limit = (@input[:limit] || 10).to_i
109
+ @post_filter = @input[:post_filter]
110
+ @sort_keys = parse_keys(@input[:sort_keys])
111
+
104
112
  @dynamic_columns = DynamicColumns.parse(@input)
105
113
 
106
114
  @current_offset = @offset
107
115
  @current_limit = @limit
108
116
 
109
117
  @result_sets = []
110
- @unsorted_result_sets = []
111
-
112
118
  @temporary_tables = []
113
119
 
114
120
  @threshold = compute_threshold
115
121
 
116
- @post_filter = @input[:post_filter]
122
+ @time_classify_types = detect_time_classify_types
117
123
  end
118
124
 
119
125
  def close
120
- @unsorted_result_sets.each do |result_set|
121
- result_set.close if result_set.temporary?
122
- end
123
- @result_sets.each do |result_set|
124
- result_set.close if result_set.temporary?
125
- end
126
-
127
126
  @temporary_tables.each do |table|
128
127
  table.close
129
128
  end
130
129
  end
131
130
 
131
+ def need_look_ahead?
132
+ return false unless @dynamic_columns.have_window_function?
133
+ return false unless @time_classify_types.empty?
134
+ true
135
+ end
136
+
132
137
  private
133
138
  def parse_use_range_index(use_range_index)
134
139
  case use_range_index
@@ -163,6 +168,33 @@ module Groonga
163
168
  default_threshold = 0.2
164
169
  (threshold_env || default_threshold).to_f
165
170
  end
171
+
172
+ def detect_time_classify_types
173
+ window_group_keys = []
174
+ @dynamic_columns.each_filtered do |dynamic_column|
175
+ window_group_keys.concat(dynamic_column.window_group_keys)
176
+ end
177
+ return [] if window_group_keys.empty?
178
+
179
+ types = []
180
+ @dynamic_columns.each do |dynamic_column|
181
+ next unless window_group_keys.include?(dynamic_column.label)
182
+ case dynamic_column.value.strip
183
+ when /\Atime_classify_(.+?)\s*\(\s*([a-zA-Z\d_]+)\s*[,)]/
184
+ type = $1
185
+ column = $2
186
+ next if column != @enumerator.shard_key_name
187
+
188
+ case type
189
+ when "minute", "second"
190
+ types << type
191
+ when "day", "hour"
192
+ types << type
193
+ end
194
+ end
195
+ end
196
+ types
197
+ end
166
198
  end
167
199
 
168
200
  class Executor
@@ -172,20 +204,13 @@ module Groonga
172
204
 
173
205
  def execute
174
206
  first_shard = nil
175
- enumerator = @context.enumerator
176
- target_range = enumerator.target_range
177
- if @context.order == :descending
178
- each_method = :reverse_each
179
- else
180
- each_method = :each
181
- end
182
- enumerator.send(each_method) do |shard, shard_range|
183
- first_shard ||= shard
184
- shard_executor = ShardExecutor.new(@context, shard, shard_range)
207
+ each_shard_executor do |shard_executor|
208
+ first_shard ||= shard_executor.shard
185
209
  shard_executor.execute
186
- break if @context.current_limit == 0
210
+ break if @context.current_limit.zero?
187
211
  end
188
212
  if first_shard.nil?
213
+ enumerator = @context.enumerator
189
214
  message =
190
215
  "[logical_range_filter] no shard exists: " +
191
216
  "logical_table: <#{enumerator.logical_table}>: " +
@@ -195,82 +220,411 @@ module Groonga
195
220
  if @context.result_sets.empty?
196
221
  result_set = HashTable.create(:flags => ObjectFlags::WITH_SUBREC,
197
222
  :key_type => first_shard.table)
198
- @context.dynamic_columns.each_initial do |dynamic_column|
199
- dynamic_column.apply(result_set)
223
+ @context.temporary_tables << result_set
224
+ targets = [[result_set]]
225
+ @context.dynamic_columns.apply_initial(targets)
226
+ @context.dynamic_columns.apply_filtered(targets)
227
+ @context.result_sets << result_set
228
+ end
229
+ end
230
+
231
+ private
232
+ def each_shard_executor(&block)
233
+ enumerator = @context.enumerator
234
+ target_range = enumerator.target_range
235
+ if @context.order == :descending
236
+ each_method = :reverse_each
237
+ else
238
+ each_method = :each
239
+ end
240
+ if @context.need_look_ahead?
241
+ executors = []
242
+ previous_executor = nil
243
+ enumerator.send(each_method) do |shard, shard_range|
244
+ current_executor = ShardExecutor.new(@context, shard, shard_range)
245
+ if previous_executor
246
+ previous_executor.next_executor = current_executor
247
+ current_executor.previous_executor = previous_executor
248
+ executors << previous_executor
249
+ end
250
+ previous_executor = current_executor
200
251
  end
201
- @context.dynamic_columns.each_filtered do |dynamic_column|
202
- dynamic_column.apply(result_set)
252
+ executors << previous_executor if previous_executor
253
+ executors.each(&block)
254
+ else
255
+ enumerator.send(each_method) do |shard, shard_range|
256
+ yield(ShardExecutor.new(@context, shard, shard_range))
203
257
  end
204
- @context.result_sets << result_set
205
258
  end
206
259
  end
207
260
  end
208
261
 
262
+ class Window
263
+ include Comparable
264
+
265
+ attr_reader :unit
266
+ attr_reader :step
267
+ def initialize(context, shard, shard_range, unit, step)
268
+ @context = context
269
+ @shard = shard
270
+ @shard_range = shard_range
271
+ @unit = unit
272
+ @step = step
273
+
274
+ @between = Groonga::Context.instance["between"]
275
+
276
+ @target_range = @context.enumerator.target_range
277
+
278
+ case @unit
279
+ when :day
280
+ @step_second = (60 * 60 * 24) * @step
281
+ when :hour
282
+ @step_second = (60 * 60) * @step
283
+ else
284
+ raise InvalidArgument "Unexpected unit: #{@unit.inspect}"
285
+ end
286
+ end
287
+
288
+ def <=>(other)
289
+ case @unit
290
+ when other.unit
291
+ @step <=> other.unit
292
+ when :day # @unit == :day && other.unit == :hour
293
+ 1
294
+ else # @unit == :hour && other.unit == :day
295
+ -1
296
+ end
297
+ end
298
+
299
+ def each(table)
300
+ min = create_min_edge
301
+ max = create_max_edge(min)
302
+ shard_key = table.find_column(@context.enumerator.shard_key_name)
303
+ begin
304
+ current_min = min
305
+ while current_min < max do
306
+ next_min = compute_next_min_edge(current_min)
307
+ if next_min > max
308
+ current_max = max
309
+ else
310
+ current_max = WindowEdge.new(next_min.year,
311
+ next_min.month,
312
+ next_min.day,
313
+ next_min.hour,
314
+ next_min.minute,
315
+ next_min.second,
316
+ next_min.microsecond,
317
+ :exclude)
318
+ end
319
+ windowed_table = select_by_range(table,
320
+ shard_key,
321
+ current_min,
322
+ current_max)
323
+ if windowed_table.empty?
324
+ windowed_table.close
325
+ else
326
+ message = "[logical_range_filter][window] "
327
+ message << "<#{@shard.table_name}>: "
328
+ message << inspect_range(current_min, current_max)
329
+ Context.instance.logger.log(Logger::Level::DEBUG,
330
+ __FILE__,
331
+ __LINE__,
332
+ __method__.to_s,
333
+ message)
334
+ yield(windowed_table)
335
+ end
336
+ current_min = next_min
337
+ end
338
+ ensure
339
+ shard_key.close
340
+ end
341
+ end
342
+
343
+ private
344
+ def create_min_edge
345
+ min = @target_range.min
346
+ if min
347
+ year = min.year
348
+ month = min.month
349
+ day = min.day
350
+ hour = min.hour
351
+ minute = min.min
352
+ second = min.sec
353
+ microsecond = min.usec
354
+ border = @target_range.min_border
355
+ else
356
+ year = @shard_range.year
357
+ month = @shard_range.month
358
+ day = 1
359
+ hour = 0
360
+ minute = 0
361
+ second = 0
362
+ microsecond = 0
363
+ border = :include
364
+ end
365
+ WindowEdge.new(year, month, day, hour, minute, second, microsecond,
366
+ border)
367
+ end
368
+
369
+ def create_max_edge(min)
370
+ max = @target_range.max
371
+ if max
372
+ year = max.year
373
+ month = max.month
374
+ day = max.day
375
+ hour = max.hour
376
+ minute = max.min
377
+ second = max.sec
378
+ microsecond = max.usec
379
+ border = @target_range.max_border
380
+ else
381
+ next_shard_edge = @shard_range.least_over_time
382
+ year = next_shard_edge.year
383
+ month = next_shard_edge.month
384
+ day = next_shard_edge.day
385
+ hour = 0
386
+ minute = 0
387
+ second = 0
388
+ microsecond = 0
389
+ border = :exclude
390
+ end
391
+ WindowEdge.new(year, month, day, hour, minute, second, microsecond,
392
+ border)
393
+ end
394
+
395
+ def compute_next_min_edge(current_min)
396
+ next_edge = Time.at(current_min.to_time.to_i + @step_second)
397
+ year = next_edge.year
398
+ month = next_edge.month
399
+ day = next_edge.day
400
+ if @unit == :day
401
+ hour = 0
402
+ else
403
+ hour = next_edge.hour
404
+ end
405
+ minute = 0
406
+ second = 0
407
+ microsecond = 0
408
+ border = :include
409
+ WindowEdge.new(year, month, day, hour, minute, second, microsecond,
410
+ border)
411
+ end
412
+
413
+ def select_by_range(table, shard_key, min, max)
414
+ expression = Expression.create(table)
415
+ begin
416
+ expression.append_object(@between, Operator::PUSH, 1)
417
+ expression.append_object(shard_key, Operator::PUSH, 1)
418
+ expression.append_operator(Operator::GET_VALUE, 1)
419
+ expression.append_constant(min.to_s, Operator::PUSH, 1)
420
+ expression.append_constant(min.border, Operator::PUSH, 1)
421
+ expression.append_constant(max.to_s, Operator::PUSH, 1)
422
+ expression.append_constant(max.border, Operator::PUSH, 1)
423
+ expression.append_operator(Operator::CALL, 5)
424
+ table.select(expression)
425
+ ensure
426
+ expression.close
427
+ end
428
+ end
429
+
430
+ def inspect_range(min, max)
431
+ range = ""
432
+ if min.border == :include
433
+ range << "["
434
+ else
435
+ range << "("
436
+ end
437
+ range << min.to_s
438
+ range << ","
439
+ range << max.to_s
440
+ if max.border == :include
441
+ range << "]"
442
+ else
443
+ range << ")"
444
+ end
445
+ range
446
+ end
447
+ end
448
+
449
+ class WindowEdge
450
+ include Comparable
451
+
452
+ attr_reader :year
453
+ attr_reader :month
454
+ attr_reader :day
455
+ attr_reader :hour
456
+ attr_reader :minute
457
+ attr_reader :second
458
+ attr_reader :microsecond
459
+ attr_reader :border
460
+ def initialize(year, month, day, hour, minute, second, microsecond,
461
+ border)
462
+ @year = year
463
+ @month = month
464
+ @day = day
465
+ @hour = hour
466
+ @minute = minute
467
+ @second = second
468
+ @microsecond = microsecond
469
+ @border = border
470
+ end
471
+
472
+ def to_s
473
+ format = "%04d/%02d/%02d %02d:%02d:%02d"
474
+ format_values = [@year, @month, @day, @hour, @minute, @second]
475
+ unless @microsecond.zero?
476
+ format << ".%06d"
477
+ format_values << @microsecond
478
+ end
479
+ format % format_values
480
+ end
481
+
482
+ def to_time
483
+ Time.local(@year, @month, @day, @hour, @minute, @second, @microsecond)
484
+ end
485
+
486
+ def values
487
+ [@year, @month, @day, @hour, @minute, @second, @microsecond]
488
+ end
489
+
490
+ def <=>(other)
491
+ (values + [@border == :include ? 1 : 0]) <=>
492
+ (other.values + [other.border == :include ? 1 : 0])
493
+ end
494
+ end
495
+
209
496
  class ShardExecutor
497
+ attr_reader :shard
498
+ attr_writer :previous_executor
499
+ attr_writer :next_executor
210
500
  def initialize(context, shard, shard_range)
211
501
  @context = context
212
502
  @shard = shard
213
503
  @shard_range = shard_range
214
504
 
505
+ @shard_key = shard.key
215
506
  @target_table = @shard.table
216
507
 
217
508
  @filter = @context.filter
218
509
  @post_filter = @context.post_filter
219
510
  @result_sets = @context.result_sets
220
- @unsorted_result_sets = @context.unsorted_result_sets
511
+ @filtered_result_sets = []
512
+ @temporary_tables = @context.temporary_tables
221
513
 
222
514
  @target_range = @context.enumerator.target_range
223
515
 
224
516
  @cover_type = @target_range.cover_type(@shard_range)
517
+
518
+ @previous_executor = nil
519
+ @next_executor = nil
520
+
521
+ @initital_table = nil
522
+
523
+ @range_index = nil
524
+ @window = nil
525
+
526
+ @prepared = false
527
+ @filtered = false
225
528
  end
226
529
 
227
530
  def execute
228
- return if @cover_type == :none
229
- return if @target_table.empty?
531
+ ensure_filtered
532
+
533
+ return if @filtered_result_sets.empty?
534
+
535
+ if @window
536
+ @filtered_result_sets.each do |result_set|
537
+ @window.each(result_set) do |windowed_result_set|
538
+ @temporary_tables << windowed_result_set
539
+ if @context.dynamic_columns.have_filtered?
540
+ apply_targets = [[windowed_result_set]]
541
+ @context.dynamic_columns.apply_filtered(apply_targets)
542
+ end
543
+ sort_result_set(windowed_result_set)
544
+ return if @context.current_limit.zero?
545
+ end
546
+ end
547
+ else
548
+ apply_targets = []
549
+ if @previous_executor
550
+ @previous_executor.add_filtered_stage_context(apply_targets)
551
+ end
552
+ @filtered_result_sets.each do |result_set|
553
+ apply_targets << [result_set]
554
+ end
555
+ if @next_executor
556
+ @next_executor.add_filtered_stage_context(apply_targets)
557
+ end
558
+ options = {}
559
+ if @context.need_look_ahead?
560
+ options[:normal] = false
561
+ end
562
+ @context.dynamic_columns.apply_filtered(apply_targets, options)
563
+ @filtered_result_sets.each do |result_set|
564
+ sort_result_set(result_set)
565
+ end
566
+ end
567
+ end
230
568
 
231
- shard_key = @shard.key
232
- if shard_key.nil?
569
+ def add_initial_stage_context(apply_targets)
570
+ ensure_prepared
571
+ return unless @initial_table
572
+ apply_targets << [@initial_table, {context: true}]
573
+ end
574
+
575
+ def add_filtered_stage_context(apply_targets)
576
+ ensure_filtered
577
+ @filtered_result_sets.each do |table|
578
+ apply_targets << [table, {context: true}]
579
+ end
580
+ end
581
+
582
+ private
583
+ def have_record?
584
+ return false if @cover_type == :none
585
+ return false if @target_table.empty?
586
+ true
587
+ end
588
+
589
+ def ensure_prepared
590
+ return if @prepared
591
+ @prepared = true
592
+
593
+ return unless have_record?
594
+
595
+ if @shard_key.nil?
233
596
  message = "[logical_range_filter] shard_key doesn't exist: " +
234
597
  "<#{@shard.key_name}>"
235
598
  raise InvalidArgument, message
236
599
  end
237
600
 
238
- expression_builder = RangeExpressionBuilder.new(shard_key,
239
- @target_range)
240
- expression_builder.filter = @filter
241
-
242
- index_info = shard_key.find_index(Operator::LESS)
243
- if index_info
244
- range_index = index_info.index
245
- unless use_range_index?(range_index, expression_builder)
246
- range_index = nil
247
- end
248
- else
249
- range_index = nil
601
+ @expression_builder = RangeExpressionBuilder.new(@shard_key,
602
+ @target_range)
603
+ @expression_builder.filter = @filter
604
+ index_info = @shard_key.find_index(Operator::LESS)
605
+ if index_info and use_range_index?
606
+ @range_index = index_info.index
250
607
  end
251
608
 
252
- @context.dynamic_columns.each_initial do |dynamic_column|
253
- if @target_table == @shard.table
254
- if @cover_type == :all
255
- @target_table = @target_table.select_all
256
- else
257
- expression_builder.filter = nil
258
- @target_table = create_expression(@target_table) do |expression|
259
- expression_builder.build(expression, @shard_range)
260
- @target_table.select(expression)
261
- end
262
- @cover_type = :all
263
- expression_builder.filter = @filter
609
+ if @context.dynamic_columns.have_initial?
610
+ if @cover_type == :all
611
+ @target_table = @target_table.select_all
612
+ else
613
+ @expression_builder.filter = nil
614
+ @target_table = create_expression(@target_table) do |expression|
615
+ @expression_builder.build(expression, @shard_range)
616
+ @target_table.select(expression)
264
617
  end
265
- @context.temporary_tables << @target_table
618
+ @expression_builder.filter = @filter
619
+ @cover_type = :all
266
620
  end
267
- dynamic_column.apply(@target_table)
621
+ @temporary_tables << @target_table
622
+ @initial_table = @target_table
268
623
  end
269
624
 
270
- execute_filter(range_index, expression_builder)
625
+ @window = detect_window
271
626
  end
272
627
 
273
- private
274
628
  def decide_use_range_index(use, reason, line, method)
275
629
  message = "[logical_range_filter]"
276
630
  if use
@@ -289,7 +643,7 @@ module Groonga
289
643
  use
290
644
  end
291
645
 
292
- def use_range_index?(range_index, expression_builder)
646
+ def use_range_index?
293
647
  use_range_index_parameter_message =
294
648
  "force by use_range_index parameter"
295
649
  case @context.use_range_index
@@ -326,6 +680,11 @@ module Groonga
326
680
  return decide_use_range_index(false, reason, __LINE__, __method__)
327
681
  end
328
682
 
683
+ unless @context.sort_keys.empty?
684
+ reason = "sort_keys is used"
685
+ return decide_use_range_index(false, reason, __LINE__, __method__)
686
+ end
687
+
329
688
  current_limit = @context.current_limit
330
689
  if current_limit < 0
331
690
  reason = "limit is negative: <#{current_limit}>"
@@ -360,7 +719,7 @@ module Groonga
360
719
  when :all
361
720
  if @filter
362
721
  create_expression(table) do |expression|
363
- expression_builder.build_all(expression)
722
+ @expression_builder.build_all(expression)
364
723
  unless range_index_available_expression?(expression,
365
724
  __LINE__, __method__)
366
725
  return false
@@ -372,7 +731,7 @@ module Groonga
372
731
  end
373
732
  when :partial_min
374
733
  create_expression(table) do |expression|
375
- expression_builder.build_partial_min(expression)
734
+ @expression_builder.build_partial_min(expression)
376
735
  unless range_index_available_expression?(expression,
377
736
  __LINE__, __method__)
378
737
  return false
@@ -381,7 +740,7 @@ module Groonga
381
740
  end
382
741
  when :partial_max
383
742
  create_expression(table) do |expression|
384
- expression_builder.build_partial_max(expression)
743
+ @expression_builder.build_partial_max(expression)
385
744
  unless range_index_available_expression?(expression,
386
745
  __LINE__, __method__)
387
746
  return false
@@ -390,7 +749,7 @@ module Groonga
390
749
  end
391
750
  when :partial_min_and_max
392
751
  create_expression(table) do |expression|
393
- expression_builder.build_partial_min_and_max(expression)
752
+ @expression_builder.build_partial_min_and_max(expression)
394
753
  unless range_index_available_expression?(expression,
395
754
  __LINE__, __method__)
396
755
  return false
@@ -463,65 +822,102 @@ module Groonga
463
822
  nil
464
823
  end
465
824
 
466
- def execute_filter(range_index, expression_builder)
825
+ def ensure_filtered
826
+ return if @filtered
827
+
828
+ @filtered = true
829
+
830
+ ensure_prepared
831
+ return unless have_record?
832
+
833
+ if @context.dynamic_columns.have_initial?
834
+ apply_targets = []
835
+ if @previous_executor
836
+ @previous_executor.add_initial_stage_context(apply_targets)
837
+ end
838
+ apply_targets << [@target_table]
839
+ if @next_executor
840
+ @next_executor.add_initial_stage_context(apply_targets)
841
+ end
842
+ @context.dynamic_columns.apply_initial(apply_targets)
843
+ end
844
+
845
+ execute_filter(@range_index)
846
+
847
+ return unless @context.need_look_ahead?
848
+
849
+ apply_targets = []
850
+ @filtered_result_sets = @filtered_result_sets.collect do |result_set|
851
+ if result_set == @shard.table
852
+ result_set = result_set.select_all
853
+ @temporary_tables << result_set
854
+ end
855
+ apply_targets << [result_set]
856
+ result_set
857
+ end
858
+ @context.dynamic_columns.apply_filtered(apply_targets,
859
+ window_function: false)
860
+ end
861
+
862
+ def execute_filter(range_index)
467
863
  case @cover_type
468
864
  when :all
469
- filter_shard_all(range_index, expression_builder)
865
+ filter_shard_all(range_index)
470
866
  when :partial_min
471
867
  if range_index
472
- filter_by_range(range_index, expression_builder,
868
+ filter_by_range(range_index,
473
869
  @target_range.min, @target_range.min_border,
474
870
  nil, nil)
475
871
  else
476
872
  filter_table do |expression|
477
- expression_builder.build_partial_min(expression)
873
+ @expression_builder.build_partial_min(expression)
478
874
  end
479
875
  end
480
876
  when :partial_max
481
877
  if range_index
482
- filter_by_range(range_index, expression_builder,
878
+ filter_by_range(range_index,
483
879
  nil, nil,
484
880
  @target_range.max, @target_range.max_border)
485
881
  else
486
882
  filter_table do |expression|
487
- expression_builder.build_partial_max(expression)
883
+ @expression_builder.build_partial_max(expression)
488
884
  end
489
885
  end
490
886
  when :partial_min_and_max
491
887
  if range_index
492
- filter_by_range(range_index, expression_builder,
888
+ filter_by_range(range_index,
493
889
  @target_range.min, @target_range.min_border,
494
890
  @target_range.max, @target_range.max_border)
495
891
  else
496
892
  filter_table do |expression|
497
- expression_builder.build_partial_min_and_max(expression)
893
+ @expression_builder.build_partial_min_and_max(expression)
498
894
  end
499
895
  end
500
896
  end
501
897
  end
502
898
 
503
- def filter_shard_all(range_index, expression_builder)
899
+ def filter_shard_all(range_index)
504
900
  table = @target_table
505
901
  if @filter.nil?
506
902
  if @post_filter.nil? and table.size <= @context.current_offset
507
903
  @context.current_offset -= table.size
508
904
  return
509
905
  end
510
- if range_index
511
- filter_by_range(range_index, expression_builder,
906
+ if @range_index
907
+ filter_by_range(range_index,
512
908
  nil, nil,
513
909
  nil, nil)
514
910
  else
515
- sort_result_set(table)
911
+ add_filtered_result_set(table)
516
912
  end
517
913
  else
518
- if range_index
519
- filter_by_range(range_index, expression_builder,
914
+ if @range_index
915
+ filter_by_range(range_index,
520
916
  nil, nil,
521
917
  nil, nil)
522
918
  else
523
919
  filter_table do |expression|
524
- expression_builder.build_all(expression)
920
+ @expression_builder.build_all(expression)
525
921
  end
526
922
  end
527
923
  end
@@ -536,8 +932,7 @@ module Groonga
536
932
  end
537
933
  end
538
934
 
539
- def filter_by_range(range_index, expression_builder,
540
- min, min_border, max, max_border)
935
+ def filter_by_range(range_index, min, min_border, max, max_border)
541
936
  lexicon = range_index.domain
542
937
  data_table = range_index.range
543
938
  flags = build_range_search_flags(min_border, max_border)
@@ -584,18 +979,18 @@ module Groonga
584
979
  decide_use_range_index(false,
585
980
  fallback_message,
586
981
  __LINE__, __method__)
587
- execute_filter(nil, expression_builder)
982
+ execute_filter(nil)
588
983
  return
589
984
  end
590
985
  end
591
- rescue
986
+ rescue => error
592
987
  result_set.close
593
- raise
988
+ raise error
594
989
  end
595
990
 
596
991
  if n_matched_records <= @context.current_offset
597
992
  @context.current_offset -= n_matched_records
598
- result_set.close
993
+ @temporary_tables << result_set
599
994
  return
600
995
  end
601
996
 
@@ -605,6 +1000,7 @@ module Groonga
605
1000
  if @context.current_limit > 0
606
1001
  @context.current_limit -= result_set.size
607
1002
  end
1003
+ @temporary_tables << result_set
608
1004
  @result_sets << result_set
609
1005
  end
610
1006
 
@@ -649,7 +1045,8 @@ module Groonga
649
1045
  create_expression(table) do |expression|
650
1046
  yield(expression)
651
1047
  result_set = table.select(expression)
652
- sort_result_set(result_set)
1048
+ @temporary_tables << result_set
1049
+ add_filtered_result_set(result_set)
653
1050
  end
654
1051
  end
655
1052
 
@@ -660,40 +1057,41 @@ module Groonga
660
1057
  end
661
1058
  end
662
1059
 
663
- def sort_result_set(result_set)
664
- @context.temporary_tables.delete(result_set)
665
-
666
- if result_set.empty?
667
- result_set.close if result_set.temporary?
668
- return
669
- end
670
-
671
- @context.dynamic_columns.each_filtered do |dynamic_column|
672
- if result_set == @shard.table
673
- result_set = result_set.select_all
674
- end
675
- dynamic_column.apply(result_set)
676
- end
1060
+ def add_filtered_result_set(result_set)
1061
+ return if result_set.empty?
1062
+ @filtered_result_sets << result_set
1063
+ end
677
1064
 
1065
+ def sort_result_set(result_set)
678
1066
  unless @post_filter.nil?
679
- filtered_table = result_set
680
- result_set = apply_post_filter(filtered_table)
681
- @context.temporary_tables << filtered_table
1067
+ result_set = apply_post_filter(result_set)
1068
+ @temporary_tables << result_set
682
1069
  end
683
1070
 
684
1071
  if result_set.size <= @context.current_offset
685
1072
  @context.current_offset -= result_set.size
686
- result_set.close if result_set.temporary?
687
1073
  return
688
1074
  end
689
1075
 
690
- @unsorted_result_sets << result_set if result_set.temporary?
691
- sort_keys = [
692
- {
693
- :key => @context.enumerator.shard_key_name,
694
- :order => @context.order,
695
- },
696
- ]
1076
+ if @context.sort_keys.empty?
1077
+ sort_keys = [
1078
+ {
1079
+ :key => @context.enumerator.shard_key_name,
1080
+ :order => @context.order,
1081
+ },
1082
+ ]
1083
+ else
1084
+ sort_keys = @context.sort_keys.collect do |sort_key|
1085
+ if sort_key.start_with?("-")
1086
+ key = sort_key[1..-1]
1087
+ order = :descending
1088
+ else
1089
+ key = sort_key
1090
+ order = :ascending
1091
+ end
1092
+ {:key => key, :order => order}
1093
+ end
1094
+ end
697
1095
  if @context.current_limit > 0
698
1096
  limit = @context.current_limit
699
1097
  else
@@ -702,6 +1100,7 @@ module Groonga
702
1100
  sorted_result_set = result_set.sort(sort_keys,
703
1101
  :offset => @context.current_offset,
704
1102
  :limit => limit)
1103
+ @temporary_tables << sorted_result_set
705
1104
  @result_sets << sorted_result_set
706
1105
  if @context.current_offset > 0
707
1106
  @context.current_offset = 0
@@ -710,6 +1109,22 @@ module Groonga
710
1109
  @context.current_limit -= sorted_result_set.size
711
1110
  end
712
1111
  end
1112
+
1113
+ def detect_window
1114
+ # TODO: return nil if result_set is small enough
1115
+ windows = []
1116
+ @context.time_classify_types.each do |type|
1117
+ case type
1118
+ when "minute", "second"
1119
+ windows << Window.new(@context, @shard, @shard_range, :hour, 1)
1120
+ when "day", "hour"
1121
+ unless @shard_range.is_a?(LogicalEnumerator::DayShardRange)
1122
+ windows << Window.new(@context, @shard, @shard_range, :day, 1)
1123
+ end
1124
+ end
1125
+ end
1126
+ windows.max
1127
+ end
713
1128
  end
714
1129
  end
715
1130
  end