Changes in 23.1.21

The following changes were made in Oracle NoSQL Database Release 23.1.21 Enterprise Edition.

New Features

  1. Implemented the SQL BETWEEN operator. This is a convenience operator that makes it easier to write queries that include range predicates with both a lower and an upper bound.

    [KVSTORE-1727]

  2. Modified the build process to compile Java files to require Java 11.

    [KVSTORE-1752]

  3. Removed support for Hive, including all of the classes in the oracle.kv.hadoop.hive.table package. Hive support was removed because this release requires Java 11 and the Hive package has not been updated to support that Java release. Hive support was needed for BigDataSQL, which is now also no longer supported.

    [KVSTORE-1775]

  4. Added health check functionality to on-premises bundled proxy at url:
    http[s]://<proxy host>/V2/health

    [KVSTORE-1842]

Bug and Performance Fixes

  1. Fixed a race condition that could cause a RepNode to reach its request limit and fail to server future requests. A thread dump would reveal a large number of KVRepNodeService misc async executor threads, a heap dump would include a terminated NioChannelExecutor referenced by one or more CONNECTING NioEndpointHandlers and many non-terminated DialogContextImpls. Other symptoms such as the RepNode exiting with an OutOfMemoryError are also possible. Restarting the node resolves the problem, although it could occur again. The present fix allows NioChannelExecutor threads to remain idle rather than shutting them down after an application closes all of its KVStore instances. This behavior will be addressed in a future release.

    [KVSTORE-1882]

  2. Fix a bug in multi-region tables where deleting a row, then within seven days inserting a new row with the same key, could result in the new row expiring as if had been configured with time-to-live (TTL).

    [KVSTORE-1822]

  3. Fixed a bug that could cause the Streams API to miss an operation when encountering connection errors.

    [KVSTORE-1832]

  4. Fixed a bug in the regex_like function which causes an exception if the pattern or flags argument is a constant expression but not a constant literal. For example, a query as follows would throw an exception:
    select id from foo f where regex_like(f.address.street, concat("Old ", "Tunnel",
          ".*"))

    [KVSTORE-1890]

  5. Improved checking of zone RF, arbiters, and master affinity:
    • Modified topology change-zone-type to also remove master affinity and remove allowing arbiters when changing to type secondary, and to also add allowing arbiters when changing to type primary when the replication factor is 0.
    • Note that topology change-rep-factor can reduce the replication factor for a secondary zone.
    • Modified topology change-zone-master-affinity to prohibit master affinity for primary zones with replication factor 0.
    • Modified topology change-zone-arbiters to require allowing arbiters for primary zones with replication factor 0.
    • Modified plan deploy-topology to fail if the new topology would reduce the primary replication factor. Previously, the primary replication factor could be reduced by either changing a primary zone to secondary zone, or by changing a primary to a secondary zone, reducing its replication factor, and changing it back to a primary zone.
    • Note that the replication factor for plan deploy-zone must be non-negative and can only be 0 for either primary zones that allow arbiters or secondary zones; that arbiters are not allowed by default, are only allowed for primary zones, and must be allowed for primary zones with replication factor 0; and that master affinity is disabled by default and is only allowed for primary zones with replication factor greater than 0.
    • Modified topology preview to include information about changes to the replication factor and allowing arbiters.

    [KVSTORE-1739]

  6. Fixed a bug for proxy-based queries. Due to rare race condition and lack of appropriate synchronization, this bug could cause query results to be lost.

    [KVSTORE-1498]

  7. Fixed a bug that can cause a join query to miss results when
    • The target table is accessed through a secondary index
    • A query batch finishes at a target-table row R
    • Row R is deleted before the next query batch starts

    [KVSTORE-1746]

  8. Fixed a bug that shows up in join queries when
    • The query orders by the primary key of the target table in descending order
    • It uses the primary index to scan the target table
    • Accesses descendant tables

      In this case, the query would fail to find descendant-table rows that match with a target-table row.

    [KVSTORE-1770]

  9. Fixed a bug in the heuristic that chooses the best index for queries when more than one index is applicable. The bug can show up when the query specifies a complete key (that is, there are equality predicates for all indexed fields) for more than one of the applicable indexes.

    [KVSTORE-1810]

  10. Fixed a bug that could cause the stream API to skip some stream records from some partitions when a partition migration attempt failed.

    [KVSTORE-1645]

  11. Take advantage of a new facility in the storage engine to handle durability acknowledgments asynchronously. This change reduces thread usage on the server and increases throughput for inserts and updates under load.

    [KVSTORE-330]

  12. Fixed an issue where read operations that use Consistency.Time can return incorrect results if performed during an elasticity operation that includes partition migration. The return value can be more out of date than the specified permissible lag.

    [KVSTORE-981]

  13. Fixed a bug in the output of create snapshot admin cli command. The fix is to modify the non-JSON output of create snapshot to match the JSON output and correct the returnCode and description in the JSON output for quorum RNs.

    [KVSTORE-1205]

  14. Fixed a bug that migrator exports wrong table DDL for MR counter data type, the NOT NULL should not be used for MR counter type and MR counters in JSON column are missing.

    [KVSTORE-1857]

  15. Fixed a bug that describe as json table may return invalid JSON string, the escape character ('\') was missing before special characters in field path for JSON index and JSON MR_COUNTER.

    [KVSTORE-1905]