Changes in this Release

Where changes relate to a Zendesk issue, the associated Zendesk reference number is displayed. For example, (9424).

Although major fixes are documented in Resolved Issues, this Changes in this Release section may also include fixes.

Changes in NuoDB 4.0

This section provides an overview of the major changes included with NuoDB 4.0.

Domain and Database Management

When performing a new deployment of NuoDB (in physical and VMware environments) using the Debian Package Utility or the RedHat Package Manager, NuoDB Admin (nuoadmin) is now the default interface for managing a NuoDB domain and database.

Note: This applies only to deployments of NuoDB in Linux environments. Where NuoDB is deployed in a Windows environment, NuoAgent remains the admin interface in NuoDB 4.0. Windows will default to using NuoDB Admin in a future release.

When performing a new deployment of NuoDB (in physical and VMware environments) using a Linux TAR file, the DBA can choose which interface to use for interface for managing a NuoDB domain and database.

If you're upgrading from a previous version of NuoDB to NuoDB 4.0, NuoAgent (nuoagent) remains the default interface for domain and database management. For information on this deprecated deployment model, see Physical or VMware Environments (NuoAgent).

Index Creation (Spill to Disk)

To improve performance of index creation, the processing for creating indexes on all non-temporary tables has been moved to the Storage Manager. Creation of indexes on temporary tables is still processed on the Transaction Engine. As a result:

For more information, see Spill to Disk.

Storage Group Removal

Prior to the release of NuoDB 4.0, it was possible to remove a storage group immediately after dropping all tables. Now, there can be a delay between dropping all tables in a storage group and being able to remove the storage group.

Server Certificate Validation

In deployments of NuoDB being managed by NuoDB Admin (nuoadmin), where TLS has been configured, client verification of the admin server certificate is enabled by default. The certificate file used to verify the server certificate is specified using the --verify-server argument or the NUOCMD_VERIFY_SERVER environment variable. For more information, see Using NuoDB Command When TLS is Enabled.

SQL Support

NuoDB SQL

The NuoDB SQL (nuosql) command line tool now supports inline comments ('–') when used in interactive mode. For information on using nuosql, see Using NuoDB SQL Command Line. (9424)

Errors generated are now prefixed with "Error <N>:", where N is the SQLSTATE value from SQL Error Codes.

SQL Functions and Operations

The OCTET_LENGTH built-in function now accepts binary types (Binary, VarBinary, and Bytes) in addition to string types. For more information on the OCTECT_LENGTH function, see SQL Functions and Operations.

SQLSTATE Values

The SQLSTATE value for the TE shutdown was requested before the transaction successfully committed exception has been changed from 58000 to 08007. (9566)

For more information on SQLSTATE values, see SQL Error Codes.

Date String Literals

NuoDB now supports date string literals in the yyyyMMdd format, for example 20190101. (9341)

GENERATED Columns

Undocumented and unsupported syntax for GENERATED columns is no longer allowed. For example, the following usage of GENERATED columns is no longer allowed:

SQL> CREATE TABLE a(i int GENERATED ALWAYS AS);
SQL> CREATE TABLE b(i int GENERATED ALWAYS IDENTITY);
SQL> CREATE TABLE c(i int GENERATED ALWAYS AS(s1));

COLLATE Syntax

If COLLATE case_insensitive syntax is used when creating the domain in which the table is being created, an error is now thrown, preventing the user from specifying the same syntax for the table definition. For more information on using the COLLATE parameter, see CREATE TABLE.

NuoDB Drivers

C/C++ Drivers

In previous releases of NuoDB, the NuoDB C driver (libnuoclient.so) and C++ driver (libNuoRemote.so) were statically linked with other library dependencies. With the release of NuoDB 4.0, the C and C++ driver libraries are now dynamically linked to other library dependencies. As a result, if the C or C++ driver libraries are copied or moved to different directories, the other library dependencies (libnuoengine.\*, libicu.\*, and libmpir.\*) must also be copied or moved to the same directory. (9888)

For more information on using NuoDB Drivers, see Client Development.

Database Packaging Changes

With the new client package, all client drivers and certain utilities have been removed from the database package. To access client drivers and utilities such as NuoDB Migrator and NuoDB Loader, the client package must be used. For more information, see the Product Distribution Package Files section in Physical or VMware Environments, and Drivers Shipped in the NuoDB Client-only Package.

C++ Driver

To help improve the display of NuoDB error messages in C++ client applications, the SQLException class has been modified to inherit from std:exception. This results in an Application Binary Interface (ABI) change to the libNuoRemote.so library. Any applications or clients using libNuoRemote.so must be recompiled before they can be used with version 4.0 version of the libNuoRemote.so library. For general information on using NuoDB's C++ driver, see C++ Driver API Reference.

JDBC Driver Error Handling

For SQLSTATE08007, the JDBC driver now throws SQLRecoverableException instead of SQLTransientConnectionException (which is thrown by all other SQLSTATE values starting with 08). For more information on SQLSTATE values, see SQL Error Codes.

Logging

The readability of the log output, when using the sql-statement-metrics log category, has been improved.

For more information on the sql-statement-metrics log category, see Description of Logging Categories.