groonga-client 0.6.7 → 0.6.9
Sign up to get free protection for your applications and to get access to all the features.
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.
|