Kouhei Sutou
null+****@clear*****
Sun Jun 8 17:40:52 JST 2014
Kouhei Sutou 2014-06-08 17:40:52 +0900 (Sun, 08 Jun 2014) New Revision: 273a5fc99ac6d79c55d64c0fcacb76b99c47a4dc https://github.com/groonga/groonga/commit/273a5fc99ac6d79c55d64c0fcacb76b99c47a4dc Message: mrb: move resolving index code to mruby Modified files: lib/mrb/mrb_converter.c lib/mrb/mrb_expr.c lib/mrb/scripts/scan_info.rb Modified: lib/mrb/mrb_converter.c (+3 -0) =================================================================== --- lib/mrb/mrb_converter.c 2014-06-08 17:32:24 +0900 (9e9e8a4) +++ lib/mrb/mrb_converter.c 2014-06-08 17:40:52 +0900 (2812836) @@ -37,6 +37,9 @@ grn_mrb_class_from_grn_obj(mrb_state *mrb, grn_obj *object) case GRN_ACCESSOR : klass = mrb_class_get_under(mrb, data->module, "Accessor"); break; + case GRN_BULK : + klass = mrb_class_get_under(mrb, data->module, "Bulk"); + break; case GRN_COLUMN_FIX_SIZE : klass = mrb_class_get_under(mrb, data->module, "FixedSizeColumn"); break; Modified: lib/mrb/mrb_expr.c (+7 -9) =================================================================== --- lib/mrb/mrb_expr.c 2014-06-08 17:32:24 +0900 (0e03760) +++ lib/mrb/mrb_expr.c 2014-06-08 17:40:52 +0900 (bc59f83) @@ -260,7 +260,9 @@ scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n, } } } else { - mrb_funcall(mrb, mrb_si, "query=", 1, mrb_cptr_value(mrb, *p)); + mrb_value mrb_query; + mrb_query = grn_mrb_value_from_grn_obj(mrb, *p); + mrb_funcall(mrb, mrb_si, "query=", 1, mrb_query); } } } @@ -356,13 +358,9 @@ scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n, int k; grn_obj *arg, **p = &arg; for (k = 0; (arg = grn_scan_info_get_arg(ctx, si, k)) ; k++) { - if ((*p)->header.type == GRN_BULK) { - mrb_funcall(mrb, mrb_si, "query=", 1, mrb_cptr_value(mrb, *p)); - } else { - mrb_value mrb_target; - mrb_target = grn_mrb_value_from_grn_obj(mrb, *p); - mrb_funcall(mrb, mrb_si, "resolve_index", 1, mrb_target); - } + mrb_value mrb_target; + mrb_target = grn_mrb_value_from_grn_obj(mrb, *p); + mrb_funcall(mrb, mrb_si, "resolve_index", 1, mrb_target); } } si = NULL; @@ -494,7 +492,7 @@ mrb_grn_scan_info_set_query(mrb_state *mrb, mrb_value self) mrb_get_args(mrb, "o", &mrb_query); si = DATA_PTR(self); - grn_scan_info_set_query(si, mrb_cptr(mrb_query)); + grn_scan_info_set_query(si, DATA_PTR(mrb_query)); return self; } Modified: lib/mrb/scripts/scan_info.rb (+4 -1) =================================================================== --- lib/mrb/scripts/scan_info.rb 2014-06-08 17:32:24 +0900 (d54bbfa) +++ lib/mrb/scripts/scan_info.rb 2014-06-08 17:40:52 +0900 (2fd161f) @@ -8,8 +8,11 @@ module Groonga end def resolve_index(object) - if object.is_a?(Accessor) + case object + when Accessor resolve_index_accessor(object) + when Bulk + self.query = object else resolve_index_db_obj(object) end -------------- next part -------------- HTML����������������������������...Download