rb_snowflake_client 1.1.4 → 1.2.0

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: '06290ff3078af3cd8d969ae39a9a29fc1272c4b3ff722e49d4d5bdc28a78724f'
4
- data.tar.gz: 7b04238f59bbb34ce3f72db9fd1edb9551adfff299b42b2cc3fb72397c211bec
3
+ metadata.gz: e9d6598913d1c47b930ed9b3db3b4aae621ea9089055cecaa2ec897140154fbb
4
+ data.tar.gz: a2735059fd007bced307b285bae356222bafbd59bc1aa950dd9edf5556c35e7b
5
5
  SHA512:
6
- metadata.gz: 52e50c1a4b0f89503c9972fba9a410dcdbd3d5428e6d9c2cd6f25d3d6fb2dc637d300f3dc260ae61cb4fe7105d203e39f3bc8d1435bfed5773d298113171c8d1
7
- data.tar.gz: a962f2c4e87ce35347bb5320092ac7f6fa14a0ee00f18b821b0b2703ca95ab69a4027b7441d3150b2a2ebe26cbe93be253bfd6c04ed9245a14ca490da1d28111
6
+ metadata.gz: 170075bb5b7af8c816f2e069001f83e3e46968b5af56796da5e41f738b16ae946978058da7b26fed3b9fb9516bebdf0fec8ef96f341dcca58fa813d03c2bddc6
7
+ data.tar.gz: 2829982c8d29a4fb7a154e683028e395631cdfc2131b2b9e6ffc08eabe8d65ac967e7f48f5278441320dae54dae001a4e5d456512619e255f0d52453d6d63ecc
data/Gemfile.lock CHANGED
@@ -1,12 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rb_snowflake_client (1.1.4)
4
+ rb_snowflake_client (1.2.0)
5
+ bigdecimal (>= 3.0)
5
6
  concurrent-ruby (>= 1.2)
6
7
  connection_pool (>= 2.4)
7
8
  dotenv (>= 2.8)
9
+ json (>= 2.1.0)
8
10
  jwt (>= 2.7)
9
- oj (>= 3.16)
10
11
  retryable (>= 3.0)
11
12
 
12
13
  GEM
@@ -19,11 +20,10 @@ GEM
19
20
  connection_pool (2.4.1)
20
21
  diff-lcs (1.5.1)
21
22
  dotenv (3.1.2)
23
+ json (2.9.1)
22
24
  jwt (2.8.2)
23
25
  base64
24
26
  method_source (1.1.0)
25
- oj (3.16.4)
26
- bigdecimal (>= 3.0)
27
27
  parallel (1.25.1)
28
28
  pry (0.14.2)
29
29
  coderay (~> 1.1)
@@ -2,12 +2,12 @@
2
2
 
3
3
  require "base64"
4
4
  require "benchmark"
5
+ require "bigdecimal"
5
6
  require "concurrent"
6
7
  require "connection_pool"
7
8
  require "json"
8
9
  require "logger"
9
10
  require "net/http"
10
- require "oj"
11
11
  require "retryable"
12
12
  require "securerandom"
13
13
  require "uri"
@@ -28,8 +28,19 @@ module RubySnowflake
28
28
 
29
29
  def initialize(details)
30
30
  @sentry_context = details
31
+ @details = details
32
+ end
33
+
34
+ def message
35
+ if @details == {}
36
+ super
37
+ else
38
+ @details.to_s
39
+ end
40
+
31
41
  end
32
42
  end
43
+
33
44
  class BadResponseError < Error ; end
34
45
  class ConnectionError < Error ; end
35
46
  class ConnectionStarvedError < Error ; end
@@ -57,7 +68,7 @@ module RubySnowflake
57
68
  # how long to wait to allow a query to complete, in seconds
58
69
  DEFAULT_QUERY_TIMEOUT = 600 # 10 minutes
59
70
 
60
- OJ_OPTIONS = { :bigdecimal_load => :bigdecimal }.freeze
71
+ JSON_PARSE_OPTIONS = { decimal_class: BigDecimal }.freeze
61
72
  VALID_RESPONSE_CODES = %w(200 202).freeze
62
73
  POLLING_RESPONSE_CODE = "202"
63
74
  POLLING_INTERVAL = 2 # seconds
@@ -155,7 +166,7 @@ module RubySnowflake
155
166
  connection,
156
167
  Net::HTTP::Post,
157
168
  "/api/v2/statements?requestId=#{SecureRandom.uuid}&async=#{@_enable_polling_queries}",
158
- Oj.dump(request_body)
169
+ request_body.to_json
159
170
  )
160
171
  end
161
172
  retrieve_result_set(query_start_time, query, response, streaming)
@@ -249,9 +260,10 @@ module RubySnowflake
249
260
  loop do
250
261
  sleep POLLING_INTERVAL
251
262
 
252
- if Time.now.to_i - query_start_time > @query_timeout
263
+ elapsed_time = Time.now.to_i - query_start_time
264
+ if elapsed_time > @query_timeout
253
265
  cancelled = attempt_to_cancel_and_silence_errors(connection, statement_handle)
254
- raise QueryTimeoutError.new("Query timed out. Query cancelled? #{cancelled} Query: #{query}")
266
+ raise QueryTimeoutError.new("Query timed out. Query cancelled? #{cancelled}; Duration: #{elapsed_time}; Query: '#{query}'")
255
267
  end
256
268
 
257
269
  poll_response = request_with_auth_and_headers(connection, Net::HTTP::Get,
@@ -278,12 +290,12 @@ module RubySnowflake
278
290
  end
279
291
 
280
292
  def retrieve_result_set(query_start_time, query, response, streaming)
281
- json_body = Oj.load(response.body, OJ_OPTIONS)
293
+ json_body = JSON.parse(response.body, JSON_PARSE_OPTIONS)
282
294
  statement_handle = json_body["statementHandle"]
283
295
 
284
296
  if response.code == POLLING_RESPONSE_CODE
285
297
  result_response = poll_for_completion_or_timeout(query_start_time, query, statement_handle)
286
- json_body = Oj.load(result_response.body, OJ_OPTIONS)
298
+ json_body = JSON.parse(result_response.body, JSON_PARSE_OPTIONS)
287
299
  end
288
300
 
289
301
  num_threads = number_of_threads_to_use(json_body["resultSetMetaData"]["partitionInfo"].size)
@@ -309,7 +321,7 @@ module RubySnowflake
309
321
  end
310
322
 
311
323
  partition_json = {}
312
- bm = Benchmark.measure { partition_json = Oj.load(partition_response.body, OJ_OPTIONS) }
324
+ bm = Benchmark.measure { partition_json = JSON.parse(partition_response.body, JSON_PARSE_OPTIONS) }
313
325
  logger.debug { "JSON parsing took: #{bm.real}" }
314
326
  partition_data = partition_json["data"]
315
327
 
@@ -1,3 +1,3 @@
1
1
  module RubySnowflake
2
- VERSION = "1.1.4"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -19,10 +19,11 @@ Gem::Specification.new do |s|
19
19
  end
20
20
 
21
21
  s.require_paths = ["lib"]
22
+ s.add_dependency "bigdecimal", ">= 3.0"
22
23
  s.add_dependency "concurrent-ruby", ">= 1.2"
23
24
  s.add_dependency "connection_pool", ">= 2.4"
24
25
  s.add_dependency "dotenv", ">= 2.8"
26
+ s.add_dependency "json", ">= 2.1.0"
25
27
  s.add_dependency "jwt", ">= 2.7"
26
- s.add_dependency "oj", ">= 3.16"
27
28
  s.add_dependency "retryable", ">= 3.0"
28
29
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb_snowflake_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rinsed
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-05 00:00:00.000000000 Z
11
+ date: 2025-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bigdecimal
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: concurrent-ruby
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,33 +67,33 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '2.8'
55
69
  - !ruby/object:Gem::Dependency
56
- name: jwt
70
+ name: json
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '2.7'
75
+ version: 2.1.0
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '2.7'
82
+ version: 2.1.0
69
83
  - !ruby/object:Gem::Dependency
70
- name: oj
84
+ name: jwt
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '3.16'
89
+ version: '2.7'
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '3.16'
96
+ version: '2.7'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: retryable
85
99
  requirement: !ruby/object:Gem::Requirement