[Groonga-commit] groonga/groonga at 8373f88 [master] Support "index_column == 'value'"

Back to archive index

Kouhei Sutou null+****@clear*****
Wed Dec 2 14:33:28 JST 2015


Kouhei Sutou	2015-12-02 14:33:28 +0900 (Wed, 02 Dec 2015)

  New Revision: 8373f88292990fa92b5e40dfd6b23e612e404d9c
  https://github.com/groonga/groonga/commit/8373f88292990fa92b5e40dfd6b23e612e404d9c

  Message:
    Support "index_column == 'value'"

  Added files:
    test/command/suite/select/filter/index/equal/index.expected
    test/command/suite/select/filter/index/equal/index.test
  Modified files:
    lib/expr.c
    lib/mrb/scripts/scan_info_data.rb

  Modified: lib/expr.c (+2 -0)
===================================================================
--- lib/expr.c    2015-12-02 12:19:36 +0900 (f76207b)
+++ lib/expr.c    2015-12-02 14:33:28 +0900 (b97cff5)
@@ -4333,6 +4333,8 @@ scan_info_build_match(grn_ctx *ctx, scan_info *si)
   for (; p < pe; p++) {
     if ((*p)->header.type == GRN_EXPR) {
       scan_info_build_match_expr(ctx, si, (grn_expr *)(*p));
+    } else if ((*p)->header.type == GRN_COLUMN_INDEX) {
+      scan_info_put_index(ctx, si, *p, 0, 1, NULL, NULL, 0);
     } else if (GRN_DB_OBJP(*p)) {
       grn_index_datum index_datum;
       unsigned int n_index_data;

  Modified: lib/mrb/scripts/scan_info_data.rb (+6 -0)
===================================================================
--- lib/mrb/scripts/scan_info_data.rb    2015-12-02 12:19:36 +0900 (4a6e58a)
+++ lib/mrb/scripts/scan_info_data.rb    2015-12-02 14:33:28 +0900 (d203c13)
@@ -96,6 +96,8 @@ module Groonga
           match_resolve_index_expression(arg)
         when Accessor
           match_resolve_index_accessor(arg)
+        when IndexColumn
+          match_resolve_index_index_column(arg)
         when Object
           match_resolve_index_db_obj(arg)
         else
@@ -258,6 +260,10 @@ module Groonga
       put_search_index(index_info.index, index_info.section_id, expr_code.weight)
     end
 
+    def match_resolve_index_index_column(index)
+      put_search_index(index, 0, 1)
+    end
+
     def match_resolve_index_db_obj(db_obj)
       index_info = db_obj.find_index(op)
       return if index_info.nil?

  Added: test/command/suite/select/filter/index/equal/index.expected (+16 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/select/filter/index/equal/index.expected    2015-12-02 14:33:28 +0900 (c900c03)
@@ -0,0 +1,16 @@
+table_create Logs TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs server COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Servers TABLE_HASH_KEY ShortText
+[[0,0.0,0.0],true]
+column_create Servers logs_server COLUMN_INDEX Logs server
+[[0,0.0,0.0],true]
+load --table Logs
+[
+{"server": "www"},
+{"server": "mail"}
+]
+[[0,0.0,0.0],2]
+select Logs --filter 'Servers.logs_server == "www"'
+[[0,0.0,0.0],[[[1],[["_id","UInt32"],["server","ShortText"]],[1,"www"]]]]

  Added: test/command/suite/select/filter/index/equal/index.test (+13 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/select/filter/index/equal/index.test    2015-12-02 14:33:28 +0900 (15aec36)
@@ -0,0 +1,13 @@
+table_create Logs TABLE_NO_KEY
+column_create Logs server COLUMN_SCALAR ShortText
+
+table_create Servers TABLE_HASH_KEY ShortText
+column_create Servers logs_server COLUMN_INDEX Logs server
+
+load --table Logs
+[
+{"server": "www"},
+{"server": "mail"}
+]
+
+select Logs --filter 'Servers.logs_server == "www"'
-------------- next part --------------
HTML����������������������������...
다운로드 



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