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

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Jun 8 14:52:50 JST 2014


Kouhei Sutou	2014-06-08 14:52:50 +0900 (Sun, 08 Jun 2014)

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

  Message:
    mrb: implement index resolution for accessor by mruby

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

  Modified: lib/mrb/mrb_expr.c (+1 -10)
===================================================================
--- lib/mrb/mrb_expr.c    2014-06-08 14:49:20 +0900 (9ac3d5e)
+++ lib/mrb/mrb_expr.c    2014-06-08 14:52:50 +0900 (1f17165)
@@ -362,17 +362,8 @@ scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n,
               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;
               mrb_target = mrb_grn_accessor_new(mrb, (grn_accessor *)(*p));
-              grn_scan_info_set_flags(si, grn_scan_info_get_flags(si) | SCAN_ACCESSOR);
-              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_accessor", 1, mrb_target);
             } else {
               mrb_funcall(mrb, mrb_si, "query=", 1, mrb_cptr_value(mrb, *p));
             }

  Modified: lib/mrb/scripts/scan_info.rb (+14 -0)
===================================================================
--- lib/mrb/scripts/scan_info.rb    2014-06-08 14:49:20 +0900 (a2eaad6)
+++ lib/mrb/scripts/scan_info.rb    2014-06-08 14:52:50 +0900 (5b2b198)
@@ -1,9 +1,23 @@
 module Groonga
   class ScanInfo
+    module Flags
+      ACCESSOR  = 0x01
+      PUSH      = 0x02
+      POP       = 0x04
+      PRE_CONST = 0x08
+    end
+
     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
+
+    def resolve_index_accessor(accessor)
+      self.flags |= Flags::ACCESSOR
+      index_info = accessor.find_index(op)
+      return if index_info.nil?
+      put_index(index_info.index, index_info.section_id, 1)
+    end
   end
 end
-------------- next part --------------
HTML����������������������������...
Download 



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