rb_snowflake_client 1.1.4 → 1.2.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: '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