queuery_client 1.1.0 → 1.1.5

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: 2a5b41cb805e7fc0864fd695adc519c6b7212c294383935af40301d88b5b8d63
4
- data.tar.gz: d4e970371d23e36bf40d4cafdf9e7da0d886c25bb0882ce9e12fc2a971a0e2c0
3
+ metadata.gz: 4a1006fdef0ce698e6d38c02fcbeaab4ef928a7be704395d57da8ae963b94301
4
+ data.tar.gz: 70b2fc77eeb6ed27047db209f3aa89cd4a0b5c83fb4616535134e8d14ce537f6
5
5
  SHA512:
6
- metadata.gz: f61f86445e64fca2863ba474a6cfb27e87af761516b3fbb5394adbe6f61e23e4f9d81778cded02dc512bf495bb8b711099962b5fd63154880bcc3e746bf25f61
7
- data.tar.gz: ee0f09b1e92729056857117a7fdf4fa422d13bae5168f521e6d2cd8ca8adc2152334c59fd826aff916369ee8db811c792a49087ddd08dfdb283c0a31445bab78
6
+ metadata.gz: 7a0338752a52c4f67f94823139bbc78b736a24c143176e5a521c832c2dcb23bda57b3c18adfa0deacc9ab5e52e3dc43728d26db3b790b6bf5dbe64c809f0f9ff
7
+ data.tar.gz: 6f8c7c248f55ba26763e7ff90d2f52c42c9d3776bf690440dd9f3aeda1b22c3f76c109fbe705ead7fc65f03c27a4e7257f0ed2b8976e2e5f27ebafc5ac09fbae
@@ -14,14 +14,23 @@ module QueueryClient
14
14
  garage_client.get("/v1/queries/#{id}", fields: '__default__,s3_prefix' + query_option_fields)
15
15
  end
16
16
 
17
+ MAX_POLLING_INTERVAL = 30
18
+
17
19
  def wait_for(id, query_options)
20
+ n = 1
18
21
  loop do
19
- query = get_query(id, query_options)
20
- case query.status
21
- when 'success', 'failed'
22
- return query
22
+ begin
23
+ query = get_query(id, query_options)
24
+ case query.status
25
+ when 'success', 'failed'
26
+ return query
27
+ end
28
+ rescue GarageClient::GatewayTimeout
29
+ warn "#{$PROGRAM_NAME}: warning: queuery polling timeout occurred"
23
30
  end
24
- sleep 3
31
+ polling_interval = [3 * n, MAX_POLLING_INTERVAL].min
32
+ sleep polling_interval
33
+ n += 1
25
34
  end
26
35
  end
27
36
 
@@ -1,6 +1,17 @@
1
1
 
2
2
  module QueueryClient
3
3
  module RedshiftDataType
4
+ FALSE_VALUES = [
5
+ false, 0,
6
+ "0", :"0",
7
+ "f", :f,
8
+ "F", :F,
9
+ "false", :false,
10
+ "FALSE", :FALSE,
11
+ "off", :off,
12
+ "OFF", :OFF,
13
+ ].to_set.freeze
14
+
4
15
  def self.type_cast(row, manifest_file)
5
16
  row.zip(manifest_file.column_types).map do |value, type|
6
17
  next nil if (value == '' and type != 'character varing') # null becomes '' on unload
@@ -13,11 +24,11 @@ module QueueryClient
13
24
  when 'character', 'character varying'
14
25
  value
15
26
  when 'timestamp without time zone', 'timestamp with time zone'
16
- Time.parse(value)
27
+ value # Ruby does not have a class without timezone
17
28
  when 'date'
18
29
  Date.parse(value)
19
30
  when 'boolean'
20
- value == 'true' ? true : false
31
+ FALSE_VALUES.include?(value) ? false : true
21
32
  else
22
33
  raise "not support data type: #{type}"
23
34
  end
@@ -23,13 +23,19 @@ module QueueryClient
23
23
 
24
24
  def data_files
25
25
  b = Aws::S3::Resource.new(client: @s3_client).bucket(@bucket)
26
- b.objects(prefix: @prefix).map {|obj| S3DataFile.new(obj) }
26
+ b.objects(prefix: @prefix)
27
+ .select {|obj| obj.key.include?('_part_') }
28
+ .map {|obj| S3DataFile.new(obj) }
27
29
  end
28
30
 
29
31
  def manifest_file
30
32
  b = Aws::S3::Resource.new(client: @s3_client).bucket(@bucket)
31
33
  obj = b.object("#{@prefix}manifest")
32
- S3ManifestFile.new(obj)
34
+ if obj.exists?
35
+ S3ManifestFile.new(obj)
36
+ else
37
+ nil
38
+ end
33
39
  end
34
40
 
35
41
  def has_manifest?
@@ -1,3 +1,3 @@
1
1
  module QueueryClient
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: queuery_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hidekazu Kobayashi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-07 00:00:00.000000000 Z
11
+ date: 2021-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: garage_client