版本发布历史
5.3.6 发布介绍
发布日期:2024-11-01
增强与改进
-
执行引擎
- 优化 TableCleanJob 的 run pick 逻辑
错误修复
-
存储引擎
- 修复使用 mars3 btree 索引扫描不准确会导致查询不到数据的问题 (#IAW0V6)
- 修复数据库年龄不能下降的问题 (#IAQVRL)
- 修复由于持续聚集视图 scankey 内存不对所导致的查询错误 (#IAHXLG)
- 修复 mars3 IndexScan 拉取数据未正确填充导致查询错误的问题 (#IAJ2UV)
- 修复 mars3 的 parial-index 结果错误问题 (#IAH8WB)
- 修复 mars3 brin 在有序扫描时结果错误问题 (#IAPD1U)
- 修复 mars3 compact 和 delete 的并发问题 (#IAOOK6)
- 修复 rowstore recover crash 的问题 (#IAVR6O)
- 修复 objectstore 不支持 freeze 的问题 (#IA4TN5)
- 修复 degrade 后读取 crash 的问题
- 修复 objectstore 中 mars3 btree 数据丢失问题 (#IAW0V6)
- 修复 mars3 brin 在有空值情况下 fullmatch 返回多数据的问题
- 修复 mars3 普通用户没有权限创建 cv 的问题
- 修复 mars3 compactor 执行无效任务的问题
- 修复 mars3 compactor 生成空 run 的问题
- 修复 nested loop 执行时,mars3 扫描使用内存没有及时释放的问题(#IASJL5)
-
执行引擎
- 修复 compact scheduler 不能自动拉起的问题 (#IAY4NK、#IAY3AO、#IAY39L)
- 修复 VHashJoin + VWindowAgg 类型 plan pattern 的执行错误 (#IAP7Y6)
- 修复了 vplan 中的 vnode 缓存错误 (#IAS6NZ)
- 修复执行 vacuum full 会 crash 的问题 (#IAY4NK)
- 修复当有 runtimkey 时候 vbitmapscan 结果错误的问题 (#IAHXLG)
5.3.5 发布介绍
发布日期:2024-09-05
增强与改进
- 存储引擎:
- 修复 uniquemode 中 rowstore insert 时候死循环问题 (#IAFOX2)
- 修复 uniquemode 中 rowstore 的 heap tuple layout 问题
- 修复 ColumnStore 的老版本兼容问题
- 修复 dropdb 时 mars3 worker 不退出的问题
- 修复 uniquemode 中,mars3 btree 因 key truncate 导致的的结果不对问题
- mars3: 修复 fullmatch 没有考虑 qual 导致的 crash 问题
- mars3: 新增 autoprobe 机制,自动对历史 level 压缩
- mars3: 修复 compaction 输出空 run 的问题
5.3.4 发布介绍
发布日期:2024-07-19
增强与改进
- 存储引擎:
- 修复了mars3 Rescan crash的问题 (#IA4SAA)
- 修复了mars3 VindexScan在条件索引情况下的crash问题 (#IA4YOQ)
- 修复了mars3 BitmapScan在BitmapAnd的情况下的crash问题 (#IA7A16)
- 执行引擎:
- 修复了快速分发器在 extended mode 下支持命名游标(#7536)
- 修复了 pgvector 插件的 hnsw 索引报错导致无法使用(#7547)
- 优化了 mars3 存储引擎中行数据向列数据的转换 (#7515)
- 修复了向量化聚集算子在处理部分类型时的内存泄漏 (#7503)
- 修复了向量化扫描算子在加载 aocs 上的文本列时可能 crash 的问题 (#IA5N8H)
- 修复了向量化 IS DISTINCT FROM 表达式中对 NULL 值的处理 (#IA5APT)
- 修复了向量化哈希聚集算子 v1 版本对分组键上的投影处理 (#IA5OL6)
- 修复了 mars3 存储引擎中alter table 增加列后,使用默认值填充时对齐的问题 (#IA4RPX)
- 修复了向量化哈希聚集算子 v2 版本反序列化时类型使用的问题 (#IAA9QI)
- 支持了向量化版本 in 过滤器为空集和的场景 (IA4R4Z)
- 优化了向量化 seqscan path 的流程(IA4R4Z)
- 增强了向量化 motion 的检查 (#IA4RPK)
- 修复了 mxkv2 反序列化表达式中的kv 问题 (#IA95IP)
- 修复了 mxkv2 一行输入中带有重复key 时的问题 (#IA9OW3)
- 修复无法向量化 Subquery 结点的问题(IAAXTQ)
- 修复了向量化执行器 fallback expr 求值问题 (#IA9ZXC, IAAISQ)
- 优化了向量化执行器检查表达式是否支持 (#IAA5FL)
- 修复了向量化执行器哈希聚集hash condistion 选取问题 (#IAA5FL)
- 修复了nestloop 报错unrecognized join type: 10 问题 (#IA9Z4J)
- 修复了partition 表distinct agg 可能报错 variable not found in subplan target list 问题 (#IAAWE4)
- 修复了设置了segment_set 的表 update时 Motion 到错误节点或者触发crash 问题 (#IACDGV, IAD7W9)
- 修复了 CVE-2024-0985: PostgreSQL non-owner REFRESH MATERIALIZED VIEW CONCURRENTLY executes arbitrary SQL (#IA6KD7)
- 修复了 CVE-2023-39417: Extension script @substitutions@ within quoting allow SQL injection (#IA6KCP)
- 修复了 CVE-2023-5870: Role "pg_signal_backend" can signal certain superuser processes (#IA6KC9)
- 修复了 CVE-2023-5869: Buffer overrun from integer overflow in array modification (#IA6KBU)
- 修复了 CVE-2023-5868: Memory disclosure in aggregate function calls (#IA6KBE)
- 修复了 CVE-2023-2455: Row security policies disregard user ID changes after inlining (#IA6KA6)
- 修复了 CVE-2023-2454: CREATE SCHEMA ... schema_element defeats protective search_path changes (#IA6K9X)
- 修复了 CVE-2022-2625: Extension scripts replace objects not belonging to the extension (#IA6K8P)
- 修复了 CVE-2021-32029: Memory disclosure in partitioned-table UPDATE ... RETURNING (#IA6K7G)
- 修复了 CVE-2021-32028: Memory disclosure in INSERT ... ON CONFLICT ... DO UPDATE (#IA6K76)
- 修复了 CVE-2021-32027: Buffer overrun from integer overflow in array subscripting calculations (#IA6K6K)
- 修复了 CVE-2021-23222: libpq processes unencrypted bytes from man-in-the-middle (#IA6K5Z)
- 修复了 CVE-2021-23214: Server processes unencrypted bytes from man-in-the-middle (#IA6K5D)
- 修复了 CVE-2021-3677: Memory disclosure in certain queries (#IA6K4Z)
- 修复了 CVE-2021-3393: Partition constraint violation errors leak values of denied columns (#IA6JTZ)
- 修复了 CVE-2020-14350: Uncontrolled search path element in CREATE EXTENSION (#IA6JQD)
- 修复了 CVE-2020-14349: Uncontrolled search path element in logical replication (#IA6JPP)
- 修复了 CVE-2020-1720: ALTER ... DEPENDS ON EXTENSION is missing authorization checks (#IA6JOV)
- MatrixUI
- 修复 Dashboard 页面集群指标时间展示不正确的问题(#IABL52)
- 修复在 Ubuntu20 中负载分析页面保存数据采集配置失败的问题(#IAAFSS)
- 修复在 Ubuntu20 中自助巡检部分 shell 脚本报语法错误的问题(#IA9SZW)
- 修复了 UI 运行时依赖的安全漏洞问题(#IAD077)
- MatrixGate
- 修复 5.2.2 之后版本出现的进程内存泄露问题(#IAD077)
5.3.3 发布介绍
发布日期:2024-06-14
增强与改进
- 工具
- transfer 模式下,mxgate 连接源端数据库时,设定 idle_in_transaction_session_timeout = 0,防止因为提前传输完毕数据的空闲连接 timeout 导致整个数据传输的失败。(#7506)
- 为不同数据源的 insert catalog 表以及 insert error log 表添加自动分区功能。(#7499)
- 存储引擎
- MARS3 增加一种新的插入模式 “single”,获得更低的插入延迟。
- 优化 CV 的创建与 Insert 的长时间阻塞的问题。(#7266)
- 优化MARS3的ParallelScan中互斥锁的锁内时间。
- 执行引擎
- 增强了向量化窗口算子, 增加了对大部分窗口函数与窗口特性的支持。(#6751)
- 优化了向量化窗口算子的性能。(#6751)
- 增强了向量化聚集算子以支持 INTERNAL 类型。(#6881)
- 增强了对 runtime filter 的支持。(#7049)
- 增强了单节点分布表以支持任意主键或唯一键。(#7125)
- 增强了单节点分布表以支持任意触发器。(#7127)
- 增强了单节点分布表对 ON CONFLICT 从句的支持。(#7168)
- 增强了快速分发器以支持显式事务。(#7124)
- 增强了快速分发器以支持 UPDATE & INSERT & DELETE 操作。(#7124)
- 增强了快速分发器以支持一次处理多条语句。(#7388)
- 增强了快速分发器对单节点分布表的支持。(#7130)
- 增强了快速分发器对复制表的支持。(#7131)
- 增强了快速分发器以支持自增类型。(#7202)
- 优化了 truncate ON COMMIT DELETE ROWS 临时表的性能。(#7279)
- 支持了 update table_name set table_name.column_name 语法。
- 优化了masteronly 模式创建表时,不需要检查节点分别信息。(#7519)
- matrixmgr: 支持统计查询是否是 fastdd 模式,事务是一阶段、二阶段事务。(#7470)
- 增强了快速分发器支持了prepare statment 和 extended mode。(#7139)
- 新增 yonyou 扩展:实现 ROWNUM、to_char、text 与其他类型的隐式转换(#7374 #7375 #7376)
错误修复
-
工具
- 修复了 mxgate 启动时进行 license 检查,当把 license 文件置于 home 目录下无法被正确识别的问题。
- 修复了 mxgate 向 insert catalog 表插入记录延迟(200ms)导致 mxgate 数据加载变慢的性能问题。(#7277)
-
存储引擎
- 修复了 MARS3 在 timebucket 下 InorderScan 的错误 plan。(#7262)
- 修复了 MARS3 的 IndexRollback 中的 AssertFail 问题。
- 修复了 mars2-btree 的多 ScanKey 时候的 Crash。(#7306)
- 修复了 MARS3 Vaggscan中的可见性问题。(#7303)
- 修复了 MARS3 的 BrinIndexScan 的 Collation 问题。(#7252)
- 修复了 MARS3 中 xlog 小概率丢失的问题。
- 修复了 planner 中 motion 和 ParallelNode 同时存在的数据错误。(#7261)
- 修复了 MARS3 的 truncate 操作 rollback 问题。
- 修复了 MARS3 的 Drop Table 死锁问题。
- 修复了 MARS3 的 StripeDesc 对老版本的兼容性问题。
- 修复了 MARS3 的 run successor 的 rollback 问题。
- 修复了 MARS3 在 JDBC driver 下插入数据丢失的问题。
-
执行引擎
- 修复了向量化聚集算子未正确对 first(), last() 聚集的中间值进行序列化的问题。(#7313)
- 修复了向量化执行器可能未对子查询进行向量化改造的问题。(#6117)
- 修复了快速分发器可能看到错误版本的 catalog 信息的问题。(#7218)
- 修复了快速分发器进行 INSERT 等操作时未更新统计信息的问题。(#7405)
- 修复了持续聚集中可能错误改写表达式导致的 crash。(#7223)
- 修复了序列化事务快照时可能 crash 的问题。(#7140)
- 修复了单节点分布表更新操作时错误地生成 split update 与 motion 算子的问题。(#7151)
- 修复了连接池事务模式下未正确维护 search_path 的问题。(#7132)
- 修复了 QD & QE 上事务时间戳不一致的问题。(#7362)
- 修复了 gcc-8 编译问题。(#7424)
- 修复了 MXKV2 类型在语句出错时未正确清理状态的问题。(#7328)
- 修复了由于 MARS3 内部生存周期变化引发的 MXKV2 内部的释放顺序问题。(#7309)。
- 修复了 MXKV2 查询大量
->
表达式时处理 行存数据时 OOM 问题并优化了性能。(#7387) - 修复了向量化窗口函数同时存在多个需要分组信息的函数时触发 Assert 问题。(#7418)
- 修复了向量化 ShareInputScan 把内存中的数据追加到 Spill 文件时的问题。(#7501)
- 修复了向量化 Sequence 导致的 cannot execute squelched plan node 问题。(#7485)
- 修复了 MXKV2 处理 MARS3 unique mode 某个数据块ALLNULL 的问题。(#7487)
- 修复了 CTAS、materialized view 创建masteronly 表相关的问题。(#7514)
- 修复了优化器将 subquery 转换为 join 算子执行会报错的问题。(#6524)
- 修复了快速分发器快速分发模式下避免使用并行扫描。(#7382)
- 修复了快速分发器 extended mode 下 RETURNING 从句未返回结果的问题。(#7384)
- 修复了HashJoin 导致的 cannot execute squelched plan node 问题。(#7416)
- 修复了快速分发器在 extended mode 下 sync 消息错误地被 QE 上 nextval() 当成返回值的问题。(#7397)
- 修复了单节点分布表当有 parallel worker时,聚集结果错误的问题。(#7445)
- 修复了快速分发器没有使用正确的 client encoding 的问题。(#7448)
- 修复了快速分发器在 extended mode 未检查 forceDistRandom 的问题。(#7453)
- 修复了快速分发器 extended mode 统计信息没有更新的问题。(#7464)
- 修复了 ShareInputScan、VShareInputScan 的 reader 退出过早导致 writer hang 住的问题(#7471)
- 修复了单节点表、masteronly 表修改带有 comment 的主键时 Assert 的问题。(#7504)
- 增强了快速分发器支持显示 QE 上类似 explain analyze 的 plan 和具体执行的信息。(#7522)
- 修复了快速分发器禁用了对 cursor 的支持。(#7381)
- 增强了快速分发器支持了 CTE。(#7389)
- 修复了快速分发器 extended mode 下正确淘汰 PreparedStatement 的机制(#7512)
- 修复了向量化聚集在存在特定投影函数时 crash 的问题 (#7541)
- 修复了alter table 时 Assert 的问题 (#7454)
5.3.2 发布介绍
发布日期:2024-04-19
增强与改进
- 图形化界面(MatrixUI)
- 新增 MatrixGate 进程监控页面。提供直观的图形化性能指标展示,简化性能分析。
- MatrixGate
- 向量化执行引擎
- 升级了向量化查询规划器至 v3。(#3427)
- 升级了向量化聚集(Agg)算子至 v2。(#3328)
- 优化了向量化聚集算子对 distinct 运算的支持。(#3355,#3386,#3410)
错误修复
- 工具
- 修复了 mxshift 无法迁移单机集群的问题。(#7257)
- 修复了 mxshift 在数据分布非常稀疏的情况下数据同步前后行数不一致的问题。(#7251)
- MatrixGate
- 修复了通过 Kafka 写入数据,当微批中只有一条数据的时候,kafka_catalog 中记录的状态不正确的问题。(#3002)
- 存储引擎
- 修复了 MARS3 在关闭向量化后执行特定查询出现 Invalid attribute number 报错的问题。(#7262)
- 修复了 mars3_btree 索引大小的相关问题 。(#7319)
- 修复了 mars3_brin 索引在启用 IndexScan 的特定情况下查询结果不正确的问题。(#7276)
- 修复了执行创建 MARS3 行存 btree 索引 SQL 语句时有一定概率会崩溃的问题。(#7253)
- 修复了 MARS3 执行 DROP INDEX SQL 语句后执行 ROLLBACK 报错的问题。(#7232)
- 修复了创建特定 MARS3 表和 mars3_brin 索引性能低下的问题。(#7290)
- 修复了 mars2_btree 索引存在多个同 attno 上的 arraykey 时会崩溃的问题。(#7306)
- 修复了 MARS2 下推 like 操作符的 brinkey 时的 collation 报错问题。(#7252)
- 修复了 MARS3 vaggscan 存在不可见数据时的正确性问题。(#7303)
- 执行引擎
- 修复了向量化查询计划对 Runtime Filter 的处理。(#3329,#3347)
- 修复了向量化查询计划中可能出现非法算子的问题。(#7186)
- 修复了向量化聚集算子未正确处理 PLAIN 聚集的问题。(#3332)
- 修复了向量化聚集算子不支持 INTERMEDIATE 子模式的问题。(#7061)
- 修复了向量化联合算子对过滤器的支持。(#3350)
- MXKV2
- 修复了存在 MXKV2 列的表通过 ALTER TABLE 添加新列产生报错的问题。(#7274)
- 修复了由于 MARS3 内部生存周期变化引发的 MXKV2 内部的释放顺序问题。(#7309)
5.3.1 发布介绍
发布日期:2024-03-29
增强与改进
- 持续聚集(CV)
- 持续聚集的底层存储默认索引由 mars3_brin(v5.2.0-v5.3.0)更改为 mars3_btree(v5.3.1 开始)。
错误修复
- RMGR
- 修复了 5.3.0 中 RMGR(资源管理器)不兼容的问题。(#3409)
5.3.0 发布介绍
发布日期:2024-03-22
特性发布
- 图形化界面(MatrixUI)
- 新增首页,提供资源指标分析和查询统计分析功能。
- 新增英文版界面。
- 数据节点实例(Segment)迁移工具 mxmoveseg
- 支持迁移备用主节点(Standby)。(文档)
- MatrixGate
- 支持查询 mxgate 数据写入进程信息、插入系统表和错误日志。(文档)
- 精细化 --log-dir 参数指定目录(通常为 /home/mxadmin/gpAdminLogs)下 mxgate 日志中的 timing 信息。将原本的 4 个时间段调整为 5 个:t1: Slot insert 建立连接的时间; t2: Slot 等待被调度的时间 t3: Segment 从 mxgate 接收数据的时间 t4: 数据在 Segment 之间重分布和落盘的时间 t5: insert 事务提交的时间。
增强与改进
- 数据节点实例(Segment)迁移工具 mxmoveseg(文档)
- 源迁移服务器为离线状态时,离线的旧服务器在迁移完成后也可以重新开启,不会导致集群异常。
- 高可用
- 修复了在配置了 Standby / Mirror 的集群中,因网络不稳定出现 double failure 的问题(一个数据分片(Shard)下的所有数据实例(包含一个 Primary 和它对应的 Mirror)都离线)。
- mxshift 功能增强
- 向量化执行引擎功能增强
- 实现了向量化共享扫描算子。
- 实现了向量化去重算子。
- 优化了向量化执行器使用 ORCA 优化器时的稳定性。
- 优化了向量化连接算子在右连接时的性能表现。
- MARS3 存储引擎功能增强
- 增加了 MARS3 存储引擎对 btree 索引的支持。
- 优化了 MARS3 存储与 ORCA 配合时的稳定性。
- MatrixGate 功能增强
- 支持通过发送 gRPC 请求终止正在监听指定端口的 mxgate 进程。对应命令为:mxgate stop --grpc-port [port]。(文档)
错误修复
- 工具
- 修复了 mxshift 在 mode="output" 时,若存在一批有依赖关系的视图(一个视图的内容来源于 SELECT 另一个视图)且并发度较高,则会偶发 ... view .... not exist 错误的问题。(#6907)
- 修复了 mxshift 当 disable-connector=false 时,使用非默认 superuser 迁移会出现 no pg_hba.con entry for host 127.0.0.1 错误的问题。
- 执行引擎
- 修复了 motion 算子在特定情况下会崩溃的问题。(#3281)
- 修复了向量化连接算子在特定情况下会崩溃的问题。 (#3263)
- 修复了向量化执行引擎在特定情况下会崩溃的问题。(#3230)
- 修复了向量化聚集算子在特定情况下会崩溃的问题。(#3223)
- 修复了向量化执行引擎在特定情况下无法自动查询的问题。(#3280)
- 修复了向量化索引扫描算子在特定情况下会崩溃的问题。(#3301, #3310)
- 修复了窗口算子在滑动窗口时可能给出错误结果的问题。(#3302)
- 修复了向量化扫描类算子在遇到一次性过滤器时可能会崩溃的问题。(#3314)
- 数据类型
- 优化了 MXKV2 的内存使用。(#3204)
- 优化器
- 修复了 ORCA 在特定情况下无法生成查询计划的问题。(#3270)
- 查询引擎
- 修复了 first(), last() 函数在输入含有空值时结果可能出错的问题。(#3292)
- 修复了滑动窗口 varchar 属性未知结果的问题。(#3229)
- MatrixGate
- 修复了 Kafka source,consumer-group 模式下连接 Kafka 集群超时的问题。(#6848)
- 修复了 Job 被暂停后无法更新表元信息的问题。(#6966)
- 修复了用户发送空数据可能会导致 Job 的 Slot 状态错乱的问题。(#7026)
- 修复了当把输入的 JSON 数据转换为 CSV 或 TEXT 类型时,可能会导致默认值获取错误的问题。(#6550)
- 修复了用户在 mxgate 刚启动时调节 stream-prepared 数量,会导致 Slot 状态不一致的问题。(#7113)
- 存储引擎
- 修复了 MARS3 中 ActiveSnapshot 没有被正确 Pop 的问题。(#3218)
- 修复了 MARS3 VACUUM freeze 的问题。(#3226)
- 修复了 MARS3 在特定场景下不能选取正确的 Run 的问题。(#3224)
- 修复了 MARS2 中 btree 索引在处理 arrary search 特定表达式时会崩溃的问题。(#3246)
- 修复了 MARS3 在特定场景下 compact job 锁并发控制的问题。(#3234)
- 修复了 MARS3 中 brin 索引并行扫描中不正确的快拍。(#3253)
- 修复了 MARS2 在特定场景下 btree 索引结果不正确的问题。(#3297)
- 修复了特定场景下 direct dispatch 崩溃时 QE 连接不能正确清理的问题。
5.2.2 发布介绍
发布日期:2024-01-16
错误修复
- MatrixGate
- 修复了迁移模式中,数据通道连接数量超过源集群 Segment 的数量时,数据迁移会报错并中止的问题。(#6800)
- 修复了当主节点(Master)发生故障自动转移(Failover)自动切换到备用节点(Standby)后,MatrixGate(mxgate)无法响应数据定义语言(DDL)变更而自动刷新任务的问题。(#6850)
- 修复了当目标表不存在时,用户通过 MatrixUI 中 Kafka 数据流功能配置的 mxgate 服务会被 supervisor 进程反复重启的问题。(#6928-1)
- 修复了通过多个浏览器窗口同时创建 Kafka 数据流时,后台启动的 mxgate 端口可能冲突的问题。(#6928-2)
- 工具
- 修复了 mxshift 当源端数据库与目标端数据库异构(主机数、节点数不同)时,启动 mxshift 可能报错 (错误信息:/tmp/mxshift/mxshift_worker.xxxx 不存在)的问题。此问题仅存在于 5.2.1 版本,更早版本均不受影响。已经升级到 5.2.1 版本的用户可以直接拷贝 5.2.2 版本的 mxshift 使用。(#6909)
- Cylinder
- 修复了当 .psqlrc 文件存在 \timing 设置时,cylinder不能正确采集数据表统计信息的问题。此问题仅存在于 5.2.1 版本,更早版本不受影响。(#6860)
5.2.1 发布介绍
发布日期:2024-01-02
增强与改进
- MXKV2
- 优化了 MXKV2 的内存使用(#3178)。
- 优化了 MXKV2 的压缩效果(#3180)。
- 优化 了MXKV2 的数据导入性能(#3162)。
- 向量化执行引擎
- 优化了向量化 motion 算子在多列查询中的内存使用(#3175)。
- 优化了向量化哈希聚集的外部哈希算法的性能(#3213)。
- 优化了文本类型的顺序比较效率(#3163)。
错误修复
- MatrixGate
- 修复了 Kafka 数据源使用 consumer-group 模式时,当数据库发生重启/崩溃后,MatrixGate 有概率无法继续从 consumer-group 抽取到数据的问题(#6848)。
- 图形化界面
- 修复了当 mxstat_statements.harvest_interval 配置为非默认值时,负载分析页面报错及显示异常的问题(#6768)。
- 持续聚集
- 修复了持续聚集(Continuous View,简称 CV) 在 groupagg 算子关闭下创建失败的问题(#6823)。
- 修复了 CV 内存释放顺序错误导致的异常退出问题(#6766)。
- 存储引擎
- 修复了 MARS3 的前后台进程死锁的问题(#6816)。
- 修复了 MARS2 因增删列导致的 Option 空指针问题。
- 资源组
- 修复了资源组模式预加载的 bgworker 会在启动过程崩溃的问题(#3169)。
- 修复了资源组对 cgroup 路径的处理问题(#3169)。
- 修复了资源组可能给出错误的状态统计信息的问题(#3198)。
- 执行引擎
- 修复了 AssertOp 算子初始化过程中可能崩溃的问题(#3183)。
- 修复了 AOCO 表在向量化扫描过程中可能崩溃的问题(#3158)。
- 修复子计划中由于 minmax agg 算子优化导致崩溃的问题(#3190)。
- 修复了在特定条件下 MARS2 向量化扫描崩溃的问题(#3151)。
- 修复了向量化共享扫描在特定条件下崩溃的问题(#3082)。
- 修复了向量化算子在查询调度器(Query Dispatcher,简称QD)进程和查询执行器(Query Executor,简称 QE)进程上可能看到不一致的开关的问题(#3109)。
- 修复了部分向量化算子只能使用较小量内存的问题(#6626)。
- 数据类型
- 修复了 MXKV2 列可能未被正确配置的问题(#3172)。
- 修复了 MXKV2 在特定场合下的 NULL 值处理(#3176)。
- 修复了 MXKV2 在特定条件下错误地下推了表达式的问题(#3131)。
- 修复了 MXKV2 数据可见性问题(#3149)。
- 修复了 MXKV2 类型在某些场景下生成了无用索引的问题(#3149)。
5.2.0 发布介绍
发布日期:2023-12-08
特性发布
- 图形化界面
- 支持 YMatrix 在统信 UOS20、龙蜥 8.X、麒麟信安 3.X、中标麒麟 7.X 操作系统上的图形化安装部署。
- 新增 SQL 执行器功能。
- 新增负载分析功能(文档)。
- 向量化执行引擎(文档)
- 支持对接 ORCA 优化器。HEAP,AO 存储引擎支持直接对接,MARS2/3 不支持对接。特别地, AOCO 可以同时对接向量化执行引擎和 ORCA。
- 新增降级存储功能,支持数据自动冷热分离,冷数据降级存储至更经济的对象存储中(文档)。
- 新增数据类型 MXKV2,在 MXKV 基础上简化了使用步骤并提高了压缩性能(文档)。
- 新增 pgvector 插件工具以支持向量场景(文档)。
增强与改进
- 持续聚集参数 populate 默认值更改为 false(文档)。
- 原有两个 RPM 包合二为一,体积可能变大。但用户无需额外再安装 DebugInfo 包,这对于业务环境的调试与分析更加有利。
- MatrixGate
- 图形化界面
- 数据迁移工具 mxshift
- DDL(Data Definition Language)迁移过程允许忽略指定错误继续执行。可通过 --ignore-error 参数配置忽略的错误种类(文档)。
- 简化了迁移过程的权限授权,仅通过配置源集群对目标集群 Master 节点的访问权限即可。如需关闭此功能,配置 --disable-connector=true(文档)。
- 支持日志分离,终端输出的日志和文件保存的日志存在格式区别,优化了用户体验。
- 支持通过配置 --write-table-meta-file 参数将迁移表元信息写到指定文件,并在后续迁移过程中通过 --read-table-meta-file 参数直接读取该文件中信息,以缩短迁移导致的业务停机时间(文档)。
- 新增 --small-table-mb 参数,合理配置该参数可优化小表传输速度(文档)。
- 支持动态调整并发数(文档)。
错误修复
- 优化器
- 修复了分区表上无法生成 ORCA 查询计划的问题(#6104)。
- 执行引擎
- 修复了向量化执行器在 EXPLAIN ANALYZE 信息为空时会崩溃的问题(#6634)。
- MatrixGate
- 改进了 JSON 映射语义,目前输入 { "key": null } ,key 一律映射为数据库的 NULL 值(#6536)。
- 修复了当使用 mxgate pause 命令(不加 -X 参数)暂停任务后,通过 mxgate stop 或 Ctrl+C 无法停止 mxgate 的问题(#6519)。
- 修复了当任务(Job)处于暂停状态时,数据表 DDL 被修改或者自动调节 slot 功能尝试改变任务的状态时,三者行为发生冲突的问题(#6436)。
- 对数据行进行 JSON 映射时,如果每一个当前数据行需要映射的列都找不到对应的键,则报告该行数据非法,不会向数据库插入空行(#6488)。
- 改进了 mxgate 自身日志组件的性能和内存占用问题(#6242)。
- 修复了当数据库默认搜索路径不是 public 时,启动 mxgate 自动创建 matrixts 扩展失败的问题(#6430)。
- 修复了对同一个数据库使用多个 mxgate 进程时,mxgate watch 的指标报告存在混淆的问题(#5848)。
- 优化了 plain transform 组件内存池的释放时机,减少了 mxgated 进程的内存占用(#6071)。
- 存储引擎
- 修复了 MARS3 在 uniquemode 模式下 uidoverlap scope 计算异常的问题(#6551)。
- 修复了 reader gang reuse 导致的 syscache 不一致的问题(#6419)。
- 修复了 workerpool 中的 compact worker 的状态维护问题(#6374)。
- 修复了 HashJoin 和 NestLoop 同时存在时 Squelch 状态重置的问题(#6598)。
- 修复了 BaseStore.extend 在存在多个文件单元时出现的元数据损坏问题(#6587)。
- 修复了 dsm share snapshot 在 writer qe 退出时会崩溃的问题(#6514)。
- 修复了 MARS3 的 seqscan 的 MemoryContext 生命周期不匹配的问题 (#6296)。
- 修复了 MARS3 不支持 copy-to 的问题(#6440)。
- 修复了 MARS3 在执行 ALTER TABLE 时报错的问题(#6419)。
- 修复了扩容后 compact scheduler 未启动的问题(#6419)。
- 修复了存在空值数据时 sortkeyhint 格式错误的问题(#6395)。
- 修复了 join_concat 处理 non-scalar Json 时会崩溃的问题(#6350)。
- 修复了 mars2_btree 处理多列且带表达式的索引列的问题(#6296)。
- 修复了 run 在合并时最大选取条数设置错误的问题(#6226)。
- 修复了 unlogged table 创建索引时会崩溃的问题(#6300)。
- 修复了 run 在合并的过程中数据相加导致溢出的问题(#6297)。
- 修复了 run 在合并的过程中,读取数据进行对齐计算时,计算出错的问题(#6226)。
- 修复了没能禁止修改 uniqemode 模式的问题(#6439)。
- 修复了并行扫描时,过滤条件错误下推的问题(#6553)。
- 修复了无法删除分区表的 brin 索引的问题(#6589)。
- 修复了创建索引时被取消,之后再次创建出错的问题(#6545)。
- 修复了查询时,读完的 run 没能提前释放的问题(#6394)。
- 修复了自动 ANALYZE 时处理的列不对的问题(#6447)。
- 修复了添加执行路径时,发现并行不安全未及时丢弃的问题(#6447)。
- 修复了 seqscan 读取数据过慢的问题(#6607)。
- 修复了在 CacheMemoryContext 中的细微内存泄漏(#6307)。
- 修复了 MARS3 Alter Type 出现的崩溃问题(#6496)。
- 修复了 MARS3 普通用户创建时的权限问题(#6295)。
- 修复了 MARS3 hint only 功能的问题(#6530)。
- 修复了 MARS3 文件打开失败的问题(#6459)。
- 数据类型
- 修复了 MXKV2 在特定情况下会崩溃的问题(#6466,#6409,#6568,#6544)。
- 修复了 MXKV2 在主表删除后可能残留附属表的问题(#6408)。
5.1.3 发布介绍
发布日期:2023-09-25
错误修复
- MatrixGate
- 优化 zstd 压缩句柄的内存释放周期,减少 mxgated 进程内存占用(#6299)
- 修复了当集群存在 Standby 节点时,MatrixGate 建立的数据库会话无法定期刷新的问题(#6308)
5.1.2 发布介绍
发布日期:2023-09-11
错误修复
- 存储引擎
- 修复 MARS3 表由于 L0 缓存层的数据并发写入异常,导致查询异常的问题(#6155)
- MatrixGate
- 修复数据表在自动分区过程中 MatrixGate 因内部超时未将任务恢复,导致无法继续入数的问题(#6165)
5.1.1 发布介绍
发布日期:2023-08-25
错误修复
- 存储引擎
- 修复 MARS3 存储引擎 uniquemode 模式下 redo log 的问题
5.1.0 发布介绍
发布日期:2023-08-22
特性发布
- 新增 MARS3 存储引擎(文档),其与 MARS2 相比
- 实现行列混存,写入数据行存落盘,大幅提升写入性能
- 无需额外创建索引即可完成建表
- 支持数据的更新与删除,支持增删列,支持 MVCC 机制
- 不仅继承了 MARS2 时序场景下的性能优势,还增添了对 AP 和 TP 场景的支持
- 新增镜像实例迁移工具 mxmoveseg(文档)
- 支持迁移任意一个当前为 Mirror 的数据库实例到其他服务器
- 不支持迁移 Standby
- 数据迁移工具 mxshift 功能增强(文档)
- 支持增量迁移:以表为单位,实现从 Greenplum 4.3.33/5/6 / YMatrix 集群并行迁移目标数据库中部分数据表的数据定义语言(DDL)及数据到新的 YMatrix 集群
- 支持通过 [database.source.hostname-to-ip] 类别下的参数指定主机名对应的 IP 地址,以保障路由的准确性
- 新增 install-dir 参数,以替换 gphome 参数
- MatrixGate 功能增强
- 编码链压缩算法功能增强(文档)
- 新增 Gorilla2、fds 算法
- 图形化界面升级(文档)
- 新增自助巡检页面,支持通过勾选巡检选项自助制定巡检计划,并生成详细的巡检报告
- 国产平台 OpenEuler 20.03-22.03、超聚变(Fusion)22-23、麒麟信安 V3.3-3.5、龙晰(Anolis)OS 8、统信 V20(1060a/1060e)支持(企业版特性)(文档)
错误修复
- 存储引擎
- 修复 AOCS 存储引擎在索引扫描时引发的崩溃问题
- 修复 MARS2 存储引擎定义超过 32 个 minmax 索引导致的崩溃问题
- MatrixGate
- 修复 MatrixGate 在启动压缩时导致的内存超用问题
- 修复 MatrixGate 在处理连接超时引发的内部逻辑错误问题
- MatrixManager
- 修复 MatrixMgr 由于长时间没有释放连接导致内存超用问题
- 执行引擎
- 修复 mxvector 在处理 NULL 值时由于没有对齐引发的崩溃问题
- 修复并行模式下处理 InitPlan 引发的崩溃问题
- 修复分区表下统计信息计算错误问题
- 工具
- 修复 mxaddmirrors 命令在处理 AO 存储上 checksum 引发的数据校验错误问题
- 修复 mxshift 执行导出 DDL 操作时报错的问题
5.0.1 发布介绍
发布日期:2023-06-06
错误修复
- 执行引擎
- 修复了向量化窗口函数表达式计算导致的崩溃
- 修复了滑动窗口函数处理分组逻辑导致的崩溃
- MatrixGate
- 修复了 MatrixGate 在锁住某个表时阻塞其他表入数的问题
- 高可用
- 改进了 Segment 节点的存活探测方法,提高了在高 I/O 负载下的稳定性
5.0.0 发布介绍
发布日期:2023-03-31
特性发布
-
全新数据库架构
-
新增向量化执行引擎(文档)
- 支持批处理:利用批处理的方式,可以有效减少函数调用等执行开销
- 充分利用硬件及编译器能力:使用 CPU 缓存友好的算法,从而充分利用硬件以及编译器的优化能力,如生成 SIMD(Single Instruction, Multiple Data)指令
- 支持多种算子:实现了 Scan、Sort、Aggregate、Join、Window Function、Sub Query、Limit、Motion 等算子,对于同一算子也有不同的算法实现,有效覆盖绝大部分查询场景,提升查询性能
基于以上三点核心原理,相比面向行处理的传统执行引擎,向量化执行引擎可实现 1 到 2 个数量级的性能提升。
-
新增 Runtime Filter 查询性能优化技术(文档)
- RuntimeFilter 是提升 YMatrix 执行引擎性能的关键技术之一,它 是指在优化器生成物理执行计划后,在执行引擎中估价时,动态构建的过滤器(Filter),区别于优化器预先规划的过滤器。
-
MARS2 存储引擎性能大幅优化(文档)
- 优化压缩策略,降低内存使用量
- 优化分区表写入,降低内存使用量
- 优化查询过滤效果,减少不必要的 I/O 消耗
- 优化数据量估计,执行计划的选择更精准
- 增强聚合能力,支持 uniquemode 和 IN 表达式
-
新增编码链压缩算法(文档)
- 支持多种编码、压缩算法:支持 lz4,zstd,simple8b,doubledelta,gorilla,deltazigzag,floatint 等编码、压缩算法,可灵活组合以上算法,以充分提升压缩率
- 支持列级或表级自定义压缩算法
- 支持自适应编码
- 配合向量化执行引擎使用提升数据压缩 / 解压速度:在 SSB 场景下解压速度是 LZ4 的 3 倍
编码链压缩方案可大幅减小空间占用,降低成本。在新能源汽车场景,压缩率是使用 LZ4 压缩算法方案的 3.9 倍,在 TSBS(Time Series Benchmark Suite)场景,是 LZ4 的 2.7 倍。
-
存储诊断工具 Datainspect 升级(文档)
- 增加新函数 desc_compress,可以对两种指定压缩算法进行对比择优
-
MatrixGate 功能增强
-
新增平滑扩容功能(文档)
-
数据迁移工具 mxshift 功能增强(文档)
- 以数据库为单位,实现对数据表 DDL 的迁移,并且可选择是否只迁移 DDL
-
图形化界面升级
-
自动分区管理增加新策略 auto_partitioning_ex(文档)
- 支持批量创建分区
- 支持强制保留特定历史分区
- 支持自定义自动分区操作时段