- [breaking change] Make
:orc
table format to resolve columns by names instead of indexes.:orc_index_access
preserves existing behavior - [breaking change] Simplify table format to take either symbols for presets or a string if you want to specify a custom format
- Add
:json
table format preset
- Ability to configure Egis per client
- Add ability to insert data with hash values rather than arrays
- Add ability to create Athena tables with SerDe
- Fix testing mode error when AWS credentials missing
- Add logger
- Ability to specify AWS credentials profile
- Fixed
aws-sdk-s3
not being a runtime dependency
- Added
fetch_result
method toAegis::QueryStatus
- Moved errors to
Aegis::Errors
module
- Moved
NullSerializer
toTypes
module
- Fixed
nil
value serialization
- Fixed table's
download_data
to correctly returnnil
values
- Fixed data wiping when S3 location is empty
- Fixed table options
- Replaced usage of deprecated last argument as keyword parameters with splat operator
- Fixed testing mode table location translation
- [breaking change] Extracted table-related methods from
Database
into newTable
class (create_table
,add_partitions
,discover_partitions
). Table objects are now being created usingDatabase.table
method. - [breaking change]
.execute_query
methods inasync
mode now returnAegis::QueryStatus
objects instead of query id. - Introduced new testing framework. All database queries executed within
Aegis.testing { ... }
will be executed inside a separated "virtual environment" in the testing bucket you can now configure. - Added a bunch of convenience methods:
QueryStatus.in_progress?
Database.exists?
to check whether a database with a given name already existsTable.upload_data
to upload data to S3 directly from Ruby (especially useful in testing)Table.download_data
to download table data into memory (especially useful in testing)Table.wipe_data
to purge table's S3 location
- Introduced
Aegis::Types
module for working with Athena data types.Aegis::Types.serializer(type)
returns proper type serializer which hasliteral
,dump
andload
methods.literal
returns a string literal you can embed within your queries. For example,Aegis::Types.serializer(:timestamp).literal(Time.now)
returnstimestamp '2020-04-14 10:36:48'
which you can use directly in a Athena query.dump
serializes Ruby value object into a string that can be used in S3 data fileload
loads serialized string value back to Ruby object
- [breaking change] Removed
permissive
parameter replacing it with bang method versions. Changed methods:Database.create
,Database.drop
,Database.create_table
,Database.load_partitions
- [breaking change] Replaced
Database.load_partitions
with two simpler methods:Database.add_partitions
,Database.discover_partitions
- [breaking change]
Database.execute_query
is async by default now
Initial gem implementation including core features like:
- table schema DSL
- database / table creation
- partition loading
- synchronous and asynchronous query execution
- query status monitoring