[Groonga-commit] groonga/groonga at 85b7e4d [master] logical_table_select: add

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Jun 16 17:18:34 JST 2015


Kouhei Sutou	2015-06-16 17:18:34 +0900 (Tue, 16 Jun 2015)

  New Revision: 85b7e4d0c06bc3ce0e3d48629ddbfb3cea7d10c4
  https://github.com/groonga/groonga/commit/85b7e4d0c06bc3ce0e3d48629ddbfb3cea7d10c4

  Message:
    logical_table_select: add
    
    --filter is only supported for now.

  Added files:
    plugins/sharding/logical_select.rb
    test/command/suite/sharding/logical_select/no_condition/all.expected
    test/command/suite/sharding/logical_select/no_condition/all.test
    test/command/suite/sharding/logical_select/no_condition/max_exclude.expected
    test/command/suite/sharding/logical_select/no_condition/max_exclude.test
    test/command/suite/sharding/logical_select/no_condition/max_include.expected
    test/command/suite/sharding/logical_select/no_condition/max_include.test
    test/command/suite/sharding/logical_select/no_condition/min_exclude.expected
    test/command/suite/sharding/logical_select/no_condition/min_exclude.test
    test/command/suite/sharding/logical_select/no_condition/min_exclude_max_exclude.expected
    test/command/suite/sharding/logical_select/no_condition/min_exclude_max_exclude.test
    test/command/suite/sharding/logical_select/no_condition/min_exclude_max_include.expected
    test/command/suite/sharding/logical_select/no_condition/min_exclude_max_include.test
    test/command/suite/sharding/logical_select/no_condition/min_include.expected
    test/command/suite/sharding/logical_select/no_condition/min_include.test
    test/command/suite/sharding/logical_select/no_condition/min_include_max_exclude.expected
    test/command/suite/sharding/logical_select/no_condition/min_include_max_exclude.test
    test/command/suite/sharding/logical_select/no_condition/min_include_max_include.expected
    test/command/suite/sharding/logical_select/no_condition/min_include_max_include.test
  Modified files:
    plugins/sharding.rb

  Modified: plugins/sharding.rb (+1 -0)
===================================================================
--- plugins/sharding.rb    2015-06-16 17:18:11 +0900 (dc79d32)
+++ plugins/sharding.rb    2015-06-16 17:18:34 +0900 (4ebc9ba)
@@ -2,4 +2,5 @@ require "sharding/range_expression_builder"
 require "sharding/logical_enumerator"
 require "sharding/logical_count"
 require "sharding/logical_range_filter"
+require "sharding/logical_select"
 require "sharding/logical_table_remove"

  Added: plugins/sharding/logical_select.rb (+174 -0) 100644
===================================================================
--- /dev/null
+++ plugins/sharding/logical_select.rb    2015-06-16 17:18:34 +0900 (4eb1594)
@@ -0,0 +1,174 @@
+module Groonga
+  module Sharding
+    class LogicalSelectCommand < Command
+      register("logical_select",
+               [
+                 "logical_table",
+                 "shard_key",
+                 "min",
+                 "min_border",
+                 "max",
+                 "max_border",
+                 "filter",
+               ])
+
+      def run_body(input)
+        output_columns = input[:output_columns] || "_key, *"
+
+        enumerator = LogicalEnumerator.new("logical_select", input)
+
+        context = ExecuteContext.new(input)
+        begin
+          executor = Executor.new(context)
+          executor.execute
+
+          result_sets = context.result_sets
+          n_hits = 0
+          n_elements = 2 # for N hits and columns
+          result_sets.each do |result_set|
+            n_hits += result_set.size
+            n_elements += result_set.size
+          end
+
+          writer.array("RESULTSET", n_elements) do
+            writer.array("NHITS", 1) do
+              writer.write(n_hits)
+            end
+            first_result_set = result_sets.first
+            if first_result_set
+              writer.write_table_columns(first_result_set, output_columns)
+            end
+            options = {}
+            result_sets.each do |result_set|
+              writer.write_table_records(result_set, output_columns, options)
+            end
+          end
+        ensure
+          context.close
+        end
+      end
+
+      class ExecuteContext
+        attr_reader :enumerator
+        attr_reader :filter
+        attr_reader :offset
+        attr_reader :limit
+        attr_reader :result_sets
+        def initialize(input)
+          @input = input
+          @enumerator = LogicalEnumerator.new("logical_select", @input)
+          @filter = @input[:filter]
+          @offset = 0
+          @limit = 10
+
+          @result_sets = []
+        end
+
+        def close
+          @result_sets.each do |result_set|
+            result_set.close if result_set.temporary?
+          end
+        end
+      end
+
+      class Executor
+        def initialize(context)
+          @context = context
+        end
+
+        def execute
+          first_table = nil
+          enumerator =****@conte*****
+          enumerator.each do |table, shard_key, shard_range|
+            first_table ||= table
+            next if table.empty?
+
+            shard_executor = ShardExecutor.new(@context,
+                                               table, shard_key, shard_range)
+            shard_executor.execute
+          end
+          if first_table.nil?
+            message =
+              "[logical_select] no shard exists: " +
+              "logical_table: <#{enumerator.logical_table}>: " +
+              "shard_key: <#{enumerator.shard_key_name}>"
+            raise InvalidArgument, message
+          end
+          if****@conte*****_sets.empty?
+            result_set = HashTable.create(:flags => ObjectFlags::WITH_SUBREC,
+                                          :key_type => first_table)
+            @context.result_sets << result_set
+          end
+        end
+      end
+
+      class ShardExecutor
+        def initialize(context, table, shard_key, shard_range)
+          @context = context
+          @table = table
+          @shard_key = shard_key
+          @shard_range = shard_range
+
+          @filter =****@conte*****
+          @result_sets =****@conte*****_sets
+
+          @target_range =****@conte*****_range
+
+          @cover_type = @target_range.cover_type(@shard_range)
+
+          @expression_builder = RangeExpressionBuilder.new(@shard_key,
+                                                           @target_range,
+                                                           @filter)
+        end
+
+        def execute
+          return if @cover_type == :none
+
+          case @cover_type
+          when :all
+            filter_shard_all
+          when :partial_min
+            filter_table do |expression|
+              @expression_builder.build_partial_min(expression)
+            end
+          when :partial_max
+            filter_table do |expression|
+              @expression_builder.build_partial_max(expression)
+            end
+          when :partial_min_and_max
+            filter_table do |expression|
+              @expression_builder.build_partial_min_and_max(expression)
+            end
+          end
+        end
+
+        private
+        def filter_shard_all
+          if****@filte*****?
+            @result_sets << @table
+          else
+            filter_table do |expression|
+              @expression_builder.build_all(expression)
+            end
+          end
+        end
+
+        def create_expression(table)
+          expression = Expression.create(table)
+          begin
+            yield(expression)
+          ensure
+            expression.close
+          end
+        end
+
+        def filter_table
+          create_expression(@table) do |expression|
+            yield(expression)
+            @result_sets << @table.select(expression)
+          end
+        end
+      end
+    end
+  end
+end

  Added: test/command/suite/sharding/logical_select/no_condition/all.expected (+139 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/all.expected    2015-06-16 17:18:34 +0900 (0ce81e6)
@@ -0,0 +1,139 @@
+register sharding
+[[0,0.0,0.0],true]
+table_create Logs_20150203 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150203 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+[[0,0.0,0.0],true]
+table_create Logs_20150204 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150204 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+[[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]
+table_create Times_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+[[0,0.0,0.0],2]
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+[[0,0.0,0.0],3]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+[[0,0.0,0.0],4]
+logical_select Logs timestamp
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      9
+    ],
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ]
+    ],
+    [
+      "2015-02-03 12:49:00",
+      1422935340.0
+    ],
+    [
+      "2015-02-03 23:59:59",
+      1422975599.0
+    ],
+    [
+      "2015-02-04 00:00:00",
+      1422975600.0
+    ],
+    [
+      "2015-02-04 13:49:00",
+      1423025340.0
+    ],
+    [
+      "2015-02-04 13:50:00",
+      1423025400.0
+    ],
+    [
+      "2015-02-05 13:49:00",
+      1423111740.0
+    ],
+    [
+      "2015-02-05 13:50:00",
+      1423111800.0
+    ],
+    [
+      "2015-02-05 13:51:00",
+      1423111860.0
+    ],
+    [
+      "2015-02-05 13:52:00",
+      1423111920.0
+    ]
+  ]
+]

  Added: test/command/suite/sharding/logical_select/no_condition/all.test (+71 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/all.test    2015-06-16 17:18:34 +0900 (8e6e75a)
@@ -0,0 +1,71 @@
+#@on-error omit
+register sharding
+#@on-error default
+
+table_create Logs_20150203 TABLE_NO_KEY
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+table_create Times_20150203 TABLE_PAT_KEY Time
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+
+table_create Logs_20150204 TABLE_NO_KEY
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+table_create Times_20150204 TABLE_PAT_KEY Time
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+table_create Times_20150205 TABLE_PAT_KEY Time
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+
+logical_select Logs timestamp

  Added: test/command/suite/sharding/logical_select/no_condition/max_exclude.expected (+111 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/max_exclude.expected    2015-06-16 17:18:34 +0900 (b24ca3b)
@@ -0,0 +1,111 @@
+register sharding
+[[0,0.0,0.0],true]
+table_create Logs_20150203 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150203 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+[[0,0.0,0.0],true]
+table_create Logs_20150204 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150204 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+[[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]
+table_create Times_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+[[0,0.0,0.0],2]
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+[[0,0.0,0.0],3]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+[[0,0.0,0.0],4]
+logical_select Logs timestamp   --max "2015-02-04 00:00:00"   --max_border "exclude"
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      2
+    ],
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ]
+    ],
+    [
+      "2015-02-03 12:49:00",
+      1422935340.0
+    ],
+    [
+      "2015-02-03 23:59:59",
+      1422975599.0
+    ]
+  ]
+]

  Added: test/command/suite/sharding/logical_select/no_condition/max_exclude.test (+73 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/max_exclude.test    2015-06-16 17:18:34 +0900 (d0f7a07)
@@ -0,0 +1,73 @@
+#@on-error omit
+register sharding
+#@on-error default
+
+table_create Logs_20150203 TABLE_NO_KEY
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+table_create Times_20150203 TABLE_PAT_KEY Time
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+
+table_create Logs_20150204 TABLE_NO_KEY
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+table_create Times_20150204 TABLE_PAT_KEY Time
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+table_create Times_20150205 TABLE_PAT_KEY Time
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+
+logical_select Logs timestamp \
+  --max "2015-02-04 00:00:00" \
+  --max_border "exclude"

  Added: test/command/suite/sharding/logical_select/no_condition/max_include.expected (+115 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/max_include.expected    2015-06-16 17:18:34 +0900 (8f52868)
@@ -0,0 +1,115 @@
+register sharding
+[[0,0.0,0.0],true]
+table_create Logs_20150203 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150203 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+[[0,0.0,0.0],true]
+table_create Logs_20150204 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150204 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+[[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]
+table_create Times_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+[[0,0.0,0.0],2]
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+[[0,0.0,0.0],3]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+[[0,0.0,0.0],4]
+logical_select Logs timestamp   --max "2015-02-04 00:00:00"   --max_border "include"
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      3
+    ],
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ]
+    ],
+    [
+      "2015-02-03 12:49:00",
+      1422935340.0
+    ],
+    [
+      "2015-02-03 23:59:59",
+      1422975599.0
+    ],
+    [
+      "2015-02-04 00:00:00",
+      1422975600.0
+    ]
+  ]
+]

  Added: test/command/suite/sharding/logical_select/no_condition/max_include.test (+73 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/max_include.test    2015-06-16 17:18:34 +0900 (c731496)
@@ -0,0 +1,73 @@
+#@on-error omit
+register sharding
+#@on-error default
+
+table_create Logs_20150203 TABLE_NO_KEY
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+table_create Times_20150203 TABLE_PAT_KEY Time
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+
+table_create Logs_20150204 TABLE_NO_KEY
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+table_create Times_20150204 TABLE_PAT_KEY Time
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+table_create Times_20150205 TABLE_PAT_KEY Time
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+
+logical_select Logs timestamp \
+  --max "2015-02-04 00:00:00" \
+  --max_border "include"

  Added: test/command/suite/sharding/logical_select/no_condition/min_exclude.expected (+127 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_exclude.expected    2015-06-16 17:18:34 +0900 (15f9e6a)
@@ -0,0 +1,127 @@
+register sharding
+[[0,0.0,0.0],true]
+table_create Logs_20150203 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150203 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+[[0,0.0,0.0],true]
+table_create Logs_20150204 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150204 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+[[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]
+table_create Times_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+[[0,0.0,0.0],2]
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+[[0,0.0,0.0],3]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+[[0,0.0,0.0],4]
+logical_select Logs timestamp   --min "2015-02-04 00:00:00"   --min_border "exclude"
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      6
+    ],
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ]
+    ],
+    [
+      "2015-02-04 13:49:00",
+      1423025340.0
+    ],
+    [
+      "2015-02-04 13:50:00",
+      1423025400.0
+    ],
+    [
+      "2015-02-05 13:49:00",
+      1423111740.0
+    ],
+    [
+      "2015-02-05 13:50:00",
+      1423111800.0
+    ],
+    [
+      "2015-02-05 13:51:00",
+      1423111860.0
+    ],
+    [
+      "2015-02-05 13:52:00",
+      1423111920.0
+    ]
+  ]
+]

  Added: test/command/suite/sharding/logical_select/no_condition/min_exclude.test (+73 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_exclude.test    2015-06-16 17:18:34 +0900 (4bf981f)
@@ -0,0 +1,73 @@
+#@on-error omit
+register sharding
+#@on-error default
+
+table_create Logs_20150203 TABLE_NO_KEY
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+table_create Times_20150203 TABLE_PAT_KEY Time
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+
+table_create Logs_20150204 TABLE_NO_KEY
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+table_create Times_20150204 TABLE_PAT_KEY Time
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+table_create Times_20150205 TABLE_PAT_KEY Time
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+
+logical_select Logs timestamp \
+  --min "2015-02-04 00:00:00" \
+  --min_border "exclude"

  Added: test/command/suite/sharding/logical_select/no_condition/min_exclude_max_exclude.expected (+135 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_exclude_max_exclude.expected    2015-06-16 17:18:34 +0900 (d4b288c)
@@ -0,0 +1,135 @@
+register sharding
+[[0,0.0,0.0],true]
+table_create Logs_20150203 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150203 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+[[0,0.0,0.0],true]
+table_create Logs_20150204 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150204 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+[[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]
+table_create Times_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+[[0,0.0,0.0],2]
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 00:00:01",
+  "memo":      "2015-02-04 00:00:01"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+},
+{
+  "timestamp": "2015-02-04 23:59:59",
+  "memo":      "2015-02-04 23:59:59"
+}
+]
+[[0,0.0,0.0],5]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 00:00:00",
+  "memo":      "2015-02-05 00:00:00"
+},
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+},
+{
+  "timestamp": "2015-02-05 13:53:00",
+  "memo":      "2015-02-05 13:53:00"
+}
+]
+[[0,0.0,0.0],6]
+logical_select Logs timestamp   --min "2015-02-04 00:00:00"   --min_border "exclude"   --max "2015-02-05 00:00:00"   --max_border "exclude"
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      4
+    ],
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ]
+    ],
+    [
+      "2015-02-04 00:00:01",
+      1422975601.0
+    ],
+    [
+      "2015-02-04 13:49:00",
+      1423025340.0
+    ],
+    [
+      "2015-02-04 13:50:00",
+      1423025400.0
+    ],
+    [
+      "2015-02-04 23:59:59",
+      1423061999.0
+    ]
+  ]
+]

  Added: test/command/suite/sharding/logical_select/no_condition/min_exclude_max_exclude.test (+91 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_exclude_max_exclude.test    2015-06-16 17:18:34 +0900 (219e268)
@@ -0,0 +1,91 @@
+#@on-error omit
+register sharding
+#@on-error default
+
+table_create Logs_20150203 TABLE_NO_KEY
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+table_create Times_20150203 TABLE_PAT_KEY Time
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+
+table_create Logs_20150204 TABLE_NO_KEY
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+table_create Times_20150204 TABLE_PAT_KEY Time
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+table_create Times_20150205 TABLE_PAT_KEY Time
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 00:00:01",
+  "memo":      "2015-02-04 00:00:01"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+},
+{
+  "timestamp": "2015-02-04 23:59:59",
+  "memo":      "2015-02-04 23:59:59"
+}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 00:00:00",
+  "memo":      "2015-02-05 00:00:00"
+},
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+},
+{
+  "timestamp": "2015-02-05 13:53:00",
+  "memo":      "2015-02-05 13:53:00"
+}
+]
+
+logical_select Logs timestamp \
+  --min "2015-02-04 00:00:00" \
+  --min_border "exclude" \
+  --max "2015-02-05 00:00:00" \
+  --max_border "exclude"

  Added: test/command/suite/sharding/logical_select/no_condition/min_exclude_max_include.expected (+139 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_exclude_max_include.expected    2015-06-16 17:18:34 +0900 (5c8f7b7)
@@ -0,0 +1,139 @@
+register sharding
+[[0,0.0,0.0],true]
+table_create Logs_20150203 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150203 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+[[0,0.0,0.0],true]
+table_create Logs_20150204 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150204 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+[[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]
+table_create Times_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+[[0,0.0,0.0],2]
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 00:00:01",
+  "memo":      "2015-02-04 00:00:01"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+},
+{
+  "timestamp": "2015-02-04 23:59:59",
+  "memo":      "2015-02-04 23:59:59"
+}
+]
+[[0,0.0,0.0],5]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 00:00:00",
+  "memo":      "2015-02-05 00:00:00"
+},
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+},
+{
+  "timestamp": "2015-02-05 13:53:00",
+  "memo":      "2015-02-05 13:53:00"
+}
+]
+[[0,0.0,0.0],6]
+logical_select Logs timestamp   --min "2015-02-04 00:00:00"   --min_border "exclude"   --max "2015-02-05 00:00:00"   --max_border "include"
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      5
+    ],
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ]
+    ],
+    [
+      "2015-02-04 00:00:01",
+      1422975601.0
+    ],
+    [
+      "2015-02-04 13:49:00",
+      1423025340.0
+    ],
+    [
+      "2015-02-04 13:50:00",
+      1423025400.0
+    ],
+    [
+      "2015-02-04 23:59:59",
+      1423061999.0
+    ],
+    [
+      "2015-02-05 00:00:00",
+      1423062000.0
+    ]
+  ]
+]

  Added: test/command/suite/sharding/logical_select/no_condition/min_exclude_max_include.test (+91 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_exclude_max_include.test    2015-06-16 17:18:34 +0900 (d7477b0)
@@ -0,0 +1,91 @@
+#@on-error omit
+register sharding
+#@on-error default
+
+table_create Logs_20150203 TABLE_NO_KEY
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+table_create Times_20150203 TABLE_PAT_KEY Time
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+
+table_create Logs_20150204 TABLE_NO_KEY
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+table_create Times_20150204 TABLE_PAT_KEY Time
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+table_create Times_20150205 TABLE_PAT_KEY Time
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 00:00:01",
+  "memo":      "2015-02-04 00:00:01"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+},
+{
+  "timestamp": "2015-02-04 23:59:59",
+  "memo":      "2015-02-04 23:59:59"
+}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 00:00:00",
+  "memo":      "2015-02-05 00:00:00"
+},
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+},
+{
+  "timestamp": "2015-02-05 13:53:00",
+  "memo":      "2015-02-05 13:53:00"
+}
+]
+
+logical_select Logs timestamp \
+  --min "2015-02-04 00:00:00" \
+  --min_border "exclude" \
+  --max "2015-02-05 00:00:00" \
+  --max_border "include"

  Added: test/command/suite/sharding/logical_select/no_condition/min_include.expected (+131 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_include.expected    2015-06-16 17:18:34 +0900 (6285740)
@@ -0,0 +1,131 @@
+register sharding
+[[0,0.0,0.0],true]
+table_create Logs_20150203 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150203 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+[[0,0.0,0.0],true]
+table_create Logs_20150204 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150204 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+[[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]
+table_create Times_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+[[0,0.0,0.0],2]
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+[[0,0.0,0.0],3]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+[[0,0.0,0.0],4]
+logical_select Logs timestamp   --min "2015-02-04 00:00:00"   --min_border "include"
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      7
+    ],
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ]
+    ],
+    [
+      "2015-02-04 00:00:00",
+      1422975600.0
+    ],
+    [
+      "2015-02-04 13:49:00",
+      1423025340.0
+    ],
+    [
+      "2015-02-04 13:50:00",
+      1423025400.0
+    ],
+    [
+      "2015-02-05 13:49:00",
+      1423111740.0
+    ],
+    [
+      "2015-02-05 13:50:00",
+      1423111800.0
+    ],
+    [
+      "2015-02-05 13:51:00",
+      1423111860.0
+    ],
+    [
+      "2015-02-05 13:52:00",
+      1423111920.0
+    ]
+  ]
+]

  Added: test/command/suite/sharding/logical_select/no_condition/min_include.test (+73 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_include.test    2015-06-16 17:18:34 +0900 (f73a013)
@@ -0,0 +1,73 @@
+#@on-error omit
+register sharding
+#@on-error default
+
+table_create Logs_20150203 TABLE_NO_KEY
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+table_create Times_20150203 TABLE_PAT_KEY Time
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+
+table_create Logs_20150204 TABLE_NO_KEY
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+table_create Times_20150204 TABLE_PAT_KEY Time
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+table_create Times_20150205 TABLE_PAT_KEY Time
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+}
+]
+
+logical_select Logs timestamp \
+  --min "2015-02-04 00:00:00" \
+  --min_border "include"

  Added: test/command/suite/sharding/logical_select/no_condition/min_include_max_exclude.expected (+139 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_include_max_exclude.expected    2015-06-16 17:18:34 +0900 (97310de)
@@ -0,0 +1,139 @@
+register sharding
+[[0,0.0,0.0],true]
+table_create Logs_20150203 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150203 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+[[0,0.0,0.0],true]
+table_create Logs_20150204 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150204 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+[[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]
+table_create Times_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+[[0,0.0,0.0],2]
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 00:00:01",
+  "memo":      "2015-02-04 00:00:01"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+},
+{
+  "timestamp": "2015-02-04 23:59:59",
+  "memo":      "2015-02-04 23:59:59"
+}
+]
+[[0,0.0,0.0],5]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 00:00:00",
+  "memo":      "2015-02-05 00:00:00"
+},
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+},
+{
+  "timestamp": "2015-02-05 13:53:00",
+  "memo":      "2015-02-05 13:53:00"
+}
+]
+[[0,0.0,0.0],6]
+logical_select Logs timestamp   --min "2015-02-04 00:00:00"   --min_border "include"   --max "2015-02-05 00:00:00"   --max_border "exclude"
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      5
+    ],
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ]
+    ],
+    [
+      "2015-02-04 00:00:00",
+      1422975600.0
+    ],
+    [
+      "2015-02-04 00:00:01",
+      1422975601.0
+    ],
+    [
+      "2015-02-04 13:49:00",
+      1423025340.0
+    ],
+    [
+      "2015-02-04 13:50:00",
+      1423025400.0
+    ],
+    [
+      "2015-02-04 23:59:59",
+      1423061999.0
+    ]
+  ]
+]

  Added: test/command/suite/sharding/logical_select/no_condition/min_include_max_exclude.test (+91 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_include_max_exclude.test    2015-06-16 17:18:34 +0900 (03c3c03)
@@ -0,0 +1,91 @@
+#@on-error omit
+register sharding
+#@on-error default
+
+table_create Logs_20150203 TABLE_NO_KEY
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+table_create Times_20150203 TABLE_PAT_KEY Time
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+
+table_create Logs_20150204 TABLE_NO_KEY
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+table_create Times_20150204 TABLE_PAT_KEY Time
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+table_create Times_20150205 TABLE_PAT_KEY Time
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 00:00:01",
+  "memo":      "2015-02-04 00:00:01"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+},
+{
+  "timestamp": "2015-02-04 23:59:59",
+  "memo":      "2015-02-04 23:59:59"
+}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 00:00:00",
+  "memo":      "2015-02-05 00:00:00"
+},
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+},
+{
+  "timestamp": "2015-02-05 13:53:00",
+  "memo":      "2015-02-05 13:53:00"
+}
+]
+
+logical_select Logs timestamp \
+  --min "2015-02-04 00:00:00" \
+  --min_border "include" \
+  --max "2015-02-05 00:00:00" \
+  --max_border "exclude"

  Added: test/command/suite/sharding/logical_select/no_condition/min_include_max_include.expected (+143 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_include_max_include.expected    2015-06-16 17:18:34 +0900 (d3951d8)
@@ -0,0 +1,143 @@
+register sharding
+[[0,0.0,0.0],true]
+table_create Logs_20150203 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150203 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+[[0,0.0,0.0],true]
+table_create Logs_20150204 TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+[[0,0.0,0.0],true]
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]
+table_create Times_20150204 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+[[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]
+table_create Times_20150205 TABLE_PAT_KEY Time
+[[0,0.0,0.0],true]
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+[[0,0.0,0.0],true]
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+[[0,0.0,0.0],2]
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 00:00:01",
+  "memo":      "2015-02-04 00:00:01"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+},
+{
+  "timestamp": "2015-02-04 23:59:59",
+  "memo":      "2015-02-04 23:59:59"
+}
+]
+[[0,0.0,0.0],5]
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 00:00:00",
+  "memo":      "2015-02-05 00:00:00"
+},
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+},
+{
+  "timestamp": "2015-02-05 13:53:00",
+  "memo":      "2015-02-05 13:53:00"
+}
+]
+[[0,0.0,0.0],6]
+logical_select Logs timestamp   --min "2015-02-04 00:00:00"   --min_border "include"   --max "2015-02-05 00:00:00"   --max_border "include"
+[
+  [
+    0,
+    0.0,
+    0.0
+  ],
+  [
+    [
+      6
+    ],
+    [
+      [
+        "memo",
+        "ShortText"
+      ],
+      [
+        "timestamp",
+        "Time"
+      ]
+    ],
+    [
+      "2015-02-04 00:00:00",
+      1422975600.0
+    ],
+    [
+      "2015-02-04 00:00:01",
+      1422975601.0
+    ],
+    [
+      "2015-02-04 13:49:00",
+      1423025340.0
+    ],
+    [
+      "2015-02-04 13:50:00",
+      1423025400.0
+    ],
+    [
+      "2015-02-04 23:59:59",
+      1423061999.0
+    ],
+    [
+      "2015-02-05 00:00:00",
+      1423062000.0
+    ]
+  ]
+]

  Added: test/command/suite/sharding/logical_select/no_condition/min_include_max_include.test (+91 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/sharding/logical_select/no_condition/min_include_max_include.test    2015-06-16 17:18:34 +0900 (d3c4344)
@@ -0,0 +1,91 @@
+#@on-error omit
+register sharding
+#@on-error default
+
+table_create Logs_20150203 TABLE_NO_KEY
+column_create Logs_20150203 timestamp COLUMN_SCALAR Time
+column_create Logs_20150203 memo COLUMN_SCALAR ShortText
+table_create Times_20150203 TABLE_PAT_KEY Time
+column_create Times_20150203 timestamp_index COLUMN_INDEX Logs_20150203 timestamp
+
+table_create Logs_20150204 TABLE_NO_KEY
+column_create Logs_20150204 timestamp COLUMN_SCALAR Time
+column_create Logs_20150204 memo COLUMN_SCALAR ShortText
+table_create Times_20150204 TABLE_PAT_KEY Time
+column_create Times_20150204 timestamp_index COLUMN_INDEX Logs_20150204 timestamp
+
+table_create Logs_20150205 TABLE_NO_KEY
+column_create Logs_20150205 timestamp COLUMN_SCALAR Time
+column_create Logs_20150205 memo COLUMN_SCALAR ShortText
+table_create Times_20150205 TABLE_PAT_KEY Time
+column_create Times_20150205 timestamp_index COLUMN_INDEX Logs_20150205 timestamp
+
+load --table Logs_20150203
+[
+{
+  "timestamp": "2015-02-03 12:49:00",
+  "memo":      "2015-02-03 12:49:00"
+},
+{
+  "timestamp": "2015-02-03 23:59:59",
+  "memo":      "2015-02-03 23:59:59"
+}
+]
+
+load --table Logs_20150204
+[
+{
+  "timestamp": "2015-02-04 00:00:00",
+  "memo":      "2015-02-04 00:00:00"
+},
+{
+  "timestamp": "2015-02-04 00:00:01",
+  "memo":      "2015-02-04 00:00:01"
+},
+{
+  "timestamp": "2015-02-04 13:49:00",
+  "memo":      "2015-02-04 13:49:00"
+},
+{
+  "timestamp": "2015-02-04 13:50:00",
+  "memo":      "2015-02-04 13:50:00"
+},
+{
+  "timestamp": "2015-02-04 23:59:59",
+  "memo":      "2015-02-04 23:59:59"
+}
+]
+
+load --table Logs_20150205
+[
+{
+  "timestamp": "2015-02-05 00:00:00",
+  "memo":      "2015-02-05 00:00:00"
+},
+{
+  "timestamp": "2015-02-05 13:49:00",
+  "memo":      "2015-02-05 13:49:00"
+},
+{
+  "timestamp": "2015-02-05 13:50:00",
+  "memo":      "2015-02-05 13:50:00"
+},
+{
+  "timestamp": "2015-02-05 13:51:00",
+  "memo":      "2015-02-05 13:51:00"
+},
+{
+  "timestamp": "2015-02-05 13:52:00",
+  "memo":      "2015-02-05 13:52:00"
+},
+{
+  "timestamp": "2015-02-05 13:53:00",
+  "memo":      "2015-02-05 13:53:00"
+}
+]
+
+logical_select Logs timestamp \
+  --min "2015-02-04 00:00:00" \
+  --min_border "include" \
+  --max "2015-02-05 00:00:00" \
+  --max_border "include"




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