Resolved Issues

This section includes fixes that do not change the user interface and/or API behavior of the product. For a summary of changes, see Changes in this release.

If a resolution is associated with a reported issue, a Zendesk reference number is displayed, for example (10283).

Resolved in NuoDB 4.3.1

  • nuoarchive check could fail with "ASSERT: Platform/PlatformRecords.cpp:4740: FAILED: transaction" while attempting to repair an index. (12254)
    The issue has been resolved.

  • An index could report "unable to verify uniqueness in index <index name> after 10 attempts" for each attempt to insert a particular key. For example, this error could be reported for a system table index when trying to create or truncate a table. (12986, 11883, 11901, 12258)
    The issue has been resolved.

  • After unique index creation, the exception "Uniqueness violation encountered while populating index <index name>, key = '<key>'" could be reported, resulting in unexpected database process shut down with message "FAILED: !objectIds.isFree(objId)". (13019)
    The issue has been resolved.

  • When using the Connection.setSchema function in the NuoDB JDBC Driver, the function would fail if the schema name included supported special characters.
    The issue has been resolved.

  • A Storage Manager (SM) could shutdown abruptly due to running out of memory while syncing a database containing extremely large records.
    The issue has been resolved.

  • Executing thousands of UNION ALL statements could result in an abnormal shutdown of the Transaction Engine (TE) due to an out-of-memory condition. (12966)
    The issue has been resolved.

  • A SELECT statement that included a GROUP BY, an ORDER BY, and window functions could return results in the incorrect order. In addition, available performance optimizations may not have been chosen.
    The issue has been resolved.

  • A Storage Manager (SM) container could not enter the ready state due to missing details on the generated command line that are required by the Kubernetes readiness probe. (13053)
    The issue has been resolved.

  • A Transaction Engine (TE) could shut down abruptly due to running out of memory when executing multiple queries with large number of query parameters. (13038)
    The issue has been resolved.

  • If it was detected at compilation time that a query could not return any results, the result set metadata would not populate.
    The issue has been resolved.

  • The exception "can’t find ResultSet" could occur due to the loss of ResultSet metadata after the commit.
    The issue has been resolved.

  • The nuocmd subcommands hotcopy-status and hotcopy-info with the --show-json option could report incorrect destinationDirectory information. (13011)
    The issue has been resolved.

  • Referencing a sequence with NEXT VALUE could result in connection shutdown with "Error 58000: Unexpected internal error requires closing client connection".
    The issue has been resolved.

Resolved in NuoDB 4.3

This section provides a summary of the issues resolved in the release of NuoDB 4.3 compared with the original NuoDB 4.2 release.

  • Issues resolved in the Vectorized Execution Engine (VEE)

    1. A reference to fully qualified VIEW column names <schema.view.column> generated error message, "INVALID_FIELD: undefined reference."

    2. Attempting to create a database trigger on a TEMP table generated error message, "DDL_ERROR: table cannot be altered."

    3. Sequences could get generated out of order due to DDL and DML conflicts that resulted in not retrieving the current maximum sequence value.

    4. An INSERT statement that fails due to concurrent DDL could mistakenly succeed during a retry of the same or similar INSERT command.

    5. The SUM function would return "Error 22000: Numeric overflow" for NUMERIC result values that overflow the column type."

    6. When creating a temporary table with a primary key, the primary key column(s) were not implicitly set to NOT NULL (which did not result in data correctness issues.) However, restoring the NOT NULL attribute for this use case allows for various query optimizations to be performed.

    7. ALTER TABLE executed from inside a 'WHILE` loop within a user defined function (UDF) could not be killed.

    8. An error would occur if a SQL expression that results in NULL is used to set the STARTS WITH or QUANTUM SIZE value in a CREATE or ALTER SEQUENCE command. (12968)

    9. A Transaction Engine (TE) could fail and shut down due to an ENUM type checking issue. (12918)

    10. An internal error 58000 may occur during INSERT …​ ON DUPLICATE KEY UPDATE on tables with defined default values. (12918)

    11. An internal error 58000 "Invalid UTF-8 code sequence" may occur when selecting the PARAMS column from SYSTEM.QUERYSTATS if the result set included a SQL statement that had a parameter for a binary column that was not a valid UTF string. (12175)

    12. A computed expression could fail when a statement includes a UNION clause.

    13. View statements may not pick the correct schema for unqualified tables references.

    14. After a TRUNCATE command, the garbage collection function may delete the old version of a table even if it was still viewable by a CONSISTENT READ transaction.

    15. Literal string usage in DDL statements may not have produced valid SQL literals for character / string type columns.

    16. A table could have multiple primary keys when only one is allowed.

    17. ANALYZE TABLE could fail to complete. (12022)
      When ANALYZE is called on a table the TE waits for the command to complete. If an exception occurs, the command exits without informing the waiting TE, causing it to wait forever.

    18. An INSERT statement with multiple values and subqueries only processes the first value.

    19. Direct use of an EXISTS subquery may result in an error converting boolean from a string value.

    20. An error would occur converting a string to a Date/Time if white space was used as a separator in the date/time string.

    21. An incorrect data value results when casting a binary data type to NUMERIC and a BINARY string to BIGINT.

    22. Casting a BIGINT to a binary data type should align the value to the next byte boundary.

    23. Primary key columns were not assumed to be NOT NULL.

    24. Statements that join tables using the LEFT [OUTER] JOIN clause may perform slowly due to predicate filters that were not applied (pushed down) earlier in the optimization process when applicable. (12132)

    25. If many temporary tables are created, then a Transaction Engine (TE) may abort due to an out-of-memory (OOM) condition. (12201)

    26. Java User Defined Functions (UDFs) that returned binary type values (e.g., BINARY, VARBINARY) did not release the memory occupied by the return value when converting them to NuoDB values.

    27. The /*+ ordered */ optimizer hint was not enforced. (12123)

    28. The SYSTEM.LOCALSTATEMENTS table was readable by all database users, and should only be viewable by DBA users.

    29. The SHOW TABLES command was not displaying a table’s index attribute values (i.e., disabled, incomplete and distinctness of NULL values).

    30. The MAX_CONNECTION_OPEN_RESULTS and MAX_CONNECTION_OPEN_STATEMENTS SQL System property values were ignored. For further information on these settings, see SQL System Properties.

    31. Within Stored Procedures, Triggers, and User Defined Functions:

      1. Column names using quotes were not resolved correctly inside stored procedures.

      2. Assigning a value to read-only variables and fields are now reported as a syntax error, rather than silently ignored.

    32. A CREATE TABLE statement with a temporal column declaration using default NULL would result in an INSERT statement error if inserting a NULL value. (12211)

      These issues have been resolved.

  • When using the C driver or the JDBC API, if an application did not bind all input parameters before execution, then NULL values were used by default which may lead to unintended results. This issue also impacted other client drivers that are built using the C driver, e.g., the C++ and node.js drivers. Now, if an input parameter is not bound before execution, an exception is thrown when using the JDBC API and an error status returned when using the C driver and its related drivers.
    This issue has been resolved.

  • Synchronizing one Storage Manager (SM) in a group of SMs that are hot copied together suspended journal hot copy on the synced SM, but not on the others. This would cause journal files to accumulate on the others until an incremental hot copy followed by a journal hot copy is executed, potentially exhausting disk space.
    The issue has been resolved.

  • When dropping an index, the check to determine if it is in use by a foreign key may in some cases return a false positive. (11991)
    The issue has been resolved.

  • After upgrading to a new database protocol version, for example from NuoDB 4.1 to NuoDB 4.2, a background process updates atoms to the new protocol version. In previous versions, this could inflict a performance penalty. (11899, 12003)
    The issue has been resolved.

  • In rare cases, the Emergency Garbage Collection feature, which kills the most memory-intensive SQL statement when Transaction Engine (TE) memory in nearly exhausted, could cause the engine to exit.
    The issue has been resolved.

  • A Storage Manager (SM) would check permissions on the default journal directory even if an alternate journal directory was specified (via --journal-dir); if the default journal directory was not accessible the SM would refuse to start. (11025)
    The issue has been resolved.

  • In NuoDB 4.2.0 environments that run on the Red Hat RHEL or CentOS OS and use the RPM package manager to remove NuoDB, an error would display, "error reading information on service nuoagent: No such file or directory." However, the uninstall would perform correctly. In this same environment, when performing a release upgrade, the upgrade would perform as an uninstall and remove content (e.g., systemd service files, the nuodb user account, configuration files, etc.) that it should not.
    These issues have been resolved.

  • In the rare case a NuoDB Admin state snapshot grew larger than 10MB, then the message, “WARN [admin-nuodb-primary-0:main] DurableLogState Attempting to truncate end of log due to exception.” would get written to the nuoadmin.log, and the Raft state data would get lost.
    The issue has been resolved.

  • A NuoDB Admin Process (AP) may get stuck indefinitely in a pending state during startup. (12945)
    If a new AP failed its initial resync with the NuoDB domain, a retry was never issued. As a result, the AP would timeout, lose contact with the NuoDB Admin domain, and inadvertently enter a CANDIDATE state.
    This issue has been resolved.

  • After upgrading the NuoDB Helm Charts to 3.1.0, it was possible that the NuoDB Admin readiness probe could generate false positives. This may happen more often on systems where a lot of domain operations (i.e. raft commands) are committed frequently.
    The issue has been resolved.

  • NuoDB Admin incorrectly reported not ready. (11823)
    The nuoadmin status command relied on log file parsing to detect when the service is ready. The command could report incorrectly if the NuoDB Admin log file (nuoadmin.log) rotates quickly during startup.
    The issue has been resolved.

  • In Kubernetes deployments, previously a hotcopy database backup request would fail if some of the database processes had a status other than RUNNING. The nuodocker backup database command that is implemented in the NuoDB Helm Charts will now exclude archives served by non-running processes.
    The issue has been resolved.

  • A database consisting only of TEs and Asynchronous Storage Managers (ASMs) is non-durable, hence it will be shut down automatically. (11952)
    The issue has been resolved.

  • If a Storage Manager (SM) did not stop cleanly, on rare occasions starting a new SM for the same archive would fail with error, "journal <journal name> not found in <directory>." (11938)
    The issue has been resolved.

  • NuoDB would assert with failure message, "ASSERT: Platform/IndexStatisticsV1.h:240: FAILED: newCount > 0" when rebuilding an index that contains v1 statistics. The issue has been resolved.

  • Errors generated by an Admin Process (AP) due to inaccessible files in the NUODB_LOGDIR directory may terminate the diagnostic information stream when running either nuocmd get diagnose-info or nuocmd get server-logs. These errors would result in a corrupted ZIP file. Since these nuocmd commands generate useful diagnostic information, they should be resilient to these error conditions. (11974)
    The issue has been resolved.

  • Stored procedures could not reference returned tables in variables assignments. (11993)
    For usage information, see Returning Multiple Result Sets from a Stored Procedure.
    The issue has been resolved.

  • A Transaction Engine (TE) could abort during SQL execution when an extremely large number of parameters are included in an IN list. (12240)
    The issue has been resolved.

  • Several issues related to the stats-collection-threshold database option resulted in the generation of incorrect index statistics. In addition, several issues were also identified that are related to table cardinality calculations. (11992)
    These issues have been resolved.

  • Database inserts were slower on 4.2.0 and 4.2.1 when compared to 4.1.2. Database insert performance has been improved by optimizing cache operations. (11996)
    The issue has been resolved.

  • If the archive-threads database option was specified with a value greater than 1, a high intensity workload could cause a Storage Manager (SM) to assert and shutdown. (12057,12060,12061,12062,12063,12072,12073)
    The issue has been resolved.

  • If using Java User Defined Functions (UDFs), performance could have been negatively impacted due to attaching and detaching the JVM thread unnecessarily. (12048)
    The issue has been resolved.

  • If a SQL query uses delayed query optimization, a default SQL optimization feature that determines the query plan at runtime for certain use cases, then string function comparisons that reference parameters ( e.g., a > UPPER(?), b < LOWER(?) ) may cause a Transaction Engine (TE) to abort. (12095)
    The issue has been resolved.

  • If logging was enabled that generated extremely large log messages, then error, "WARN com.nuodb.server.Server tagServerExecutor31-thread-3 Failed to process message" may occur due to improperly reading the entire message. (12077)
    The issue has been resolved.

  • If the JDBC DatabaseMetaData.getSchemas() API method was called to retrieve a list of schema names available in the database, then an empty list was returned instead.
    The issue has been resolved.

  • If running either NuoDB 4.2 or 4.2.1 and using more than one archive thread (i.e., the --archive-threads parameter is set to > 1), then runtime performance may degrade significantly due to a timing issue that resulted in excessive Storage Manager (SM) write throttling. (12080,12114)
    The issue has been resolved.

  • When creating a hot copy backup, the hot copy and archive threads could hang due to a rare lock order condition, eventually blocking commit, and requiring the Storage Manager (SM) to be restarted. Also, during a point-in-time restore, it was possible the restore could fail due to an attempt to load an atom associated with a dropped table. (12119)
    These issues have been resolved.

  • If a Hot Copy operation failed, for example nuocmd hotcopy database, an error code was not returned indicating the failure. Now an error code will be returned if a Hot Copy operation is not successful.
    This issue has been resolved.

  • If a Storage Manager (SM) fails, a Hot Copy job could hang and appear as if it is still running. Instead, a Hot Copy job will now fail fast on Hot Copy coordinator SM communication failures, including those due to database process failure.
    This issue has been resolved.

  • Occasionally it was possible that NuoDB Admin could enter a hung state. There were several issues that could contribute to entering this state which have all been addressed (e.g., the entering ACTIVE state timeout value and the chunking of large Raft log writes). (12010)
    These issues have been resolved.

  • A miscounting of deleted record versions may occur that results in a Storage Manager (SM) failure and message, "ASSERT: Platform/PlatformRecords.cpp:5099: FAILED: numberDeletedRecords < totalVersions." (12158)
    This issue has been resolved.

  • When a Storage Manager (SM) restarts, the data synchronization process with other SMs will take a long time when Transparent Data Encryption (TDE) is enabled. When an archive is encrypted, cryptographic information unique to each archive was included when determining whether atoms were up to date, causing them to always be considered outdated. (12158)
    This issue has been resolved.

    NuoDB recommends that TDE not be enabled until after all SMs are running with 4.2.3 or greater. This will avoid a full data synchronization that is required when a SM is restarted after installing the new software.
  • Unresponsive client socket connections could stay connected indefinitely. This condition could allow incorrectly operating or malicious clients to indefinitely keep open an arbitrary number of connection to an Admin Process (AP). To address this issue, NuoDB will disconnect clients that do not generate any messages on agentPort (default socket 48004) within the unboundConnectionTimeoutSec property which is defined in NuoDB Admin configuration file, nuoadmin.conf.
    This issue has been resolved.

  • In Kubernetes environments:

    1. An Admin Process (AP) Kubernetes readiness probe may fail. nuocmd check server now checks to make sure that the AP leader is in the "Connected" state from the point of view of the API server (--api-server.)

    2. Additional failure text was printed by nuocmd hotcopy database, nuocmd get hotcopy-status and nuocmd backup database when the hot copy operation failed or timed out. This was caused by circular dependencies when loading dynamic plugins resulting in some declarations loading twice.

    3. A pod or container status seen by the NuoDB Kubernetes Aware Admin (KAA) could be out of date, triggering the removal of healthy database processes.

    4. The setting of the admin-tcp-keepalive option had no effect.

      These issue has been resolved.

  • Invoking nuocmd get diagnose-info from within the $NUODB_LOGDIR location, where the diagnose files are generated, may result in an infinite loop condition causing the command to never complete.
    This issue has been resolved.

  • In Kubernetes or Docker container environments, it was possible that a database process container may hang when performing DNS resolution. A database process connection timeout of 5 seconds has been set. Previously a timeout check was not implemented.
    This issue has been resolved.

  • A Storage Manager (SM) could abort during synchronization due to requesting a deleted object and log error message, "ASSERT: Platform/StorageGroupContainer.cpp:222: FAILED: id != INVALID_STORAGE_GROUP_ID." (12255)
    This issue has been resolved.

  • If a partitioned table is truncated and records are inserted after the truncation, disk storage for those records will not be reclaimed if the table is truncated again or dropped. (12251)
    This issue has been resolved.

    Installing a version with this fix will not reclaim lost disk space that was a result of this issue occurring in a previous release.
  • Journal hot copy into an uninitialized backup set could cause the Storage Manager (SM) performing hot copy to shut down. Instead of shutting down, the SM that encounters this condition will now log a message ("Incremental backup set has not been initialized yet") and will abort the hot copy. (12255)
    This issue has been resolved.

  • A Storage Manager (SM) could shut down unexpectedly with message "FAILED: !isComplete() || masterCatalog→recovering". (13031)
    The issue has been resolved.