athens 0.1.0 → 0.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: '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