本文将为您介绍Hologres各版本相关缺陷的修复记录,包括问题描述、影响程度等。您可以通过报错或问题描述,检查您当前的业务中是否产生了相关问题,提前进行问题规避。建议加入实时数仓Hologres交流群联系对应技术支持协助您将产品升级到最新版本,详情请参见如何获取更多的在线支持?。
背景信息
缺陷及修复说明
缺陷内容向下穿透:当前版本存在的缺陷,在之前的版本中均存在。
例如,1.3版本中存在某缺陷,在1.1或0.10等版本中大多数存在,少数不存在场景有明确标注。
缺陷修复向上包含:当前版本修复后的缺陷,在之后的版本中均已修复。
例如,1.1版本中已修复的某缺陷,在1.1或1.3等版本中均已修复。
缺陷等级说明
P0:建议立即升级,一旦触发会影响线上的使用(如查询正确性、写入成功率等操作)。
P1:推荐升级,提前规避相关问题。
P2:选择性升级,偶尔发生的问题,具备应该改写方法,或重启即可修复。
2024年缺陷
2024年09月
等级 | 报错/问题描述 | 缺陷原因 | 出现/修复版本 | 规避建议 |
P1 | 数据库首次开启DML事务后,如果在SQL中对同一表执行并发DDL操作,可能会导致Query卡住等现象。 | 在数据库首次使用DML事务时,将首先获取表锁。如果该表存在并发的DDL操作,系统将进入尝试建表的循环,概率性出现死锁,导致Query卡住等。 | 出现版本:2.2.24及以下版本。 修复版本:2.2.25及以上版本。 | 升级到最新版本。 |
P2 | 对于包含roaringbitmap类型字段的Hologres表,当通过 | 跨库查询的外表不支持roaringbitmap类型,在创建外表时需要校验。 | 出现版本:2.2.24及以下版本。 修复版本:2.2.25及以上版本。 | 升级到最新版本。 说明 升级完成后,进行跨库查询时,如果外表中存在roaringbitmap类型,将直接报错,提示不支持该类型。 |
P2 | 使用JDBC prepareStatement方法时,反复执行
| 使用JDBC prepareStatement方法循环执行 | 出现版本:
修复版本:
|
|
P2 | 元仓Query Log中的result_rows和affected_rows值与实际值不符。 | 元仓汇报result_rows和affected_rows时发生错误,导致汇报的值与实际值不符。 | 出现版本:2.2.22及以下版本。 修复版本:2.2.23及以上版本。 | 升级到最新版本。 |
P2 | 计算组实例中,重启主计算组时,可能会导致从计算组点查(基于主键的查询)变慢。 | 重启主计算组时,正常运行的计算组对应的Shard会轮询主Shard状态,导致点查卡住,直到所有Shard恢复后才会继续执行。 | 出现版本:2.2.21及以下版本。 修复版本:2.2.22及以上版本。 | 升级到最新版本。 |
P2 | BSI_SUM函数结果数组中,所有元素的总和超出2^31时,结果出错。 | 函数数据溢出情况误处理。 | 出现版本:2.1.1及以上版本。 修复版本:等待修复。 |
|
P2 | 连接Hologres实例偶发创建连接超时或卡住,导致无法新建连接。 | 连接实例偶发节点内进程卡住,导致此节点无法创建新连接。 | 出现版本:低于2.2.23,2.1.43,2.0.46,1.3.71的版本。 修复版本:3.0.4,2.2.23,2.1.43,2.0.46,1.3.71及以上版本。 |
|
2024年08月
等级 | 报错/问题描述 | 缺陷原因 | 出现/修复版本 | 规避建议 |
P2 | 计算组实例中,若某个计算组A不可用(如正在重启),其他计算组对A加载的Table Group中的表执行点查时,延迟升高。 | 实时读写链路内部模块存在缺陷,计算组执行点查时会等待Table Group状态,导致延迟升高。 | 出现版本:2.1.1至2.2.21版本。 修复版本:2.2.22及以上版本。 | 升级到最新版本。 |
P1 | Fixed Plan实时写入数据量超过100万QPS时,有小概率触发写入失败和实例重启。 | 实时读写链路内存管理器存在缺陷。 | 出现版本:
修复版本:
| 升级到最新版本。 |
2024年07月
等级 | 报错/问题描述 | 缺陷原因 | 出现/修复版本 | 规避建议 |
P1 | 使用jdbc或jdbc_fixed模式读取Hologres的Binlog时,如果Flink作业遭遇反压导致后端超时,有概率导致Flink作业卡住或触发Failover。 | Gateway收到后端超时的异常信息时,将异常返回给客户端的过程中存在问题,导致读取数据卡住或数据解析失败报错。 | 出现版本:1.3及以上版本。 修复版本:2.2.21及以上版本。 | 从最新的checkpoint直接重启作业,并升级到最新版本。 |
P2 | 在V2.2版本之后,使用了Shard Pruning(执行计划中包含Shard Prune算子)的COUNT DISTINCT操作,通过PQE执行,导致计算性能下降。
| 使用Shard Pruning后,COUNT DISTINCT的执行计划推导错误,导致通过PQE执行,影响查询性能。 | 出现版本:2.2.1至2.2.18版本。 修复版本:2.2.19及以上版本。 |
|
P2 | 慢Query日志( | 慢Query日志中的 | 出现版本:2.2.1至2.2.18版本。 修复版本:2.2.19及以上版本。 | 升级到最新版本。 |
P2 | 在写入分区子表时,若COPY列中包含了分区列,并且当分区值为0时,传入其他非0值也能正常写入,这可能导致分区值出现脏数据。
| 在写入分区子表时,如果copy列中包含了分区列,并且分区值为0,系统缺少对分区值为0的检查,从而导致脏数据成功写入。 | 出现版本:2.2.1至2.2.18版本。 修复版本:2.2.19及以上版本。 | 升级到最新版本。 |
P2 | 在连接串上显示的设置时区为
| 连接串上指定了时区后,PQE在解析日期函数时计算时区错误,导致结果错误。 | 出现版本:2.2.1至2.2.18版本。 修复版本:2.2.19及以上版本。 | 升级到最新版本。 |
P2 | 使用 |
| 出现版本:2.2.1至 2.2.18版本。 修复版本:2.2.19及以上版本。 | 升级到最新版本。 |
P0 | 使用动态分区管理功能时,如果 | 自V2.2版本开始,动态分区管理功能支持自定义调度开始时间,对于按月分区时间计算有误。 | 出现版本:2.2.1至2.2.17版本。 修复版本:2.2.18及以上版本。 | 升级到最新版本。 |
2024年06月
等级 | 报错/问题描述 | 缺陷原因 | 出现/修复版本 | 规避建议 |
P1 | 执行 和 | 自V2.2版本开始,MaxCompute外部表操作需要通过服务关联角色(SLR)来进行身份验证。由于当前实现存在问题,已创建SLR的用户在执行 和 | 出现版本: 2.2.1至2.2.14版本。 修复版本: 2.2.15及以上版本。 | 升级到最新版本。 |
P1 | 源表存在重复数据,执行 | 执行 | 出现版本: 2.2.13及以下版本。 修复版本: 2.2.14及以上版本。 | 升级到最新版本。 |
p2 | 通过Flink将Paimon数据读取并写入Hologres时,Paimon VARCHAR类型数据与Hologres数据格式不一致。
| Hologres对Paimon VARCHAR类型的数据转换错误,导致出现乱码。 | 出现版本: 2.2.12及以下版本。 修复版本: 2.2.13及以上版本。 | 升级到最新版本。 |
p2 |
| 为了能够利用索引,PostgreSQL定义了NaN和其他数字的大小比较规则,将NaN值视为相等,且大于任何非NaN值。而Hologres在实现时遵循了C++标准的比较规则,因此NaN值互不相等,导致结果与PostgreSQL不一致。 | 出现版本: 2.1.37及以下版本。 修复版本:
| 升级到最新版本。 |
2024年05月
等级 | 报错/问题描述 | 缺陷原因 | 出现/修复版本 | 规避建议 |
P2 | 使用Fixed Plan点查多个相同主键值时(例如 | Fixed Plan没有对相同主键的多组过滤条件进行去重。 | 出现版本: 2.2.8及以下版本。 修复版本: 2.2.9及以上版本。 |
|
P1 | 在Rebalance过程中,执行Schema Change的相关操作后,实例无法正常写入和查询。 | 在Rebalance过程中,当Shard的Leader和Follower延迟小于10秒时,将进行Follower和Leader的切换。在切换时,若用户执行Schema Change的相关操作,会导致存储引擎SE的状态异常,进而导致实例无法进行正常的写入和查询操作。特别是在Hologres V2.1版本中,当实例存在空Worker节点时,会自动触发Rebalance机制,从而增加了该问题发生的概率。 | 出现版本:
修复版本:
| 升级到最新版本。 |
P2 | Hologres实例升级至2.1.25及以上版本后,对非public下的表执行 | 对 | 出现版本: 2.1.25至2.1.32版本。 修复版本: 2.1.33及以上版本。 |
|
P2 | 使用FixedFE(对应Connector中的 | FixedFE在SLPM模型权限变化时,没有及时刷新缓存,导致用户已有权限,却仍然出现相关报错。 | 出现版本: 2.0.31及以下版本 修复版本: 2.0.32及以上版本。 | 升级到最新版本。 |
2024年04月
等级 | 报错/问题描述 | 缺陷原因 | 出现/修复版本 | 规避建议 |
P2 | 使用datediff函数按照指定的单位计算两个时间差值时,偶发返回结果与实际结果相差1。 | 该函数计算存在逻辑缺陷。 | 出现版本: 2.0.31版本。 修复版本: 2.1.27及以上版本。 | 升级到最新版本。 |
P2 | Hologres实例升级至V2.1.26版本后,监控指标显示实例内存分布使用率中的Query内存缓慢上涨。 | 升级至V2.1.26版本,当Query出现OOM问题后,内存指标会被重复统计,导致监控中内存相关的指标上涨。 说明 实例中的内存并没有真正上涨,只是监控统计重复。 | 出现版本: 2.1.26版本。 修复版本: 2.1.27及以上版本。 | 升级到最新版本。 |
P1 | Hologres实例升级至V2.1版本,且在实例中进行MaxCompute外部表查询时,出现实例内存缓慢上涨现象,Query性能出现抖动,或者OOM较多。 | 使用V2.1版本实例查询MaxCompute外部表时,打开的文件未被及时关闭,导致内存缓慢上涨,影响了Query性能或者实例稳定性。 | 出现版本: 2.1.1至2.1.25版本。 修复版本: 2.1.26及以上版本。 | 升级到最新版本。 |
P2 | V2.1版本中,主从实例或计算组实例的存储容量变多,表现为监控指标的存储使用总量大于通过pg_relation_size函数计算的存储总量。 | V2.1版本的主从实例或计算组实例回收旧文件不及时,导致存储容量增长,监控采集的存储量变多。 | 出现版本: 2.1.1至2.1.25版本。 修复版本: 2.1.26及以上版本。 | 升级到最新版本。 |
P1 | Flink通过JDBC模式消费Hologres Binlog时,出现作业启动时消费速率较高,之后持续下降的情况。 | Flink通过JDBC模式消费Hologres Binlog时,存在内存泄漏问题。 | 出现版本: VVR 6.0.7以下版本。 修复版本: VVR 6.0.7及以上版本。 | 升级到最新版本。 |
2024年03月
等级 | 报错/问题描述 | 缺陷原因 | 出现/修复版本 | 规避建议 |
P0 | 由于查询资源未释放导致:
| 当查询仅涉及Shard数据,且使用了PQE或SQE执行MaxCompute外部表或数据湖外部表的查询时,查询完成后不会系统主动触发资源回收,只能使用Query Master的垃圾回收机制来回收资源。当Query Master压力较大时,查询操作会因退出延迟而占用大量资源,导致后续的查询无法执行。 | 出现版本: 2.1.23至2.1.24版本。 修复版本: 2.1.25及以上版本。 | 升级到最新版本。 |
P1 | 对字典编码过的列添加bitmap,导致not null的列查询结果错误,出现null值。 | 对字典编码过的列添加bitmap,后端构建bitmap时,未对全部数据生效,导致结果有错误。 | 出现版本: 2.1.21及以下版本。 修复版本: 2.1.22及以上版本。 | 升级到最新版本。 |
P1 | 通过Fixed Plan进行数据的实时写入或点查,实例内存使用率逐渐上涨。 | Hologres V2.1版本中Fixed Plan执行引擎进行了重构,其为读写表创建的operator没有及时清理,导致内存泄露。 | 出现版本: 2.1.1至2.1.9版本。 修复版本: 2.1.10及以上版本。 | 升级到最新版本。 |
P1 | 对运行在PQE上的Query执行取消(cancel)操作时,有概率触发对应PQE节点的进程死锁,无法处理新的PQE请求。 | PQE IO并发控制功能缺陷,当PQE接收到cancel信号时有概率触发。影响所有PQE进程。 | 出现版本:
修复版本:
| 升级到最新版本。 |
P2 | INTERSECT或EXCEPT函数在Shard Pruning时,出现执行结果与实际结果不一致。例如在Shard Pruning时,执行如下示例SQL,返回结果可能与实际结果不符。
| 当前INTERSECT或EXCEPT函数是通过JOIN实现,在Shard Pruning时,对于INTERSECT或EXCEPT函数的处理导致执行计划不正确,结果出现错误。 | 出现版本: 2.1.21及以下版本。 修复版本: 2.1.22及以上版本。 | 升级到最新版本。 |
P2 | 在PQE进程退出时,存在小概率的卡死现象,持续积累后会导致PQE无法处理新的请求。 | PQE进程退出时,启动的RPC退出线程和主线程存在并发问题,导致RPC退出线程无法正常结束,进而导致PQE进程无法顺利退出。 | 出现版本: 2.1.0至2.1.14版本。 修复版本: 2.1.15及以上版本。 | 升级到最新版本。 |
P2 | 并发执行PQE的Query时,实例出现短暂重启现象。 | Hologres V2.0及以下版本中,PQE存在多线程并发问题,导致实例概率性的出现Coredump。 | 出现版本: 2.0及以下版本。 修复版本: 2.1.0及以上版本。 | 升级到最新版本。 |
P2 | 使用Prepared Statement模式执行包含 | 优化器生成Plan错误,导致实例出现Coredump。 | 出现版本: 2.0及以下版本。 修复版本: 2.1.0及以上版本。 | 升级到最新版本。 |
2024年02月
等级 | 报错/问题描述 | 缺陷原因 | 出现/修复版本 | 规避建议 |
P2 | TEXT类型先转换为BIT类型,再转换成BIGINT类型报错:
| TEXT类型转BIT类型支持不完善,导致出现报错: | 出现版本: 2.1.20及以下版本。 修复版本: 2.1.21及以上版本。 | 升级到最新版本。 |
P2 | 行存表指定了PK,Clustering Key设置为空串时,出现元数据不一致导致Query卡住。示例建表SQL:
| 行存表的Clustering Key为空串时,与PK不一致,FE节点响应请求失败,从而造成元数据不一致,导致Query停滞。 | 出现版本: 2.1.20及以下版本。 修复版本: 2.1.21及以上版本。 |
|
P2 | Query的过滤条件(where)中包含Clustering Key,且使用
| 当过滤条件中有Clustering Key,且使用 | 出现版本: 2.1.19及以下版本。 修复版本: 2.1.20及以上版本。 | 升级到最新版本。 |
P1 | 在Hologres 2.1版本中,实例内存使用率有缓慢上涨,查询MaxCompute外部表时,偶发出现 | 实例升级到 V2.1版本后,由于外部表的底层数据文件没被及时关闭,导致内存泄漏,偶发引起实例重启。 | 出现版本: 2.1.10至2.1.18版本。 修复版本: 2.1.19及以上版本。 | 升级到最新版本。 |
P2 | DECIMAL类型相乘后精度不符合预期。示例SQL:
| DECIMAL类型乘法默认小数精度是18位,两个DECIMAL类型相乘后小数位数超过18时,会导致将数据截断再计算,从而出现结果不符合预期。 | 出现版本: 2.1.18及以下版本。 修复版本: 2.1.19及以上版本。 |
|
2024年01月
等级 | 报错/问题描述 | 缺陷原因 | 出现/修复版本 | 规避建议 |
P2 | 升级到Hologres V2.1版本后, | Hologres V2.1版本FrontEnd错误增加了过长的replay缓存时间,导致同一个DDL后再执行DML,DDL replay会变慢。 | 出现版本: 2.1.1至2.1.14版本。 修复版本: 2.1.15及以上版本。 | 升级到最新版本。 |
P2 |
| 在SQL中 | 出现版本:
修复版本:
| 升级到最新版本。 |
P2 | 使用 |
| 出现版本: 2.1.1至2.1.12版本。 修复版本: 2.1.13及以上版本。 | 升级到最新版本。 |
P2 | 使用 | 对于全表扫描带LIMIT的场景,Hologres会通过惰性加载(lazy loading)的方式加载数据,一次性扫描太多数据导致卡住。 | 出现版本:
修复版本:
| 升级到最新版本。 |
P2 | 对实例执行重启、升级、升降配等涉及实例重启的操作后,MaxCompute直读Hologres外部表时,偶发任务卡住。 | 对于Hologres表,后台会定期触发元数据更新,实例重启后,系统会重新刷新一次表的元数据,MaxCompute直读Hologres未能及时获取元数据状态,导致任务卡住。 | 出现版本:
修复版本:
| 升级到最新版本。 |