Known Issues

Where known issues have been reported, the associated Zendesk reference number is displayed. For example, (9737).

Known Issues in NuoDB 3.4.2

This section provides a summary of the issues identified at the release of NuoDB 3.4.2.

Issue description Workaround
NuoDB SQL expects a single argument; the database name. If multiple arguments are entered, the last value is interpreted as the database name. None.
When inserting values into an automatically generated field with small precision, an "Invalid table generator defined. Column type must be redefined" error is returned. (9737) None.
Any user is allowed to create new database users. In addition, any user is allowed to create new schemas, create new objects in the new schema, and grant access to those new objects. (9683) None.
Use of DML and DDL on the same table within a stored procedure may return unexpected results. DML statements are executed against the version of the table that existed at the time the stored procedure is called and do not contain the changes from the DDL statements. Do not mix use of DML and DDL against the same table in a stored procedure.

Known Issues in NuoDB 3.4.1

This section provides a summary of the issues identified at the release of NuoDB 3.4.1.

Issue description Workaround
Creating multiple FOREIGN KEY constraints referencing the same table, including the same column, results in an error indicating a duplicate value in a unique index. (9588) None.
Comparisons for < (less than) or <= (less than or equal to) operations on indexed string values, where the comparison string contains trailing spaces (for example "A "), does not return strings where the string contains trailing binary values 0x01 to 0x20 in place of the trailing space (for example "A0x01"). None.
The python driver does not support dates prior to 1900-01-01. If the python driver is used to process dates prior to 1900-01-01, it will result in incorrect dates. (9575) If the database does not have dates prior to 1900-01-01, the python driver can be used. If the database can contain dates prior to 1900-01-01, then python should not be used and another tool that uses a different driver (for example JDBC) must be used.
In a SELECT FOR UPDATE query where the row is not updated, the lock for the update is released just before the transaction is committed. As a result, there is a possible window of opportunity for a second transaction to acquire a lock to that row before the changes from the prior transaction are committed and made visible. This issue results in unexpected behavior for any application using the lock from the SELECT FOR UPDATE query as a mechanism to serialize application transactions. (8246) For applications needing to serialize application transactions using locks in the database, use an UPDATE statement that does not perform actual changes to the database. For example, use UPDATE <table> SET row = row WHERE row = row) instead of SELECT FOR UPDATE.
A database object referenced in a stored procedure, function, or trigger, which is not referenced by its schema name, may reference a database object defined in the same schema where the stored procedure, function, or trigger is being executed rather than the schema in which the function, trigger or procedure was defined. This can result in invalid results or can be used to circumvent security logic built into functions or procedures. (8938, 9687) Always use a fully qualified schema name for database objects used in functions, triggers or stored procedures.
If during a NuoDB Manager (nuodbmgr) session, either the domain or database process state changes, the show domain command may not reflect the current state of the domain, especially if a partition has occurred. (9486) Restart the nuodbmgr session to resolve this issue.
If a user accesses a view but does not have corresponding access to functions, tables, or views referenced in the view, an "access denied" error message displays. (9694) None.

Known Issues in NuoDB 3.4

This section provides a summary of the issues identified at the release of NuoDB 3.4.

Issue description Workaround

NuoDB does not support joins against another join. For example:

SELECT *
FROM table1
INNER JOIN (table2 inner join table3 ON table2.col1 = table3.id) ON table1.col2 = table2.col2 T

This may impact Hibernate-based applications where this type of syntax is automatically generated. (9514)

The first join needs to be converted to a full SELECT command. For example:

SELECT *
FROM table1
INNER JOIN (SELECT * FROM table2 INNER JOIN table3 ON table2.col1 = table3.id) join1 ON table1.col2 = join1.col2

As NuoDB Admin (nuoadmin) is a preview feature for both bare-metal and Docker use cases, automatic upgrade (of nuoadmin) is not supported when upgrading minor releases of NuoDB (for example NuoDB 3.3) to the next supported version (for example NuoDB 3.4). (9542) To upgrade nuoadmin, when upgrading from a minor release, manually shut down the nuoadmin processes and remove the nuoadmin management file (that is, the raft log file for each nuoadmin process) and upgrade NuoDB. Then restart the admin layer and database making reference to the existing database archive location when starting the databases.
If using multiple statements in a single client connection, query results may contain changes from both statements. For example a SELECT clause in one statement may return modifications made by another active statement. Avoid use of multiple statements that read and modify the same table in the same connection.
It is possible to create a function, named after a system function, with a different number of arguments. When the function is called with the correct number of arguments in the user definition, an error is displayed indicating that the wrong number of arguments has been provided. Do not create functions with the same name as system functions.
The NuoDB Datasource does not age out connections on borrow or return. This means that in order for the maxAge Datasource property to have an effect, timeBetweenEvictionRunsMillis must be set. Even if timeBetweenEvictionRunsMillis has been set, connections can live longer than the value set for maxAge because they will not be aged out by the eviction thread if they are on loan to the application when the eviction job runs. None.
The XA DataSource does not support connection caching like the regular DataSource. None.
In NuoDB 3.3.1, and higher,NuoDB MigratorA command line Java program that helps database administrators migrate schemas and existing data to a NuoDB database. It interfaces with a source database over a JDBC compliant driver and is designed to support all major RDBMSs. It also interfaces with the NuoDB target database using the NuoDB JDBC driver. NuoDB Migrator can be used as a NuoDB backup/restore utility where both the source and target databases are NuoDB. may generate additional DDL index create statements that result in failure when creating NuoDB schema objects. This issue will be fixed in a future release. Currently, the workaround is to revert to the version of NuoDB Migrator that was released with NuoDB 3.1.1. Click here to download a copy of NuoDB Migrator from our NuoDB github repository and follow the installation instructions provided.
When deploying NuoDB in a docker-based environment, and NuoDB Storage Manager and or Transaction Engine containers are created using docker run --hostname, it is possible (when selecting the hostname column from the SYSTEM.NODES table) that the value displayed may be the container's IP address instead of its hostname value. None.
NuoDB Hibernate drivers do not support Java 11. None.
Temporary table index statistics are not automatically updated in the way that regular table index statistics. To manually update temporary table statistics, use the ANALYZE command.
Concurrent overlapping DELETE statements with a LIMIT clause may return less rows than specified by the limit. This is because NuoDB acquires locks for the delete after the limit is applied. Some of the rows to be deleted may have been already deleted by a different DELETE statement. None.
If Transaction Engines (TEs) are started on systems with different locale settings, the TE may exit with an error message similar to: Node startup failed: unable to convert string "10,00000" into type "double"' or the dual table may be empty. Ensure that all systems used to run TEs for the same database have the same locale settings.

The NuoDB Query Optimizer does not prune partitions for queries using the LEFT clause with parameters. For example, the following query will scan partitions of a table named t1:

SELECT * FROM t1 WHERE LEFT(f1,2) = ?;

None.

A SELECT statement, which fetches a BLOB column type, returns only the decimal value for each character in the BLOB. (4706)

None.
NuoDB converts string literals to UTC timestamps (or DateTime types) and ignores timezone information. Provide timestamps and date-time values in the absolute (UTC timezone) value.

The TIME (precision) and TIMESTAMP (precision) type declarations ignore the specified value for precision. Values with this type use the precision with which they were created (default is 6). (8523)

None.

Referencing rows, after they have been deleted within updatable cursors, will lead to a connection reset.

Do not reference rows after they have been deleted.
In an updatable cursor, if a row is modified between the cursor fetch and the UPDATE... WHERE CURRENT OF operations, unexpected results may occur. Update rows immediately after fetching them.
Columns named HELP may pick up leading spaces from the query used to create them. Use single quotes around the name HELP, or use an alternative name for the column.

An error is not returned when attempting to alter a sequence which sets the start value to less than that of the ceiling.

None. (While no error is returned, the operation does not change the start value.)

Using the nuosql command line, you cannot create tables with different cases, for example MyTable and mytable.

Use another client to create tables with an identical name but using a different case. Alternatively, create tables with different names.

A Can't follow the specified Use_Index hint(s) error is returned when quoted table or index names in index hints are not defined completely in upper case.

None.
When a schema that does not exist is dropped, no error message is returned. None.
Custom data types created with CREATE DOMAIN cannot be referenced by stored procedures. None.
Temporary tables are incorrectly listed in the SYSTEM schema but cannot be accessed using the SYSTEM schema. Temporary tables must be accessed using the USER schema.
When using multiple statements in a single call, the TRUNCATE command can be used only if it is the first statement in the call. None.
The ALTER TABLE command is not supported when working with temporary tables. (6363) Create a permanent table for any table that may require altering.
When dropping a domain, the same case (as was used to create the domain) for the domain name must be used. Otherwise, the domain is left in the DOMAINS system table. Recreate the domain and drop the domain using the same case that was used to create it.

DDL statements are not supported in stored procedures, except when using dynamic SQL. (6313)

DDL statements can be accessed in separate stored procedures which are executed after DDL stored procedures have been executed.
SELECT statements, with extra parentheses around a subquery, return an error. Remove the extra set of parentheses.
When a storage group is removed from a Storage Manager (SM), the on-disk files for the data removed are not automatically deleted. Use NuoDB Check to remove on-disk files.

NuoDB does not support the NO PAD collation option. As a result, unexpected results occur when comparing two strings where one is a substring of the other. For example:

"abc" = "abc"
"abc" > "abcX", where X is a non-printing character with value less than ASCII 32 (SPACE) (6854)

None.

If a database process, for example a TE or a SM, does not connect to an agent process, it cannot be stopped or restarted. If this happens, the database process is shown as UNREACHABLE.

Manually stop the database process using {kill -6 <pid>} in the command line, and remove the entry using the NuoDB Manager's domainstate removeprocess id <id> command. Then contact NuoDB Support to provide details of the core file obtained by the KILL command.
The following system tables are case sensitive: DEPENDENCIES, PRIVILEGES, PROCEDURES, PARTITIONEDTABLES, PARTITIONIDS, PARTITIONCRITERIA, and LOCALATOMSEQUENCES. None.

NuoDB Loader does not support the loading of binary values cast into binary columns.

None.

Global temporary tables are not supported. (6942)

None.
The NuoDB JDBC driver does not support scrollable cursors. None.
NuoDB Manager's capture command does not store altAddress values if advertiseAlt is set to true. The local DNS IP address is used instead.

NuoDB does not support recursive DDL triggers.

None.
The JDBC driver does not support the setNetworkTimeout property. (7430, 7865) None.
The following host properties are not displayed by the NuoDB Manager command:
agentPeerTimeout, binDir, log, regionBalancerLocalFallback, requireConnectKey, and trackprocessOnReconnect.
None.
The return type of DATE_ADD and DATE_SUB functions with STRING arguments is dependent on the format of the string. To avoid inconsistent results, do not use the DATE_ADD and DATE_SUB functions with STRING data type columns
NuoDB does not support the NULLS FIRST ordering clause. None.
The incorrect Failed to apply license: Error applying license: failed to set configuration: default.license error is returned when there is no raft leader among the brokers. (8234) Ensure that all brokers in the raft membership are started and that there are no connectivity issues.
A column cannot be made to be the primary key of a table if that column was added to an existing table. (8748) None.
TEs use the system locale settings to define the character encoding used by the TE. If the system locale is different across the database nodes, this can result in unexpected behavior. For example, a TE may report data conversion errors on start-up (bootstrap) if it is using a locale that is different from the existing TEs in the database. Ensure that all systems to be use for the database have the same locale setting.
It is not possible to use the same cursor name twice inside a stored procedure, even after closing that cursor. None.
The use of BINARY literal values as partitioning keys for STRING type columns, in CREATE TABLE statements, is not supported. None.
If two or more SMs enter a SYNCING state concurrently, on occasion, they may not transition out of that SYNCING state (as indicated by NuoDB Manager's show domain summary" command). The log messages of a SM stuck in the SYNCING state will include a SYNC: <number>: STARTED message but not have a corresponding SYNC: <number>: COMPLETED message. (8679) Kill one of these SMs to allow the other one to transition out the SYNCING state. Generally, try not to start two or more SMs concurrently. Instead, start SMs one at time after they have been synchronized.
Table partitioning does not support partitions based on sub-second precision. Do not create table partitions with sub-second partitions.
The information provided with the –help or -h options in NuoDB SQL has not been updated. Refer to support documentation in the Using NuoDB SQL Command Line section of NuoDB's online documentation