Kouhei Sutou
null+****@clear*****
Tue May 22 15:32:26 JST 2018
Kouhei Sutou 2018-05-22 15:32:26 +0900 (Tue, 22 May 2018) New Revision: d6ec0881f0a36f1cf81ac1df6692897d3ee06a79 https://github.com/groonga/groonga/commit/d6ec0881f0a36f1cf81ac1df6692897d3ee06a79 Message: mrb: Expression#append_const accepts Record Modified files: lib/mrb/mrb_expr.c Modified: lib/mrb/mrb_expr.c (+15 -1) =================================================================== --- lib/mrb/mrb_expr.c 2018-05-22 15:11:17 +0900 (77522bb86) +++ lib/mrb/mrb_expr.c 2018-05-22 15:32:26 +0900 (2bae9f9ed) @@ -815,10 +815,11 @@ mrb_grn_expression_append_constant(mrb_state *mrb, mrb_value self) break; default : { + grn_mrb_data *data = &(ctx->impl->mrb); struct RClass *klass; klass = mrb_class(mrb, mrb_constant); - if (klass == ctx->impl->mrb.builtin.time_class) { + if (klass == data->builtin.time_class) { grn_obj constant; mrb_value mrb_sec; mrb_value mrb_usec; @@ -830,6 +831,19 @@ mrb_grn_expression_append_constant(mrb_state *mrb, mrb_value self) GRN_TIME_PACK(mrb_fixnum(mrb_sec), mrb_fixnum(mrb_usec))); grn_expr_append_const(ctx, expr, &constant, op, n_args); GRN_OBJ_FIN(ctx, &constant); + } else if (klass == mrb_class_get_under(mrb, data->module, "Record")) { + grn_obj constant; + grn_id id; + mrb_value mrb_table; + grn_obj *domain; + + id = mrb_fixnum(mrb_funcall(mrb, mrb_constant, "id", 0)); + mrb_table = mrb_funcall(mrb, mrb_constant, "table", 0); + domain = DATA_PTR(mrb_table); + GRN_RECORD_INIT(&constant, 0, grn_obj_id(ctx, domain)); + GRN_RECORD_SET(ctx, &constant, id); + grn_expr_append_const(ctx, expr, &constant, op, n_args); + GRN_OBJ_FIN(ctx, &constant); } else { mrb_raisef(mrb, E_ARGUMENT_ERROR, "unsupported constant to append to expression: %S", -------------- next part -------------- HTML����������������������������... URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20180522/723958f4/attachment.htm