groonga-command 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/doc/text/news.md +13 -0
- data/lib/groonga/command/base.rb +9 -0
- data/lib/groonga/command/column-create.rb +2 -2
- data/lib/groonga/command/normalize.rb +1 -1
- data/lib/groonga/command/query-expand.rb +1 -1
- data/lib/groonga/command/select.rb +37 -4
- data/lib/groonga/command/table-create.rb +2 -2
- data/lib/groonga/command/table-tokenize.rb +1 -1
- data/lib/groonga/command/tokenize.rb +2 -2
- data/lib/groonga/command/version.rb +1 -1
- data/test/command/test-select.rb +48 -6
- data/test/command/test-table-create.rb +1 -1
- metadata +41 -41
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 825e111ecaa00e1ab59e8d94d960c7d0c74ed1c5
         | 
| 4 | 
            +
              data.tar.gz: 8cd981a313f1ff936e55f381b34103cf07bf6d7f
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: aa021d38662c0d566a6ef81beb5eda9167cbae3b51372f394266ce54636a432bc371166d6239c1a37e4398564352c6b6fe8b9eade91e70fd61f96a2697edf250
         | 
| 7 | 
            +
              data.tar.gz: 1a95dfb5a3edbe0153e91d8620724ae09cb75ddced9dac0ff24480d288642bc1d6f5ae8e94524cf6e58ba45400ce8fa56056aa1cac22f077130517e05427cbab
         | 
    
        data/doc/text/news.md
    CHANGED
    
    | @@ -1,5 +1,18 @@ | |
| 1 1 | 
             
            # News
         | 
| 2 2 |  | 
| 3 | 
            +
            ## 1.3.1: 2016-12-08
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ### Improvements
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              * {Groonga::Command::Select#slices}: Changed return value from
         | 
| 8 | 
            +
                `Hash<String, Groonga::Command::Select>` to `Hash<String,
         | 
| 9 | 
            +
                Groonga::Command::Select::Slice`.
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ### Fixes
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              * {Groonga::Command::TableCreate#token_filters}: Fixed a bug that
         | 
| 14 | 
            +
                multiple token filters can't be parsed.
         | 
| 15 | 
            +
             | 
| 3 16 | 
             
            ## 1.3.0: 2016-12-08
         | 
| 4 17 |  | 
| 5 18 | 
             
            ### Improvements
         | 
    
        data/lib/groonga/command/base.rb
    CHANGED
    
    | @@ -206,6 +206,15 @@ module Groonga | |
| 206 206 | 
             
                    return nil if value.nil?
         | 
| 207 207 | 
             
                    value.strip.split(/\s*,\s*/)
         | 
| 208 208 | 
             
                  end
         | 
| 209 | 
            +
             | 
| 210 | 
            +
                  def flags_value(name)
         | 
| 211 | 
            +
                    parse_flags_value(self[name] || "")
         | 
| 212 | 
            +
                  end
         | 
| 213 | 
            +
             | 
| 214 | 
            +
                  def parse_flags_value(value)
         | 
| 215 | 
            +
                    return nil if value.nil?
         | 
| 216 | 
            +
                    value.strip.split(/\s*[| ]\s*/)
         | 
| 217 | 
            +
                  end
         | 
| 209 218 | 
             
                end
         | 
| 210 219 | 
             
              end
         | 
| 211 220 | 
             
            end
         | 
| @@ -51,7 +51,7 @@ module Groonga | |
| 51 51 | 
             
                  end
         | 
| 52 52 |  | 
| 53 53 | 
             
                  def flags
         | 
| 54 | 
            -
                    @flags ||= ( | 
| 54 | 
            +
                    @flags ||= flags_value(:flags)
         | 
| 55 55 | 
             
                  end
         | 
| 56 56 |  | 
| 57 57 | 
             
                  # @return [String] value type name of the column.
         | 
| @@ -108,7 +108,7 @@ module Groonga | |
| 108 108 | 
             
                  #
         | 
| 109 109 | 
             
                  # @since 1.0.7
         | 
| 110 110 | 
             
                  def sources
         | 
| 111 | 
            -
                    @sources ||= ( | 
| 111 | 
            +
                    @sources ||= array_value(:source)
         | 
| 112 112 | 
             
                  end
         | 
| 113 113 | 
             
                end
         | 
| 114 114 | 
             
              end
         | 
| @@ -107,7 +107,7 @@ module Groonga | |
| 107 107 | 
             
                    @labeled_drilldowns ||= parse_labeled_drilldowns
         | 
| 108 108 | 
             
                  end
         | 
| 109 109 |  | 
| 110 | 
            -
                  # @return [::Hash<String,  | 
| 110 | 
            +
                  # @return [::Hash<String, Slice>] The slices.
         | 
| 111 111 | 
             
                  #
         | 
| 112 112 | 
             
                  # @since 1.3.0
         | 
| 113 113 | 
             
                  def slices
         | 
| @@ -159,7 +159,8 @@ module Groonga | |
| 159 159 | 
             
                                                offset,
         | 
| 160 160 | 
             
                                                limit,
         | 
| 161 161 | 
             
                                                calc_types,
         | 
| 162 | 
            -
                                                calc_target | 
| 162 | 
            +
                                                calc_target,
         | 
| 163 | 
            +
                                                label)
         | 
| 163 164 | 
             
                      labeled_drilldowns[label] = drilldown
         | 
| 164 165 | 
             
                    end
         | 
| 165 166 | 
             
                    labeled_drilldowns
         | 
| @@ -182,7 +183,25 @@ module Groonga | |
| 182 183 | 
             
                  def build_slices(raw_slices)
         | 
| 183 184 | 
             
                    slices = {}
         | 
| 184 185 | 
             
                    raw_slices.each do |label, raw_slice|
         | 
| 185 | 
            -
                       | 
| 186 | 
            +
                      match_columns = raw_slice["match_columns"]
         | 
| 187 | 
            +
                      query = raw_slice["query"]
         | 
| 188 | 
            +
                      query_expander = raw_slice["query_expander"]
         | 
| 189 | 
            +
                      query_flags = parse_flags_value(raw_slice["query_flags"])
         | 
| 190 | 
            +
                      filter = raw_slice["filter"]
         | 
| 191 | 
            +
                      sort_keys = parse_array_value(raw_slice["sort_keys"])
         | 
| 192 | 
            +
                      output_columns = parse_array_value(raw_slice["output_columns"])
         | 
| 193 | 
            +
                      offset = parse_integer_value(raw_slice["offset"])
         | 
| 194 | 
            +
                      limit = parse_integer_value(raw_slice["limit"])
         | 
| 195 | 
            +
                      slices[label] = Slice.new(label,
         | 
| 196 | 
            +
                                                match_columns,
         | 
| 197 | 
            +
                                                query,
         | 
| 198 | 
            +
                                                query_expander,
         | 
| 199 | 
            +
                                                query_flags,
         | 
| 200 | 
            +
                                                filter,
         | 
| 201 | 
            +
                                                sort_keys,
         | 
| 202 | 
            +
                                                output_columns,
         | 
| 203 | 
            +
                                                offset,
         | 
| 204 | 
            +
                                                limit)
         | 
| 186 205 | 
             
                    end
         | 
| 187 206 | 
             
                    slices
         | 
| 188 207 | 
             
                  end
         | 
| @@ -193,7 +212,21 @@ module Groonga | |
| 193 212 | 
             
                                               :offset,
         | 
| 194 213 | 
             
                                               :limit,
         | 
| 195 214 | 
             
                                               :calc_types,
         | 
| 196 | 
            -
                                               :calc_target | 
| 215 | 
            +
                                               :calc_target,
         | 
| 216 | 
            +
                                               :label)
         | 
| 217 | 
            +
                  end
         | 
| 218 | 
            +
             | 
| 219 | 
            +
                  # @since 1.3.1
         | 
| 220 | 
            +
                  class Slice < Struct.new(:label,
         | 
| 221 | 
            +
                                           :match_columns,
         | 
| 222 | 
            +
                                           :query,
         | 
| 223 | 
            +
                                           :query_expander,
         | 
| 224 | 
            +
                                           :query_flags,
         | 
| 225 | 
            +
                                           :filter,
         | 
| 226 | 
            +
                                           :sort_keys,
         | 
| 227 | 
            +
                                           :output_columns,
         | 
| 228 | 
            +
                                           :offset,
         | 
| 229 | 
            +
                                           :limit)
         | 
| 197 230 | 
             
                  end
         | 
| 198 231 | 
             
                end
         | 
| 199 232 | 
             
              end
         | 
| @@ -62,7 +62,7 @@ module Groonga | |
| 62 62 | 
             
                  end
         | 
| 63 63 |  | 
| 64 64 | 
             
                  def flags
         | 
| 65 | 
            -
                    @flags ||= ( | 
| 65 | 
            +
                    @flags ||= flags_value(:flags)
         | 
| 66 66 | 
             
                  end
         | 
| 67 67 |  | 
| 68 68 | 
             
                  # @return [Boolean] true if "TABLE_NO_KEY" is specified in {#flags},
         | 
| @@ -115,7 +115,7 @@ module Groonga | |
| 115 115 | 
             
                  # @return [::Array<String>] Token filter names.
         | 
| 116 116 | 
             
                  # @since 1.2.1
         | 
| 117 117 | 
             
                  def token_filters
         | 
| 118 | 
            -
                    @token_filters ||= ( | 
| 118 | 
            +
                    @token_filters ||= array_value(:token_filters)
         | 
| 119 119 | 
             
                  end
         | 
| 120 120 | 
             
                end
         | 
| 121 121 | 
             
              end
         | 
| @@ -68,7 +68,7 @@ module Groonga | |
| 68 68 | 
             
                  #
         | 
| 69 69 | 
             
                  # @since 1.0.6
         | 
| 70 70 | 
             
                  def flags
         | 
| 71 | 
            -
                    @flags ||= ( | 
| 71 | 
            +
                    @flags ||= flags_value(:flags)
         | 
| 72 72 | 
             
                  end
         | 
| 73 73 |  | 
| 74 74 | 
             
                  # @return [String] `mode` parameter value.
         | 
| @@ -85,7 +85,7 @@ module Groonga | |
| 85 85 | 
             
                  #
         | 
| 86 86 | 
             
                  # @since 1.1.0
         | 
| 87 87 | 
             
                  def token_filters
         | 
| 88 | 
            -
                    @token_filters ||= ( | 
| 88 | 
            +
                    @token_filters ||= array_value(:token_filters)
         | 
| 89 89 | 
             
                  end
         | 
| 90 90 | 
             
                end
         | 
| 91 91 | 
             
              end
         | 
    
        data/test/command/test-select.rb
    CHANGED
    
    | @@ -186,13 +186,15 @@ class SelectCommandTest < Test::Unit::TestCase | |
| 186 186 | 
             
                  }
         | 
| 187 187 | 
             
                  command = select_command(parameters)
         | 
| 188 188 | 
             
                  drilldowns = {
         | 
| 189 | 
            -
                    "author_tag" => drilldown(: | 
| 189 | 
            +
                    "author_tag" => drilldown(:label => "author_tag",
         | 
| 190 | 
            +
                                              :keys => ["author", "tag"],
         | 
| 190 191 | 
             
                                              :sort_keys => ["_value.author"],
         | 
| 191 192 | 
             
                                              :output_columns => [
         | 
| 192 193 | 
             
                                                "_value.author",
         | 
| 193 194 | 
             
                                                "_nsubrecs",
         | 
| 194 195 | 
             
                                              ]),
         | 
| 195 | 
            -
                    "tag" => drilldown(: | 
| 196 | 
            +
                    "tag" => drilldown(:label => "tag",
         | 
| 197 | 
            +
                                       :keys => ["tag"],
         | 
| 196 198 | 
             
                                       :sort_keys => ["-_nsubrecs", "_key"],
         | 
| 197 199 | 
             
                                       :output_columns => [
         | 
| 198 200 | 
             
                                         "_key",
         | 
| @@ -219,6 +221,36 @@ class SelectCommandTest < Test::Unit::TestCase | |
| 219 221 | 
             
              end
         | 
| 220 222 |  | 
| 221 223 | 
             
              class SlicesTest < self
         | 
| 224 | 
            +
                def test_full
         | 
| 225 | 
            +
                  parameters = {
         | 
| 226 | 
            +
                    "slices[book_alice].match_columns"  => "tag",
         | 
| 227 | 
            +
                    "slices[book_alice].query"          => "Book",
         | 
| 228 | 
            +
                    "slices[book_alice].query_expander" => "Synonyms.tag",
         | 
| 229 | 
            +
                    "slices[book_alice].query_flags"    => "ALLOW_COLUMN|ALLOW_LEADING_NOT",
         | 
| 230 | 
            +
                    "slices[book_alice].filter"         => "user == \"alice\"",
         | 
| 231 | 
            +
                    "slices[book_alice].sort_keys"      => "_score, user",
         | 
| 232 | 
            +
                    "slices[book_alice].offset"         => "10",
         | 
| 233 | 
            +
                    "slices[book_alice].limit"          => "25",
         | 
| 234 | 
            +
                  }
         | 
| 235 | 
            +
                  command = select_command(parameters)
         | 
| 236 | 
            +
             | 
| 237 | 
            +
                  slices = {
         | 
| 238 | 
            +
                    "book_alice" => slice(:label => "book_alice",
         | 
| 239 | 
            +
                                          :match_columns => "tag",
         | 
| 240 | 
            +
                                          :query => "Book",
         | 
| 241 | 
            +
                                          :query_expander => "Synonyms.tag",
         | 
| 242 | 
            +
                                          :query_flags => [
         | 
| 243 | 
            +
                                            "ALLOW_COLUMN",
         | 
| 244 | 
            +
                                            "ALLOW_LEADING_NOT",
         | 
| 245 | 
            +
                                          ],
         | 
| 246 | 
            +
                                          :filter => "user == \"alice\"",
         | 
| 247 | 
            +
                                          :sort_keys => ["_score", "user"],
         | 
| 248 | 
            +
                                          :offset => 10,
         | 
| 249 | 
            +
                                          :limit => 25),
         | 
| 250 | 
            +
                  }
         | 
| 251 | 
            +
                  assert_equal(slices, command.slices)
         | 
| 252 | 
            +
                end
         | 
| 253 | 
            +
             | 
| 222 254 | 
             
                def test_multiple
         | 
| 223 255 | 
             
                  parameters = {
         | 
| 224 256 | 
             
                    "slices[groonga].query" => "tag:Groonga",
         | 
| @@ -229,12 +261,22 @@ class SelectCommandTest < Test::Unit::TestCase | |
| 229 261 | 
             
                  command = select_command(parameters)
         | 
| 230 262 |  | 
| 231 263 | 
             
                  slices = {
         | 
| 232 | 
            -
                    "groonga" =>  | 
| 233 | 
            -
             | 
| 234 | 
            -
             | 
| 235 | 
            -
             | 
| 264 | 
            +
                    "groonga" => slice(:label => "groonga",
         | 
| 265 | 
            +
                                       :query => "tag:Groonga"),
         | 
| 266 | 
            +
                    "rroonga" => slice(:label => "rroonga",
         | 
| 267 | 
            +
                                       :filter => "tag == Rroonga",
         | 
| 268 | 
            +
                                       :sort_keys => ["date"],
         | 
| 269 | 
            +
                                       :output_columns => ["_key", "date"]),
         | 
| 236 270 | 
             
                  }
         | 
| 237 271 | 
             
                  assert_equal(slices, command.slices)
         | 
| 238 272 | 
             
                end
         | 
| 273 | 
            +
             | 
| 274 | 
            +
                def slice(parameters)
         | 
| 275 | 
            +
                  slice = Groonga::Command::Select::Slice.new
         | 
| 276 | 
            +
                  parameters.each do |key, value|
         | 
| 277 | 
            +
                    slice[key] = value
         | 
| 278 | 
            +
                  end
         | 
| 279 | 
            +
                  slice
         | 
| 280 | 
            +
                end
         | 
| 239 281 | 
             
              end
         | 
| 240 282 | 
             
            end
         | 
| @@ -209,7 +209,7 @@ class TableCreateCommandTest < Test::Unit::TestCase | |
| 209 209 | 
             
              class TokenFiltersTest < self
         | 
| 210 210 | 
             
                def test_multiple
         | 
| 211 211 | 
             
                  arguments = {
         | 
| 212 | 
            -
                    "token_filters" => "TokenFilterStopWord | 
| 212 | 
            +
                    "token_filters" => "TokenFilterStopWord,TokenFilterStem",
         | 
| 213 213 | 
             
                  }
         | 
| 214 214 | 
             
                  command = table_create_command(arguments)
         | 
| 215 215 | 
             
                  assert_equal(["TokenFilterStopWord", "TokenFilterStem"],
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: groonga-command
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.3. | 
| 4 | 
            +
              version: 1.3.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Kouhei Sutou
         | 
| @@ -260,60 +260,60 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 260 260 | 
             
                  version: '0'
         | 
| 261 261 | 
             
            requirements: []
         | 
| 262 262 | 
             
            rubyforge_project: 
         | 
| 263 | 
            -
            rubygems_version: 2.5. | 
| 263 | 
            +
            rubygems_version: 2.5.2
         | 
| 264 264 | 
             
            signing_key: 
         | 
| 265 265 | 
             
            specification_version: 4
         | 
| 266 266 | 
             
            summary: Groonga-command is a library that represents [Groonga](http://groonga.org/)'s
         | 
| 267 267 | 
             
              command. You can write a program that handle Groonga's command by using groonga-command.
         | 
| 268 268 | 
             
            test_files:
         | 
| 269 | 
            -
            - test/ | 
| 270 | 
            -
            - test/command/test- | 
| 271 | 
            -
            - test/command/test- | 
| 272 | 
            -
            - test/command/test- | 
| 273 | 
            -
            - test/command/test-truncate.rb
         | 
| 269 | 
            +
            - test/groonga-command-test-utils.rb
         | 
| 270 | 
            +
            - test/command/test-config-delete.rb
         | 
| 271 | 
            +
            - test/command/test-object-remove.rb
         | 
| 272 | 
            +
            - test/command/test-table-tokenize.rb
         | 
| 274 273 | 
             
            - test/command/test-reindex.rb
         | 
| 275 | 
            -
            - test/command/test- | 
| 276 | 
            -
            - test/command/test- | 
| 274 | 
            +
            - test/command/test-plugin-unregister.rb
         | 
| 275 | 
            +
            - test/command/test-io-flush.rb
         | 
| 276 | 
            +
            - test/command/test-base.rb
         | 
| 277 | 
            +
            - test/command/test-logical-count.rb
         | 
| 277 278 | 
             
            - test/command/test-table-rename.rb
         | 
| 278 | 
            -
            - test/command/test- | 
| 279 | 
            +
            - test/command/test-column-rename.rb
         | 
| 279 280 | 
             
            - test/command/test-dump.rb
         | 
| 280 | 
            -
            - test/command/test- | 
| 281 | 
            -
            - test/command/test-request-cancel.rb
         | 
| 282 | 
            -
            - test/command/test-config-set.rb
         | 
| 283 | 
            -
            - test/command/test-get.rb
         | 
| 284 | 
            -
            - test/command/test-query-expand.rb
         | 
| 285 | 
            -
            - test/command/test-logical-select.rb
         | 
| 286 | 
            -
            - test/command/test-column-create.rb
         | 
| 287 | 
            -
            - test/command/test-log-put.rb
         | 
| 281 | 
            +
            - test/command/test-normalize.rb
         | 
| 288 282 | 
             
            - test/command/test-config-get.rb
         | 
| 289 | 
            -
            - test/command/test-log-level.rb
         | 
| 290 | 
            -
            - test/command/test-column-list.rb
         | 
| 291 283 | 
             
            - test/command/test-register.rb
         | 
| 292 | 
            -
            - test/command/test-ruby-eval.rb
         | 
| 293 | 
            -
            - test/command/test-plugin-register.rb
         | 
| 294 | 
            -
            - test/command/test-table-list.rb
         | 
| 295 | 
            -
            - test/command/test-logical-table-remove.rb
         | 
| 296 | 
            -
            - test/command/test-config-delete.rb
         | 
| 297 284 | 
             
            - test/command/test-shutdown.rb
         | 
| 298 | 
            -
            - test/command/test-io-flush.rb
         | 
| 299 | 
            -
            - test/command/test-table-create.rb
         | 
| 300 | 
            -
            - test/command/test-ruby-load.rb
         | 
| 301 | 
            -
            - test/command/test-load.rb
         | 
| 302 285 | 
             
            - test/command/test-delete.rb
         | 
| 303 | 
            -
            - test/command/test-select.rb
         | 
| 304 | 
            -
            - test/command/test-plugin-unregister.rb
         | 
| 305 | 
            -
            - test/command/test-column-remove.rb
         | 
| 306 | 
            -
            - test/command/test-range-filter.rb
         | 
| 307 | 
            -
            - test/command/format/test-command.rb
         | 
| 308 286 | 
             
            - test/command/test-column-copy.rb
         | 
| 309 | 
            -
            - test/command/test- | 
| 287 | 
            +
            - test/command/test-tokenize.rb
         | 
| 288 | 
            +
            - test/command/test-log-put.rb
         | 
| 289 | 
            +
            - test/command/test-load.rb
         | 
| 290 | 
            +
            - test/command/test-column-list.rb
         | 
| 291 | 
            +
            - test/command/test-plugin-register.rb
         | 
| 292 | 
            +
            - test/command/test-request-cancel.rb
         | 
| 293 | 
            +
            - test/command/test-column-create.rb
         | 
| 294 | 
            +
            - test/command/test-config-set.rb
         | 
| 295 | 
            +
            - test/command/test-logical-range-filter.rb
         | 
| 296 | 
            +
            - test/command/test-object-inspect.rb
         | 
| 297 | 
            +
            - test/command/format/test-command.rb
         | 
| 298 | 
            +
            - test/command/test-logical-select.rb
         | 
| 299 | 
            +
            - test/command/test-get.rb
         | 
| 300 | 
            +
            - test/command/test-thread-limit.rb
         | 
| 301 | 
            +
            - test/command/test-table-list.rb
         | 
| 310 302 | 
             
            - test/command/test-object-exist.rb
         | 
| 303 | 
            +
            - test/command/test-log-level.rb
         | 
| 304 | 
            +
            - test/command/test-range-filter.rb
         | 
| 311 305 | 
             
            - test/command/test-status.rb
         | 
| 312 | 
            -
            - test/command/test-thread-limit.rb
         | 
| 313 | 
            -
            - test/command/test-schema.rb
         | 
| 314 | 
            -
            - test/command/test-table-tokenize.rb
         | 
| 315 306 | 
             
            - test/command/test-logical-shard-list.rb
         | 
| 307 | 
            +
            - test/command/test-schema.rb
         | 
| 308 | 
            +
            - test/command/test-suggest.rb
         | 
| 309 | 
            +
            - test/command/test-select.rb
         | 
| 310 | 
            +
            - test/command/test-column-remove.rb
         | 
| 311 | 
            +
            - test/command/test-ruby-eval.rb
         | 
| 312 | 
            +
            - test/command/test-table-create.rb
         | 
| 313 | 
            +
            - test/command/test-table-remove.rb
         | 
| 314 | 
            +
            - test/command/test-ruby-load.rb
         | 
| 316 315 | 
             
            - test/command/test-table-copy.rb
         | 
| 317 | 
            -
            - test/command/test- | 
| 318 | 
            -
            - test/command/test- | 
| 319 | 
            -
            - test/ | 
| 316 | 
            +
            - test/command/test-query-expand.rb
         | 
| 317 | 
            +
            - test/command/test-truncate.rb
         | 
| 318 | 
            +
            - test/command/test-logical-table-remove.rb
         | 
| 319 | 
            +
            - test/run-test.rb
         |