[Groonga-commit] groonga/groonga at bb97f4f [master] mrb: implement index resolution for db_obj by mruby

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Jun 8 14:40:55 JST 2014


Kouhei Sutou	2014-06-08 14:40:55 +0900 (Sun, 08 Jun 2014)

  New Revision: bb97f4fef4c97b251c03439a556799c0b7468a7d
  https://github.com/groonga/groonga/commit/bb97f4fef4c97b251c03439a556799c0b7468a7d

  Message:
    mrb: implement index resolution for db_obj by mruby

  Added files:
    lib/mrb/scripts/scan_info.rb
  Modified files:
    lib/mrb/mrb_expr.c
    lib/mrb/scripts/sources.am

  Modified: lib/mrb/mrb_expr.c (+2 -9)
===================================================================
--- lib/mrb/mrb_expr.c    2014-06-08 14:39:33 +0900 (d76db2a)
+++ lib/mrb/mrb_expr.c    2014-06-08 14:40:55 +0900 (40fb20c)
@@ -358,16 +358,8 @@ scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n,
           for (k = 0; (arg = grn_scan_info_get_arg(ctx, si, k)) ; k++) {
             if (GRN_DB_OBJP(*p)) {
               mrb_value mrb_target;
-              mrb_value mrb_index_info;
               mrb_target = grn_mrb_value_from_grn_obj(mrb, *p);
-              mrb_index_info = mrb_funcall(mrb, mrb_target, "find_index", 1,
-                                           mrb_fixnum_value(c->op));
-              if (!mrb_nil_p(mrb_index_info)) {
-                mrb_funcall(mrb, mrb_si, "put_index", 3,
-                            mrb_funcall(mrb, mrb_index_info, "index", 0),
-                            mrb_funcall(mrb, mrb_index_info, "section_id", 0),
-                            mrb_fixnum_value(1));
-              }
+              mrb_funcall(mrb, mrb_si, "resolve_index_db_obj", 1, mrb_target);
             } else if (GRN_ACCESSORP(*p)) {
               mrb_value mrb_target;
               mrb_value mrb_index_info;
@@ -560,6 +552,7 @@ grn_mrb_expr_init(grn_ctx *ctx)
   mrb_define_method(mrb, klass, "weight",
                     mrb_grn_expr_code_get_weight, MRB_ARGS_NONE());
   grn_mrb_load(ctx, "expression.rb");
+  grn_mrb_load(ctx, "scan_info.rb");
 }
 
 scan_info **

  Added: lib/mrb/scripts/scan_info.rb (+9 -0) 100644
===================================================================
--- /dev/null
+++ lib/mrb/scripts/scan_info.rb    2014-06-08 14:40:55 +0900 (a2eaad6)
@@ -0,0 +1,9 @@
+module Groonga
+  class ScanInfo
+    def resolve_index_db_obj(db_obj)
+      index_info = db_obj.find_index(op)
+      return if index_info.nil?
+      put_index(index_info.index, index_info.section_id, 1)
+    end
+  end
+end

  Modified: lib/mrb/scripts/sources.am (+2 -1)
===================================================================
--- lib/mrb/scripts/sources.am    2014-06-08 14:39:33 +0900 (0de8bf9)
+++ lib/mrb/scripts/sources.am    2014-06-08 14:40:55 +0900 (fb6dea3)
@@ -1,3 +1,4 @@
 RUBY_SCRIPT_FILES =				\
 	eval_context.rb				\
-	expression.rb
+	expression.rb				\
+	scan_info.rb
-------------- next part --------------
HTML����������������������������...
Download 



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