已知的问题

除非另有说明,否则已知的SQL问题可能会影响标量SQL引擎和矢量化执行引擎(VEE)。

如果已报告已知问题,则会显示相关的Zendesk参考编号。 例如(10318)。

Nuodb 4.2中的已知问题

问题描述 解决方法

索引在桌子上构建数十万行或更多的表格在NOODB 4.2上比Nuodb 4.1较慢,因为写入节流的接合以避免过载系统。

没有任何。

4.1.2-4 C.++司机在连接关闭之前,驱动程序不会释放语句,即使语句已关闭。 这可能导致客户大小增长。 当它关闭时,它可能需要很大的时间并导致CPU负载。 (11824)

恢复使用4.0.8-2 c++ driver. 驱动程序和诺福德版本不需要匹配。

在多百万行表上构建索引的存储管理器(SM)可以在处理索引构建操作时对其他短信进行显着负载。 如果它们是CPU或磁盘I / O约束,这可能导致由于内存耗尽而退出此类短信。 此问题已存在自Nuodb 4.0.0。 如果SocketBuffer生长非常大,则现在记录警告消息,作为问题的指标。

确保没有SM是CPU或磁盘I / O约束。

索引丢弃时,存档尺寸不会自动减少。

在具有索引的表上发出选择。 存档大小将立即开始减少一个SM,一旦SM完成,归档大小将开始在其他短信中减少。

Index creation with ONLINE option during rolling upgrade procedure may fail with: ASSERT in TableIndexBuildManager.cpp:1044: FAILED: isFinished() || (!isBuilder() && isStarted()) || isNotPrepopulatedIn40(true) || (isBuilder() && !isInError() && !isFailed()).

该问题在Nuodb 4.0.5-2及以后修复。
如果从Nuodb 4.0.5-2下面的版本升级,请确保如果在滚动升级期间创建索引,则不会使用在线选项。

可以传递到C和C ++客户端驱动程序API方法的最大年日值是2261年。(11700)

替代最终值为2262或更大的替代值是在C ++中:

NuoDB::SqlDate date(milliSeconds);
this->m_preparedStatement->setDate(colPos, &date);

时间分量将被截断,但日期值将是正确的。

It is not possible to upgrade Kubernetes NuoDB Helm Charts deployments using NuoDB Helm Charts that do not define admin.bootstrapServers to deployments that do. 此问题适用于所有以下条件如下:
1.将Nuodb Helm图表部署升级到2.4.0或更高
2.当Helm图表部署升级到Nuodb数据库版本4.0.7或更高版本
3.域的创建域,其中Nuodb版本小于4.0.7或掌握小于2.4.0的Helm图表版本。
请查看详细信息: Nuodb Helm图表github repo问题#143.

To resolve this issue, since admin.bootstrapServers=1 is the default setting starting with release 2.4.0, admin.bootstrapServers=0 has to be explicitly set when upgrading from deployments that do not define the property. This parameter is located in the admin chart values file, values.yaml, and this file is located in the NuoDB helm chart stable/admin sub-directory.

Nuoloader问题:如果导入的CSV文件包含一个列值,该列值不是列值不是第一个字符的双引号字符,这将导致CSV文件不正确导入。 例如,如果CSV文件包含视图的值: ONE,T"WO,THREE,…​

所有不是列值的第一个字符的双引号必须与引号逃脱。 例如,以下格式将有效: ONE,"T"WO",THREE,…​

When an 更新 …​WHERE CURRENT OF <cursor> is executed on a partitioned table and the update changes the value of the partition key such that the record is moved to a partition that has not yet been scanned as part of the cursor, the update operation will be executed more than once on that record.

During 更新 …​WHERE CURRENT OF <cursor> operations on partitioned tables, avoid updates to the partitioning key value that causes the record to fall into a different and higher partition.

当使用MultiPart索引时,索引的上限是错误的,结果是,如果在或并且具有两个子查询作为参数并且第二个子查询返回任何行,则整个条件被评估为True而不是False。

指示要在查询中跳过的索引将避免此问题但丢失了索引的性能权益。 或者,确保每个子查询至少返回至少一行。

使用大写'yyyy'与“mm”和'dd'结合指定年份,导致意外结果。

'yyyy'应该只与'ww'(一年的一周)一起使用。 对于涉及“MM”和“DD”的日期格式,必须使用小写的“YYYY”。

When using rownum()` with a NOT BETWEEN predicate the results after the upper boundary value are not returned.

没有解决方法

If a query contains an AND within a WHERE clause and both sides of the AND are subquery predicates on the same column, the WHERE clause will match rows that should not have been matched. The first condition in the WHERE clause is ignored entirely.

没有解决方法。

标量SQL Engine:超出类型精度的值可以分配给VAR而没有错误,并舍入以匹配类型的精度。

Scalar SQL Engine:无。

矢量化执行引擎(VEE):此问题不会影响VEE。

When running a union query NuoDB, if the user specified DISTINCT in the first branch, DISTINCT is applied to the result of the entire union, rather than just in the branch where it was specified.

If the intention is not to apply DISTINCT to the entire UNION query, ensure that the branch to which DISTINCT is to be applied is not the first branch in the UNION query.

仅在已分配角色的用户执行时,将用户角色设置为“非活动”生效。 同一用户可以将用户角色设置为活动的结果,结果命令无效。

可以撤销用户已分配的角色。

Instead of returning an error, the 删除架构 CASCADE command will return success even if the schema contains objects that belong to another user which are not dropped as part of the command. 无法删除的对象将继续存在。

没有解决方法。

OpenJDK 8更新8U232-B09-0UBUNTU1〜18.04.1打破了改变DST遵守的时区的时间戳值。 使用OpenJDK 8,任何Nuodb安装都可能遇到以下问题。 当应用程序使用时间区的时间戳值随时间更改DST时段时,如果在最小值和最大更改日期之间的时间段内,应用程序可能会遇到一个时间计算。 看来OpenJDK 8没有过去DST的记录,并且使用当前DST设置计算所有过去的DST更改。 See //bugs.launchpad.net/ubuntu/+source/openjdk-8/+bug/1859217.

没有解决方法。

删除存储组,在添加存储组完成之前,可能导致SM退出。

在尝试删除存储组之前,确认存储组存在(并且在运行状态)。

如果尝试删除正在运行的过程使用的存档,则 “无法删除存档:无法删除archiveid = archiveID [<ID>]运行sm startid =<ID>" 显示错误消息。如果您继续使用运行DB进程删除数据库,则不会返回其他错误消息。删除数据库后,可以在没有错误的情况下删除存档,但此过程留下了运行。

按照建议的事件顺序关闭并删除对象。如果计划删除数据库存档,则用意图关闭其SM或删除数据库,请先关闭SM,然后删除存档。

执行热拷贝操作可能会导致以下消息:

在第1行:HotCopy:请求失败:MGMT请求超时(3S)

此消息是含糊不清的,可能导致客户相信热拷贝命令失败。实际上,消息是一个警告消息,指示SM进程无法在3秒内处理热拷贝操作。

没有任何。尽管消息,但实际上可以启动热拷贝操作。

Running a stored procedure that performs multiple 删除 FROM …​ WHERE CURRENT OF operations, without advancing the cursor forward, causes the following:

  • The stored procedure eventually stops processing, and hangs in the same 删除 statement, with both the TE and the SM reporting 100% CPU usage.

  • 记忆 用法 没有迹象表明什么是消耗记忆的东西。

  • 杀死声明触发回滚,这需要相当多的时间来完成。

Ensure the cursor is advanced between 删除 FROM …​ WHERE CURRENT OF operations.

If multiple cursors perform operations on the same row, and an 更新 operation on the row follows a 删除 operation, the 更新 does not return an error. Instead, the 删除 succeeds and then the 更新 succeeds as if the 删除 never occurred.

没有任何。

An error generated by the create unique index command is potentially misleading.
如果用户尝试创建失败的索引(i1),则某种原因,创建索引的后续尝试会生成类似于下面所示的消息:

SQL...>创建表T1(F1整数);
SQL...>插入T1值(1),(1);
SQL...>在线创建唯一索引I1(F1);
错误42000:填充索引I1时遇到的唯一性违规,键='1'
SQL...>在线创建唯一索引I1(F1);
错误42000:在架构用户中,名为I1的索引已经存在,表T1

索引确实存在,但不完整。 在尝试重新创建之前,用户需要删除索引。

没有任何

比较< (less than) or ⇐(小于或等于)对索引字符串值的操作,其中比较字符串包含尾随空格(例如“a”),不会返回字符串,其中字符串包含尾随二进制值0x01至0x20代替尾随空间(用于示例“a0x01”)。

没有任何。

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. 如果数据库可以包含在1900-01-01之前的日期,则不应使用Python,并且必须使用使用不同驱动程序(例如JDBC)的另一个工具。

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)

没有任何。

Nuodb SQL期待单一的论点;数据库名称。如果输入了多个参数,则将最后一个值解释为数据库名称。

没有任何。

将值插入到具有小精度的自动生成的字段中时, “定义了无效的表生成器。列类型必须重新定义” 错误返回。 (9737)

没有任何

标量SQL Engine:在存储过程中使用DML和DDL在存储过程中的使用可能会返回意外结果。在调用存储过程时对存在的表的版本执行DML语句,并且不包含从DDL语句的更改。

标量SQL Engine:在存储过程中,不要将DML和DDL混合在同一表中混合使用。

矢量化执行引擎(VEE):此问题不会影响VEE。

当对存储过程中也创建的(临时或永久)表声明时,游标不能用于存储过程。这导致了一个 “游标未宣布” error. (9908)

在声明游标的存储过程之外创建表。

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.

NOODB不支持与另一个加入的连接。例如:

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

这可能会影响基于Hibernate的应用程序,其中自动生成此类语法。 (9514)

需要将第一个连接转换为完整选择命令。例如:

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

如果在单个客户端连接中使用多个语句,则查询结果可能包含两个语句的更改。 For example a 选择 clause in one statement may return modifications made by another active statement.

避免使用多个语句,即在同一连接中读取和修改相同的表。

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.

没有任何。

XA DataSource不支持与常规数据源类似的连接缓存。

没有任何。

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地址而不是其主机名值。

没有任何。

临时表索引统计信息不会以常规表索引统计信息方式自动更新。

To manually update temporary table statistics, use the 分析 command.

Concurrent overlapping 删除 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 删除 statement.

没有任何。

如果在具有不同区域设置设置的系统上启动事务引擎(TES),则TE可能会退出类似于以下的错误消息:

节点启动失败:无法将字符串“10,00000”转换为类型“Double”'或双表可能为空.

确保用于运行同一数据库的所有系统的所有系统都具有相同的语言环境设置。

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:

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

没有任何。

A 选择 statement, which fetches a BLOB column type, returns only the decimal value for each character in the BLOB.

没有任何。

Referencing rows, after they have been deleted within updatable cursors (that is, cursors created using the FOR UPDATE clause), will lead to a connection reset.

删除后不要引用行。

In an updatable cursor, if a row is modified between the cursor fetch and the 更新 …​ WHERE CURRENT OF operations, unexpected results may occur.

提取后立即更新行。

名为Help的列可以从用于创建它们的查询中拾取前导空间。

使用名称帮助周围的单引号,或使用列的备用名称。

尝试更改将启动值设置为小于天花板的序列时不会返回错误。

没有任何。 (虽然没有返回错误,但操作不会更改开始值。)

使用nuosql命令行,无法创建具有不同案例的表,例如MyTable和MyTable。

使用另一个客户来创建具有相同名称但使用其他案例的表。 或者,创建具有不同名称的表。

A 能’T按照指定的USE_INDEX提示 当索引提示中的引号表或索引名称返回错误时,不会完全在大写中定义。

没有任何。

丢弃不存在的架构时,不会返回错误消息。

没有任何。

Temporary tables are incorrectly listed in the SYSTEM schema but cannot be accessed using the SYSTEM schema.

Temporary tables must be accessed using the 用 R schema.

Scalar SQL Engine: When using multiple statements in a single call, the 截短 command can be used only if it is the first statement in the call.

Scalar SQL Engine:无。

矢量化执行引擎(VEE):此问题不会影响VEE。

The 改变表 command is not supported when working with temporary tables. (6363)

为可能需要更改的任何表创建永久表。

丢弃域时,必须使用与域名的相同的案例(如用于为域创建域)。否则,域留在域系统表中。

使用用于创建它的相同情况重新创建域并删除域。

除了使用动态SQL时,存储过程不支持DDL语句。 (6313)

可以在执行DDL存储过程之后在执行的单独存储过程中访问DDL语句。

选择 语句,带有子查询周围的额外括号,返回错误。

删除额外的括号集。

从Storage Manager(SM)中删除存储组时,删除了数据的磁盘文件不会自动删除。

使用Nuodb检查删除磁盘文件。

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”,其中X是非打印字符,其值小于ASCII 32(空间)(6854)

没有任何。

以下系统表区分大小写:依赖性,权限,过程,分区,分区,零分区和localatom序列。

没有任何。

Nuodb Loader不支持将二进制值加载到二进制列中。 (6866)

没有任何。

不支持全局临时表。 (6942)

没有任何。

Nuodb JDBC驱动程序不支持可滚动的光标。 (7266,9110,9239)

没有任何。

诺贝尔经理’s capture command does not store altAddress values if advertiseAlt is set to true.

代替本地DNS IP地址。

NOODB不支持递归DDL触发器。

没有任何。

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.

没有任何。

不正确 未能应用许可证:应用许可证错误:无法设置配置:默认值.License 在经纪商中没有RAFT领导者时返回错误。 (8234)

确保开始筏会员资格中的所有经纪人,并且没有连接问题。

TES使用系统语言环境设置来定义TE使用的字符编码。 如果系统区域设置在数据库节点上不同,则会导致意外行为。 例如,如果使用与数据库中的现有特色不同的语言环境,则TE可以在启动时报告启动(引导)上的数据转换错误。

确保要用于数据库的所有系统都具有相同的语言环境设置。

标量SQL Engine:即使在关闭该光标后,也无法在存储过程中使用相同的光标名称。

Scalar SQL Engine:无。

矢量化执行引擎(VEE):此问题不会影响VEE。

The use of BINARY literal values as partitioning keys for STRING type columns, in 创建表 statements, is not supported.

没有任何。

如果两个或多个短信同时输入同步状态,则会在某个时机输入同步状态(如Nuodb Manager所示)’s show domain summary command). 在同步状态下卡住的SM的日志消息将包括一个 同步:<number>: STARTED 消息但没有相应的消息 同步:<number>: COMPLETED message. (8679)

杀死这些短信之一,以允许另一个转换突变状态。通常,尽量不同时启动两个或更多短信。 相反,在它们同步后的时间开始SMS。

表分区不支持基于次级第二精度的分区。

不要使用子第二分区创建表分区。

The information provided with the –help or -h options in NuoDB SQL has not been updated.

请参阅Nuodb的Nuodb SQL命令行中的支持文档’S在线文档

Nuodb Hibernate驱动程序不支持Java 11。

没有任何。

The type declarations TIME (precision) and TIMESTAMP (precision) ignore the specified value for precision. 具有此类型的值使用创建的精度(默认为6)。 (8523)

没有任何。

Custom data types created with 创建域名 cannot be referenced by stored procedures.

没有任何。