The following changes were made in Oracle NoSQL Database Release 19.3.12 Enterprise Edition.
Added support for indexes that do not index[#27486]
NULLand non-existent values. This is an index property that can be specified in the index-creation DDL (the default is to index
NULLand non-existent values). Such indexes may be useful when the data contain a lot of
NULLand/or non-existent values on the indexed fields, because the time and space overhead of indexing is reduced. However, use of such indexes by queries is restricted. Specifically, they can be used only if for every indexed field, there is a sargable predicate on that field and the predicate in not
Modified operation and request count statistics to use long values to support stores with larger numbers of operations.
Added some new JMX bean methods that return total counts as longs. In some cases, for large stores, counts could exceed 2^31, so these new methods are needed to return accurate values for these statistics. The old methods are maintained for compatibility and will return
Integer.MAX_VALUEif the count gets too large.
New methods on the
New methods on the
The new long values are also reported in .perf files, collector .csv files, and in JSON output.[#27517]
The Streams API now supports dynamically adding or removing subscribed tables to or from any running stream without needing to terminate and recreate the stream.[#27381]
Users can now use the "describe table" statement to describe the schema of a system table.[#27602]
- Added the new built-in function
regex_liketo the query language. The function is used for string datatype regular expression pattern matching. For example, assume table "persons" has a string field "lastName". The following select statement will qualify records with a lastName starting with the letter "C".
select * from persons where regex_like(lastName,"C.*")
- Removed all classes and interfaces from the
oracle.kv.avropackage, which had previously been deprecated. Applications that had been using Avro should be modified to use the table API. [#27387]
Bug and Performance Fixes
Fix a bug that caused key statistics to be collected more often than the specified collection period.[#27615]
Allow single-partition queries to use secondary indexes. In previous releases, if a query used a secondary index it would be sent to and executed at all the shards of the queried table. However, if the query also specifies a shard key in the[#27573]
WHEREclause, sending it to all the shards is wasteful, because the query will have results only in the partition corresponding to the shard key. To avoid such waste, previous releases would never choose a secondary index if the query specified a shard key (i.e., if it was a single-partition query). Furthermore, if a single-partition contained an
GROUP BYclause that required the use of a secondary index, the query would raise an error. The current release lifts these restrictions by allowing single-partition queries to use secondary indexes and be executed only in the partition corresponding to the specified shard key.
NOT EXISTSpredicates were not considered sargable before. Now they are. For example, assume table "persons" has a column "info" of type JSON, and there is an index on info.age. Then, the following query, which looks for persons that do not have any age information, can now use the index on info.age for efficient execution.
select * from persons p where not exists p.info.age
Fixed bug where the[#27468]
seq_sum()functions would return 0, instead of
NULL, if none of the input values were numeric.
seq_count()function to return
NULLif any of its input items is
Fixed a bug where[#27628]
seq_maxfunctions would not skip JSON null if it was the first value in the input sequence.
Changed the way the[#27492]
NOT EXISTSoperators behave when their input expression returns
EXISTSwould return true and
NOT EXISTSfalse. Now, they both return
NULL, unless it is known that the input expression will always return at least one item; in the later case
EXISTSreturns true and
NOT EXISTSreturns false.
Fixed a bug where a value-comparison predicate would be erroneously pushed to a multi-key field of an index.[#27491]
Fixed two bugs where the GeoJson functions would sometimes throw a[#27496] [#27508] [#27526]
NullPointerExceptionif an argument is not a valid GeoJson object.
Fixed a bug where the[#27546]
geo_distancefunction would return -1 instead of
Fixed a bug where SN memory allocation check would sometimes produce misleading logging message.[#27524]
plan migrate-sncommand to continue in the presence of failures if the
-forceflag is specified. Administrators can use this new behavior when migrating SNs from failed zones.
Fix a problem encountered when processing string literals that contain the backslash character.[#27640]
Fix a bug where using bulk put API to load data to a table with identity type column, the identity column is not filled in value.[#27664]
Fix a bug where[#27662]
seq_max()of Timestamp values with precision less than 9 returns wrong fractional second.
- Removed deprecated Admin CLI commands that supported Avro:
put kv -json <schemaName>
get kv -json <schemaName>
- Upgraded the
verify-dataplan with the following changes:
- Made the
verify-dataplan asynchronous to avoid the timeout of RMI requests.
- Added a feature to provide users a list of corrupt keys associated with the error messages as a part of the plan result.
- Added two new flags,
-valid-timespecifies the amount of time for which an existing verification will be considered valid and not be rerun. The default is '10 minutes'.
-show-corrupt-filesspecifies whether to show corrupt JE log files in the plan result. It is disabled by default.
- Made the
- Updated InitialCapacityPlanning.xls (the capacity planning sheet)
with the following changes:
- Misc. cleanups to text and presentation.
- JVM overheads are now accounted for explcitly when sizing memory requirements.
- Simplified usage by eliminating explicit use of DbCacheSize.
- Support for specifying one index along with the table.
- The Oracle NoSQL Database Hadoop and Hive integration classes can now be used in environments running CDH6 Hadoop and Hive.
- A 'shaded' version of the
antlr4-runtime.jarlibrary is now shipped with this release; where the path prefix of each class specified in that library has been changed from the string
oracle/kv/shaded/org/antlr. This has been done to avoid ClassLoader conflicts (typically manifested as a
NoClassDefFoundError) when an application runs in an environment that depends on a different, incompatible version of that library; for example, various containers, Hadoop clusters, Hive clients, etc. In general, this will require no changes to current applications. The only case where a change in your application will be necessary is in the unlikely event that the classpath of your application includes the
antlr4-runtime.jarlibrary shipped in this release of Oracle NoSQL Database, rather than a version of
antlr4-runtime.jarinstalled in the application's particular runtime environment. In that case, we urge you to change your application's classpath to reference your own instance of
antlr4-runtime.jar; as the shaded version of
antlr4-runtime.jarshipped with this product is considered private to Oracle NoSQL Database.