groonga-query-log 1.4.3 → 1.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/text/news.md +15 -0
- data/lib/groonga-query-log/command/run-regression-test.rb +14 -0
- data/lib/groonga-query-log/command/verify-server.rb +9 -0
- data/lib/groonga-query-log/filter-rewriter.rb +9 -1
- data/lib/groonga-query-log/server-verifier.rb +10 -1
- data/lib/groonga-query-log/version.rb +1 -1
- data/test/test-filter-rewriter.rb +20 -2
- metadata +30 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: faeaa6fd86742d02ee7dd26056139a4cc4d267d10e5d18ae70bfb343ab946439
|
4
|
+
data.tar.gz: 4288f0e864a772a278d01bfd0d818d8d7f342234c883e2945025e4a8c881935f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de6b0181aa230461a7cfc90aa611587d5458aef929c8c6b85dfacb176f9052ac3ae62525ae86797338f629e330998c60712b6e7f604765cfaddeb2a0c321c648
|
7
|
+
data.tar.gz: 6cdb79c3619951d64ede9dabbce9c136a19bc4b6e7bc23ecfe07c92696be633217478ee7e7dac2c3fc9fd99ab496f6001c085dc956921508fe49a98a63fc6ac3
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 1.4.4: 2019-08-05
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* `groonga-query-log-run-regression-test`:
|
8
|
+
|
9
|
+
* Added support for rewriting `"&& !" operator`.
|
10
|
+
Specify --rewrite-and-not-operator option to enable it.
|
11
|
+
|
12
|
+
### Fixes
|
13
|
+
|
14
|
+
* `rewrite-filter`:
|
15
|
+
|
16
|
+
* Fix a wrong rewrite value.
|
17
|
+
|
3
18
|
## 1.4.3: 2019-05-22
|
4
19
|
|
5
20
|
### Fixes
|
@@ -55,6 +55,7 @@ module GroongaQueryLog
|
|
55
55
|
@rewrite_nullable_reference_number = false
|
56
56
|
@nullable_reference_number_accessors = []
|
57
57
|
@rewrite_not_or_regular_expression = false
|
58
|
+
@rewrite_and_not_operator = false
|
58
59
|
|
59
60
|
@care_order = true
|
60
61
|
@ignored_drilldown_keys = []
|
@@ -220,6 +221,14 @@ module GroongaQueryLog
|
|
220
221
|
"(#{@rewrite_not_or_regular_expression})") do |boolean|
|
221
222
|
@rewrite_not_or_regular_expression = boolean
|
222
223
|
end
|
224
|
+
parser.on("--[no-]rewrite-and-not-operator",
|
225
|
+
"Rewrite '(column1 @ \"keyword1\") && !(column2 @ " +
|
226
|
+
"\"keyword2\")' " +
|
227
|
+
"with '(column1 @ \"keyword1\") &! (column2 @ " +
|
228
|
+
"\"keyword2\")'",
|
229
|
+
"(#{@rewrite_and_not_operator})") do |boolean|
|
230
|
+
@rewrite_and_not_operator = boolean
|
231
|
+
end
|
223
232
|
|
224
233
|
parser.separator("")
|
225
234
|
parser.separator("Comparisons:")
|
@@ -329,6 +338,8 @@ module GroongaQueryLog
|
|
329
338
|
@nullable_reference_number_accessors,
|
330
339
|
:rewrite_not_or_regular_expression =>
|
331
340
|
@rewrite_not_or_regular_expression,
|
341
|
+
:rewite_and_not_operator =>
|
342
|
+
@rewrite_and_not_operator,
|
332
343
|
:target_command_names => @target_command_names,
|
333
344
|
:read_timeout => @read_timeout,
|
334
345
|
}
|
@@ -627,6 +638,9 @@ module GroongaQueryLog
|
|
627
638
|
if @options[:rewrite_not_or_regular_expression]
|
628
639
|
command_line << "--rewrite-not-or-regular-expression"
|
629
640
|
end
|
641
|
+
if @options[:rewrite_and_not_operator]
|
642
|
+
command_line << "--rewrite-and-not-operator"
|
643
|
+
end
|
630
644
|
if @options[:target_command_names]
|
631
645
|
command_line << "--target-command-names"
|
632
646
|
command_line << @options[:target_command_names].join(",")
|
@@ -239,6 +239,15 @@ module GroongaQueryLog
|
|
239
239
|
@options.rewrite_not_or_regular_expression = boolean
|
240
240
|
end
|
241
241
|
|
242
|
+
parser.on("--[no-]rewrite-and-not-operator",
|
243
|
+
"Rewrite '(column1 @ \"keyword1\") && !(column2 @ " +
|
244
|
+
"\"keyword2\")' " +
|
245
|
+
"with '(column1 @ \"keyword1\") &! (column2 @ " +
|
246
|
+
"\"keyword2\")'",
|
247
|
+
"(#{@options.rewrite_and_not_operator?})") do |boolean|
|
248
|
+
@options.rewrite_and_not_operator = boolean
|
249
|
+
end
|
250
|
+
|
242
251
|
parser.on("--nullable-reference-number-accessor=ACCESSOR",
|
243
252
|
"Mark ACCESSOR as rewrite nullable reference number targets",
|
244
253
|
"You can specify multiple accessors by",
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# Copyright (C) 2018 Kouhei Sutou <kou@clear-code.com>
|
2
|
+
# Copyright (C) 2019 Horimoto Yasuhiro <horimoto@clear-code.com>
|
2
3
|
#
|
3
4
|
# This library is free software; you can redistribute it and/or
|
4
5
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -38,6 +39,9 @@ module GroongaQueryLog
|
|
38
39
|
if @options[:rewrite_not_or_regular_expression]
|
39
40
|
rewritten = rewrite_not_or_regular_expression(rewritten)
|
40
41
|
end
|
42
|
+
if @options[:rewrite_and_not_operator]
|
43
|
+
rewritten = rewrite_and_not_operator(rewritten)
|
44
|
+
end
|
41
45
|
rewritten
|
42
46
|
end
|
43
47
|
|
@@ -74,7 +78,7 @@ module GroongaQueryLog
|
|
74
78
|
accessor = $1
|
75
79
|
if @nullable_reference_number_accessors.include?(accessor)
|
76
80
|
sub_accessor = accessor.split(".")[0..-2].join(".")
|
77
|
-
"(#{sub_accessor}._key ==
|
81
|
+
"(#{sub_accessor}._key == \"\" ? 0 : #{accessor})"
|
78
82
|
else
|
79
83
|
matched
|
80
84
|
end
|
@@ -100,5 +104,9 @@ module GroongaQueryLog
|
|
100
104
|
end
|
101
105
|
end
|
102
106
|
end
|
107
|
+
|
108
|
+
def rewrite_and_not_operator(filter)
|
109
|
+
filter.gsub(/&& *!/, "&!")
|
110
|
+
end
|
103
111
|
end
|
104
112
|
end
|
@@ -241,6 +241,7 @@ module GroongaQueryLog
|
|
241
241
|
attr_writer :rewrite_nullable_reference_number
|
242
242
|
attr_accessor :nullable_reference_number_accessors
|
243
243
|
attr_writer :rewrite_not_or_regular_expression
|
244
|
+
attr_writer :rewrite_and_not_operator
|
244
245
|
def initialize
|
245
246
|
@groonga1 = GroongaOptions.new
|
246
247
|
@groonga2 = GroongaOptions.new
|
@@ -270,6 +271,7 @@ module GroongaQueryLog
|
|
270
271
|
@rewrite_nullable_reference_number = false
|
271
272
|
@nullable_reference_number_accessors = []
|
272
273
|
@rewrite_not_or_regular_expression = false
|
274
|
+
@rewrite_and_not_operator = false
|
273
275
|
end
|
274
276
|
|
275
277
|
def request_queue_size
|
@@ -304,6 +306,10 @@ module GroongaQueryLog
|
|
304
306
|
@rewrite_not_or_regular_expression
|
305
307
|
end
|
306
308
|
|
309
|
+
def rewrite_and_not_operator?
|
310
|
+
@rewrite_and_not_operator
|
311
|
+
end
|
312
|
+
|
307
313
|
def target_command_name?(name)
|
308
314
|
return false if name.nil?
|
309
315
|
|
@@ -333,7 +339,8 @@ module GroongaQueryLog
|
|
333
339
|
rewrite_vector_equal? or
|
334
340
|
rewrite_vector_not_equal_empty_string? or
|
335
341
|
rewrite_nullable_reference_number? or
|
336
|
-
rewrite_not_or_regular_expression?
|
342
|
+
rewrite_not_or_regular_expression? or
|
343
|
+
rewrite_and_not_operator?
|
337
344
|
end
|
338
345
|
|
339
346
|
def to_filter_rewriter_options
|
@@ -348,6 +355,8 @@ module GroongaQueryLog
|
|
348
355
|
nullable_reference_number_accessors,
|
349
356
|
:rewrite_not_or_regular_expression =>
|
350
357
|
rewrite_not_or_regular_expression?,
|
358
|
+
:rewrite_and_not_operator =>
|
359
|
+
rewrite_and_not_operator?,
|
351
360
|
}
|
352
361
|
end
|
353
362
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# Copyright (C) 2018 Kouhei Sutou <kou@clear-code.com>
|
2
|
+
# Copyright (C) 2019 Horimoto Yasuhiro <horimoto@clear-code.com>
|
2
3
|
#
|
3
4
|
# This library is free software; you can redistribute it and/or
|
4
5
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -99,13 +100,13 @@ class FilterRewriterTest < Test::Unit::TestCase
|
|
99
100
|
end
|
100
101
|
|
101
102
|
def test_parenthesis
|
102
|
-
assert_equal("(((reference._key ==
|
103
|
+
assert_equal("(((reference._key == \"\" ? 0 : reference.number)) < 1000)",
|
103
104
|
rewrite("((reference.number) < 1000)",
|
104
105
|
["reference.number"]))
|
105
106
|
end
|
106
107
|
|
107
108
|
def test_under_score
|
108
|
-
assert_equal("(ref_column._key ==
|
109
|
+
assert_equal("(ref_column._key == \"\" ? 0 : ref_column.number) < 1000",
|
109
110
|
rewrite("ref_column.number < 1000",
|
110
111
|
["ref_column.number"]))
|
111
112
|
end
|
@@ -137,4 +138,21 @@ class FilterRewriterTest < Test::Unit::TestCase
|
|
137
138
|
rewrite("column1 @ \"value1\" && column2 @~ \"^(?!.*value2 | value3 | value4).+$\""))
|
138
139
|
end
|
139
140
|
end
|
141
|
+
|
142
|
+
class AndNotOperatorTest < self
|
143
|
+
def rewrite(filter, enabled = true)
|
144
|
+
super(filter,
|
145
|
+
:rewrite_and_not_operator => enabled)
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_one
|
149
|
+
assert_equal("(column1 @ \"value1\") &! (column2 @ \"value2\")",
|
150
|
+
rewrite("(column1 @ \"value1\") && ! (column2 @ \"value2\")"))
|
151
|
+
end
|
152
|
+
|
153
|
+
def test_multiple
|
154
|
+
assert_equal("(column1 @ \"value1\") &! (column2 @ \"value2\") &! (column2 @ \"value3\")",
|
155
|
+
rewrite("(column1 @ \"value1\") && ! (column2 @ \"value2\") && ! (column2 @ \"value3\")"))
|
156
|
+
end
|
157
|
+
end
|
140
158
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groonga-query-log
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: groonga-command-parser
|
@@ -154,17 +154,17 @@ description: ''
|
|
154
154
|
email:
|
155
155
|
- kou@clear-code.com
|
156
156
|
executables:
|
157
|
-
- groonga-query-log-
|
158
|
-
- groonga-query-log-
|
157
|
+
- groonga-query-log-format-regression-test-logs
|
158
|
+
- groonga-query-log-run-regression-test
|
159
159
|
- groonga-query-log-check-crash
|
160
160
|
- groonga-query-log-replay
|
161
|
-
- groonga-query-log-extract
|
162
|
-
- groonga-query-log-show-running-queries
|
163
161
|
- groonga-query-log-check-command-version-compatibility
|
164
|
-
- groonga-query-log-run-regression-test
|
165
162
|
- groonga-query-log-verify-server
|
163
|
+
- groonga-query-log-show-running-queries
|
164
|
+
- groonga-query-log-analyze
|
165
|
+
- groonga-query-log-extract
|
166
|
+
- groonga-query-log-detect-memory-leak
|
166
167
|
- groonga-query-log-analyze-load
|
167
|
-
- groonga-query-log-format-regression-test-logs
|
168
168
|
extensions: []
|
169
169
|
extra_rdoc_files: []
|
170
170
|
files:
|
@@ -289,36 +289,36 @@ summary: Groonga-query-log is a collection of library and tools to process [Groo
|
|
289
289
|
as a library. You can analyze your Groonga's queries and test with your Groonga's
|
290
290
|
query log by using groonga-query-log as a tool.
|
291
291
|
test_files:
|
292
|
-
- test/
|
293
|
-
- test/fixtures/
|
294
|
-
- test/fixtures/
|
295
|
-
- test/fixtures/
|
292
|
+
- test/fixtures/reporter/console.expected
|
293
|
+
- test/fixtures/reporter/html.expected
|
294
|
+
- test/fixtures/reporter/json-stream.expected
|
295
|
+
- test/fixtures/reporter/json.expected
|
296
|
+
- test/fixtures/order/start-time.expected
|
296
297
|
- test/fixtures/order/-start-time.expected
|
297
298
|
- test/fixtures/order/-elapsed.expected
|
298
|
-
- test/fixtures/order/start-time.expected
|
299
299
|
- test/fixtures/order/elapsed.expected
|
300
|
-
- test/fixtures/
|
301
|
-
- test/fixtures/
|
302
|
-
- test/fixtures/regression-test-logs/error.log
|
303
|
-
- test/fixtures/multi.expected
|
304
|
-
- test/fixtures/query.log
|
305
|
-
- test/fixtures/other-query.log
|
306
|
-
- test/fixtures/reporter/json-stream.expected
|
307
|
-
- test/fixtures/reporter/console.expected
|
308
|
-
- test/fixtures/reporter/json.expected
|
309
|
-
- test/fixtures/reporter/html.expected
|
310
|
-
- test/fixtures/run-regression-test/schema/schema.grn
|
300
|
+
- test/fixtures/no-report-summary.expected
|
301
|
+
- test/fixtures/target-commands.expected
|
311
302
|
- test/fixtures/run-regression-test/data/data.grn
|
312
|
-
- test/fixtures/run-regression-test/indexes/indexes.grn
|
313
303
|
- test/fixtures/run-regression-test/query-logs/query.log
|
314
|
-
- test/fixtures/
|
315
|
-
- test/test
|
316
|
-
- test/
|
317
|
-
- test/
|
318
|
-
- test/
|
304
|
+
- test/fixtures/run-regression-test/indexes/indexes.grn
|
305
|
+
- test/fixtures/run-regression-test/schema/schema.grn
|
306
|
+
- test/fixtures/other-query.log
|
307
|
+
- test/fixtures/query.log
|
308
|
+
- test/fixtures/target-tables.expected
|
309
|
+
- test/fixtures/n_entries.expected
|
310
|
+
- test/fixtures/multi.expected
|
311
|
+
- test/fixtures/regression-test-logs/command-format.log
|
312
|
+
- test/fixtures/regression-test-logs/url-format.log
|
313
|
+
- test/fixtures/regression-test-logs/error.log
|
319
314
|
- test/command/test-run-regression-test.rb
|
320
315
|
- test/command/test-format-regression-test-logs.rb
|
321
316
|
- test/command/test-analyzer.rb
|
322
317
|
- test/command/test-extract.rb
|
318
|
+
- test/test-response-comparer.rb
|
319
|
+
- test/test-replayer.rb
|
323
320
|
- test/test-incompatibility-detector.rb
|
324
321
|
- test/test-filter-rewriter.rb
|
322
|
+
- test/test-parser.rb
|
323
|
+
- test/helper.rb
|
324
|
+
- test/run-test.rb
|