pinot-client 1.5.0 → 1.6.0

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: bb872f6cbcc1f34f16a68006eac8acea39229bdc9bd90f9f44a3369ed9c9fb59
4
- data.tar.gz: b86cde24abaa6343f9984b3106830e9f00e25656050a4f577629942c3e0067c2
3
+ metadata.gz: 2ea9db0f69b7fb8d963190553d6a92201f4d63d5d6a07a975f862d00e43aa30a
4
+ data.tar.gz: c3b968737e6b7650c57bb79ef42153eb6870df22521939f885e5332fe4a2b7eb
5
5
  SHA512:
6
- metadata.gz: afc088a4df6eaa77e6141fa051d7f2e1f3afa1aa8d75555ed2291dfc84fe159a9538ad86621d452bc510066576a331d6e23135aa93529f672bf912ba46ed5b0c
7
- data.tar.gz: b34bcb378ab7a6bca383545b79e090273ed0b67d4e5356699461b02bbbaaafd7e7580073e492bbb7f43cf988c77ba500e361e1954c53a990aab5be6d785cae4b
6
+ metadata.gz: b5809f8a9245ff2b13cd6a487499aff37ad9f879d4c5537570f61b1c34da6fe702817bb3ced5d6c812f8b38b9283bafb1bb3a16f2ae1f9279436e9cf86f274ae
7
+ data.tar.gz: 78c2573048ced129a60d9186092acba394456304cc343f1fca56cce1fa0bc8e3417c8748b3bd50a97f6dcd5f05f32caaf2c0f2a12e153e5685876e06aa033f31
data/lib/pinot/config.rb CHANGED
@@ -22,7 +22,7 @@ module Pinot
22
22
  class ClientConfig
23
23
  attr_accessor :broker_list, :http_timeout, :query_timeout_ms, :extra_http_header,
24
24
  :use_multistage_engine, :controller_config, :logger, :tls_config,
25
- :grpc_config, :zookeeper_config
25
+ :grpc_config, :zookeeper_config, :query_timeout_ms
26
26
 
27
27
  def initialize(
28
28
  broker_list: [],
@@ -34,7 +34,8 @@ module Pinot
34
34
  logger: nil,
35
35
  tls_config: nil,
36
36
  grpc_config: nil,
37
- zookeeper_config: nil
37
+ zookeeper_config: nil,
38
+ query_timeout_ms: nil
38
39
  )
39
40
  @broker_list = broker_list
40
41
  @http_timeout = http_timeout
@@ -46,6 +47,7 @@ module Pinot
46
47
  @tls_config = tls_config
47
48
  @grpc_config = grpc_config
48
49
  @zookeeper_config = zookeeper_config
50
+ @query_timeout_ms = query_timeout_ms
49
51
  end
50
52
 
51
53
  def validate!
@@ -2,12 +2,15 @@ require "bigdecimal"
2
2
 
3
3
  module Pinot
4
4
  class Connection
5
- def initialize(transport:, broker_selector:, use_multistage_engine: false, logger: nil)
5
+ attr_accessor :query_timeout_ms
6
+
7
+ def initialize(transport:, broker_selector:, use_multistage_engine: false, logger: nil, query_timeout_ms: nil)
6
8
  @transport = transport
7
9
  @broker_selector = broker_selector
8
10
  @use_multistage_engine = use_multistage_engine
9
11
  @trace = false
10
12
  @logger = logger
13
+ @query_timeout_ms = query_timeout_ms
11
14
  end
12
15
 
13
16
  def use_multistage_engine=(val)
@@ -32,6 +35,14 @@ module Pinot
32
35
  raise "unable to execute SQL on table #{table}: #{e.message}"
33
36
  end
34
37
 
38
+ def execute_sql_with_timeout(table, query, timeout_ms)
39
+ logger.debug "Executing SQL with timeout=#{timeout_ms}ms on table=#{table}: #{query}"
40
+ broker = @broker_selector.select_broker(table)
41
+ @transport.execute(broker, build_request(query, timeout_ms: timeout_ms))
42
+ rescue => e
43
+ raise "unable to execute SQL on table #{table}: #{e.message}"
44
+ end
45
+
35
46
  def execute_sql_with_params(table, query_pattern, params)
36
47
  query = format_query(query_pattern, params)
37
48
  execute_sql(table, query)
@@ -95,8 +106,8 @@ module Pinot
95
106
  @logger || Pinot::Logging.logger
96
107
  end
97
108
 
98
- def build_request(query)
99
- Request.new("sql", query, @trace, @use_multistage_engine)
109
+ def build_request(query, timeout_ms: @query_timeout_ms)
110
+ Request.new("sql", query, @trace, @use_multistage_engine, timeout_ms)
100
111
  end
101
112
  end
102
113
  end
@@ -63,7 +63,8 @@ module Pinot
63
63
  transport: transport,
64
64
  broker_selector: selector,
65
65
  use_multistage_engine: config.use_multistage_engine || false,
66
- logger: config.logger
66
+ logger: config.logger,
67
+ query_timeout_ms: config.query_timeout_ms
67
68
  )
68
69
 
69
70
  selector.init
data/lib/pinot/request.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pinot
2
- Request = Struct.new(:query_format, :query, :trace, :use_multistage_engine)
2
+ Request = Struct.new(:query_format, :query, :trace, :use_multistage_engine, :query_timeout_ms)
3
3
  end
@@ -170,6 +170,7 @@ module Pinot
170
170
  if @timeout_ms && @timeout_ms > 0
171
171
  parts << "timeoutMs=#{@timeout_ms}"
172
172
  end
173
+ parts << "timeoutMs=#{request.query_timeout_ms}" if request.query_timeout_ms
173
174
  end
174
175
  parts.join(";")
175
176
  end
data/lib/pinot/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pinot
2
- VERSION = "1.5.0"
2
+ VERSION = "1.6.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pinot-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xiang Fu