groonga-client 0.6.7 → 0.6.9
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6da9f45867a1b6ba3343309e8935b8efdc8b9d3c8d35d7dec702738b38829a7
|
4
|
+
data.tar.gz: 29178875a3d700f8b17c2c1cfab67c37baf86a811af258e5bb2069916d90de24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b351339a18628c2230cdc20714cbc82517cbc46618860a3cac0f31d3a75ffaae2181771affbe17a9a61575cecbc071a284f040436fa59efe30450b82f12d8cc3
|
7
|
+
data.tar.gz: a8c6326cbfb48225dc799915867c3757c05d824f02ec79fa510407d306431fba0745c5aba7a1ad1c8ba5382e58b97c0e469299ea8c5e8c855ef9e211f2538021
|
data/doc/text/news.md
CHANGED
@@ -167,7 +167,12 @@ module Groonga
|
|
167
167
|
def process_response(response, command)
|
168
168
|
case command.output_type
|
169
169
|
when :json
|
170
|
-
|
170
|
+
output = {"header" => response.header}
|
171
|
+
if response.trace_logs
|
172
|
+
output["trace_logs"] = response.trace_logs
|
173
|
+
end
|
174
|
+
output["body"] = response.body
|
175
|
+
puts(JSON.pretty_generate(output))
|
171
176
|
when :xml
|
172
177
|
puts(response.raw)
|
173
178
|
else
|
@@ -66,15 +66,19 @@ module Groonga
|
|
66
66
|
http.start do
|
67
67
|
http.read_timeout = read_timeout
|
68
68
|
response = send_request(http, command)
|
69
|
+
body = response.body
|
69
70
|
case response
|
70
|
-
when Net::HTTPSuccess,
|
71
|
-
|
71
|
+
when Net::HTTPSuccess,
|
72
|
+
Net::HTTPBadRequest, # for invalid request
|
73
|
+
Net::HTTPRequestTimeOut # for canceled request
|
74
|
+
yield(body)
|
72
75
|
else
|
73
|
-
|
74
|
-
|
76
|
+
# "[[" is for command_version=1
|
77
|
+
# "{" is for command_version=3
|
78
|
+
if body.start_with?("[[") or body.start_with?("{")
|
79
|
+
yield(body)
|
75
80
|
else
|
76
|
-
message =
|
77
|
-
"#{response.code} #{response.message}: #{response.body}"
|
81
|
+
message = "#{response.code} #{response.message}: #{body}"
|
78
82
|
raise Error.new(message)
|
79
83
|
end
|
80
84
|
end
|
@@ -67,6 +67,7 @@ module Groonga
|
|
67
67
|
class << self
|
68
68
|
def parse(command, raw_response)
|
69
69
|
return_code = nil
|
70
|
+
trace_logs = nil
|
70
71
|
case command.output_type
|
71
72
|
when :json
|
72
73
|
callback = command["callback"]
|
@@ -81,6 +82,13 @@ module Groonga
|
|
81
82
|
return_code = header[0] if header
|
82
83
|
else
|
83
84
|
header = response["header"]
|
85
|
+
trace_log = response["trace_log"]
|
86
|
+
if trace_log
|
87
|
+
names = trace_log["columns"].collect {|column| column["name"]}
|
88
|
+
trace_logs = trace_log["logs"].collect do |log|
|
89
|
+
Hash[names.zip(log)]
|
90
|
+
end
|
91
|
+
end
|
84
92
|
body = response["body"]
|
85
93
|
return_code = header["return_code"] if header
|
86
94
|
end
|
@@ -91,7 +99,7 @@ module Groonga
|
|
91
99
|
header, body = parse_tsv(raw_response)
|
92
100
|
return_code = header["return_code"] if header
|
93
101
|
when :arrow, :"apache-arrow"
|
94
|
-
header, body = parse_apache_arrow(raw_response)
|
102
|
+
header, trace_logs, body = parse_apache_arrow(raw_response)
|
95
103
|
return_code = header["return_code"] if header
|
96
104
|
else
|
97
105
|
header = nil
|
@@ -102,6 +110,7 @@ module Groonga
|
|
102
110
|
else
|
103
111
|
response = Error.new(command, header, body)
|
104
112
|
end
|
113
|
+
response.trace_logs = trace_logs
|
105
114
|
response.raw = raw_response
|
106
115
|
response
|
107
116
|
end
|
@@ -187,6 +196,7 @@ module Groonga
|
|
187
196
|
|
188
197
|
def parse_apache_arrow(response)
|
189
198
|
header = nil
|
199
|
+
trace_logs = nil
|
190
200
|
body = nil
|
191
201
|
buffer = Arrow::Buffer.new(response)
|
192
202
|
Arrow::BufferInputStream.open(buffer) do |input|
|
@@ -194,9 +204,14 @@ module Groonga
|
|
194
204
|
reader = Arrow::RecordBatchStreamReader.new(input)
|
195
205
|
schema = reader.schema
|
196
206
|
record_batches = reader.to_a
|
197
|
-
|
207
|
+
data_type = (schema.metadata || {})["GROONGA:data_type"]
|
208
|
+
case data_type
|
209
|
+
when "metadata"
|
198
210
|
table = Arrow::Table.new(schema, record_batches)
|
199
211
|
header = table.each_record.first.to_h
|
212
|
+
when "trace_log"
|
213
|
+
table = Arrow::Table.new(schema, record_batches)
|
214
|
+
trace_logs = table.raw_records
|
200
215
|
else
|
201
216
|
body = {}
|
202
217
|
body["columns"] = schema.fields.collect do |field|
|
@@ -212,11 +227,7 @@ module Groonga
|
|
212
227
|
end
|
213
228
|
end
|
214
229
|
end
|
215
|
-
return header, body
|
216
|
-
end
|
217
|
-
|
218
|
-
def apache_arrow_metadata?(schema)
|
219
|
-
(schema.metadata || {})["GROONGA:data_type"] == "metadata"
|
230
|
+
return header, trace_logs, body
|
220
231
|
end
|
221
232
|
end
|
222
233
|
|
@@ -239,11 +250,16 @@ module Groonga
|
|
239
250
|
# @return [String] The unparsed response. It may be JSON, XML or
|
240
251
|
# Groonga command format.
|
241
252
|
attr_accessor :raw
|
253
|
+
# @return [::Array, nil] The trace logs of response.
|
254
|
+
# @see https://groonga.org/docs/reference/command/output_trace_log.html
|
255
|
+
# The trace log document.
|
256
|
+
attr_accessor :trace_logs
|
242
257
|
|
243
258
|
def initialize(command, header, body)
|
244
259
|
self.command = command
|
245
260
|
self.header = header
|
246
261
|
self.body = body
|
262
|
+
self.trace_logs = nil
|
247
263
|
self.raw = nil
|
248
264
|
end
|
249
265
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013-
|
1
|
+
# Copyright (C) 2013-2023 Sutou Kouhei <kou@clear-code.com>
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -16,6 +16,6 @@
|
|
16
16
|
|
17
17
|
module Groonga
|
18
18
|
class Client
|
19
|
-
VERSION = "0.6.
|
19
|
+
VERSION = "0.6.9"
|
20
20
|
end
|
21
21
|
end
|
metadata
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groonga-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Haruka Yoshihara
|
8
8
|
- Kouhei Sutou
|
9
9
|
- Kosuke Asami
|
10
|
-
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2024-04-10 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: gqtp
|
@@ -286,7 +285,6 @@ homepage: https://github.com/ranguba/groonga-client
|
|
286
285
|
licenses:
|
287
286
|
- LGPLv2.1+
|
288
287
|
metadata: {}
|
289
|
-
post_install_message:
|
290
288
|
rdoc_options: []
|
291
289
|
require_paths:
|
292
290
|
- lib
|
@@ -301,8 +299,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
301
299
|
- !ruby/object:Gem::Version
|
302
300
|
version: '0'
|
303
301
|
requirements: []
|
304
|
-
rubygems_version: 3.
|
305
|
-
signing_key:
|
302
|
+
rubygems_version: 3.6.0.dev
|
306
303
|
specification_version: 4
|
307
304
|
summary: Groonga-client is a client for Groonga (http://groonga.org/) implemented
|
308
305
|
with pure Ruby. You can use it without Groonga.
|