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 8.0
-
Depending on the locale, the fractional separators can differ. This locale dependency could have caused error messages such as "Invalid duration: 0.xxs: invalid unit". (14743)
All locales now require "." as the fractional separator.
-
Executing a
CREATE TABLEstatement that defined a case-sensitive self-referencing foreign key within the same statement could have reported an internal error. (14982) -
During startup, the message "Failed to write system dependencies: string pointer is null" was logged incorrectly. (15074)
-
EXPLAIN plans reported in
QUERYSTATSwere incomplete for SQL queries that used parallel execution. (15067) -
SQL queries that perform outer joins that contain explicit
JOINcould have taken longer compared to those that have join conditions in theWHEREclause. (15015, 14468) -
SQL queries that included
RAND()andUUID()returned inaccurate results due to unintended or duplicate evaluations caused by optimizer rewrites. (14941) -
A SQL
SELECTquery processing timestamps that included fractional seconds before the Unix Epoch (January 1, 1970, 00:00:00 UTC) could have returned inaccurate results. (14588) -
A SQL query that included a filter applied on a
CASEclause containing attributes used in the join condition of an outer join returned an inaccurate result. (15144) -
A SQL query that includes a
JOINin theFROMclause could have unexpectedly resulted in an updatable view. -
A SQL query that included correlated subqueries with an outer join reported an INTERNAL_ERROR.
-
A SQL query that included
TYPEOF()for a value of type 'bytes' returned a type and length information. Bytes is a potentially unlimited binary type, which is not expected to have a length information. Hence, reporting the length information was not expected. -
A SQL query that uses existential Right Hash Joins could have returned inaccurate results.
-
A SQL query that included
STDDEV_SAMP(),STDDEV_POP(),VAR_SAMP(), orVAR_POP()functions that operate on large BIGINT values returned an error. -
A SQL query with existential joins and correlated subqueries returned inaccurate results in the presence of nulls.
-
A SQL
ANALYZE TABLEoperation could have stopped unexpectedly if an index change occurred concurrently. -
Temporary tables created using
CREATE TEMP|TEMPORARY TABLE <table name> ON COMMIT DROPpersisted after ending the transaction usingROLLBACK, instead of getting deleted. -
When a new column was added to a table created using
CREATE TABLE LIKE, the column was added in an unexpected position. -
When the
always-recompile-queriesconnection property was enabled, the results of a SQL query executed usingEXPLAIN (ANALYZE ON)and the results in theLASTSTATEMENTsystem table could have been inaccurate. -
When the isolation level was set to
CONSISTENT READ, adding aNOT NULLcolumn with a default value usingALTER TABLEcould have set the column toNULLinstead of the default value in rows added by a transaction that was active whenALTER TABLEis executed. -
When casting from Binary to String, UTF-8 validity check was not enforced, which could result in invalid string.
-
The DBA role showed trigger grant privileges even after the support for triggers on system tables was removed.
-
Journal recovery did not trigger garbage collection when the configured memory limit was smaller than the allocated memory.
-
Accessing a deleted object while running garbage collection could have caused the Transaction Engine (TE) to shut down unexpectedly.
-
The
INDEXHITSfield inLASTPARALLELSTATEMENTandLASTSTATEMENTsystem tables could have reported inaccurate results. -
If a database archive restore operation did not complete successfully in containerized deployments, retries were prevented because the archive metadata file (info.json) was missing.
-
If, in a single transaction, a row R was locked using
SELECT … FOR UPDATEbefore savepoint S, and R was updated or deleted after S, then rolling back to S would release the lock on R. -
A row lock acquired using
SELECT … FOR UPDATEcould have been released if anUPDATEorDELETEthat modified a locked row threw an exception. -
The
DATA_BUFFERING_MBfield in theQUERYBUFFERSTATSsystem table reported inaccurate results when query operators used hash tables to perform joins or grouping operations. -
The
STARTIDfield in theQUERYSTATSsystem table reported inaccurate results. -
Tab completion in
nuocmdwas unavailable when using the NuoDB client drivers or Docker image. -
In rare cases, during archive synchronization, the syncing Storage Manager (SM) could have shut down unexpectedly with, "no more SMs are SYNCing but some of them died".
-
In rare cases, streaming index scans were not treated as covering scans, even when the index contained all columns required by the query.
-
In rare cases, a SQL query could have terminated unexpectedly reporting undefined references error.
-
In rare cases, SQL queries that fetched partitioned table statistics returned an internal error if a partition was dropped.
Resolved in Previous NuoDB 7.0.x Releases
-
For partitioned tables, skewed data was not detected correctly which prevented the re-optimization of parameterized queries. (15054)
-
After adding a storage group, the SM could have shut down unexpectedly due to a segmentation fault while processing BTREE index changes. (14976)
-
The
EXPLAINfield in theQUERYSTATSsystem table could have been empty forSELECTstatements and DML statements includingINSERT,UPDATE, orDELETE. (15067) -
Executing SQL
SELECTqueries with aLIMIT NULLorOFFSET NULLclause caused the TE to shut down unexpectedly. (15086)
Now theLIMITorOFFSETclause is ignored when it is set toNULL. -
When additional SMs were added to a database that was started with one SM per storage group, one of the SMs could have exited during synchronization with a message similar to, "EXITED(MONITORED:SYNCING):EXIT: SYNC: 108: Not syncing xxx because no other SMs serve storage group xx".
-
When SQL insert statements were executed on a partitioned table using the batch processing API, the associated Transaction Engine (TE) could have shut down unexpectedly.
-
In rare cases, a Storage Manager (SM) could have shut down unexpectedly reporting, "unable to free memory for 5m" after large tables were dropped. (14879, 15011, 15017, 15018)
-
A SQL query that used disjunction (OR) in semi joins could have taken longer to execute than in previous NuoDB versions. For example, "SELECT f1 FROM t1 WHERE f2 IN (SELECT … FROM …) OR f2 IN (SELECT … FROM …);". (13962)
-
Querying metadata concurrently with creating a MERGE TREE index could have caused the TE processing those commands to shut down unexpectedly.
-
In systems experiencing high load with network partitions and slow I/O, failure resolution could restart repeatedly and might not have completed because it was waiting for failover to complete. (14099, 14275, 14276, 14312, 14555, 14938, 15058, 15098)
-
After executing DML statements that requested generated keys, the database could have reported an invalid transaction ID in logs and pseudo tables.
-
Merge tree index read performance optimizations could have increased occurrences of the error "Unable to verify uniqueness in index "XXX" after 10 attempts".
-
In rare cases, heavy concurrent upload or rollback workloads could have caused duplicate keys to be inserted into a unique multi-index, causing a unique multi-index constraint violation.
-
When executing
INSERT ON DUPLICATE KEY UPDATE, the statement update count was not updated accurately if a duplicate key was detected. (14864) -
In rare cases, when a query that requested an atom from another node was executed concurrently with
ALTER TABLE ADD PARTITIONorALTER TABLE MODIFY PARTITION, the communication between the nodes could have stalled, causing some queries to hang. -
In rare cases, execution of a SQL query that uses a
UNIONoperation inside JOINs and includes conflicting predicates could have caused the TE or SM to shut down unexpectedly. (14947) -
When using
Optimizer v3, SQL queries that perform a JOIN operation on the results of a UNION operation could have taken longer to execute. (14850) -
The
STARTIDfield in theCONNECTIONSsystem table could have contained-1instead of the correct start ID of the Transaction Engines (TEs). -
In rare cases, archive synchronization could have run indefinitely while the log reports
0catalogs remaining to sync. -
Execution of SQL queries that include a
HAVINGclause on a group key could have returned inaccurate results. -
Repeated execution of SQL queries that use index scans could have taken longer because the state of index scans was not reused.
-
Execution of a SQL query that included 64 tables or 63 joins could have reported "Internal error: failed precondition _plan.expression(p).referencedRelations().is_subset_of(available), file xxx".
-
Parameterized SQL queries that included
LIKE,STARTING, orESCAPEwith aNULLparameter could have reported "Cannot convert <null> into string". (14774) -
A SQL
UPDATEstatement with aJOINclause could have resulted in error because update checks were also performed on joined views which are not updatable. -
Execution of SQL queries with dependent right outer join operations could have returned inaccurate results.
-
SQL queries with dependent joins could have taken longer to execute because of the suboptimal execution plan chosen by the optimizer.
-
When a SQL statement resulted in duplicate keys error on a unique index containing
BINARY,VARBINARY, orBYTEScolumns, the error message could have included unreadable key values or misleading information related to decoding values. (14756) -
When the
KEY_ORDEREDoptimizer hint was specified in a SQL query, the hint was ignored if the optimizer elected to use Parallel query execution.
The optimizer now prioritizes theKEY_ORDEREDhint over Parallel query execution. -
Execution of SQL queries with correlated subqueries and non-inner joins could have terminated and report a precondition error.
-
A SQL query that uses decorrelated dependent existential
Right Hash Joinscould have returned inaccurate results whenNULLvalues were included in the existential comparison. -
A SQL query that included multiple join operations, with at least one dependent join and a
LIMITclause, could have returned inaccurate results. -
Execution of SQL statements with multiple Common Table Expressions (CTEs) defined with the same name in the same scope of a SQL query used only the first definition, and all the subsequent definitions were ignored without any warning.
Now the execution of such statements are blocked and an error message is reported. For more information, see WITH. -
When using
nuosql, executing user-defined stored procedures withEXECUTEcould have returned results without column names. -
Executing any
SELECTquery fromGETSTATSMETADATA ()on a pseudo table could have reported a precondition error instead of raising an exception. -
Executing a SQL query that performed hash join operations between string expressions of different data types could have reported inaccurate results.
-
Executing a SQL query on a temporary table created from an existing partitioned table using
CREATE TABLE LIKEcould have caused the database to shut down unexpectedly. -
A SQL query that included a precision parameter in the
CURRENT_TIMESTAMPfunction could have reported an error. (14473) -
In rare cases, when parallel query execution was enabled, a TE could have shut down unexpectedly reporting "ASSERT : Platform/PlatformTransaction.cpp:xx: FAILED: op". (14948, 15075, 15195)
-
A SQL query that included a precision parameter in the
CURRENT_TIMEfunction could have returned inaccurate results. (14473) -
A SQL query that compared the result of
CURRENT TIMEorCURRENT TIMESTAMPwith aTIMEliteral could have returned inaccurate results. (14575) -
A SQL query that included a parameter that was cast to a specific data type could have returned inaccurate results because the data type length was ignored after casting.
-
A SQL query that included a
GROUP BYclause with only constant values and anORDER BYclause could have caused the TE to shut down unexpectedly. -
A SQL query could have reported inaccurate results when using the hash variants of right outer, full outer, or right existential join operators on columns that contained
NULLvalues. -
A SQL query that used decorrelated dependent existential hash joins could have returned inaccurate results when
NULLvalues were included in the existential comparison. -
Executing a
CREATE TABLESQL statement with column names beginning withHELPcould have resulted in a syntax error. -
Executing an
ANALYZESQL statement containing projections could have reported inaccurate statistics because only the accumulated number of rows of multiple executions were reported (without providing the average over all executions). -
If the parameters accessed by a pseudo table were modified during query execution, the TE could have reported an error.
-
When using the
nuosqlcommand line tool, recalling previous commands using!commands could have reported an error. -
Executing
nuoloaderwith the--exportoption without specifying a CSV file name could have resulted in unexpected behavior. (14695) -
When using C, C++, or Java drivers, the
IS_GENERATEDCOLUMNfield in theDatabaseMetaDataobject returned bygetMetaData()could have contained the valueNOfor columns defined asGENERATED BY DEFAULT.
Now theIS_GENERATEDCOLUMNfield correctly returns aYESfor columns defined asGENERATED BY DEFAULT. -
Large Object (LOB) data could have been processed using the hardcoded chunk size of
1024bytes and the default chunk size of65536bytes was ignored. (13739) -
Building a very large index using MERGE TREE, could have caused the Transaction Engine (TE) to shut down unexpectedly. (14699)
-
A transaction executing a DDL operation could have automatically rolled back if an exception occurred due to an update conflict with another transaction.
-
In rare cases, a SQL query could have returned inaccurate results due to a race condition between garbage collection and index scan.
-
In rare cases, a SQL query could have reported "result set unusable (corrupted record must be removed)" even though no corruption occurred.
-
In rare cases, MERGE TREE index statistics were not updated after removing all the data from a table.
-
In rare cases, an object fetch operation would not be fully acknowledged by another node, causing database operations involving that object to wait indefinitely.
-
In rare cases, a Transaction Engine (TE) shut down unexpectedly when executing a SQL query that included a
UNIONoperator. (14666) -
Index statistics generation was not triggered when creating or rebuilding an index. This affected offline builds of tables with records that span multiple atoms.
-
The Table Statistics (
Stats v3) metadata was not updated automatically for system tables. -
A SQL query that included predicates in a correlated subquery referencing literals from another subquery could have reported "Error 58000: Internal error: failed precondition hasValidUnfilteredCardinality(relationId)". (14684)
-
When using the
v3optimizer, a SQL query could have taken longer to execute because the optimizer might not select the most efficient index while executing the query. -
When the
stats-v2-collectiondatabase option was disabled, automaticv2statistics updates were not completely disabled, causing inaccuracies in cardinality estimates and resulting in slow query performance. (14668, 14748) -
A SQL query that executed the
RAND()function a large number of times could have generated more duplicate values than expected. (14512) -
If LOB streaming was enabled by configuring the
lobChunkingEnabledconnection property totruein the NuoDB JDBC driver, a SQL query that fetches multiple BLOBs or CLOBs could have caused a Transaction Engine (TE) to shut down with "Unable to free memory for 300 seconds". -
Using
nuodumpwith theoutput-schemaoption failed to replace schema references within foreign key constraints with the specified output schema. -
Executing the
EXPLAINquery on a SQL statement that included columns with case insensitive collation could have returned inaccurate results. -
If a table was converted to a partitioned table, running a SQL query against the table could have caused the executing TE to shut down unexpectedly.
-
A SQL query that included an
ATAN2()function could have returned inaccurate results. (14538) -
A newly started Storage Manager (SM) with an archive of type LSA that attempted to synchronize with an existing SM while running a write-heavy workload could have shut down unexpectedly with, "Archive failure: 'write' failed with error No space left on device".
-
In rare cases, if an SM shut down soon after the database had made changes to an atom that was not previously in memory, the copy of the atom in the SM’s archive could have become corrupted.
-
Write-heavy workloads (workloads that include DML statements) could have taken longer to execute due to the logging of non-cached user queries.
-
The log files could be named incorrectly when using
nuocmd get log-messagesornuocmd show log-messageswith the--engine-fileoption. -
A synchronizing SM could have shut down unexpectedly with "FAILED: BUGCHECK: Type of object xx/yy is unknown" because an object was deleted.
-
If index statistics were requested during the shutdown of a TE or an SM, during the execution of the
DROP INDEXstatement, or when rebuilding indexes for a table, a SQLANALYZE TABLEstatement could have run indefinitely.
This could have also prevented the automatic update of statistics.