athens 0.3.0 → 0.3.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: 901ae482186b3f1eeb424ee6bc4c09f5122aa7ba20028e7bc88015f0f8eff840
4
- data.tar.gz: a42a0b004300dd61da4d1bf3fc96aace76c94fa0ba7760a8ca81a4a736cb77e2
3
+ metadata.gz: b0751e4a11947a14a576b1a2b251c53af99a90b7b88e15617f810767efb3cce9
4
+ data.tar.gz: a6dbc5ef43c672a80df58c68159614c02a25a4b377039111d68ac104d9712473
5
5
  SHA512:
6
- metadata.gz: e89fc662abb5ee87ab4612ddc90cadfb2259f0e33e6e3d59a73f0b759dbf675239630ef9f8835d88746ad72726404eb9db5d451eb5d84ad0bdcb4c1ceffd23c5
7
- data.tar.gz: c15ce346a50f27fd2f684928bf1761145b848b1d80b9503faad4b5ffcd3cf35b49aa8d3fe719bd6da0210e2a5094cc0ff3e7a38026e1361521f8404738d09fca
6
+ metadata.gz: 629cb6c7f875a261ee1285b6e92acf688e51f81efaecd7423fccc14f17bc8e14b54e433a2b02a03abf3bc5c9cc0ddb8c08f3771623340e2e9d16437e448b70ef
7
+ data.tar.gz: d38b3a46dc522de7de9cb66e457d6a7e10d0baaa77e432262a1ff3bb01104326a405c4341bce6a1d8d77fc24fdd6b51217c8bc93a364002db364e48bd5581cca
data/CHANGELOG.md CHANGED
@@ -1,3 +1,26 @@
1
+ ## 0.3.5 / 2021-05-19
2
+
3
+ * Addition of :aws_profile as a configuration option for credentials (thanks [oisin](https://github.com/oisin))
4
+ * Fix for BigDecimal in Ruby 3.x (thanks [mediafinger](https://github.com/mediafinger))
5
+ * Bumped development gem versions to latest releases
6
+
7
+ ## 0.3.4 / 2021-03-02
8
+
9
+ * Added configurable polling period (thanks [jesseproudman](https://github.com/jesseproudman))
10
+
11
+ ## 0.3.3 / 2021-01-12
12
+
13
+ * Added support for Ruby 3.0 (thanks [blackjiro](https://github.com/blackjiro))
14
+
15
+ ## 0.3.2 / 2020-11-24
16
+
17
+ * Added optional `request_token` and `work_group` parameters to the query execute method (thanks [mediafinger](https://github.com/mediafinger))
18
+
19
+ ## 0.3.1 / 2020-07-20
20
+
21
+ * Bumped development rake version from 0.10 to 0.13 for security fixes
22
+ * Fixed warning about string defaulting to string (#2)
23
+
1
24
  ## 0.3.0 / 2019-07-02
2
25
 
3
26
  * Added enumerator-based result access methods: `#rows` and `#records`
data/Gemfile.lock CHANGED
@@ -1,33 +1,36 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- athens (0.3.0)
4
+ athens (0.3.5)
5
5
  aws-sdk-athena (~> 1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- aws-eventstream (1.0.1)
11
- aws-partitions (1.136.0)
12
- aws-sdk-athena (1.7.0)
13
- aws-sdk-core (~> 3, >= 3.39.0)
14
- aws-sigv4 (~> 1.0)
15
- aws-sdk-core (3.46.0)
16
- aws-eventstream (~> 1.0)
17
- aws-partitions (~> 1.0)
18
- aws-sigv4 (~> 1.0)
10
+ aws-eventstream (1.1.1)
11
+ aws-partitions (1.458.0)
12
+ aws-sdk-athena (1.37.0)
13
+ aws-sdk-core (~> 3, >= 3.112.0)
14
+ aws-sigv4 (~> 1.1)
15
+ aws-sdk-core (3.114.0)
16
+ aws-eventstream (~> 1, >= 1.0.2)
17
+ aws-partitions (~> 1, >= 1.239.0)
18
+ aws-sigv4 (~> 1.1)
19
19
  jmespath (~> 1.0)
20
- aws-sigv4 (1.0.3)
20
+ aws-sigv4 (1.2.3)
21
+ aws-eventstream (~> 1, >= 1.0.2)
21
22
  jmespath (1.4.0)
22
- rake (10.5.0)
23
+ rake (13.0.3)
24
+ rexml (3.2.5)
23
25
 
24
26
  PLATFORMS
25
27
  ruby
26
28
 
27
29
  DEPENDENCIES
28
30
  athens!
29
- bundler (~> 1.17)
30
- rake (~> 10.0)
31
+ bundler (>= 1.17)
32
+ rake (~> 13.0)
33
+ rexml (~> 3.2)
31
34
 
32
35
  BUNDLED WITH
33
- 1.17.2
36
+ 2.2.5
data/README.md CHANGED
@@ -44,8 +44,8 @@ When your query is done, grab the results as an array:
44
44
  ```ruby
45
45
  results = query.to_a
46
46
  # [
47
- # ['column_1', 'column_2', 'column_3'],
48
- # [15, 'data', true],
47
+ # ['column_1', 'column_2', 'column_3'],
48
+ # [15, 'data', true],
49
49
  # [20, 'foo', false],
50
50
  # ...
51
51
  # ]
@@ -55,7 +55,7 @@ Or as a hash (which is really an array where each row is a hash):
55
55
  ```ruby
56
56
  results = query.to_h
57
57
  # [
58
- # {'column_1': 15, 'column_2': 'data', 'column_3': true},
58
+ # {'column_1': 15, 'column_2': 'data', 'column_3': true},
59
59
  # {'column_1': 20, 'column_2': 'foo', 'column_3': false},
60
60
  # ...
61
61
  # ]
@@ -87,9 +87,11 @@ Configure your AWS settings in an `Athens.configure` block (in rails put this in
87
87
  ```ruby
88
88
  Athens.configure do |config|
89
89
  config.output_location = "s3://my-bucket/my-folder/athena/results/" # Required
90
- config.aws_access_key = 'access' # Optional
91
- config.aws_secret_key = 'secret' # Optional
92
- config.aws_region = 'us-east-1' # Optional
90
+ config.aws_access_key = 'access' # Optional
91
+ config.aws_secret_key = 'secret' # Optional
92
+ config.aws_profile = 'myprofile' # Optional
93
+ config.aws_region = 'us-east-1' # Optional
94
+ config.wait_polling_period = 0.25 # Optional - What period should we poll for the complete query?
93
95
  end
94
96
  ```
95
97
 
@@ -146,6 +148,13 @@ query.cancel # Attempts to cancel an in-progress query, returns true or false
146
148
  query.to_a(header_row: false) # If you want your query results returned without a header row of column names
147
149
  ```
148
150
 
151
+ The execute method also optionally supports the `request_token` and `work_group` [parameters](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html#API_StartQueryExecution_RequestSyntax):
152
+
153
+ ```ruby
154
+ conn = Athens::Connection.new(database: 'sample')
155
+ query = conn.execute("SELECT * FROM mytable", request_token: single_use_token, work_group: my_work_group)
156
+ ```
157
+
149
158
  ## Development
150
159
 
151
160
  After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -165,3 +174,4 @@ The gem is available as open source under the terms of the [WTFPL License](http:
165
174
  ## Code of Conduct
166
175
 
167
176
  Everyone interacting in the Athens project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/getletterpress/athens/blob/master/CODE_OF_CONDUCT.md).
177
+
data/Rakefile CHANGED
@@ -1,2 +1 @@
1
1
  require "bundler/gem_tasks"
2
- task :default => :spec
data/athens.gemspec CHANGED
@@ -32,10 +32,11 @@ Gem::Specification.new do |spec|
32
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
33
  spec.require_paths = ["lib"]
34
34
 
35
- spec.required_ruby_version = '~> 2.4'
35
+ spec.required_ruby_version = '>= 2.4'
36
36
 
37
37
  spec.add_dependency "aws-sdk-athena", "~> 1"
38
38
 
39
- spec.add_development_dependency "bundler", "~> 1.17"
40
- spec.add_development_dependency "rake", "~> 10.0"
39
+ spec.add_development_dependency "bundler", ">= 1.17"
40
+ spec.add_development_dependency "rake", "~> 13.0"
41
+ spec.add_development_dependency "rexml", "~> 3.2"
41
42
  end
@@ -1,15 +1,19 @@
1
1
  module Athens
2
2
  class Configuration
3
- attr_accessor :aws_access_key,
3
+ attr_accessor :aws_access_key,
4
4
  :aws_secret_key,
5
5
  :aws_region,
6
- :output_location
6
+ :output_location,
7
+ :wait_polling_period,
8
+ :aws_profile
7
9
 
8
10
  def initialize
9
11
  @aws_access_key = nil
10
12
  @aws_secret_key = nil
11
13
  @aws_region = nil
12
14
  @output_location = nil
15
+ @wait_polling_period = 0.25
16
+ @aws_profile = nil
13
17
  end
14
18
  end
15
- end
19
+ end
@@ -8,10 +8,11 @@ module Athens
8
8
  def initialize(database: nil, aws_client_override: {})
9
9
  @database_name = database
10
10
 
11
- client_config = {
11
+ client_config = {
12
12
  access_key_id: Athens.configuration.aws_access_key,
13
13
  secret_access_key: Athens.configuration.aws_secret_key,
14
- region: Athens.configuration.aws_region
14
+ region: Athens.configuration.aws_region,
15
+ profile: Athens.configuration.aws_profile
15
16
  }.merge(aws_client_override).compact
16
17
 
17
18
  @client = Aws::Athena::Client.new(client_config)
@@ -19,26 +20,28 @@ module Athens
19
20
 
20
21
  # Runs a query against Athena, returning an Athens::Query object
21
22
  # that you can use to wait for it to finish or get the results
22
- def execute(query)
23
+ def execute(query, request_token: nil, work_group: nil)
23
24
  if @database_name
24
25
  resp = @client.start_query_execution(
25
26
  query_string: query,
26
27
  query_execution_context: context,
27
- result_configuration: result_config
28
+ result_configuration: result_config,
29
+ client_request_token: request_token,
30
+ work_group: work_group
28
31
  )
29
32
  else
30
33
  resp = @client.start_query_execution(
31
34
  query_string: query,
32
35
  result_configuration: result_config
33
36
  )
34
- end
37
+ end
35
38
 
36
39
  return Athens::Query.new(self, resp.query_execution_id)
37
40
  end
38
41
 
39
42
  private
40
43
 
41
- def context
44
+ def context
42
45
  Aws::Athena::Types::QueryExecutionContext.new(database: @database_name)
43
46
  end
44
47
 
data/lib/athens/query.rb CHANGED
@@ -14,6 +14,7 @@ module Athens
14
14
 
15
15
  version = RUBY_VERSION.split('.').map {|v| v.to_i}
16
16
  @decimal_without_new = (version[0] >= 2 && version[1] >= 5)
17
+ @decimal_without_new = (version[0] == 2 && version[1] >= 5) || (version[0] >= 3)
17
18
  end
18
19
 
19
20
  def state
@@ -49,7 +50,7 @@ module Athens
49
50
  end
50
51
 
51
52
  # Wait a bit and check again
52
- sleep(0.25)
53
+ sleep(Athens.configuration.wait_polling_period.to_f)
53
54
  end
54
55
  end
55
56
 
@@ -151,7 +152,7 @@ module Athens
151
152
  mapped << data.to_i
152
153
  when 'timestamp'
153
154
  mapped << Time.parse(data)
154
- when 'varchar'
155
+ when 'varchar', 'string'
155
156
  mapped << data
156
157
  when 'float', 'double'
157
158
  mapped << data.to_f
@@ -173,9 +174,8 @@ module Athens
173
174
  end
174
175
 
175
176
  return mapped
176
- end
177
+ end
177
178
 
178
179
 
179
180
  end
180
181
  end
181
-
@@ -1,3 +1,3 @@
1
1
  module Athens
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.5"
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.3.0
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Schulte
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-02 00:00:00.000000000 Z
11
+ date: 2021-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-athena
@@ -28,14 +28,14 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.17'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.17'
41
41
  - !ruby/object:Gem::Dependency
@@ -44,14 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '13.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rexml
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.2'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '10.0'
68
+ version: '3.2'
55
69
  description: Allows you to easily access AWS Athena databases and run queries
56
70
  email:
57
71
  - chris@oceanbreezesoftware.com
@@ -84,13 +98,13 @@ metadata:
84
98
  homepage_uri: https://github.com/getletterpress/athens
85
99
  source_code_uri: https://github.com/getletterpress/athens
86
100
  changelog_uri: https://github.com/getletterpress/athens/CHANGELOG.md
87
- post_install_message:
101
+ post_install_message:
88
102
  rdoc_options: []
89
103
  require_paths:
90
104
  - lib
91
105
  required_ruby_version: !ruby/object:Gem::Requirement
92
106
  requirements:
93
- - - "~>"
107
+ - - ">="
94
108
  - !ruby/object:Gem::Version
95
109
  version: '2.4'
96
110
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -99,9 +113,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
113
  - !ruby/object:Gem::Version
100
114
  version: '0'
101
115
  requirements: []
102
- rubyforge_project:
103
- rubygems_version: 2.7.8
104
- signing_key:
116
+ rubygems_version: 3.0.9
117
+ signing_key:
105
118
  specification_version: 4
106
119
  summary: Run simple SQL queries in AWS Athena
107
120
  test_files: []