[Groonga-commit] groonga/groonga at 273a5fc [master] mrb: move resolving index code to mruby

Back to archive index

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 



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