groonga-query-log 1.4.3 → 1.4.4
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 +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
|