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 +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/lib/athens/error.rb +1 -0
- data/lib/athens/query.rb +26 -19
- data/lib/athens/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1fb8ee7934d4e7019f1f54dbd3b3eb4368536e3974a00b35442898e4e8b267f
|
4
|
+
data.tar.gz: 1685787b3a1c68f850cc7ca01523a0f3a4feaeaae26ed5d9f77e41ffdafe4b15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ba436dc94c82c4b6642e8084e76455d3f32a786bc718364c89f2e3769b3786ddcfb65f0e1526d62b56c5d11a6e6e67cab501f3063b8e5e0c59fa2e46a219292
|
7
|
+
data.tar.gz: b6ef5c5bd6e318348fb4bb9fb794c37ff57be2e13bdcaaeef707246a524b3ea6b5d65ba62e0a2d3d7dbfab696ac6fbbfbfad33f943c473d1c2abc8747849658d
|
data/CHANGELOG.md
CHANGED
@@ -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!
|
data/Gemfile.lock
CHANGED
data/lib/athens/error.rb
CHANGED
data/lib/athens/query.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
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
|
-
|
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
|
|
data/lib/athens/version.rb
CHANGED
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.
|
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-
|
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
|