All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Instrumentation feature added for Active Support users
- Added
query_timeoutas a per-query parameter, allowing timeout override on individual queries
query_timeoutnow properly sends timeout parameter to Snowflake API for server-side enforcement- Streaming mode now releases consumed records, fixing memory leak. Note: if you were iterating over streaming results more than once, this is a breaking change (though that was not its intended usage).
- Enhanced Row API to implement Enumerable interface
- Added case-insensitive access to Row columns via both symbol and string keys
- Added numeric column access to Row (e.g.,
row[0]) - Support setting organization or ENV["SNOWFLAKE_ORGANIZATION"] to nil or "" in JWT authentication
- Added default_role parameter and SNOWFLAKE_DEFAULT_ROLE env variable
- Bumped gem dependencies to newer versions
- Added support for role parameter in Client and query method
- Switched from Oj to JSON gem for parsing
- Improved performance by utilizing the optimized JSON gem
- Parse exception detail OR message for better error handling
- Fixed ENV variable issue
- Retry HTTP codes in the 3xx range
- CI error fixes
- Added 502 to specific list of retryable HTTP error codes
- Fixed issue with checking string code presence in an array of integer values
- Support for specifying a schema in query method
- Merged multiple community contributions
- Allow specifying schema in query method
- Added exponential backoff to retryable calls
- Improved handling of rate limiting (429 responses)
- Fixed raise arguments
- Now properly raising OpenSSL errors to retry them
- Now upcasing database and warehouse fields in requests
- Fixed error where lowercase field names would result in "Unable to run command without specifying database/warehouse"
- Fixed typo in key pair memoization
- Added
create_jwt_tokenhelper method for testing - Support for time travel in tests
- First stable release
- Fixed markdown links in documentation
- Support for Snowflake polling responses
- Handle async query execution
- Extracted authentication logic into its own class
- Improved time handling for various Snowflake date/time types
- Support for TIME, DATETIME, TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ
- Support for database parameter in requests
- Added missing dependencies to gemspec
- Added
fetchas an alias forqueryfor compatibility with other clients
- First minor version release with basic functionality
- Support for querying Snowflake with the HTTP API
- Support for streaming results
- Cleaned up key pair authentication
- Improved documentation with better setup instructions
- Various bug fixes and improvements
- Fixed type handling for query results
- All specs now pass
- Renamed to RubySnowflake namespace
- Initial gem structure