[Groonga-commit] groonga/groonga at d6ec088 [master] mrb: Expression#append_const accepts Record

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index