athens 0.1.0 → 0.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: '02197372c02d45a05efd88997b4cd8c01d66c869eafd6ca867f86da791ffe7b4'
4
- data.tar.gz: 1753f4f6986c4fedf82f09d9a6d9ebe0b9fb630d59261011fc3c0667108e4ed0
3
+ metadata.gz: d1fb8ee7934d4e7019f1f54dbd3b3eb4368536e3974a00b35442898e4e8b267f
4
+ data.tar.gz: 1685787b3a1c68f850cc7ca01523a0f3a4feaeaae26ed5d9f77e41ffdafe4b15
5
5
  SHA512:
6
- metadata.gz: facc871951901270b2b61410ae471cd6d62fcb33d2a914da76855e41fbccfb5039ee4e0d086deced77bcf39bf8c07fe865c635d6659093a2acac181291c78c2a
7
- data.tar.gz: feca9c73d6145784b74dc4ce5442c2b764efda51719ff58e5fa6896d8dfd89186224d7aaa4f9ae282d58043bf5aa4f0e3576998d40ec0d9983c51d917d6d8022
6
+ metadata.gz: 7ba436dc94c82c4b6642e8084e76455d3f32a786bc718364c89f2e3769b3786ddcfb65f0e1526d62b56c5d11a6e6e67cab501f3063b8e5e0c59fa2e46a219292
7
+ data.tar.gz: b6ef5c5bd6e318348fb4bb9fb794c37ff57be2e13bdcaaeef707246a524b3ea6b5d65ba62e0a2d3d7dbfab696ac6fbbfbfad33f943c473d1c2abc8747849658d
@@ -1,3 +1,8 @@
1
+ ## 0.2.0 / 2019-03-20
2
+
3
+ * Added support for NULL values. Columns with a nullable status of "NULLABLE" or "UNKNOWN" will return nil for NULL values
4
+ * If a NOT_NULL column returns a nil value an InvalidNullError will be raised
5
+
1
6
  ## 0.1.0 / 2019-03-01
2
7
 
3
8
  * Initial release!
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- athens (0.1.0)
4
+ athens (0.2.0)
5
5
  aws-sdk-athena (~> 1)
6
6
 
7
7
  GEM
@@ -4,5 +4,6 @@ module Athens
4
4
  class QueryFailedError < Error; end
5
5
  class QueryCancelledError < Error; end
6
6
  class InvalidRequestError < Error; end
7
+ class InvalidNullError < Error; end
7
8
 
8
9
  end
@@ -151,29 +151,36 @@ module Athens
151
151
 
152
152
  metadata.column_info.each_with_index do |col, index|
153
153
  data = row.data[index].var_char_value
154
+ nullable = ["UNKNOWN", "NULLABLE"].include?(col.nullable)
154
155
 
155
- case col.type
156
- when 'tinyint', 'smallint', 'int', 'integer', 'bigint'
157
- mapped << data.to_i
158
- when 'timestamp'
159
- mapped << Time.parse(data)
160
- when 'varchar'
156
+ if nullable && data.nil?
161
157
  mapped << data
162
- when 'float', 'double'
163
- mapped << data.to_f
164
- when 'decimal'
165
- if @decimal_without_new
166
- mapped << BigDecimal(data)
158
+ elsif !nullable && data.nil?
159
+ raise InvalidNullError.new("Got null data from a non-null field (#{col.name})")
160
+ else
161
+ case col.type
162
+ when 'tinyint', 'smallint', 'int', 'integer', 'bigint'
163
+ mapped << data.to_i
164
+ when 'timestamp'
165
+ mapped << Time.parse(data)
166
+ when 'varchar'
167
+ mapped << data
168
+ when 'float', 'double'
169
+ mapped << data.to_f
170
+ when 'decimal'
171
+ if @decimal_without_new
172
+ mapped << BigDecimal(data)
173
+ else
174
+ mapped << BigDecimal.new(data)
175
+ end
176
+ when 'date'
177
+ mapped << Date.parse(data)
178
+ when 'boolean'
179
+ mapped << (data == "true")
167
180
  else
168
- mapped << BigDecimal.new(data)
181
+ puts "WARNING: Unsupported type: #{col.type}, defaulting to string"
182
+ mapped << data
169
183
  end
170
- when 'date'
171
- mapped << Date.parse(data)
172
- when 'boolean'
173
- mapped << (data == "true")
174
- else
175
- puts "WARNING: Unsupported type: #{col.type}, defaulting to string"
176
- mapped << data
177
184
  end
178
185
  end
179
186
 
@@ -1,3 +1,3 @@
1
1
  module Athens
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: athens
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Schulte
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-01 00:00:00.000000000 Z
11
+ date: 2019-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-athena