Kouhei Sutou
null+****@clear*****
Wed Dec 2 14:33:28 JST 2015
Kouhei Sutou 2015-12-02 14:33:28 +0900 (Wed, 02 Dec 2015) New Revision: 8373f88292990fa92b5e40dfd6b23e612e404d9c https://github.com/groonga/groonga/commit/8373f88292990fa92b5e40dfd6b23e612e404d9c Message: Support "index_column == 'value'" Added files: test/command/suite/select/filter/index/equal/index.expected test/command/suite/select/filter/index/equal/index.test Modified files: lib/expr.c lib/mrb/scripts/scan_info_data.rb Modified: lib/expr.c (+2 -0) =================================================================== --- lib/expr.c 2015-12-02 12:19:36 +0900 (f76207b) +++ lib/expr.c 2015-12-02 14:33:28 +0900 (b97cff5) @@ -4333,6 +4333,8 @@ scan_info_build_match(grn_ctx *ctx, scan_info *si) for (; p < pe; p++) { if ((*p)->header.type == GRN_EXPR) { scan_info_build_match_expr(ctx, si, (grn_expr *)(*p)); + } else if ((*p)->header.type == GRN_COLUMN_INDEX) { + scan_info_put_index(ctx, si, *p, 0, 1, NULL, NULL, 0); } else if (GRN_DB_OBJP(*p)) { grn_index_datum index_datum; unsigned int n_index_data; Modified: lib/mrb/scripts/scan_info_data.rb (+6 -0) =================================================================== --- lib/mrb/scripts/scan_info_data.rb 2015-12-02 12:19:36 +0900 (4a6e58a) +++ lib/mrb/scripts/scan_info_data.rb 2015-12-02 14:33:28 +0900 (d203c13) @@ -96,6 +96,8 @@ module Groonga match_resolve_index_expression(arg) when Accessor match_resolve_index_accessor(arg) + when IndexColumn + match_resolve_index_index_column(arg) when Object match_resolve_index_db_obj(arg) else @@ -258,6 +260,10 @@ module Groonga put_search_index(index_info.index, index_info.section_id, expr_code.weight) end + def match_resolve_index_index_column(index) + put_search_index(index, 0, 1) + end + def match_resolve_index_db_obj(db_obj) index_info = db_obj.find_index(op) return if index_info.nil? Added: test/command/suite/select/filter/index/equal/index.expected (+16 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/select/filter/index/equal/index.expected 2015-12-02 14:33:28 +0900 (c900c03) @@ -0,0 +1,16 @@ +table_create Logs TABLE_NO_KEY +[[0,0.0,0.0],true] +column_create Logs server COLUMN_SCALAR ShortText +[[0,0.0,0.0],true] +table_create Servers TABLE_HASH_KEY ShortText +[[0,0.0,0.0],true] +column_create Servers logs_server COLUMN_INDEX Logs server +[[0,0.0,0.0],true] +load --table Logs +[ +{"server": "www"}, +{"server": "mail"} +] +[[0,0.0,0.0],2] +select Logs --filter 'Servers.logs_server == "www"' +[[0,0.0,0.0],[[[1],[["_id","UInt32"],["server","ShortText"]],[1,"www"]]]] Added: test/command/suite/select/filter/index/equal/index.test (+13 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/select/filter/index/equal/index.test 2015-12-02 14:33:28 +0900 (15aec36) @@ -0,0 +1,13 @@ +table_create Logs TABLE_NO_KEY +column_create Logs server COLUMN_SCALAR ShortText + +table_create Servers TABLE_HASH_KEY ShortText +column_create Servers logs_server COLUMN_INDEX Logs server + +load --table Logs +[ +{"server": "www"}, +{"server": "mail"} +] + +select Logs --filter 'Servers.logs_server == "www"' -------------- next part -------------- HTML����������������������������...다운로드