[Groonga-commit] groonga/groonga at 0e72f34 [master] logical_range_filter: don't use range index if query has nested reference vector accessor

Back to archive index

Kouhei Sutou null+****@clear*****
Wed Jul 15 18:31:37 JST 2015


Kouhei Sutou	2015-07-15 18:31:37 +0900 (Wed, 15 Jul 2015)

  New Revision: 0e72f34f3c44e717f3e86f467d758e2e3575f8d4
  https://github.com/groonga/groonga/commit/0e72f34f3c44e717f3e86f467d758e2e3575f8d4

  Message:
    logical_range_filter: don't use range index if query has nested reference vector accessor
    
    Nested reference vector accessor is an accessor that has one or more
    reference vector columns not in the last element.
    
    users.name is a nested reference vector when "users" is defined as the
    following because "users" isn't the last element:
    
        column_create XXX users COLUMN_VECTOR Users
    
    user.tags isn't a nested reference vector when "user" and "tags" are
    defined as the following because "tags" is the last element:
    
        column_create XXX user COLUMN_SCALAR Users
        column_create Users tags COLUMN_VECTOR Tags

  Added files:
    test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/range_index.expected
    test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/range_index.test
    test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/select.expected
    test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/select.test
    test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/range_index.expected
    test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/range_index.test
    test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/select.expected
    test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/select.test
  Modified files:
    plugins/sharding/logical_range_filter.rb

  Modified: plugins/sharding/logical_range_filter.rb (+23 -0)
===================================================================
--- plugins/sharding/logical_range_filter.rb    2015-07-15 18:28:33 +0900 (904a21f)
+++ plugins/sharding/logical_range_filter.rb    2015-07-15 18:31:37 +0900 (f4da0f2)
@@ -362,6 +362,14 @@ module Groonga
         end
 
         def range_index_available_expression?(expression, line, method_name)
+          nested_reference_vector_column_accessor =
+            find_nested_reference_vector_column_accessor(expression)
+          if nested_reference_vector_column_accessor
+            reason = "nested reference vector column accessor can't be used: "
+            reason << "<#{nested_reference_vector_column_accessor.name}>"
+            return decide_use_range_index(false, reason, line, method_name)
+          end
+
           selector_only_procedure = find_selector_only_procedure(expression)
           if selector_only_procedure
             reason = "selector only procedure can't be used: "
@@ -372,6 +380,21 @@ module Groonga
           true
         end
 
+        def find_nested_reference_vector_column_accessor(expression)
+          expression.codes.each do |code|
+            value = code.value
+            next unless value.is_a?(Accessor)
+
+            sub_accessor = value
+            while sub_accessor.have_next?
+              object = sub_accessor.object
+              return value if object.is_a?(Column) and object.vector?
+              sub_accessor = sub_accessor.next
+            end
+          end
+          nil
+        end
+
         def find_selector_only_procedure(expression)
           expression.codes.each do |code|
             value = code.value

  Added: test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/range_index.expected (+103 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/range_index.expected    2015-07-15 18:31:37 +0900 (458eb68)
@@ -0,0 +1,103 @@
+plugin_register sharding
+[[0,0.0,0.0],true]
+table_create Terms TABLE_PAT_KEY ShortText   --default_tokenizer TokenBigramSplitSymbolAlpha   --normalizer NormalizerAuto
+[[0,0.0,0.0],true]
+table_create Users TABLE_PAT_KEY ShortText
+[[0,0.0,0.0],true]
+column_create Users name COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Logs_20150205 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+column_create Logs_20150205 users COLUMN_VECTOR Users
+[[0,0.0,0.0],true]
+table_create Timestamp_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Timestamp_20150205 index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+column_create Users index_20150205 COLUMN_INDEX Logs_20150205 users
+[[0,0.0,0.0],true]
+column_create Terms users_name COLUMN_INDEX|WITH_SECTION   Users name
+[[0,0.0,0.0],true]
+load --table Users
+[
+{"_key": "alice",  "name": "Alice"},
+{"_key": "bob",    "name": "Bob"},
+{"_key": "carlos", "name": "Carlos"},
+{"_key": "david",  "name": "David"}
+]
+[[0,0.0,0.0],4]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+       "memo": "2015-02-05 13:49:00",
+      "users": ["alice", "bob", "carlos"]
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+       "memo": "2015-02-05 13:50:00",
+      "users": ["bob", "carlos", "david"]
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+       "memo": "2015-02-05 13:51:00",
+      "users": ["bob", "carlos", "david"]
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+       "memo": "2015-02-05 13:52:00",
+      "users": ["carlos", "david", "alice"]
+}
+]
+[[0,0.0,0.0],4]
+log_level --level debug
+[[0,0.0,0.0],true]
+logical_range_filter Logs timestamp   --limit 2   --filter 'users.name @ "ce"'
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ],
+      [
+        "users",
+        "Users"
+      ]
+    ],
+    [
+      "2015-02-05 13:49:00",
+      1423111740.0,
+      [
+        "alice",
+        "bob",
+        "carlos"
+      ]
+    ],
+    [
+      "2015-02-05 13:52:00",
+      1423111920.0,
+      [
+        "carlos",
+        "david",
+        "alice"
+      ]
+    ]
+  ]
+]
+#|d| [logical_range_filter][select] <Logs_20150205>: nested reference vector column accessor can't be used: <users.name>
+log_level --level notice
+[[0,0.0,0.0],true]

  Added: test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/range_index.test (+63 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/range_index.test    2015-07-15 18:31:37 +0900 (34aca20)
@@ -0,0 +1,63 @@
+#@on-error omit
+plugin_register sharding
+#@on-error default
+
+table_create Terms TABLE_PAT_KEY ShortText \
+  --default_tokenizer TokenBigramSplitSymbolAlpha \
+  --normalizer NormalizerAuto
+
+table_create Users TABLE_PAT_KEY ShortText
+column_create Users name COLUMN_SCALAR ShortText
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+column_create Logs_20150205 users COLUMN_VECTOR Users
+
+table_create Timestamp_20150205 TABLE_PAT_KEY Time
+column_create Timestamp_20150205 index COLUMN_INDEX Logs_20150205 timestamp
+
+column_create Users index_20150205 COLUMN_INDEX Logs_20150205 users
+
+column_create Terms users_name COLUMN_INDEX|WITH_SECTION \
+  Users name
+
+load --table Users
+[
+{"_key": "alice",  "name": "Alice"},
+{"_key": "bob",    "name": "Bob"},
+{"_key": "carlos", "name": "Carlos"},
+{"_key": "david",  "name": "David"}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+       "memo": "2015-02-05 13:49:00",
+      "users": ["alice", "bob", "carlos"]
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+       "memo": "2015-02-05 13:50:00",
+      "users": ["bob", "carlos", "david"]
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+       "memo": "2015-02-05 13:51:00",
+      "users": ["bob", "carlos", "david"]
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+       "memo": "2015-02-05 13:52:00",
+      "users": ["carlos", "david", "alice"]
+}
+]
+
+#@add-important-log-levels debug
+log_level --level debug
+logical_range_filter Logs timestamp \
+  --limit 2 \
+  --filter 'users.name @ "ce"'
+log_level --level notice
+#@remove-important-log-levels debug

  Added: test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/select.expected (+103 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/select.expected    2015-07-15 18:31:37 +0900 (ad42d70)
@@ -0,0 +1,103 @@
+plugin_register sharding
+[[0,0.0,0.0],true]
+table_create Terms TABLE_PAT_KEY ShortText   --default_tokenizer TokenBigramSplitSymbolAlpha   --normalizer NormalizerAuto
+[[0,0.0,0.0],true]
+table_create Users TABLE_PAT_KEY ShortText
+[[0,0.0,0.0],true]
+column_create Users name COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Logs_20150205 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+column_create Logs_20150205 users COLUMN_VECTOR Users
+[[0,0.0,0.0],true]
+table_create Timestamp_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Timestamp_20150205 index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+column_create Users index_20150205 COLUMN_INDEX Logs_20150205 users
+[[0,0.0,0.0],true]
+column_create Terms users_name COLUMN_INDEX|WITH_SECTION   Users name
+[[0,0.0,0.0],true]
+load --table Users
+[
+{"_key": "alice",  "name": "Alice"},
+{"_key": "bob",    "name": "Bob"},
+{"_key": "carlos", "name": "Carlos"},
+{"_key": "david",  "name": "David"}
+]
+[[0,0.0,0.0],4]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+       "memo": "2015-02-05 13:49:00",
+      "users": ["alice", "bob", "carlos"]
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+       "memo": "2015-02-05 13:50:00",
+      "users": ["bob", "carlos", "david"]
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+       "memo": "2015-02-05 13:51:00",
+      "users": ["bob", "carlos", "david"]
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+       "memo": "2015-02-05 13:52:00",
+      "users": ["carlos", "david", "alice"]
+}
+]
+[[0,0.0,0.0],4]
+log_level --level debug
+[[0,0.0,0.0],true]
+logical_range_filter Logs timestamp   --limit -1   --filter 'users.name @ "ce"'
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ],
+      [
+        "users",
+        "Users"
+      ]
+    ],
+    [
+      "2015-02-05 13:49:00",
+      1423111740.0,
+      [
+        "alice",
+        "bob",
+        "carlos"
+      ]
+    ],
+    [
+      "2015-02-05 13:52:00",
+      1423111920.0,
+      [
+        "carlos",
+        "david",
+        "alice"
+      ]
+    ]
+  ]
+]
+#|d| [logical_range_filter][select] <Logs_20150205>: limit is negative: <-1>
+log_level --level notice
+[[0,0.0,0.0],true]

  Added: test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/select.test (+63 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_range_filter/filter/match/nested_reference_vector/select.test    2015-07-15 18:31:37 +0900 (260000a)
@@ -0,0 +1,63 @@
+#@on-error omit
+plugin_register sharding
+#@on-error default
+
+table_create Terms TABLE_PAT_KEY ShortText \
+  --default_tokenizer TokenBigramSplitSymbolAlpha \
+  --normalizer NormalizerAuto
+
+table_create Users TABLE_PAT_KEY ShortText
+column_create Users name COLUMN_SCALAR ShortText
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+column_create Logs_20150205 users COLUMN_VECTOR Users
+
+table_create Timestamp_20150205 TABLE_PAT_KEY Time
+column_create Timestamp_20150205 index COLUMN_INDEX Logs_20150205 timestamp
+
+column_create Users index_20150205 COLUMN_INDEX Logs_20150205 users
+
+column_create Terms users_name COLUMN_INDEX|WITH_SECTION \
+  Users name
+
+load --table Users
+[
+{"_key": "alice",  "name": "Alice"},
+{"_key": "bob",    "name": "Bob"},
+{"_key": "carlos", "name": "Carlos"},
+{"_key": "david",  "name": "David"}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+       "memo": "2015-02-05 13:49:00",
+      "users": ["alice", "bob", "carlos"]
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+       "memo": "2015-02-05 13:50:00",
+      "users": ["bob", "carlos", "david"]
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+       "memo": "2015-02-05 13:51:00",
+      "users": ["bob", "carlos", "david"]
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+       "memo": "2015-02-05 13:52:00",
+      "users": ["carlos", "david", "alice"]
+}
+]
+
+#@add-important-log-levels debug
+log_level --level debug
+logical_range_filter Logs timestamp \
+  --limit -1 \
+  --filter 'users.name @ "ce"'
+log_level --level notice
+#@remove-important-log-levels debug

  Added: test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/range_index.expected (+95 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/range_index.expected    2015-07-15 18:31:37 +0900 (98b3a3c)
@@ -0,0 +1,95 @@
+plugin_register sharding
+[[0,0.0,0.0],true]
+table_create Users TABLE_PAT_KEY ShortText
+[[0,0.0,0.0],true]
+column_create Users tags COLUMN_VECTOR ShortText
+[[0,0.0,0.0],true]
+table_create Tags TABLE_PAT_KEY ShortText
+[[0,0.0,0.0],true]
+column_create Tags users COLUMN_INDEX Users tags
+[[0,0.0,0.0],true]
+table_create Logs_20150205 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+column_create Logs_20150205 user COLUMN_SCALAR Users
+[[0,0.0,0.0],true]
+table_create Timestamp_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Timestamp_20150205 index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+column_create Users index_20150205 COLUMN_INDEX Logs_20150205 user
+[[0,0.0,0.0],true]
+load --table Users
+[
+{"_key": "alice",  "tags": ["student", "programming", "search"]},
+{"_key": "bob",    "tags": ["worker", "programming"]},
+{"_key": "carlos", "tags": ["programming"]},
+{"_key": "david",  "tags": ["search", "worker"]}
+]
+[[0,0.0,0.0],4]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+       "memo": "2015-02-05 13:49:00",
+       "user": "alice"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+       "memo": "2015-02-05 13:50:00",
+       "user": "bob"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+       "memo": "2015-02-05 13:51:00",
+       "user": "carlos"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+       "memo": "2015-02-05 13:52:00",
+       "user": "david"
+}
+]
+[[0,0.0,0.0],4]
+log_level --level debug
+[[0,0.0,0.0],true]
+logical_range_filter Logs timestamp   --limit 2   --filter 'user.tags @ "search"'
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ],
+      [
+        "user",
+        "Users"
+      ]
+    ],
+    [
+      "2015-02-05 13:49:00",
+      1423111740.0,
+      "alice"
+    ],
+    [
+      "2015-02-05 13:52:00",
+      1423111920.0,
+      "david"
+    ]
+  ]
+]
+#|d| [logical_range_filter][range-index] <Logs_20150205>: hit ratio (1=4/4)>= threshold (0.2)
+log_level --level notice
+[[0,0.0,0.0],true]

  Added: test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/range_index.test (+59 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/range_index.test    2015-07-15 18:31:37 +0900 (8df3a4d)
@@ -0,0 +1,59 @@
+#@on-error omit
+plugin_register sharding
+#@on-error default
+
+table_create Users TABLE_PAT_KEY ShortText
+column_create Users tags COLUMN_VECTOR ShortText
+
+table_create Tags TABLE_PAT_KEY ShortText
+column_create Tags users COLUMN_INDEX Users tags
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+column_create Logs_20150205 user COLUMN_SCALAR Users
+
+table_create Timestamp_20150205 TABLE_PAT_KEY Time
+column_create Timestamp_20150205 index COLUMN_INDEX Logs_20150205 timestamp
+
+column_create Users index_20150205 COLUMN_INDEX Logs_20150205 user
+
+load --table Users
+[
+{"_key": "alice",  "tags": ["student", "programming", "search"]},
+{"_key": "bob",    "tags": ["worker", "programming"]},
+{"_key": "carlos", "tags": ["programming"]},
+{"_key": "david",  "tags": ["search", "worker"]}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+       "memo": "2015-02-05 13:49:00",
+       "user": "alice"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+       "memo": "2015-02-05 13:50:00",
+       "user": "bob"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+       "memo": "2015-02-05 13:51:00",
+       "user": "carlos"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+       "memo": "2015-02-05 13:52:00",
+       "user": "david"
+}
+]
+
+#@add-important-log-levels debug
+log_level --level debug
+logical_range_filter Logs timestamp \
+  --limit 2 \
+  --filter 'user.tags @ "search"'
+log_level --level notice
+#@remove-important-log-levels debug

  Added: test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/select.expected (+95 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/select.expected    2015-07-15 18:31:37 +0900 (46630b1)
@@ -0,0 +1,95 @@
+plugin_register sharding
+[[0,0.0,0.0],true]
+table_create Users TABLE_PAT_KEY ShortText
+[[0,0.0,0.0],true]
+column_create Users tags COLUMN_VECTOR ShortText
+[[0,0.0,0.0],true]
+table_create Tags TABLE_PAT_KEY ShortText
+[[0,0.0,0.0],true]
+column_create Tags users COLUMN_INDEX Users tags
+[[0,0.0,0.0],true]
+table_create Logs_20150205 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+column_create Logs_20150205 user COLUMN_SCALAR Users
+[[0,0.0,0.0],true]
+table_create Timestamp_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Timestamp_20150205 index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+column_create Users index_20150205 COLUMN_INDEX Logs_20150205 user
+[[0,0.0,0.0],true]
+load --table Users
+[
+{"_key": "alice",  "tags": ["student", "programming", "search"]},
+{"_key": "bob",    "tags": ["worker", "programming"]},
+{"_key": "carlos", "tags": ["programming"]},
+{"_key": "david",  "tags": ["search", "worker"]}
+]
+[[0,0.0,0.0],4]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+       "memo": "2015-02-05 13:49:00",
+       "user": "alice"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+       "memo": "2015-02-05 13:50:00",
+       "user": "bob"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+       "memo": "2015-02-05 13:51:00",
+       "user": "carlos"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+       "memo": "2015-02-05 13:52:00",
+       "user": "david"
+}
+]
+[[0,0.0,0.0],4]
+log_level --level debug
+[[0,0.0,0.0],true]
+logical_range_filter Logs timestamp   --limit -1   --filter 'user.tags @ "search"'
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ],
+      [
+        "user",
+        "Users"
+      ]
+    ],
+    [
+      "2015-02-05 13:49:00",
+      1423111740.0,
+      "alice"
+    ],
+    [
+      "2015-02-05 13:52:00",
+      1423111920.0,
+      "david"
+    ]
+  ]
+]
+#|d| [logical_range_filter][select] <Logs_20150205>: limit is negative: <-1>
+log_level --level notice
+[[0,0.0,0.0],true]

  Added: test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/select.test (+59 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_range_filter/filter/match/reference_vector/select.test    2015-07-15 18:31:37 +0900 (1c8b657)
@@ -0,0 +1,59 @@
+#@on-error omit
+plugin_register sharding
+#@on-error default
+
+table_create Users TABLE_PAT_KEY ShortText
+column_create Users tags COLUMN_VECTOR ShortText
+
+table_create Tags TABLE_PAT_KEY ShortText
+column_create Tags users COLUMN_INDEX Users tags
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+column_create Logs_20150205 user COLUMN_SCALAR Users
+
+table_create Timestamp_20150205 TABLE_PAT_KEY Time
+column_create Timestamp_20150205 index COLUMN_INDEX Logs_20150205 timestamp
+
+column_create Users index_20150205 COLUMN_INDEX Logs_20150205 user
+
+load --table Users
+[
+{"_key": "alice",  "tags": ["student", "programming", "search"]},
+{"_key": "bob",    "tags": ["worker", "programming"]},
+{"_key": "carlos", "tags": ["programming"]},
+{"_key": "david",  "tags": ["search", "worker"]}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+       "memo": "2015-02-05 13:49:00",
+       "user": "alice"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+       "memo": "2015-02-05 13:50:00",
+       "user": "bob"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+       "memo": "2015-02-05 13:51:00",
+       "user": "carlos"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+       "memo": "2015-02-05 13:52:00",
+       "user": "david"
+}
+]
+
+#@add-important-log-levels debug
+log_level --level debug
+logical_range_filter Logs timestamp \
+  --limit -1 \
+  --filter 'user.tags @ "search"'
+log_level --level notice
+#@remove-important-log-levels debug
-------------- next part --------------
HTML����������������������������...
Download 



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