title |
---|
Change Log |
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
-
Cloud only: new regions: sa-bogota-1, us-dcc-swjordan-1, us-dcc-swjordan-2, ap-dcc-tokyo-1, me-abudhabi-3, ap-dcc-gazipur-1, me-dcc-doha-1, ap-hobsonville-1
-
added support for array_collect() and count(distinct) in queries. These require server side support which is only available in Oracle NoSQL releases 23.3 and higher and will not be immediately available in the cloud service
-
Cloud only: added support for Cloud feature Global Active Tables. This includes new requests and classes:
- AddReplicaRequest
- DropReplicaRequest
- ReplicaStatsRequest/Result
- ReplicaStats
- Replica
as well as additional replica-related information and interfaces in TableResult
- Modified internal query processing to better support elasticity operations
- Improved performance of sorted queries, especially generalized sorting, which does not rely on indexes
- Documentation updates for methods added in release 5.4.0 and 5.4.1
- Cloud only: fixed problem where OKE Workload authentication would time out before refreshing
- Cloud only: changed domain for OC22/NAP/eu-dcc-rome-1
IMPORTANT: This release drops support for Python 2 and supports only Python 3.5 and higher
-
Cloud only: New regions: mx-monterrey-1, eu-frankfurt-2, eu-madrid-2, eu-jovanovac-1, eu-dcc-rome-1, eu-dcc-zurich-1, us-dcc-phoenix-4, us-saltlake-2, sa-valparaiso-1
-
Support for new, flexible wire protocol (V4) has been added. The previous protocol is still supported for communication with servers that do not yet support V4. The version negotation is internal and automatic; however, use of V4 features will fail at runtime when attempted with an older server. Failure may be an empty or undefined result or an exception if the request cannot be serviced at all. The following new features or interfaces depend on the new protocol version
- added set/get_durability to QueryRequest for queries that modify data
- added pagination information to TableUsageResult and TableUsageRequest
- added shard percent usage information to TableUsageResult
- added IndexInfo.get_field_types to return the type information on an index on a JSON field
- added the ability to ask for and receive the schema of a query using
- PrepareRequest.set_get_query_schema
- PreparedStatement.get_query_schema
- Cloud only: added use of ETags, DefinedTags and FreeFormTags in TableRequest and TableResult
- On-premises only. Added support for default namespace and per-request namespace specification
- Dropped support for Python 2.x
NOTE: version 5.3.6 was skipped
- Fixed import package collections.abc for Callable.
- Cloud only: New regions: us-tacoma-1, us-chicago-1, eu-dcc-milan-1, eu-dcc-milan-2, eu-dcc-dublin-1, eu-dcc-dublin-2, eu-dcc-rating-1, eu-dcc-rating-2, us-westjordan-1, us-dcc-phoenix-1, us-dcc-phoenix-2
- Added new method borneo.NoSQLHandle.query_iterable(query_request) to get an iterable that contains all the results of a query.
- Added support for specifying update operations from parent and child tables when executing write_multiple operations.
- Cloud only. Fixed references to the OCI "auth" package from iam.py that could lead to the error, "name 'auth' is not defined."
- Cloud only. Recognize the region parameter in the SignatureProvider constructor when an explicit provider is passed
- Added client statistics. Users can enable internal driver statistics
by using
NOSQL_STATS_PROFILE=[none|regular|more|all]
environment variable or by using theNoSQLHandleConfig.set_stats_profile()
api. - Cloud only: New regions: eu-paris-1, eu-madrid-1 and mx-queretaro-1.
- Cloud only: fixed the internal, automatic refresh of the security token when using Instance Principal authentication so that it is done well before the token expires
- Use selective module import for OCI SDK modules, and set the environment variable, OCI_PYTHON_SDK_NO_SERVICE_IMPORTS=1, to improve import speed by suppressing import of unnecessary modules from the OCI SDK
- Added dependencies to setup.py so that "pip install" automatically includes them
- Support for session persistence. If a Set-Cookie HTTP header is present borneo will now set a Cookie header using the requested session value
- Cloud only: support for on-demand tables
- Changes to TableLimits to specify on-demand tables
- Existing row modification is made available in Results when the operation fails and the previous is requested
- On-premise only: support for setting Durability in write operations
- Added Durability class and methods to set Durability
- Cloud only: updated OCI regions
- The SDK now detects the version of the server it's connected to and adjusts its capabilities to match. This allows the SDK to communicate with servers that may only support an earlier protocol version, with the corresponding feature restrictions
- Fixed handling of request id so that each request now gets a new id
NOTE: a couple of versions were skipped because of internal versioning issues. There are no public releases for 5.2.2 and 5.2.3
- Added NoSQLHandleConfig.set_max_content_length to allow on-premise configuration of a maximum request content size. It defaults to 32MB.
- If a delegation token is being used for authorization the HTTP header, 'opc-obo-token' will be sent with the contents of the token.
- Rate Limiting (cloud only):
- New method NoSQLHandleConfig.set_rate_limiting_enabled to enable automatic internal rate limiting based on table read and write throughput limits.
- If rate limiting is enabled:
- NoSQLHandleConfig.set_default_rate_limiting_percentage can control how much of a table's full limits this client handle can consume (default = 100%).
- Result classes now have a Result.get_rate_limit_delayed_ms method to return the amount of time an operation was delayed due to internal rate limiting.
- Add rate limiting example and test.
- RetryStats: New object allows the application to see how much time
and for what reasons an operation was internally retried.
- For successful operations, retry stats can be retrieved using Result.get_retry_stats.
- Otherwise, the original Request may have retry stats available via Request.get_retry_stats (for example, after an exception was thrown).
- Cloud only: New regions: ap-chiyoda-1, me-dubai-1, sa-santiago-1 and uk-cardiff-1.
- Added dependency on dateutil package for flexible timestamp handling
- DefaultRetryHandler now uses incremental backoff mechanism (instead of fixed 1-second delay) and may be extended.
- Updated examples to use NoSQLHandle.do_table_request instead of NoSQLHandle.table_request followed by TableResult.wait_for_completion.
- Change PreparedStatement.set_variable method to support both name and position variables.
- Enhance handling of TIMESTAMP types to better handle a datetime instance with an explicit timezone. By default fields of type TIMESTAMP returned by the system are represented by a "naive" (not timezone aware) datetime object in the timezone UTC.
- Timestamp and log level are no longer hard-coded in log messages - rather the default logger is configured with a formatter that includes them. An application that provides its own logger may choose its own format.
- Adjusted several log messages to use more appropriate levels (ERROR for errors, DEBUG for chatter).
- Fixed a performance issue that causes results to be returned more slowly as they got larger. The Python List pop() method was mistakenly being used on large arrays.
- Ensure that TableLimits is always None in TableResult on-premise.
- Fixed synchronization problem in SignatureProvider.
- Fixed a problem where the cloud service might succeed when dropping a table that does not exist without using "drop table if exists" when it should throw TableNotFoundException
- NoSQLHandleConfig.set_sec_info_timeout and NoSQLHandleConfig.get_sec_info_timeout has been removed.
- Added NoSQLHandleConfig.set_ssl_cipher_suites to allow the user to configure preferred SSL ciphers, and NoSQLHandleConfig.get_ssl_cipher_suites to get the ssl cipher setting.
- Added NoSQLHandleConfig.set_ssl_protocol to allow the user to configure preferred SSL protocol, and NoSQLHandleConfig.get_ssl_protocol to get the ssl protocol setting.
- Added NoSQLHandleConfig.set_ssl_ca_certs to allow the user to configure SSL CA certificates, and NoSQLHandleConfig.get_ssl_ca_certs to get the SSL CA certificates setting.
- Cloud only. Added new regions: AP_HYDERABAD_1, AP_MELBOURNE_1, AP_OSAKA_1, CA_MONTREAL_1, EU_AMSTERDAM_1, ME_JEDDAH_1.
- Cloud only. Added support for authenticating via Resource Principal.
This can be used in Oracle Cloud Functions to access NoSQL cloud
service:
- Added a new method SignatureProvider.create_with_resource_principal.
- Added a new method SignatureProvider.get_resource_principal_claim to retrieve resource principal metadata with ResourcePrincipalClaimKeys such as compartment and tenancy OCID.
- Added generic group by and SELECT DISTINCT. These features will only work with servers that also support generic group by.
- Cloud only. Added the support in SignatureProvider to configure and
pass region to NoSQLHandleConfig:
- SignatureProvider built with OCI standard config file is now able to read 'region' parameter from config file and pass to NoSQLHandleConfig implicitly.
- Change constructor of SignatureProvider to allow passing Region programmatically with user profile.
- Change the method SignatureProvider.create_with_instance_principal to allow setting Region with instance principal.
- Deprecated QueryRequest.set_continuation_key and QueryRequest.get_continuation_key, use QueryRequest.is_done instead.
- On-premise only. Don't validate request sizes.
- TableUsageRequest: added validation check that end time must be greater than start time if both of them are specified, throw IAE if end time is smaller than start time.
- Changed min/max implementation to make them deterministic.
- On-premise only. Fixed a problem where the HTTP Host header was not being adding in all request cases. This prevented use of an intermediate proxy such as Nginx, which validates headers.
- The requirement of third party package "cryptography" has been removed.
- The TableBusyException has been removed.
- OCI Native support for the cloud service
- Include support for IAM based security in the cloud service.
- When using the cloud service, tables are now created in compartments. Compartments can be specified for tables in APIs and query statements. By default the compartment is the root compartment of the tenancy when authenticated as a specific user. The compartment name or id can be specified by default in NoSQLHandleConfig or specified in each Request object. The compartment name can also be used as a prefix on a table name where table names are accepted and in queries, e.g. "mycompartment:mytable".
- Removed support for IDCS based security in the cloud service.
- TableResult.wait_for_state() has been removed. Use wait_for_completion().
- Added PutRequest.set_exact_match() to allow the user to control whether an exact schema match is required on a put. The default behavior is false.
- Support for complex, multi-shard queries:
- Sorted/ordered multi-shard queries.
- Multi-shard aggregation.
- Geo-spatial queries such as geo_near().
- Support for Identity Columns:
- Added PutRequest.get/set_identity_cache_size() to allow a user to control the number of cached values are used for identity columns. The default value is set when the identity column is defined.
- Added PutResult.get_generated_value() which will return a non-none value if an identity column value was generated by the operation. This is only relevant for tables with an identity column defined.
- Added a new, simpler TableResult.wait_for_completion() method to wait for the completion of a TableRequest vs waiting for a specific state.
- Added NoSQLHandle.do_table_request() to encapsulate a TableRequest and waiting for its completion in a single, synchronous call.
- Added OperationNotSupportedException to handle operations that are specific to on-premise and cloud service environments.
- Support for both the Oracle NoSQL Database Cloud Service and the
on-premise Oracle NoSQL Database product.
-
Added StoreAccessTokenProvider for authentication of access to an on-premise store
-
Added AuthenticationException to encapsulate authentication problems when accessing an on-premise store.
-
Added SystemRequest, SystemStatusRequest, and SystemResult for administrative operations that are not table-specific.
-
Added methods on NoSQLHandle for system requests, which are those that do not involve specific tables:
- system_request(), system_status(), list_namespaces(), list_users(), list_roles()
-
Added NoSQLHandle.do_system_request to encapsulate a SystemRequest and waiting for its completion in a single, synchronous call.
-
Now that the driver can access both the cloud service and an on-premise store some operations, classes and exceptions are specific to each environment. These are noted in updated API documentation.
-
- Parameters to TableResult.wait_for_state() changed. It is no longer static and acts on self, modifying state as required.
- TableResult.wait_for_state_res() has been removed. Use wait_for_state().
- Initial Release
- Support for Oracle NoSQL Database Cloud Service