rroonga 9.0.3-x86-mingw32 → 9.0.7-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/doc/text/news.md +30 -0
 - data/ext/groonga/rb-grn-context.c +27 -0
 - data/ext/groonga/rb-grn-flushable.c +7 -0
 - data/ext/groonga/rb-grn-index-column.c +28 -0
 - data/ext/groonga/rb-grn-index-cursor.c +19 -0
 - data/ext/groonga/rb-grn-logger.c +17 -3
 - data/ext/groonga/rb-grn-object.c +236 -22
 - data/ext/groonga/rb-grn-table.c +68 -42
 - data/ext/groonga/rb-grn.h +1 -1
 - data/lib/2.3/groonga.so +0 -0
 - data/lib/2.4/groonga.so +0 -0
 - data/lib/2.5/groonga.so +0 -0
 - data/lib/2.6/groonga.so +0 -0
 - data/lib/groonga/dumper.rb +3 -0
 - data/lib/groonga/record.rb +2 -2
 - data/test/groonga-test-utils.rb +28 -5
 - data/test/run-test.rb +0 -2
 - data/test/test-accessor.rb +63 -7
 - data/test/test-context.rb +25 -0
 - data/test/test-exception.rb +5 -0
 - data/test/test-flushable.rb +51 -6
 - data/test/test-index-column.rb +67 -6
 - data/test/test-index-cursor.rb +26 -0
 - data/test/test-logger.rb +56 -11
 - data/test/test-plugin.rb +1 -0
 - data/test/test-query-logger.rb +4 -3
 - data/test/test-record.rb +2 -1
 - data/test/test-remote.rb +40 -10
 - data/test/test-schema-dumper.rb +13 -0
 - data/test/test-table.rb +21 -1
 - data/test/test-variable.rb +23 -7
 - data/vendor/local/bin/generate-pdb.bat +21 -21
 - data/vendor/local/bin/grndb.exe +0 -0
 - data/vendor/local/bin/groonga-benchmark.exe +0 -0
 - data/vendor/local/bin/groonga-suggest-create-dataset.exe +0 -0
 - data/vendor/local/bin/groonga.exe +0 -0
 - data/vendor/local/bin/libgroonga-0.dll +0 -0
 - data/vendor/local/bin/libmecab-2.dll +0 -0
 - data/vendor/local/bin/libmsgpackc.dll +0 -0
 - data/vendor/local/bin/libonigmo-6.dll +0 -0
 - data/vendor/local/bin/libpcre-1.dll +0 -0
 - data/vendor/local/bin/libpcrecpp-0.dll +0 -0
 - data/vendor/local/bin/libpcreposix-0.dll +0 -0
 - data/vendor/local/bin/lz4.exe +0 -0
 - data/vendor/local/bin/lz4c.exe +0 -0
 - data/vendor/local/bin/lz4cat.exe +0 -0
 - data/vendor/local/bin/mecab.exe +0 -0
 - data/vendor/local/bin/pcregrep.exe +0 -0
 - data/vendor/local/bin/pcretest.exe +0 -0
 - data/vendor/local/bin/unlz4.exe +0 -0
 - data/vendor/local/bin/zlib1.dll +0 -0
 - data/vendor/local/cmake/RapidJSONConfig.cmake +3 -0
 - data/vendor/local/cmake/RapidJSONConfigVersion.cmake +10 -0
 - data/vendor/local/include/groonga/groonga/expr.h +16 -0
 - data/vendor/local/include/groonga/groonga/obj.h +8 -0
 - data/vendor/local/include/groonga/groonga/output.h +5 -0
 - data/vendor/local/include/groonga/groonga/version.h +2 -2
 - data/vendor/local/include/rapidjson/allocators.h +271 -0
 - data/vendor/local/include/rapidjson/document.h +2575 -0
 - data/vendor/local/include/rapidjson/encodedstream.h +299 -0
 - data/vendor/local/include/rapidjson/encodings.h +716 -0
 - data/vendor/local/include/rapidjson/error/en.h +74 -0
 - data/vendor/local/include/rapidjson/error/error.h +155 -0
 - data/vendor/local/include/rapidjson/filereadstream.h +99 -0
 - data/vendor/local/include/rapidjson/filewritestream.h +104 -0
 - data/vendor/local/include/rapidjson/fwd.h +151 -0
 - data/vendor/local/include/rapidjson/internal/biginteger.h +290 -0
 - data/vendor/local/include/rapidjson/internal/diyfp.h +258 -0
 - data/vendor/local/include/rapidjson/internal/dtoa.h +245 -0
 - data/vendor/local/include/rapidjson/internal/ieee754.h +78 -0
 - data/vendor/local/include/rapidjson/internal/itoa.h +304 -0
 - data/vendor/local/include/rapidjson/internal/meta.h +181 -0
 - data/vendor/local/include/rapidjson/internal/pow10.h +55 -0
 - data/vendor/local/include/rapidjson/internal/regex.h +701 -0
 - data/vendor/local/include/rapidjson/internal/stack.h +230 -0
 - data/vendor/local/include/rapidjson/internal/strfunc.h +55 -0
 - data/vendor/local/include/rapidjson/internal/strtod.h +269 -0
 - data/vendor/local/include/rapidjson/internal/swap.h +46 -0
 - data/vendor/local/include/rapidjson/istreamwrapper.h +115 -0
 - data/vendor/local/include/rapidjson/memorybuffer.h +70 -0
 - data/vendor/local/include/rapidjson/memorystream.h +71 -0
 - data/vendor/local/include/rapidjson/msinttypes/inttypes.h +316 -0
 - data/vendor/local/include/rapidjson/msinttypes/stdint.h +300 -0
 - data/vendor/local/include/rapidjson/ostreamwrapper.h +81 -0
 - data/vendor/local/include/rapidjson/pointer.h +1358 -0
 - data/vendor/local/include/rapidjson/prettywriter.h +255 -0
 - data/vendor/local/include/rapidjson/rapidjson.h +615 -0
 - data/vendor/local/include/rapidjson/reader.h +1879 -0
 - data/vendor/local/include/rapidjson/schema.h +2006 -0
 - data/vendor/local/include/rapidjson/stream.h +179 -0
 - data/vendor/local/include/rapidjson/stringbuffer.h +117 -0
 - data/vendor/local/include/rapidjson/writer.h +610 -0
 - data/vendor/local/lib/groonga/plugins/functions/index_column.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/index_column.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/index_column.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/index_column.la +1 -1
 - data/vendor/local/lib/groonga/plugins/functions/math.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/math.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/math.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/math.la +1 -1
 - data/vendor/local/lib/groonga/plugins/functions/number.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/number.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/number.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/number.la +1 -1
 - data/vendor/local/lib/groonga/plugins/functions/string.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/string.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/string.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/string.la +1 -1
 - data/vendor/local/lib/groonga/plugins/functions/time.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/time.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/time.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/time.la +1 -1
 - data/vendor/local/lib/groonga/plugins/functions/vector.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/vector.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/vector.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/functions/vector.la +1 -1
 - data/vendor/local/lib/groonga/plugins/normalizers/mysql.a +0 -0
 - data/vendor/local/lib/groonga/plugins/normalizers/mysql.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/normalizers/mysql.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/query_expanders/tsv.a +0 -0
 - data/vendor/local/lib/groonga/plugins/query_expanders/tsv.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/query_expanders/tsv.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/query_expanders/tsv.la +1 -1
 - data/vendor/local/lib/groonga/plugins/sharding/dynamic_columns.rb +44 -18
 - data/vendor/local/lib/groonga/plugins/sharding/logical_count.rb +9 -8
 - data/vendor/local/lib/groonga/plugins/sharding/logical_range_filter.rb +48 -15
 - data/vendor/local/lib/groonga/plugins/sharding/logical_select.rb +84 -58
 - data/vendor/local/lib/groonga/plugins/sharding/range_expression_builder.rb +1 -1
 - data/vendor/local/lib/groonga/plugins/suggest/suggest.a +0 -0
 - data/vendor/local/lib/groonga/plugins/suggest/suggest.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/suggest/suggest.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/suggest/suggest.la +1 -1
 - data/vendor/local/lib/groonga/plugins/token_filters/stop_word.a +0 -0
 - data/vendor/local/lib/groonga/plugins/token_filters/stop_word.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/token_filters/stop_word.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/token_filters/stop_word.la +1 -1
 - data/vendor/local/lib/groonga/plugins/tokenizers/mecab.a +0 -0
 - data/vendor/local/lib/groonga/plugins/tokenizers/mecab.dll +0 -0
 - data/vendor/local/lib/groonga/plugins/tokenizers/mecab.dll.a +0 -0
 - data/vendor/local/lib/groonga/plugins/tokenizers/mecab.la +1 -1
 - data/vendor/local/lib/groonga/scripts/ruby/command.rb +3 -4
 - data/vendor/local/lib/groonga/scripts/ruby/command_line/grndb.rb +267 -77
 - data/vendor/local/lib/groonga/scripts/ruby/command_line_parser.rb +96 -0
 - data/vendor/local/lib/groonga/scripts/ruby/expression_rewriters/optimizer.rb +1 -1
 - data/vendor/local/lib/groonga/scripts/ruby/expression_tree/binary_operation.rb +30 -7
 - data/vendor/local/lib/groonga/scripts/ruby/initialize/pre.rb +5 -0
 - data/vendor/local/lib/groonga/scripts/ruby/loggable.rb +8 -0
 - data/vendor/local/lib/groonga/scripts/ruby/logger/flags.rb +70 -0
 - data/vendor/local/lib/groonga/scripts/ruby/query_loggable.rb +8 -0
 - data/vendor/local/lib/groonga/scripts/ruby/scan_info_builder.rb +1 -1
 - data/vendor/local/lib/groonga/scripts/ruby/scan_info_data.rb +2 -2
 - data/vendor/local/lib/groonga/scripts/ruby/time.rb +9 -0
 - data/vendor/local/lib/libgroonga.a +0 -0
 - data/vendor/local/lib/libgroonga.dll.a +0 -0
 - data/vendor/local/lib/libgroonga.la +1 -1
 - data/vendor/local/lib/liblz4.dll +0 -0
 - data/vendor/local/lib/liblz4.dll.1 +0 -0
 - data/vendor/local/lib/liblz4.dll.1.8.2 +0 -0
 - data/vendor/local/lib/libmecab.dll.a +0 -0
 - data/vendor/local/lib/libmsgpackc.dll.a +0 -0
 - data/vendor/local/lib/libonigmo.a +0 -0
 - data/vendor/local/lib/libonigmo.dll.a +0 -0
 - data/vendor/local/lib/libonigmo.la +1 -1
 - data/vendor/local/lib/libpcre.dll.a +0 -0
 - data/vendor/local/lib/libpcrecpp.dll.a +0 -0
 - data/vendor/local/lib/libpcreposix.dll.a +0 -0
 - data/vendor/local/lib/libz.dll.a +0 -0
 - data/vendor/local/lib/pkgconfig/groonga.pc +2 -2
 - data/vendor/local/libexec/mecab/mecab-cost-train.exe +0 -0
 - data/vendor/local/libexec/mecab/mecab-dict-gen.exe +0 -0
 - data/vendor/local/libexec/mecab/mecab-dict-index.exe +0 -0
 - data/vendor/local/libexec/mecab/mecab-system-eval.exe +0 -0
 - data/vendor/local/libexec/mecab/mecab-test-gen.exe +0 -0
 - data/vendor/local/share/doc/RapidJSON/examples/CMakeLists.txt +42 -0
 - data/vendor/local/share/doc/RapidJSON/examples/capitalize/capitalize.cpp +67 -0
 - data/vendor/local/share/doc/RapidJSON/examples/condense/condense.cpp +32 -0
 - data/vendor/local/share/doc/RapidJSON/examples/filterkey/filterkey.cpp +135 -0
 - data/vendor/local/share/doc/RapidJSON/examples/filterkeydom/filterkeydom.cpp +170 -0
 - data/vendor/local/share/doc/RapidJSON/examples/jsonx/jsonx.cpp +207 -0
 - data/vendor/local/share/doc/RapidJSON/examples/messagereader/messagereader.cpp +105 -0
 - data/vendor/local/share/doc/RapidJSON/examples/parsebyparts/parsebyparts.cpp +173 -0
 - data/vendor/local/share/doc/RapidJSON/examples/pretty/pretty.cpp +30 -0
 - data/vendor/local/share/doc/RapidJSON/examples/prettyauto/prettyauto.cpp +56 -0
 - data/vendor/local/share/doc/RapidJSON/examples/schemavalidator/schemavalidator.cpp +72 -0
 - data/vendor/local/share/doc/RapidJSON/examples/serialize/serialize.cpp +173 -0
 - data/vendor/local/share/doc/RapidJSON/examples/simpledom/simpledom.cpp +29 -0
 - data/vendor/local/share/doc/RapidJSON/examples/simplereader/simplereader.cpp +42 -0
 - data/vendor/local/share/doc/RapidJSON/examples/simplewriter/simplewriter.cpp +36 -0
 - data/vendor/local/share/doc/RapidJSON/examples/tutorial/tutorial.cpp +151 -0
 - data/vendor/local/share/doc/RapidJSON/readme.md +160 -0
 - data/vendor/local/share/doc/groonga/en/html/.buildinfo +1 -1
 - data/vendor/local/share/doc/groonga/en/html/_static/documentation_options.js +1 -1
 - data/vendor/local/share/doc/groonga/en/html/characteristic.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/client.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/community.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/build.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/build/unix_autotools.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/build/unix_cmake.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/build/windows_cmake.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/com.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/cooperation.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/query.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/release.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/repository.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/development/test.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/documentation.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/documentation/c-api.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/documentation/i18n.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/documentation/introduction.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/contribution/report.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/development.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/development/travis-ci.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/genindex.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/index.html +11 -7
 - data/vendor/local/share/doc/groonga/en/html/install.html +5 -4
 - data/vendor/local/share/doc/groonga/en/html/install/centos.html +6 -6
 - data/vendor/local/share/doc/groonga/en/html/install/debian.html +79 -8
 - data/vendor/local/share/doc/groonga/en/html/install/docker.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/install/fedora.html +6 -6
 - data/vendor/local/share/doc/groonga/en/html/install/mac_os_x.html +6 -6
 - data/vendor/local/share/doc/groonga/en/html/install/others.html +6 -6
 - data/vendor/local/share/doc/groonga/en/html/install/solaris.html +6 -6
 - data/vendor/local/share/doc/groonga/en/html/install/ubuntu.html +6 -6
 - data/vendor/local/share/doc/groonga/en/html/install/windows.html +12 -12
 - data/vendor/local/share/doc/groonga/en/html/limitations.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news.html +498 -206
 - data/vendor/local/share/doc/groonga/en/html/news/0.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/1.0.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/1.1.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/1.2.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/1.3.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/2.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/3.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/4.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/5.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/6.x.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/news/senna.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/objects.inv +0 -0
 - data/vendor/local/share/doc/groonga/en/html/reference.html +9 -6
 - data/vendor/local/share/doc/groonga/en/html/reference/alias.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/global_configurations.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_cache.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_column.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_command_version.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_content_type.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_ctx.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_db.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_encoding.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_expr.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_geo.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_hook.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_ii.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_index_cursor.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_info.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_inspect.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_match_escalation.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_obj.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_proc.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_search.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_table.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_table_cursor.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_thread.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_type.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/grn_user_data.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/overview.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/api/plugin.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/cast.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/column.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/columns/index.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/columns/pseudo.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/columns/scalar.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/columns/vector.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/command.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/command/command_version.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/command/output_format.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/command/pretty_print.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/command/request_id.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/command/request_timeout.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/command/return_code.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/cache_limit.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/check.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/clearlock.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/column_copy.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/column_create.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/column_list.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/column_remove.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/column_rename.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/config_delete.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/config_get.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/config_set.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/database_unmap.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/define_selector.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/defrag.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/delete.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/dump.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/io_flush.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/load.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/lock_acquire.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/lock_clear.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/lock_release.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/log_level.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/log_put.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/log_reopen.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_count.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_parameters.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_range_filter.html +77 -4
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_select.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_shard_list.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/logical_table_remove.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/normalize.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/normalizer_list.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/object_exist.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/object_inspect.html +78 -54
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/object_list.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/object_remove.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/plugin_register.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/plugin_unregister.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/query_expand.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/quit.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/range_filter.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/register.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/reindex.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/request_cancel.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/ruby_eval.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/ruby_load.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/schema.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/select.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/shutdown.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/status.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/suggest.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/table_copy.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/table_create.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/table_list.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/table_remove.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/table_rename.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/table_tokenize.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/thread_limit.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/tokenize.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/tokenizer_list.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/commands/truncate.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/configuration.html +6 -6
 - data/vendor/local/share/doc/groonga/en/html/reference/executables.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/executables/grndb.html +58 -4
 - data/vendor/local/share/doc/groonga/en/html/reference/executables/grnslap.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-benchmark.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-httpd.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-server-http.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-suggest-create-dataset.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-suggest-httpd.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga-suggest-learner.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/executables/groonga.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/function.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/between.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/cast_loose.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/edit_distance.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/fuzzy_search.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/geo_distance.html +11 -19
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/geo_in_circle.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/geo_in_rectangle.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/highlight_full.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/highlight_html.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/html_untag.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/in_records.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/in_values.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/math_abs.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/now.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/number_classify.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/prefix_rk_search.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/query.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/rand.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/snippet_html.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/string_length.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/string_substring.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/sub_filter.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_day.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_day_of_week.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_hour.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_minute.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_month.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_second.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_week.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/time_classify_year.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/vector_find.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/vector_new.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/vector_size.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/functions/vector_slice.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/grn_expr.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/grn_expr/query_syntax.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/grn_expr/script_syntax.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/indexing.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/log.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/normalizers.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/normalizers/normalizer_auto.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/normalizers/normalizer_nfkc100.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/normalizers/normalizer_nfkc51.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/operations.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/operations/geolocation_search.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/operations/prefix_rk_search.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/output.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/query_expanders.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/query_expanders/tsv.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/regular_expression.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/scorer.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/scorers/scorer_tf_at_most.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/scorers/scorer_tf_idf.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/sharding.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/suggest.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/suggest/completion.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/suggest/correction.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/suggest/introduction.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/suggest/suggestion.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tables.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/token_filter/summary.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/token_filters.html +7 -7
 - data/vendor/local/share/doc/groonga/en/html/reference/token_filters/token_filter_nfkc100.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/token_filters/token_filter_stem.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/token_filters/token_filter_stop_word.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizer/summary.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers.html +9 -6
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_ignore_blank.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol_alpha.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol_alpha_digit.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_split_symbol.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_split_symbol_alpha.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_bigram_split_symbol_alpha_digit.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_delimit.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_delimit_null.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_mecab.html +8 -8
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_ngram.html +1005 -0
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_pattern.html +240 -0
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_regexp.html +21 -21
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_table.html +246 -0
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_trigram.html +20 -20
 - data/vendor/local/share/doc/groonga/en/html/reference/tokenizers/token_unigram.html +15 -15
 - data/vendor/local/share/doc/groonga/en/html/reference/tuning.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/types.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/window_function.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/window_functions/record_number.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/window_functions/window_count.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/window_functions/window_record_number.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/reference/window_functions/window_sum.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/search.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/searchindex.js +1 -1
 - data/vendor/local/share/doc/groonga/en/html/server.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/server/gqtp.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/server/http.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/server/http/comparison.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/server/http/groonga-httpd.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/server/http/groonga.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/server/memcached.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/server/package.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/spec.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/spec/gqtp.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/spec/search.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/troubleshooting.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/troubleshooting/different_results_with_the_same_keyword.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/troubleshooting/how_to_analyze_error_message.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/troubleshooting/mmap_cannot_allocate_memory.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial/data.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial/drilldown.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial/index.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial/introduction.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial/lexicon.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial/match_columns.html +68 -6
 - data/vendor/local/share/doc/groonga/en/html/tutorial/micro_blog.html +37 -4
 - data/vendor/local/share/doc/groonga/en/html/tutorial/network.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial/patricia_trie.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial/query_expansion.html +3 -3
 - data/vendor/local/share/doc/groonga/en/html/tutorial/search.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/.buildinfo +1 -1
 - data/vendor/local/share/doc/groonga/ja/html/_static/documentation_options.js +1 -1
 - data/vendor/local/share/doc/groonga/ja/html/characteristic.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/client.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/community.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/build.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/build/unix_autotools.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/build/unix_cmake.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/build/windows_cmake.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/com.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/cooperation.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/query.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/release.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/repository.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/development/test.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/documentation.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/documentation/c-api.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/documentation/i18n.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/documentation/introduction.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/contribution/report.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/development.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/development/travis-ci.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/genindex.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/index.html +11 -7
 - data/vendor/local/share/doc/groonga/ja/html/install.html +5 -4
 - data/vendor/local/share/doc/groonga/ja/html/install/centos.html +6 -6
 - data/vendor/local/share/doc/groonga/ja/html/install/debian.html +69 -8
 - data/vendor/local/share/doc/groonga/ja/html/install/docker.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/install/fedora.html +6 -6
 - data/vendor/local/share/doc/groonga/ja/html/install/mac_os_x.html +6 -6
 - data/vendor/local/share/doc/groonga/ja/html/install/others.html +6 -6
 - data/vendor/local/share/doc/groonga/ja/html/install/solaris.html +6 -6
 - data/vendor/local/share/doc/groonga/ja/html/install/ubuntu.html +6 -6
 - data/vendor/local/share/doc/groonga/ja/html/install/windows.html +12 -12
 - data/vendor/local/share/doc/groonga/ja/html/limitations.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news.html +494 -206
 - data/vendor/local/share/doc/groonga/ja/html/news/0.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/1.0.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/1.1.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/1.2.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/1.3.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/2.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/3.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/4.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/5.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/6.x.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/news/senna.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/objects.inv +0 -0
 - data/vendor/local/share/doc/groonga/ja/html/reference.html +9 -6
 - data/vendor/local/share/doc/groonga/ja/html/reference/alias.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/global_configurations.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_cache.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_column.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_command_version.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_content_type.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_ctx.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_db.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_encoding.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_expr.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_geo.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_hook.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_ii.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_index_cursor.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_info.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_inspect.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_match_escalation.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_obj.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_proc.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_search.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_table.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_table_cursor.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_thread.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_type.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/grn_user_data.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/overview.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/api/plugin.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/cast.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/column.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/columns/index.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/columns/pseudo.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/columns/scalar.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/columns/vector.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/command.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/command/command_version.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/command/output_format.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/command/pretty_print.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/command/request_id.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/command/request_timeout.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/command/return_code.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/cache_limit.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/check.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/clearlock.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_copy.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_create.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_list.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_remove.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/column_rename.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/config_delete.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/config_get.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/config_set.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/database_unmap.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/define_selector.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/defrag.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/delete.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/dump.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/io_flush.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/load.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/lock_acquire.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/lock_clear.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/lock_release.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/log_level.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/log_put.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/log_reopen.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_count.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_parameters.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_range_filter.html +75 -4
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_select.html +7 -7
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_shard_list.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/logical_table_remove.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/normalize.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/normalizer_list.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/object_exist.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/object_inspect.html +73 -54
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/object_list.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/object_remove.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/plugin_register.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/plugin_unregister.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/query_expand.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/quit.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/range_filter.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/register.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/reindex.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/request_cancel.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/ruby_eval.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/ruby_load.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/schema.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/select.html +7 -7
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/shutdown.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/status.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/suggest.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_copy.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_create.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_list.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_remove.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_rename.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/table_tokenize.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/thread_limit.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/tokenize.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/tokenizer_list.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/commands/truncate.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/configuration.html +6 -6
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables/grndb.html +57 -4
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables/grnslap.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-benchmark.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-httpd.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-server-http.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-suggest-create-dataset.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-suggest-httpd.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga-suggest-learner.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/executables/groonga.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/function.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/between.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/cast_loose.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/edit_distance.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/fuzzy_search.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/geo_distance.html +11 -19
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/geo_in_circle.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/geo_in_rectangle.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/highlight_full.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/highlight_html.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/html_untag.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/in_records.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/in_values.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/math_abs.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/now.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/number_classify.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/prefix_rk_search.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/query.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/rand.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/snippet_html.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/string_length.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/string_substring.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/sub_filter.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_day.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_day_of_week.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_hour.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_minute.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_month.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_second.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_week.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/time_classify_year.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/vector_find.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/vector_new.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/vector_size.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/functions/vector_slice.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/grn_expr.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/grn_expr/query_syntax.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/grn_expr/script_syntax.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/indexing.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/log.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/normalizers.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/normalizers/normalizer_auto.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/normalizers/normalizer_nfkc100.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/normalizers/normalizer_nfkc51.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/operations.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/operations/geolocation_search.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/operations/prefix_rk_search.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/output.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/query_expanders.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/query_expanders/tsv.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/regular_expression.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/scorer.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/scorers/scorer_tf_at_most.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/scorers/scorer_tf_idf.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/sharding.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/suggest.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/suggest/completion.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/suggest/correction.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/suggest/introduction.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/suggest/suggestion.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tables.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/token_filter/summary.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/token_filters.html +7 -7
 - data/vendor/local/share/doc/groonga/ja/html/reference/token_filters/token_filter_nfkc100.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/token_filters/token_filter_stem.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/token_filters/token_filter_stop_word.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizer/summary.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers.html +9 -6
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_ignore_blank.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol_alpha.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_ignore_blank_split_symbol_alpha_digit.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_split_symbol.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_split_symbol_alpha.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_bigram_split_symbol_alpha_digit.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_delimit.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_delimit_null.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_mecab.html +8 -8
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_ngram.html +998 -0
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_pattern.html +240 -0
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_regexp.html +21 -21
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_table.html +242 -0
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_trigram.html +20 -20
 - data/vendor/local/share/doc/groonga/ja/html/reference/tokenizers/token_unigram.html +15 -15
 - data/vendor/local/share/doc/groonga/ja/html/reference/tuning.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/types.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/window_function.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/window_functions/record_number.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/window_functions/window_count.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/window_functions/window_record_number.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/reference/window_functions/window_sum.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/search.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/searchindex.js +1 -1
 - data/vendor/local/share/doc/groonga/ja/html/server.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/server/gqtp.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/server/http.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/server/http/comparison.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/server/http/groonga-httpd.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/server/http/groonga.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/server/memcached.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/server/package.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/spec.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/spec/gqtp.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/spec/search.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/troubleshooting.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/troubleshooting/different_results_with_the_same_keyword.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/troubleshooting/how_to_analyze_error_message.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/troubleshooting/mmap_cannot_allocate_memory.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/data.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/drilldown.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/index.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/introduction.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/lexicon.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/match_columns.html +64 -6
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/micro_blog.html +37 -4
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/network.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/patricia_trie.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/query_expansion.html +3 -3
 - data/vendor/local/share/doc/groonga/ja/html/tutorial/search.html +3 -3
 - data/vendor/local/share/groonga/COPYING +502 -0
 - data/vendor/local/share/groonga/mruby/LEGAL +58 -54
 - data/vendor/local/share/license/mruby/AUTHORS +6 -2
 - data/vendor/local/share/license/mruby/LEGAL +1 -1
 - data/vendor/local/share/license/mruby/{MITL → LICENSE} +1 -1
 - data/vendor/local/share/license/mruby/README.md +3 -3
 - data/vendor/local/share/license/rapidjson/license.txt +57 -0
 - metadata +126 -60
 
| 
         @@ -79,7 +79,7 @@ module Groonga 
     | 
|
| 
       79 
79 
     | 
    
         
             
                    if @query
         
     | 
| 
       80 
80 
     | 
    
         
             
                      is_empty = expression.empty?
         
     | 
| 
       81 
81 
     | 
    
         
             
                      if @match_columns
         
     | 
| 
       82 
     | 
    
         
            -
                        table = Context.instance[expression[0]. 
     | 
| 
      
 82 
     | 
    
         
            +
                        table = Context.instance[expression[0].domain_id]
         
     | 
| 
       83 
83 
     | 
    
         
             
                        @match_columns_expression = Expression.create(table)
         
     | 
| 
       84 
84 
     | 
    
         
             
                        @match_columns_expression.parse(@match_columns)
         
     | 
| 
       85 
85 
     | 
    
         
             
                      end
         
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         @@ -1,5 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Groonga
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Command
         
     | 
| 
      
 3 
     | 
    
         
            +
                include Loggable
         
     | 
| 
      
 4 
     | 
    
         
            +
                include QueryLoggable
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       3 
6 
     | 
    
         
             
                @@classes = {}
         
     | 
| 
       4 
7 
     | 
    
         
             
                class << self
         
     | 
| 
       5 
8 
     | 
    
         
             
                  def register_class(name, klass)
         
     | 
| 
         @@ -20,10 +23,6 @@ module Groonga 
     | 
|
| 
       20 
23 
     | 
    
         
             
                  @writer ||= context.writer
         
     | 
| 
       21 
24 
     | 
    
         
             
                end
         
     | 
| 
       22 
25 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
                def query_logger
         
     | 
| 
       24 
     | 
    
         
            -
                  @query_logger ||= context.query_logger
         
     | 
| 
       25 
     | 
    
         
            -
                end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
26 
     | 
    
         
             
                def cache_key(input)
         
     | 
| 
       28 
27 
     | 
    
         
             
                  nil
         
     | 
| 
       29 
28 
     | 
    
         
             
                end
         
     | 
| 
         @@ -3,6 +3,8 @@ require "groonga-log" 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module Groonga
         
     | 
| 
       4 
4 
     | 
    
         
             
              module CommandLine
         
     | 
| 
       5 
5 
     | 
    
         
             
                class Grndb
         
     | 
| 
      
 6 
     | 
    
         
            +
                  include Loggable
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       6 
8 
     | 
    
         
             
                  def initialize(argv)
         
     | 
| 
       7 
9 
     | 
    
         
             
                    @program_path, *@arguments = argv
         
     | 
| 
       8 
10 
     | 
    
         
             
                    @output = LocaleOutput.new($stderr)
         
     | 
| 
         @@ -36,8 +38,15 @@ module Groonga 
     | 
|
| 
       36 
38 
     | 
    
         
             
                      options.banner += " DB_PATH"
         
     | 
| 
       37 
39 
     | 
    
         
             
                      options.string("--target", "Check only the target object.")
         
     | 
| 
       38 
40 
     | 
    
         
             
                      options.array("--groonga-log-path",
         
     | 
| 
       39 
     | 
    
         
            -
                                    "Path to Groonga log file to be checked." 
     | 
| 
       40 
     | 
    
         
            -
                                    "You can specify multiple times to  
     | 
| 
      
 41 
     | 
    
         
            +
                                    "Path to Groonga log file to be checked. " +
         
     | 
| 
      
 42 
     | 
    
         
            +
                                    "You can specify multiple times to " +
         
     | 
| 
      
 43 
     | 
    
         
            +
                                    "specify multiple log files.")
         
     | 
| 
      
 44 
     | 
    
         
            +
                      options.time("--since",
         
     | 
| 
      
 45 
     | 
    
         
            +
                                   "Check only objects that are modified " +
         
     | 
| 
      
 46 
     | 
    
         
            +
                                   "since the specified time. " +
         
     | 
| 
      
 47 
     | 
    
         
            +
                                   "You can use ISO 8601 format or " +
         
     | 
| 
      
 48 
     | 
    
         
            +
                                   "-${N}${UNIT} format such as " +
         
     | 
| 
      
 49 
     | 
    
         
            +
                                   "-3days and -2.5weeks.")
         
     | 
| 
       41 
50 
     | 
    
         | 
| 
       42 
51 
     | 
    
         
             
                      command.add_action do |options|
         
     | 
| 
       43 
52 
     | 
    
         
             
                        open_database(command, options) do |database, rest_arguments|
         
     | 
| 
         @@ -97,6 +106,7 @@ module Groonga 
     | 
|
| 
       97 
106 
     | 
    
         
             
                  def failed(*messages)
         
     | 
| 
       98 
107 
     | 
    
         
             
                    messages.each do |message|
         
     | 
| 
       99 
108 
     | 
    
         
             
                      @output.puts(message)
         
     | 
| 
      
 109 
     | 
    
         
            +
                      logger.log(:error, message)
         
     | 
| 
       100 
110 
     | 
    
         
             
                    end
         
     | 
| 
       101 
111 
     | 
    
         
             
                    @succeeded = false
         
     | 
| 
       102 
112 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -115,9 +125,14 @@ module Groonga 
     | 
|
| 
       115 
125 
     | 
    
         
             
                  end
         
     | 
| 
       116 
126 
     | 
    
         | 
| 
       117 
127 
     | 
    
         
             
                  def check(database, options, arguments)
         
     | 
| 
      
 128 
     | 
    
         
            +
                    message = "Checking database: <#{@database_path}>"
         
     | 
| 
      
 129 
     | 
    
         
            +
                    since = options[:since]
         
     | 
| 
      
 130 
     | 
    
         
            +
                    message << ": <#{since.iso8601}>" if since
         
     | 
| 
      
 131 
     | 
    
         
            +
                    logger.log(:info, message)
         
     | 
| 
       118 
132 
     | 
    
         
             
                    checker = Checker.new(@output)
         
     | 
| 
       119 
133 
     | 
    
         
             
                    checker.program_path = @program_path
         
     | 
| 
       120 
134 
     | 
    
         
             
                    checker.database_path = @database_path
         
     | 
| 
      
 135 
     | 
    
         
            +
                    checker.since = since
         
     | 
| 
       121 
136 
     | 
    
         
             
                    checker.database = database
         
     | 
| 
       122 
137 
     | 
    
         
             
                    checker.log_paths = options[:groonga_log_path]
         
     | 
| 
       123 
138 
     | 
    
         
             
                    checker.on_failure = lambda do |message|
         
     | 
| 
         @@ -130,15 +145,21 @@ module Groonga 
     | 
|
| 
       130 
145 
     | 
    
         | 
| 
       131 
146 
     | 
    
         
             
                    target_name = options[:target]
         
     | 
| 
       132 
147 
     | 
    
         
             
                    if target_name
         
     | 
| 
      
 148 
     | 
    
         
            +
                      logger.log(:info, "Checking object: <#{target_name}>")
         
     | 
| 
       133 
149 
     | 
    
         
             
                      checker.check_one(target_name)
         
     | 
| 
      
 150 
     | 
    
         
            +
                      logger.log(:info, "Checked object: <#{target_name}>")
         
     | 
| 
       134 
151 
     | 
    
         
             
                    else
         
     | 
| 
       135 
152 
     | 
    
         
             
                      checker.check_all
         
     | 
| 
       136 
153 
     | 
    
         
             
                    end
         
     | 
| 
      
 154 
     | 
    
         
            +
                    logger.log(:info, "Checked database: <#{@database_path}>")
         
     | 
| 
       137 
155 
     | 
    
         
             
                  end
         
     | 
| 
       138 
156 
     | 
    
         | 
| 
       139 
157 
     | 
    
         
             
                  class Checker
         
     | 
| 
      
 158 
     | 
    
         
            +
                    include Loggable
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
       140 
160 
     | 
    
         
             
                    attr_writer :program_path
         
     | 
| 
       141 
161 
     | 
    
         
             
                    attr_writer :database_path
         
     | 
| 
      
 162 
     | 
    
         
            +
                    attr_writer :since
         
     | 
| 
       142 
163 
     | 
    
         
             
                    attr_writer :database
         
     | 
| 
       143 
164 
     | 
    
         
             
                    attr_writer :log_paths
         
     | 
| 
       144 
165 
     | 
    
         
             
                    attr_writer :on_failure
         
     | 
| 
         @@ -169,30 +190,19 @@ module Groonga 
     | 
|
| 
       169 
190 
     | 
    
         
             
                    end
         
     | 
| 
       170 
191 
     | 
    
         | 
| 
       171 
192 
     | 
    
         
             
                    def check_database
         
     | 
| 
      
 193 
     | 
    
         
            +
                      return unless target_database?
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
       172 
195 
     | 
    
         
             
                      check_database_orphan_inspect
         
     | 
| 
       173 
196 
     | 
    
         
             
                      check_database_locked
         
     | 
| 
       174 
197 
     | 
    
         
             
                      check_database_corrupt
         
     | 
| 
       175 
198 
     | 
    
         
             
                      check_database_dirty
         
     | 
| 
      
 199 
     | 
    
         
            +
                      check_database_empty_files
         
     | 
| 
       176 
200 
     | 
    
         
             
                    end
         
     | 
| 
       177 
201 
     | 
    
         | 
| 
       178 
202 
     | 
    
         
             
                    def check_one(target_name)
         
     | 
| 
       179 
     | 
    
         
            -
                       
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
                        exist_p = open_database_cursor do |cursor|
         
     | 
| 
       182 
     | 
    
         
            -
                          cursor.any? do
         
     | 
| 
       183 
     | 
    
         
            -
                            cursor.key == target_name
         
     | 
| 
       184 
     | 
    
         
            -
                          end
         
     | 
| 
       185 
     | 
    
         
            -
                        end
         
     | 
| 
       186 
     | 
    
         
            -
                        if exist_p
         
     | 
| 
       187 
     | 
    
         
            -
                          failed_to_open(target_name)
         
     | 
| 
       188 
     | 
    
         
            -
                        else
         
     | 
| 
       189 
     | 
    
         
            -
                          message = "[#{target_name}] Not exist."
         
     | 
| 
       190 
     | 
    
         
            -
                          failed(message)
         
     | 
| 
       191 
     | 
    
         
            -
                        end
         
     | 
| 
       192 
     | 
    
         
            -
                        return
         
     | 
| 
      
 203 
     | 
    
         
            +
                      open_object(target_name) do |target|
         
     | 
| 
      
 204 
     | 
    
         
            +
                        check_object_recursive(target)
         
     | 
| 
       193 
205 
     | 
    
         
             
                      end
         
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
                      check_object_recursive(target)
         
     | 
| 
       196 
206 
     | 
    
         
             
                    end
         
     | 
| 
       197 
207 
     | 
    
         | 
| 
       198 
208 
     | 
    
         
             
                    def check_all
         
     | 
| 
         @@ -200,14 +210,11 @@ module Groonga 
     | 
|
| 
       200 
210 
     | 
    
         
             
                        cursor.each do |id|
         
     | 
| 
       201 
211 
     | 
    
         
             
                          next if ID.builtin?(id)
         
     | 
| 
       202 
212 
     | 
    
         
             
                          next if builtin_object_name?(cursor.key)
         
     | 
| 
       203 
     | 
    
         
            -
                           
     | 
| 
       204 
     | 
    
         
            -
             
     | 
| 
      
 213 
     | 
    
         
            +
                          open_object(id) do |object|
         
     | 
| 
      
 214 
     | 
    
         
            +
                            check_object(object)
         
     | 
| 
      
 215 
     | 
    
         
            +
                          end
         
     | 
| 
       205 
216 
     | 
    
         
             
                        end
         
     | 
| 
       206 
217 
     | 
    
         
             
                      end
         
     | 
| 
       207 
     | 
    
         
            -
             
     | 
| 
       208 
     | 
    
         
            -
                      @database.each do |object|
         
     | 
| 
       209 
     | 
    
         
            -
                        check_object(object)
         
     | 
| 
       210 
     | 
    
         
            -
                      end
         
     | 
| 
       211 
218 
     | 
    
         
             
                    end
         
     | 
| 
       212 
219 
     | 
    
         | 
| 
       213 
220 
     | 
    
         
             
                    private
         
     | 
| 
         @@ -221,21 +228,31 @@ module Groonga 
     | 
|
| 
       221 
228 
     | 
    
         
             
                    end
         
     | 
| 
       222 
229 
     | 
    
         | 
| 
       223 
230 
     | 
    
         
             
                    def check_database_orphan_inspect
         
     | 
| 
      
 231 
     | 
    
         
            +
                      found = false
         
     | 
| 
       224 
232 
     | 
    
         
             
                      open_database_cursor do |cursor|
         
     | 
| 
       225 
233 
     | 
    
         
             
                        cursor.each do |id|
         
     | 
| 
       226 
234 
     | 
    
         
             
                          if cursor.key == "inspect" and @context[id].nil?
         
     | 
| 
       227 
235 
     | 
    
         
             
                            message =
         
     | 
| 
       228 
236 
     | 
    
         
             
                              "Database has orphan 'inspect' object. " +
         
     | 
| 
       229 
237 
     | 
    
         
             
                              "Remove it by '#{@program_path} recover #{@database_path}'."
         
     | 
| 
      
 238 
     | 
    
         
            +
                            found = true
         
     | 
| 
       230 
239 
     | 
    
         
             
                            failed(message)
         
     | 
| 
       231 
240 
     | 
    
         
             
                            break
         
     | 
| 
       232 
241 
     | 
    
         
             
                          end
         
     | 
| 
       233 
242 
     | 
    
         
             
                        end
         
     | 
| 
       234 
243 
     | 
    
         
             
                      end
         
     | 
| 
      
 244 
     | 
    
         
            +
                      unless found
         
     | 
| 
      
 245 
     | 
    
         
            +
                        logger.log(:info,
         
     | 
| 
      
 246 
     | 
    
         
            +
                                   "Database doesn't have orphan 'inspect' object: " +
         
     | 
| 
      
 247 
     | 
    
         
            +
                                   "<#{@database_path}>")
         
     | 
| 
      
 248 
     | 
    
         
            +
                      end
         
     | 
| 
       235 
249 
     | 
    
         
             
                    end
         
     | 
| 
       236 
250 
     | 
    
         | 
| 
       237 
251 
     | 
    
         
             
                    def check_database_locked
         
     | 
| 
       238 
     | 
    
         
            -
                       
     | 
| 
      
 252 
     | 
    
         
            +
                      unless @database.locked?
         
     | 
| 
      
 253 
     | 
    
         
            +
                        logger.log(:info, "Database is not locked: <#{@database_path}>")
         
     | 
| 
      
 254 
     | 
    
         
            +
                        return
         
     | 
| 
      
 255 
     | 
    
         
            +
                      end
         
     | 
| 
       239 
256 
     | 
    
         | 
| 
       240 
257 
     | 
    
         
             
                      message =
         
     | 
| 
       241 
258 
     | 
    
         
             
                        "Database is locked. " +
         
     | 
| 
         @@ -245,7 +262,10 @@ module Groonga 
     | 
|
| 
       245 
262 
     | 
    
         
             
                    end
         
     | 
| 
       246 
263 
     | 
    
         | 
| 
       247 
264 
     | 
    
         
             
                    def check_database_corrupt
         
     | 
| 
       248 
     | 
    
         
            -
                       
     | 
| 
      
 265 
     | 
    
         
            +
                      unless @database.corrupt?
         
     | 
| 
      
 266 
     | 
    
         
            +
                        logger.log(:info, "Database is not corrupted: <#{@database_path}>")
         
     | 
| 
      
 267 
     | 
    
         
            +
                        return
         
     | 
| 
      
 268 
     | 
    
         
            +
                      end
         
     | 
| 
       249 
269 
     | 
    
         | 
| 
       250 
270 
     | 
    
         
             
                      message =
         
     | 
| 
       251 
271 
     | 
    
         
             
                        "Database is corrupt. " +
         
     | 
| 
         @@ -254,7 +274,10 @@ module Groonga 
     | 
|
| 
       254 
274 
     | 
    
         
             
                    end
         
     | 
| 
       255 
275 
     | 
    
         | 
| 
       256 
276 
     | 
    
         
             
                    def check_database_dirty
         
     | 
| 
       257 
     | 
    
         
            -
                       
     | 
| 
      
 277 
     | 
    
         
            +
                      unless @database.dirty?
         
     | 
| 
      
 278 
     | 
    
         
            +
                        logger.log(:info, "Database is not dirty: <#{@database_path}>")
         
     | 
| 
      
 279 
     | 
    
         
            +
                        return
         
     | 
| 
      
 280 
     | 
    
         
            +
                      end
         
     | 
| 
       258 
281 
     | 
    
         | 
| 
       259 
282 
     | 
    
         
             
                      last_modified = @database.last_modified
         
     | 
| 
       260 
283 
     | 
    
         
             
                      if File.stat(@database.path).mtime > last_modified
         
     | 
| 
         @@ -264,7 +287,7 @@ module Groonga 
     | 
|
| 
       264 
287 
     | 
    
         
             
                      open_database_cursor do |cursor|
         
     | 
| 
       265 
288 
     | 
    
         
             
                        cursor.each do |id|
         
     | 
| 
       266 
289 
     | 
    
         
             
                          next if ID.builtin?(id)
         
     | 
| 
       267 
     | 
    
         
            -
                          path =  
     | 
| 
      
 290 
     | 
    
         
            +
                          path = object_path(id)
         
     | 
| 
       268 
291 
     | 
    
         
             
                          next unless File.exist?(path)
         
     | 
| 
       269 
292 
     | 
    
         
             
                          return if File.stat(path).mtime > last_modified
         
     | 
| 
       270 
293 
     | 
    
         
             
                        end
         
     | 
| 
         @@ -277,6 +300,20 @@ module Groonga 
     | 
|
| 
       277 
300 
     | 
    
         
             
                      failed(message)
         
     | 
| 
       278 
301 
     | 
    
         
             
                    end
         
     | 
| 
       279 
302 
     | 
    
         | 
| 
      
 303 
     | 
    
         
            +
                    def check_database_empty_files
         
     | 
| 
      
 304 
     | 
    
         
            +
                      dirname = File.dirname(@database.path)
         
     | 
| 
      
 305 
     | 
    
         
            +
                      basename = File.basename(@database.path)
         
     | 
| 
      
 306 
     | 
    
         
            +
             
     | 
| 
      
 307 
     | 
    
         
            +
                      Dir.entries(dirname).sort.each do |path|
         
     | 
| 
      
 308 
     | 
    
         
            +
                        next unless path.start_with?(basename)
         
     | 
| 
      
 309 
     | 
    
         
            +
             
     | 
| 
      
 310 
     | 
    
         
            +
                        full_path = "#{dirname}/#{path}"
         
     | 
| 
      
 311 
     | 
    
         
            +
                        if File.stat(full_path).size.zero?
         
     | 
| 
      
 312 
     | 
    
         
            +
                          failed("Empty file exists: <#{full_path}>")
         
     | 
| 
      
 313 
     | 
    
         
            +
                        end
         
     | 
| 
      
 314 
     | 
    
         
            +
                      end
         
     | 
| 
      
 315 
     | 
    
         
            +
                    end
         
     | 
| 
      
 316 
     | 
    
         
            +
             
     | 
| 
       280 
317 
     | 
    
         
             
                    def check_object(object)
         
     | 
| 
       281 
318 
     | 
    
         
             
                      return if @checked.key?(object.id)
         
     | 
| 
       282 
319 
     | 
    
         
             
                      @checked[object.id] = true
         
     | 
| 
         @@ -288,14 +325,20 @@ module Groonga 
     | 
|
| 
       288 
325 
     | 
    
         
             
                    def check_object_locked(object)
         
     | 
| 
       289 
326 
     | 
    
         
             
                      case object
         
     | 
| 
       290 
327 
     | 
    
         
             
                      when IndexColumn
         
     | 
| 
       291 
     | 
    
         
            -
                         
     | 
| 
      
 328 
     | 
    
         
            +
                        unless object.locked?
         
     | 
| 
      
 329 
     | 
    
         
            +
                          logger.log(:info, "[#{object.name}] Index column is not locked")
         
     | 
| 
      
 330 
     | 
    
         
            +
                          return
         
     | 
| 
      
 331 
     | 
    
         
            +
                        end
         
     | 
| 
       292 
332 
     | 
    
         
             
                        message =
         
     | 
| 
       293 
333 
     | 
    
         
             
                          "[#{object.name}] Index column is locked. " +
         
     | 
| 
       294 
334 
     | 
    
         
             
                          "It may be broken. " +
         
     | 
| 
       295 
335 
     | 
    
         
             
                          "Re-create index by '#{@program_path} recover #{@database_path}'."
         
     | 
| 
       296 
336 
     | 
    
         
             
                        failed(message)
         
     | 
| 
       297 
337 
     | 
    
         
             
                      when Column
         
     | 
| 
       298 
     | 
    
         
            -
                         
     | 
| 
      
 338 
     | 
    
         
            +
                        unless object.locked?
         
     | 
| 
      
 339 
     | 
    
         
            +
                          logger.log(:info, "[#{object.name}] Column is not locked")
         
     | 
| 
      
 340 
     | 
    
         
            +
                          return
         
     | 
| 
      
 341 
     | 
    
         
            +
                        end
         
     | 
| 
       299 
342 
     | 
    
         
             
                        name = object.name
         
     | 
| 
       300 
343 
     | 
    
         
             
                        message =
         
     | 
| 
       301 
344 
     | 
    
         
             
                          "[#{name}] Data column is locked. " +
         
     | 
| 
         @@ -305,7 +348,10 @@ module Groonga 
     | 
|
| 
       305 
348 
     | 
    
         
             
                          "and (2) load data again."
         
     | 
| 
       306 
349 
     | 
    
         
             
                        failed(message)
         
     | 
| 
       307 
350 
     | 
    
         
             
                      when Table
         
     | 
| 
       308 
     | 
    
         
            -
                         
     | 
| 
      
 351 
     | 
    
         
            +
                        unless object.locked?
         
     | 
| 
      
 352 
     | 
    
         
            +
                          logger.log(:info, "[#{object.name}] Table is not locked")
         
     | 
| 
      
 353 
     | 
    
         
            +
                          return
         
     | 
| 
      
 354 
     | 
    
         
            +
                        end
         
     | 
| 
       309 
355 
     | 
    
         
             
                        name = object.name
         
     | 
| 
       310 
356 
     | 
    
         
             
                        message =
         
     | 
| 
       311 
357 
     | 
    
         
             
                          "[#{name}] Table is locked. " +
         
     | 
| 
         @@ -320,13 +366,19 @@ module Groonga 
     | 
|
| 
       320 
366 
     | 
    
         
             
                    def check_object_corrupt(object)
         
     | 
| 
       321 
367 
     | 
    
         
             
                      case object
         
     | 
| 
       322 
368 
     | 
    
         
             
                      when IndexColumn
         
     | 
| 
       323 
     | 
    
         
            -
                         
     | 
| 
      
 369 
     | 
    
         
            +
                        unless object.corrupt?
         
     | 
| 
      
 370 
     | 
    
         
            +
                          logger.log(:info, "[#{object.name}] Index column is not corrupted")
         
     | 
| 
      
 371 
     | 
    
         
            +
                          return
         
     | 
| 
      
 372 
     | 
    
         
            +
                        end
         
     | 
| 
       324 
373 
     | 
    
         
             
                        message =
         
     | 
| 
       325 
374 
     | 
    
         
             
                          "[#{object.name}] Index column is corrupt. " +
         
     | 
| 
       326 
375 
     | 
    
         
             
                          "Re-create index by '#{@program_path} recover #{@database_path}'."
         
     | 
| 
       327 
376 
     | 
    
         
             
                        failed(message)
         
     | 
| 
       328 
377 
     | 
    
         
             
                      when Column
         
     | 
| 
       329 
     | 
    
         
            -
                         
     | 
| 
      
 378 
     | 
    
         
            +
                        unless object.corrupt?
         
     | 
| 
      
 379 
     | 
    
         
            +
                          logger.log(:info, "[#{object.name}] Column is not corrupted")
         
     | 
| 
      
 380 
     | 
    
         
            +
                          return
         
     | 
| 
      
 381 
     | 
    
         
            +
                        end
         
     | 
| 
       330 
382 
     | 
    
         
             
                        name = object.name
         
     | 
| 
       331 
383 
     | 
    
         
             
                        message =
         
     | 
| 
       332 
384 
     | 
    
         
             
                          "[#{name}] Data column is corrupt. " +
         
     | 
| 
         @@ -335,7 +387,10 @@ module Groonga 
     | 
|
| 
       335 
387 
     | 
    
         
             
                          "and (2) load data again."
         
     | 
| 
       336 
388 
     | 
    
         
             
                        failed(message)
         
     | 
| 
       337 
389 
     | 
    
         
             
                      when Table
         
     | 
| 
       338 
     | 
    
         
            -
                         
     | 
| 
      
 390 
     | 
    
         
            +
                        unless object.corrupt?
         
     | 
| 
      
 391 
     | 
    
         
            +
                          logger.log(:info, "[#{object.name}] Table is not corrupted")
         
     | 
| 
      
 392 
     | 
    
         
            +
                          return
         
     | 
| 
      
 393 
     | 
    
         
            +
                        end
         
     | 
| 
       339 
394 
     | 
    
         
             
                        name = object.name
         
     | 
| 
       340 
395 
     | 
    
         
             
                        message =
         
     | 
| 
       341 
396 
     | 
    
         
             
                          "[#{name}] Table is corrupt. " +
         
     | 
| 
         @@ -353,67 +408,47 @@ module Groonga 
     | 
|
| 
       353 
408 
     | 
    
         
             
                      case target
         
     | 
| 
       354 
409 
     | 
    
         
             
                      when Table
         
     | 
| 
       355 
410 
     | 
    
         
             
                        unless target.is_a?(Groonga::Array)
         
     | 
| 
       356 
     | 
    
         
            -
                          domain_id  
     | 
| 
       357 
     | 
    
         
            -
             
     | 
| 
       358 
     | 
    
         
            -
             
     | 
| 
       359 
     | 
    
         
            -
                             
     | 
| 
       360 
     | 
    
         
            -
                            failed_to_open(record.key)
         
     | 
| 
       361 
     | 
    
         
            -
                          elsif domain.is_a?(Table)
         
     | 
| 
       362 
     | 
    
         
            -
                            check_object_recursive(domain)
         
     | 
| 
      
 411 
     | 
    
         
            +
                          open_object(target.domain_id) do |domain|
         
     | 
| 
      
 412 
     | 
    
         
            +
                            if domain.is_a?(Table)
         
     | 
| 
      
 413 
     | 
    
         
            +
                              check_object_recursive(domain)
         
     | 
| 
      
 414 
     | 
    
         
            +
                            end
         
     | 
| 
       363 
415 
     | 
    
         
             
                          end
         
     | 
| 
       364 
416 
     | 
    
         
             
                        end
         
     | 
| 
       365 
417 
     | 
    
         | 
| 
       366 
418 
     | 
    
         
             
                        target.column_ids.each do |column_id|
         
     | 
| 
       367 
     | 
    
         
            -
                           
     | 
| 
       368 
     | 
    
         
            -
                          if column.nil?
         
     | 
| 
       369 
     | 
    
         
            -
                            record = Record.new(@database, column_id)
         
     | 
| 
       370 
     | 
    
         
            -
                            failed_to_open(record.key)
         
     | 
| 
       371 
     | 
    
         
            -
                          else
         
     | 
| 
      
 419 
     | 
    
         
            +
                          open_object(column_id) do |column|
         
     | 
| 
       372 
420 
     | 
    
         
             
                            check_object_recursive(column)
         
     | 
| 
       373 
421 
     | 
    
         
             
                          end
         
     | 
| 
       374 
422 
     | 
    
         
             
                        end
         
     | 
| 
       375 
423 
     | 
    
         
             
                      when FixedSizeColumn, VariableSizeColumn
         
     | 
| 
       376 
     | 
    
         
            -
                        range_id  
     | 
| 
       377 
     | 
    
         
            -
             
     | 
| 
       378 
     | 
    
         
            -
             
     | 
| 
       379 
     | 
    
         
            -
                           
     | 
| 
       380 
     | 
    
         
            -
                          failed_to_open(record.key)
         
     | 
| 
       381 
     | 
    
         
            -
                        elsif range.is_a?(Table)
         
     | 
| 
       382 
     | 
    
         
            -
                          check_object_recursive(range)
         
     | 
| 
      
 424 
     | 
    
         
            +
                        open_object(target.range_id) do |range|
         
     | 
| 
      
 425 
     | 
    
         
            +
                          if range.is_a?(Table)
         
     | 
| 
      
 426 
     | 
    
         
            +
                            check_object_recursive(range)
         
     | 
| 
      
 427 
     | 
    
         
            +
                          end
         
     | 
| 
       383 
428 
     | 
    
         
             
                        end
         
     | 
| 
       384 
429 
     | 
    
         | 
| 
       385 
430 
     | 
    
         
             
                        lexicon_ids = []
         
     | 
| 
       386 
431 
     | 
    
         
             
                        target.indexes.each do |index_info|
         
     | 
| 
       387 
432 
     | 
    
         
             
                          index = index_info.index
         
     | 
| 
       388 
433 
     | 
    
         
             
                          lexicon_ids << index.domain_id
         
     | 
| 
      
 434 
     | 
    
         
            +
                          next unless target_id?(index.id)
         
     | 
| 
       389 
435 
     | 
    
         
             
                          check_object(index)
         
     | 
| 
       390 
436 
     | 
    
         
             
                        end
         
     | 
| 
       391 
437 
     | 
    
         
             
                        lexicon_ids.uniq.each do |lexicon_id|
         
     | 
| 
       392 
     | 
    
         
            -
                           
     | 
| 
       393 
     | 
    
         
            -
                          if lexicon.nil?
         
     | 
| 
       394 
     | 
    
         
            -
                            record = Record.new(@database, lexicon_id)
         
     | 
| 
       395 
     | 
    
         
            -
                            failed_to_open(record.key)
         
     | 
| 
       396 
     | 
    
         
            -
                          else
         
     | 
| 
      
 438 
     | 
    
         
            +
                          open_object(lexicon_id) do |lexicon|
         
     | 
| 
       397 
439 
     | 
    
         
             
                            check_object(lexicon)
         
     | 
| 
       398 
440 
     | 
    
         
             
                          end
         
     | 
| 
       399 
441 
     | 
    
         
             
                        end
         
     | 
| 
       400 
442 
     | 
    
         
             
                      when IndexColumn
         
     | 
| 
       401 
     | 
    
         
            -
                        range_id  
     | 
| 
       402 
     | 
    
         
            -
             
     | 
| 
       403 
     | 
    
         
            -
             
     | 
| 
       404 
     | 
    
         
            -
                           
     | 
| 
       405 
     | 
    
         
            -
             
     | 
| 
       406 
     | 
    
         
            -
             
     | 
| 
       407 
     | 
    
         
            -
             
     | 
| 
       408 
     | 
    
         
            -
             
     | 
| 
       409 
     | 
    
         
            -
             
     | 
| 
       410 
     | 
    
         
            -
                        target.source_ids.each do |source_id|
         
     | 
| 
       411 
     | 
    
         
            -
                          source = @context[source_id]
         
     | 
| 
       412 
     | 
    
         
            -
                          if source.nil?
         
     | 
| 
       413 
     | 
    
         
            -
                            record = Record.new(database, source_id)
         
     | 
| 
       414 
     | 
    
         
            -
                            failed_to_open(record.key)
         
     | 
| 
       415 
     | 
    
         
            -
                          elsif source.is_a?(Column)
         
     | 
| 
       416 
     | 
    
         
            -
                            check_object_recursive(source)
         
     | 
| 
      
 443 
     | 
    
         
            +
                        open_object(target.range_id) do |range|
         
     | 
| 
      
 444 
     | 
    
         
            +
                          check_object(range)
         
     | 
| 
      
 445 
     | 
    
         
            +
             
     | 
| 
      
 446 
     | 
    
         
            +
                          target.source_ids.each do |source_id|
         
     | 
| 
      
 447 
     | 
    
         
            +
                            open_object(source_id) do |source|
         
     | 
| 
      
 448 
     | 
    
         
            +
                              if source.is_a?(Column)
         
     | 
| 
      
 449 
     | 
    
         
            +
                                check_object_recursive(source)
         
     | 
| 
      
 450 
     | 
    
         
            +
                              end
         
     | 
| 
      
 451 
     | 
    
         
            +
                            end
         
     | 
| 
       417 
452 
     | 
    
         
             
                          end
         
     | 
| 
       418 
453 
     | 
    
         
             
                        end
         
     | 
| 
       419 
454 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -437,6 +472,71 @@ module Groonga 
     | 
|
| 
       437 
472 
     | 
    
         
             
                      end
         
     | 
| 
       438 
473 
     | 
    
         
             
                    end
         
     | 
| 
       439 
474 
     | 
    
         | 
| 
      
 475 
     | 
    
         
            +
                    def target_database?
         
     | 
| 
      
 476 
     | 
    
         
            +
                      return true if @since.nil?
         
     | 
| 
      
 477 
     | 
    
         
            +
             
     | 
| 
      
 478 
     | 
    
         
            +
                      suffixes = [
         
     | 
| 
      
 479 
     | 
    
         
            +
                        "",
         
     | 
| 
      
 480 
     | 
    
         
            +
                        ".001",
         
     | 
| 
      
 481 
     | 
    
         
            +
                        ".conf",
         
     | 
| 
      
 482 
     | 
    
         
            +
                        ".options",
         
     | 
| 
      
 483 
     | 
    
         
            +
                      ]
         
     | 
| 
      
 484 
     | 
    
         
            +
                      suffixes.each do |suffix|
         
     | 
| 
      
 485 
     | 
    
         
            +
                        path = "#{@database.path}#{suffix}"
         
     | 
| 
      
 486 
     | 
    
         
            +
                        next unless File.exist?(path)
         
     | 
| 
      
 487 
     | 
    
         
            +
                        return true if File.stat(path).mtime >= @since
         
     | 
| 
      
 488 
     | 
    
         
            +
                      end
         
     | 
| 
      
 489 
     | 
    
         
            +
                      false
         
     | 
| 
      
 490 
     | 
    
         
            +
                    end
         
     | 
| 
      
 491 
     | 
    
         
            +
             
     | 
| 
      
 492 
     | 
    
         
            +
                    def object_path(id)
         
     | 
| 
      
 493 
     | 
    
         
            +
                      "%s.%07X" % [@database.path, id]
         
     | 
| 
      
 494 
     | 
    
         
            +
                    end
         
     | 
| 
      
 495 
     | 
    
         
            +
             
     | 
| 
      
 496 
     | 
    
         
            +
                    def target_id?(id)
         
     | 
| 
      
 497 
     | 
    
         
            +
                      return true if @since.nil?
         
     | 
| 
      
 498 
     | 
    
         
            +
             
     | 
| 
      
 499 
     | 
    
         
            +
                      target_path = object_path(id)
         
     | 
| 
      
 500 
     | 
    
         
            +
                      return false unless File.exist?(target_path)
         
     | 
| 
      
 501 
     | 
    
         
            +
                      return true if File.stat(target_path).mtime >= @since
         
     | 
| 
      
 502 
     | 
    
         
            +
             
     | 
| 
      
 503 
     | 
    
         
            +
                      dir_path = File.dirname(@database.path)
         
     | 
| 
      
 504 
     | 
    
         
            +
                      Dir.open(dir_path) do |dir|
         
     | 
| 
      
 505 
     | 
    
         
            +
                        dir.each do |path|
         
     | 
| 
      
 506 
     | 
    
         
            +
                          full_path = File.join(dir_path, path)
         
     | 
| 
      
 507 
     | 
    
         
            +
                          next unless full_path.start_with?(target_path)
         
     | 
| 
      
 508 
     | 
    
         
            +
                          return true if File.stat(full_path).mtime >= @since
         
     | 
| 
      
 509 
     | 
    
         
            +
                        end
         
     | 
| 
      
 510 
     | 
    
         
            +
                      end
         
     | 
| 
      
 511 
     | 
    
         
            +
                      false
         
     | 
| 
      
 512 
     | 
    
         
            +
                    end
         
     | 
| 
      
 513 
     | 
    
         
            +
             
     | 
| 
      
 514 
     | 
    
         
            +
                    def open_object(name_or_id)
         
     | 
| 
      
 515 
     | 
    
         
            +
                      if name_or_id.is_a?(Integer)
         
     | 
| 
      
 516 
     | 
    
         
            +
                        id = name_or_id
         
     | 
| 
      
 517 
     | 
    
         
            +
                        return if id.nil?
         
     | 
| 
      
 518 
     | 
    
         
            +
                        name = @database[id]
         
     | 
| 
      
 519 
     | 
    
         
            +
                      else
         
     | 
| 
      
 520 
     | 
    
         
            +
                        name = name_or_id
         
     | 
| 
      
 521 
     | 
    
         
            +
                        id = @database[name_or_id]
         
     | 
| 
      
 522 
     | 
    
         
            +
                      end
         
     | 
| 
      
 523 
     | 
    
         
            +
             
     | 
| 
      
 524 
     | 
    
         
            +
                      if id.nil?
         
     | 
| 
      
 525 
     | 
    
         
            +
                        failed("[#{name}] Not exist.")
         
     | 
| 
      
 526 
     | 
    
         
            +
                        return
         
     | 
| 
      
 527 
     | 
    
         
            +
                      end
         
     | 
| 
      
 528 
     | 
    
         
            +
             
     | 
| 
      
 529 
     | 
    
         
            +
                      return unless target_id?(id)
         
     | 
| 
      
 530 
     | 
    
         
            +
             
     | 
| 
      
 531 
     | 
    
         
            +
                      object = @context[name]
         
     | 
| 
      
 532 
     | 
    
         
            +
                      if object.nil?
         
     | 
| 
      
 533 
     | 
    
         
            +
                        failed_to_open(name)
         
     | 
| 
      
 534 
     | 
    
         
            +
                        return
         
     | 
| 
      
 535 
     | 
    
         
            +
                      end
         
     | 
| 
      
 536 
     | 
    
         
            +
             
     | 
| 
      
 537 
     | 
    
         
            +
                      yield(object)
         
     | 
| 
      
 538 
     | 
    
         
            +
                    end
         
     | 
| 
      
 539 
     | 
    
         
            +
             
     | 
| 
       440 
540 
     | 
    
         
             
                    def failed(message)
         
     | 
| 
       441 
541 
     | 
    
         
             
                      @on_failure.call(message)
         
     | 
| 
       442 
542 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -451,6 +551,8 @@ module Groonga 
     | 
|
| 
       451 
551 
     | 
    
         
             
                  end
         
     | 
| 
       452 
552 
     | 
    
         | 
| 
       453 
553 
     | 
    
         
             
                  class Recoverer
         
     | 
| 
      
 554 
     | 
    
         
            +
                    include Loggable
         
     | 
| 
      
 555 
     | 
    
         
            +
             
     | 
| 
       454 
556 
     | 
    
         
             
                    attr_writer :database
         
     | 
| 
       455 
557 
     | 
    
         
             
                    attr_writer :force_truncate
         
     | 
| 
       456 
558 
     | 
    
         
             
                    attr_writer :force_lock_clear
         
     | 
| 
         @@ -461,6 +563,7 @@ module Groonga 
     | 
|
| 
       461 
563 
     | 
    
         
             
                    end
         
     | 
| 
       462 
564 
     | 
    
         | 
| 
       463 
565 
     | 
    
         
             
                    def recover
         
     | 
| 
      
 566 
     | 
    
         
            +
                      logger.log(:info, "Recovering database: <#{@database.path}>")
         
     | 
| 
       464 
567 
     | 
    
         
             
                      if @force_truncate
         
     | 
| 
       465 
568 
     | 
    
         
             
                        @database.each do |object|
         
     | 
| 
       466 
569 
     | 
    
         
             
                          next unless truncate_target?(object)
         
     | 
| 
         @@ -470,7 +573,9 @@ module Groonga 
     | 
|
| 
       470 
573 
     | 
    
         
             
                      if @force_lock_clear
         
     | 
| 
       471 
574 
     | 
    
         
             
                        clear_locks
         
     | 
| 
       472 
575 
     | 
    
         
             
                      end
         
     | 
| 
      
 576 
     | 
    
         
            +
                      remove_empty_files
         
     | 
| 
       473 
577 
     | 
    
         
             
                      @database.recover
         
     | 
| 
      
 578 
     | 
    
         
            +
                      logger.log(:info, "Recovered database: <#{@database.path}>")
         
     | 
| 
       474 
579 
     | 
    
         
             
                    end
         
     | 
| 
       475 
580 
     | 
    
         | 
| 
       476 
581 
     | 
    
         
             
                    private
         
     | 
| 
         @@ -489,7 +594,6 @@ module Groonga 
     | 
|
| 
       489 
594 
     | 
    
         
             
                    end
         
     | 
| 
       490 
595 
     | 
    
         | 
| 
       491 
596 
     | 
    
         
             
                    def truncate_broken_object(object)
         
     | 
| 
       492 
     | 
    
         
            -
                      logger = @context.logger
         
     | 
| 
       493 
597 
     | 
    
         
             
                      name = object.name
         
     | 
| 
       494 
598 
     | 
    
         
             
                      object_path = object.path
         
     | 
| 
       495 
599 
     | 
    
         
             
                      object_dirname = File.dirname(object_path)
         
     | 
| 
         @@ -499,7 +603,7 @@ module Groonga 
     | 
|
| 
       499 
603 
     | 
    
         
             
                      @output.puts(message)
         
     | 
| 
       500 
604 
     | 
    
         
             
                      logger.log(:info, message)
         
     | 
| 
       501 
605 
     | 
    
         | 
| 
       502 
     | 
    
         
            -
                      Dir. 
     | 
| 
      
 606 
     | 
    
         
            +
                      Dir.entries(object_dirname).sort.each do |path|
         
     | 
| 
       503 
607 
     | 
    
         
             
                        next unless path.start_with?("#{object_basename}.")
         
     | 
| 
       504 
608 
     | 
    
         | 
| 
       505 
609 
     | 
    
         
             
                        full_path = "#{object_dirname}/#{path}"
         
     | 
| 
         @@ -514,7 +618,8 @@ module Groonga 
     | 
|
| 
       514 
618 
     | 
    
         
             
                            "[#{name}] Failed to remove broken object related file: " +
         
     | 
| 
       515 
619 
     | 
    
         
             
                            "<#{full_path}>: #{error.class}: #{error.message}"
         
     | 
| 
       516 
620 
     | 
    
         
             
                          @output.puts(message)
         
     | 
| 
       517 
     | 
    
         
            -
                          logger. 
     | 
| 
      
 621 
     | 
    
         
            +
                          logger.log(:error, message)
         
     | 
| 
      
 622 
     | 
    
         
            +
                          logger.log_error(error)
         
     | 
| 
       518 
623 
     | 
    
         
             
                        end
         
     | 
| 
       519 
624 
     | 
    
         
             
                      end
         
     | 
| 
       520 
625 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -522,6 +627,7 @@ module Groonga 
     | 
|
| 
       522 
627 
     | 
    
         
             
                    def clear_locks
         
     | 
| 
       523 
628 
     | 
    
         
             
                      if @database.locked?
         
     | 
| 
       524 
629 
     | 
    
         
             
                        @database.clear_lock
         
     | 
| 
      
 630 
     | 
    
         
            +
                        logger.log(:info, "Clear locked database: <#{@database.path}>")
         
     | 
| 
       525 
631 
     | 
    
         
             
                      end
         
     | 
| 
       526 
632 
     | 
    
         
             
                      @database.each do |object|
         
     | 
| 
       527 
633 
     | 
    
         
             
                        case object
         
     | 
| 
         @@ -530,6 +636,90 @@ module Groonga 
     | 
|
| 
       530 
636 
     | 
    
         
             
                        when Column, Table
         
     | 
| 
       531 
637 
     | 
    
         
             
                          next unless object.locked?
         
     | 
| 
       532 
638 
     | 
    
         
             
                          object.clear_lock
         
     | 
| 
      
 639 
     | 
    
         
            +
                          logger.log(:info,
         
     | 
| 
      
 640 
     | 
    
         
            +
                                     "[#{object.name}] Clear locked object: " +
         
     | 
| 
      
 641 
     | 
    
         
            +
                                     "<#{object.path}>")
         
     | 
| 
      
 642 
     | 
    
         
            +
                        end
         
     | 
| 
      
 643 
     | 
    
         
            +
                      end
         
     | 
| 
      
 644 
     | 
    
         
            +
                    end
         
     | 
| 
      
 645 
     | 
    
         
            +
             
     | 
| 
      
 646 
     | 
    
         
            +
                    def remove_empty_files
         
     | 
| 
      
 647 
     | 
    
         
            +
                      dirname = File.dirname(@database.path)
         
     | 
| 
      
 648 
     | 
    
         
            +
                      basename = File.basename(@database.path)
         
     | 
| 
      
 649 
     | 
    
         
            +
             
     | 
| 
      
 650 
     | 
    
         
            +
                      broken_ids = {}
         
     | 
| 
      
 651 
     | 
    
         
            +
                      Dir.entries(dirname).sort.each do |path|
         
     | 
| 
      
 652 
     | 
    
         
            +
                        next unless path.start_with?(basename)
         
     | 
| 
      
 653 
     | 
    
         
            +
             
     | 
| 
      
 654 
     | 
    
         
            +
                        full_path = "#{dirname}/#{path}"
         
     | 
| 
      
 655 
     | 
    
         
            +
                        next unless File.stat(full_path).size.zero?
         
     | 
| 
      
 656 
     | 
    
         
            +
             
     | 
| 
      
 657 
     | 
    
         
            +
                        match_data =
         
     | 
| 
      
 658 
     | 
    
         
            +
                          /\A#{Regexp.escape(basename)}\.([\da-fA-F]{7})/.match(path)
         
     | 
| 
      
 659 
     | 
    
         
            +
                        if match_data
         
     | 
| 
      
 660 
     | 
    
         
            +
                          id = Integer(match_data[1], 16)
         
     | 
| 
      
 661 
     | 
    
         
            +
                          name = @database[id]
         
     | 
| 
      
 662 
     | 
    
         
            +
                          if name
         
     | 
| 
      
 663 
     | 
    
         
            +
                            broken_ids[id] = true
         
     | 
| 
      
 664 
     | 
    
         
            +
                            next
         
     | 
| 
      
 665 
     | 
    
         
            +
                          end
         
     | 
| 
      
 666 
     | 
    
         
            +
                        end
         
     | 
| 
      
 667 
     | 
    
         
            +
             
     | 
| 
      
 668 
     | 
    
         
            +
                        begin
         
     | 
| 
      
 669 
     | 
    
         
            +
                          File.unlink(full_path)
         
     | 
| 
      
 670 
     | 
    
         
            +
                          message = "Removed empty file: <#{full_path}>"
         
     | 
| 
      
 671 
     | 
    
         
            +
                          @output.puts(message)
         
     | 
| 
      
 672 
     | 
    
         
            +
                          logger.log(:info, message)
         
     | 
| 
      
 673 
     | 
    
         
            +
                        rescue Error => error
         
     | 
| 
      
 674 
     | 
    
         
            +
                          message =
         
     | 
| 
      
 675 
     | 
    
         
            +
                            "Failed to remove empty file: <#{full_path}>: " +
         
     | 
| 
      
 676 
     | 
    
         
            +
                            "#{error.class}: #{error.message}"
         
     | 
| 
      
 677 
     | 
    
         
            +
                          logger.log(:error, message)
         
     | 
| 
      
 678 
     | 
    
         
            +
                          logger.log_error(error)
         
     | 
| 
      
 679 
     | 
    
         
            +
                        end
         
     | 
| 
      
 680 
     | 
    
         
            +
                      end
         
     | 
| 
      
 681 
     | 
    
         
            +
             
     | 
| 
      
 682 
     | 
    
         
            +
                      broken_ids.each_key do |id|
         
     | 
| 
      
 683 
     | 
    
         
            +
                        name = @database[id]
         
     | 
| 
      
 684 
     | 
    
         
            +
                        broken_basename = "%s.%07x" % [basename, id]
         
     | 
| 
      
 685 
     | 
    
         
            +
             
     | 
| 
      
 686 
     | 
    
         
            +
                        begin
         
     | 
| 
      
 687 
     | 
    
         
            +
                          Object.remove_force(name)
         
     | 
| 
      
 688 
     | 
    
         
            +
                          message =
         
     | 
| 
      
 689 
     | 
    
         
            +
                            "[#{name}] Remove a broken object that has empty file: " +
         
     | 
| 
      
 690 
     | 
    
         
            +
                            "<#{dirname}/#{broken_basename}>"
         
     | 
| 
      
 691 
     | 
    
         
            +
                          @output.puts(message)
         
     | 
| 
      
 692 
     | 
    
         
            +
                          logger.log(:info, message)
         
     | 
| 
      
 693 
     | 
    
         
            +
                        rescue Error => error
         
     | 
| 
      
 694 
     | 
    
         
            +
                          message =
         
     | 
| 
      
 695 
     | 
    
         
            +
                            "[#{name}] Failed to remove a broken object " +
         
     | 
| 
      
 696 
     | 
    
         
            +
                            "that has empty file: <#{dirname}/#{broken_basename}>: " +
         
     | 
| 
      
 697 
     | 
    
         
            +
                            "#{error.class}: #{error.message}"
         
     | 
| 
      
 698 
     | 
    
         
            +
                          logger.log(:error, message)
         
     | 
| 
      
 699 
     | 
    
         
            +
                          logger.log_error(error)
         
     | 
| 
      
 700 
     | 
    
         
            +
                          next
         
     | 
| 
      
 701 
     | 
    
         
            +
                        end
         
     | 
| 
      
 702 
     | 
    
         
            +
             
     | 
| 
      
 703 
     | 
    
         
            +
                        Dir.entries(dirname).sort.each do |path|
         
     | 
| 
      
 704 
     | 
    
         
            +
                          next unless path.start_with?(broken_basename)
         
     | 
| 
      
 705 
     | 
    
         
            +
             
     | 
| 
      
 706 
     | 
    
         
            +
                          full_path = "#{dirname}/#{path}"
         
     | 
| 
      
 707 
     | 
    
         
            +
             
     | 
| 
      
 708 
     | 
    
         
            +
                          begin
         
     | 
| 
      
 709 
     | 
    
         
            +
                            File.unlink(full_path)
         
     | 
| 
      
 710 
     | 
    
         
            +
                            message =
         
     | 
| 
      
 711 
     | 
    
         
            +
                              "[#{name}] Removed a file for broken object " +
         
     | 
| 
      
 712 
     | 
    
         
            +
                              "that has empty file: <#{full_path}>"
         
     | 
| 
      
 713 
     | 
    
         
            +
                            @output.puts(message)
         
     | 
| 
      
 714 
     | 
    
         
            +
                            logger.log(:info, message)
         
     | 
| 
      
 715 
     | 
    
         
            +
                          rescue Error => error
         
     | 
| 
      
 716 
     | 
    
         
            +
                            message =
         
     | 
| 
      
 717 
     | 
    
         
            +
                              "[#{name}] Failed to removed a file for broken object " +
         
     | 
| 
      
 718 
     | 
    
         
            +
                              "that has empty file: <#{full_path}>: " +
         
     | 
| 
      
 719 
     | 
    
         
            +
                              "#{error.class}: #{error.message}"
         
     | 
| 
      
 720 
     | 
    
         
            +
                            logger.log(:error, message)
         
     | 
| 
      
 721 
     | 
    
         
            +
                            logger.log_error(error)
         
     | 
| 
      
 722 
     | 
    
         
            +
                          end
         
     | 
| 
       533 
723 
     | 
    
         
             
                        end
         
     | 
| 
       534 
724 
     | 
    
         
             
                      end
         
     | 
| 
       535 
725 
     | 
    
         
             
                    end
         
     |