SelectDB Enterprise
发布通告
Enterprise Core

Enterprise Core

Enterprise Core 2.1.x

Enterprise Core 2.1.7

发布日期:2024 年 11 月 12 日

行为变更

  • 以下全局变量会被强制设置到下列默认值
    • enable_nereids_dml: true
    • enable_nereids_dml_with_pipeline: true
    • enable_nereids_planner: true
    • enable_fallback_to_original_planner: true
    • enable_pipeline_x_engine: true
  • 审计日志增加了新的列。更多信息,请参考管理指南 (opens in a new tab)

新功能

  • 异步物化视图
    • 异步物化视图增加了一个属性 use_for_rewrite 用于控制是否参与透明改写
  • 查询执行引擎:
    • 在 Profile 中输出变更的session variable 列表;
    • 增加了trim_in、ltrim_in 和 rtrim_in 函数的支持;
    • 增加了一些 URL 函数,包括对 top_level_domain、first_significant_subdomain 、cut_to_first_significant_subdomain 支持;
    • 增加了 bit_set 函数;增加了count_substrings 函数;
    • 增加 translate 和 url_encode 函数;
    • 增加 normal_cdf, to_iso8601, from_iso8601_date 函数;
    • 增加 trim_in、ltrim_in、 rtrim_in 函数
  • 存储管理:
    • 增加了 information_schema.table_options 和 information_schema.table_properties 系统表,支持查询建表时设置的一些属性。更多信息,请参考系统表: table_options (opens in a new tab)table_properties (opens in a new tab)
    • 支持 bitmap_empty 作为默认值;
    • 增加了一个新的 Session 变量require_sequence_in_insert 来控制向 Unique Key 表进行insert into select 写入时,是否必须提供 Sequence 列
  • 其他:允许在 BE WebUI 页面生成火焰图

改进提升

  • 湖仓一体:
  • 异步物化视图
    • 细化了异步物化视图中构建时锁持有的粒度
  • 查询优化器
    • 优化了极端情况下统计信息收集和使用的准确性,以提升规划稳定性
    • 现在可以在更多情况下生成 Runtime Filter,以提升查询性能
    • 提升数值,日期和字符串函数的常量折叠能力,以提升查询性能
    • 优化了列裁剪的算法,以提升查询性能
  • 查询执行引擎
    • 支持并行的 Prepare 降低短查询的耗时
    • 修正了 Profile 中一些 Counter的名字,保持跟审计日志一致
    • 增加了新的 Local Shuffle 规则,使得部分查询更快
  • 存储管理
    • Show Partitions 命令支持显示 Commit Version
    • 建表时检查不合理的 Partition EXPR
    • 优化 Routine Load EOF 时的调度逻辑
    • Routine Load感知 Schema 变化
    • 优化 Routine Load Task 超时逻辑
  • 其他
    • 支持通过 BE 配置关闭 BRPC 的内置服务端口
    • 修复审计日志缺失字段以及重复记录的问题

Bug 修复

  • 湖仓一体
    • 修复了 INSERT OVERWRITE 的行为跟 Hive 不一致的问题
    • 清理临时创建的文件夹,解决 HDFS 上空文件夹太多的问题
    • 修复某些情况下,使用 JDBC Catalog 导致 FE 内存泄露的问题
    • 修复某些情况下,使用 JDBC Catalog 导致 BE 内存泄露的问题
    • 修复某些情况下,读取 Snappy 压缩格式错误的问题
    • 修复某些情况下,FE 端 FileSystem 可能泄露的问题
    • 修复某些情况下,通过 EXPLAIN VERBOSE 查看外表执行计划可能导致空指针的问题
    • 修复无法读取 Paimon parquet 格式表的问题
    • 修复 JDBC Oracle Catalog 兼容性改动引入的性能问题
    • 禁止下推隐式转换后的谓词条件已解决 JDBC Catalog 某些情况下查询结果不正确的问题
    • 修复 External Catalog 中表名大小写访问异常的一些问题
  • 异步物化视图
    • 修复用户指定的 Start Time 不生效的问题
    • 修复嵌套物化视图不刷新的问题
    • 修复删除重建基表后,物化视图可能不刷新的问题
    • 修复分区补偿改写可能导致结果错误的问题
    • 当 sql_select_limit 设置时,改写结果可能错误的问题
  • 半结构化管理
    • 修复了索引文件句柄泄露的问题
    • 修复了特殊情况下倒排索引 count() 不准确的问题
    • 修复了未开启 Light Schema Change 时 Variant 异常的问题
    • 修复了 Variant 返回数组时内存泄漏的问题
  • 查询优化器
    • 修正了外表查询时,可能存在过滤条件 nullable 计算错误,导致执行异常的问题
    • 修复范围比较表达式优化可能发生错误的问题
  • 查询执行引擎
    • match_regexp 函数不能正确处理空字符串的问题
    • 解决在高并发场景下,Scanner 线程池卡死的问题
    • 修复了 data_floor 函数结果错误的问题
    • 修复了部分场景下,Cancel 消息不正确的问题
    • 修复 Arrow Flight 打印太多的 Warn 日志的问题
    • 解决部分场景下 Runtime Filter 发送失败的问题
    • 修复了一些系统表查询的时候不能正常结束或者卡住的问题
    • 修复了窗口函数结果不正确的问题
    • 修复 ENCRYPT 和 DECRYPT 函数导致 BE Core 的问题
    • 修复 CONV 函数结果错误的问题
  • 存储管理
    • Memtable 前移在多副本情况下,有机器宕机时导入失败的问题
    • 导入过程中,Memtable 在 Flush 阶段时,统计的内存不准确
    • 修复 Memtable前移多副本容错的问题
    • 修复 Memtable前移 bvar 统计不准的问题
    • 修复 s3 Load 进度汇报不准的问题
  • 权限管理
    • 修复了SHOW COLUMNS, SHOW SYNC, SHOW DATA FROM DB.TABLE 相关的权限问题
  • 其他
    • 修复 2.0 版本的审计日志插件在 2.1 版本无法使用的问题

Enterprise Core 2.1.7-rc01

发布日期:2024 年 9 月 13 日

新功能

  • 存储管理:增加了 information_schema.table_options 和 table_properties 系统表,支持查询建表时设置的一些属性;支持 bitmap_empty 作为默认值。

改进提升

  • 执行引擎:支持并行的 prepare 降低短查询的耗时。
  • 存储管理:Show Partitions 命令支持显示 commit version;建表时检查不合理的 partition expr

Bug 修复

  • 湖仓一体:修复了 insert overwrite 的行为跟 hive 不一致的问题;在建立 DLF 的外表时,增加了一些检查,防止查询时出错;清理临时创建的文件夹,解决 HDFS 上空文件夹太多的问题。
  • 异步物化视图:修复用户指定的 start time 不生效的问题;解决嵌套物化视图不刷新的问题。
  • 执行引擎:修复 match_regexp 函数不能正确处理空字符串的问题;解决在高并发场景下,scanner 线程池卡死的问题。
  • 存储管理:修复 Memtable 前移在多副本情况下,有机器宕机时导入失败的问题;修复导入过程中,memtable 在 flush 阶段时,统计的内存不准确。
  • 权限管理:修复了 show columns, show sync, show data from db.table 相关的权限问题。

Enterprise Core 2.1.6

发布日期:2024 年 9 月 13 日

行为变更

  • 移除 create repository 命令中的 delete_if_exists 选项。
  • 新增会话变量 enable_prepared_stmt_audit_log,用于控制 JDBC 预编译语句是否记录审计日志,默认不记录。
  • 采用文件描述符限制和内存限制来管理 Segment Cache。
  • sys_log_mode 配置项设置为 BRIEF 时,在日志中增加文件位置信息,以提供更详细的上下文。
  • 将会话变量 max_allowed_packet 的默认值调整为 16MB,提高数据传输限制。
  • 在单次请求中,若包含多个 SQL 语句,各语句间必须使用分号进行分隔,以增强语句的清晰度和执行效率。
  • 现在支持 SQL 语句以分号开始,提供更灵活的语句书写方式。
  • 在执行如 show create table 等语句时,类型格式与 MySQL 保持一致,提升与 MySQL 的兼容性。
  • 当新优化器规划查询超时后,不再回退到旧优化器,以避免潜在的性能下降问题。

新功能

  • 湖仓一体:实现 Iceberg 表的写回功能;增强 SQL 拦截规则,支持对外表的拦截处理;新增系统表file_cache_statistics,用于查看 BE 节点的数据缓存性能指标。
  • 异步物化视图:支持在 Insert 中进行透明改写;支持对查询中存在 VARIANT 类型时的透明改写。
  • 半结构化数据管理:支持 ARRAY MAP 类型到 JSON 类型的 CAST 转换功能;引入json_keys函数,用于提取 JSON 中的键名;支持在导入 JSON 时指定json path$``;ARRAY / MAP / STRUCT 类型支持replace_if_not_null;允许调整 ARRAY / MAP / STRUCT 类型的列顺序;新增multi_match函数,支持在多个字段中匹配关键词,并利用倒排索引加速查询。
  • 查询优化器:完善 MySQL 协议返回列的信息,包括原始数据库名、表名、列名和别名;增强聚合函数group_concat,支持同时使用order bydistinct进行复杂数据聚合;改进了 SQL 缓存机制,支持通过注释区分不同的查询以复用缓存结果;增强分区裁剪功能,支持在过滤条件中使用date_truncdate函数;允许在表别名前使用数据库名作为限定名前缀;支持 Hint 格式注释。
  • 执行引擎:Group concat函数现支持distinctorder by选项。
  • 其他:新增系统表table_properties,便于用户查看和管理表的各项属性;新增 FE 中死锁和慢锁检测功能。

改进提升

  • 湖仓一体:革新外表元数据缓存机制;新增会话变量keep_carriage_return,默认关闭。读取 Hive Text 格式表时,默认将\r\n\n均视为换行符;优化 Parquet / ORC 文件读写内存统计;Paimon 表支持 IN/ NOT IN 谓词下推;升级优化器,支持 Hudi 表的 Time Travel 语法;Kerberos 认证流程优化,提升安全认证效率与稳定性;支持 Rename column 操作后读取 Hive 表;提升外表分区列读取性能;优化外表查询规划,优化数据分片合并策略,有效避免小分片对查询性能的影响;SHOW CREATE DATABASE / TABLE 新增 Location 等属性展示;MaxCompute Catalog 扩展支持复杂类型;优化文件缓存加载策略,通过异步加载方式避免 BE 启动时间过长的问题;升级文件缓存淘汰策略,有效管理长时间占用锁的资源。
  • 异步物化视图:支持小时、周及季度级别的分区上卷构建;基于 Hive 外表的物化视图,在刷新前自动更新元数据缓存,以保证每次刷新可以获取最新数据;通过批量获取元数据,优化存算分离模式下的透明改写规划性能;通过禁止重复枚举,进一步提升透明改写的规划性能;优化基于 Hive 外表分区刷新物化视图的透明改写性能。
  • 半结构化数据管理:优化 TOPN 查询内存分配,显著提升查询性能;优化倒排索引字符串处理性能;优化倒排索引在 MOW 表中的性能;建表时支持指定行存 page_size,以控制压缩效果。
  • 查询优化器:调整 Mark Join 行数估计算法,提高基数估算准确性;优化 Semi / Anti Join 代价估计算法,能够正确选择最佳 Join 顺序;调整部分列无统计信息情况下的过滤估计算法,使估算更精准;改进 Set Operation 算子 Instance 计算逻辑,防止在极端情况下并行度不足的问题;优化 Bucket Shuffle 使用策略,数据打散不充分时也能获得更好的性能;窗口函数数据提前过滤,支持单投影中存在多窗口函数的情况;过滤条件含 NullLiteral 时,智能折叠为 False,转换为 EmptySet,减少不必要的数据扫描量;扩大谓词推导适用范围,在特定模式的查询下能够大幅减少数据扫描量;在分区裁剪中支持部分短路计算逻辑,以提升分区裁剪性能。在特定场景下,性能提升超过 100%;在用户变量中,支持计算任意的标量函数;当查询中存在别名冲突时,报错信息能够保持与 MySQL 一致。
  • 执行引擎:实现 AggState 从 2.1 到 3.x 版本的兼容,并解决了 coredump 问题;重构无 Join 操作时的 Local Shuffle 策略选择机制;将内部表查询的 scanner 调整为异步模式,以防止查询内部表时出现卡顿;优化 Join 算子在构建 Hash 表时的 Block Merge 流程;缩短 MultiCast 持有锁的时间;优化 gRPC 的 keepAliveTime 设置并增加了链接监测机制,降低了因 RPC 错误导致的查询失败率。
  • 存储管理:备份恢复 / 跨集群同步中Restore 功能现已支持删除多余的 Tablet 和分区选项,在创建 Repository 时,支持检查存储连通性,Binlog 支持 Drop 表操作,使 CCR 能够支持 Drop 表的增量同步;Compaction 改进高优 Compaction 任务不受并发控制限制的问题,根据数据特性自动调整 Compaction 的内存消耗,修复顺序数据优化策略可能引发的聚合表或 MOR UNIQUE 表数据准确性问题,优化补副本期间 Compaction 选择 rowset 的策略,以避免触发 -235 错误;Merge-on-Write 解决了列更新和 Compaction 并发时列更新慢的问题,修复一次导入大量数据时,Segcompaction 可能导致 MOW 数据不正确的问题,解决 BE 重启后,可能导致列更新数据丢失的问题。
  • 数据导入:改进了导入发生 -238 错误时的错误信息提示;实现在 Restore 分区时,其他分区可以同时进行导入;优化了 Group Commit FE 选择 BE 的策略;对于一些常见的 Stream Load 错误信息,避免了程序栈的打印,简化了错误处理;改进下线的 BE 可能影响导入出错的问题。
  • 权限管理:优化了开启 Ranger 鉴权插件后的访问性能;优化了 Refresh Catalog / Database / Table 操作的权限策略,用户仅需 SHOW 权限即可执行此操作。

Bug 修复

  • 湖仓一体:修复切换 Catalog 时可能出现的数据库找不到问题;解决了读取 S3 上不存在的数据时出现的异常报错;修正导出操作时,指定异常路径可能导致导出位置异常的问题;修复 Paimon 表时间列时区问题;临时关闭 Parquet PageIndex 功能以避免部分错误行为;修复外表查询时,错误选取黑名单中 Backend 节点的问题;解决读取 Parquet Struct 列类型中缺失子列导致查询错误的问题;修复 JDBC Catalog 的谓词下推问题;修正 Parquet 格式读取时,历史格式导致查询结果错误的问题;增强了 Oracle JDBC Catalog 对 OJDBC6 驱动的兼容性。
  • 异步物化视图:修复无法在 Follower FE 上使用 show create materialized view 命令的问题;统一异步物化视图在元数据中的对象类型,使其在数据工具中正常显示;修复嵌套异步物化视图总是进行全量刷新的问题;修正 Cancel 任务在重启 FE 后状态可能显示为 running 的问题;修复错误使用上下文,导致刷新物化视图任务可能非预期失败的问题;修复基于外表创建异步物化视图时,VARCHAR 类型因长度不合理导致写入失败的问题。
  • 半结构化数据管理:删除老优化器上 PreparedStatement 的支持;修复 JSON 转义字符处理的问题;修复 JSON 字段重复处理的问题;修复部分 ARRAY MAP 函数的问题;修复倒排索引查询和 LIKE 查询复杂组合的问题。
  • 查询优化器:修复分区过滤条件中存在 or 时,可能导致分区裁剪错误的问题;修复存在复杂表达式时,可能导致的分区裁剪错误的问题;修复 AGG_STATE 类型中的子类型,Nullable 可能规划不正确导致执行报错的问题;修复 Set Operation 算子 Nullable 可能规划不正确,导致执行报错的问题;修复 Intersect 算子执行优先级不正确的问题;修复当查询中存在最大合法日期字面量时,可能出现 NPE 的问题;修复偶现的规划报错,导致的执行时报错 Slot 不合法的问题;修复重复引用 CTE 中的列,可能导致结果缺少部分列数据的问题;修复在查询中存在 CASE WHEN 时,偶现的规划报错问题;修复不能将 IP 类型隐式转换为 STRING 类型的问题。
  • 执行引擎:修复多个场景下,Pipeline 执行引擎被卡顿,导致查询不结束的问题;修复了 NULL 和非 NULL 列在差集计算时导致的 Coredump 问题;修复了 width_bucket 函数结果错误的问题;修复了当单行数据很大且返回结果集也很大时(超过 2GB)查询报错的问题;修复了 stddevDecimalV2 类型下结果错误的问题;修复了 MULTI_MATCH_ANY 函数导致的 Coredump 问题;修复了 INSERT OVERWRITE AUTO PARTITION 导致事务回滚的问题;修复了 convert_tz 函数结果错误的问题。
  • 权限管理:修复创建物化视图时,错误地要求拥有 ALTER TABLE 的权限的问题;修复 show routine load 时,Database 显式为空的问题;修复 create table like 错误的要求拥有对原表的创建权限的问题;修复赋权操作没有检查对象是否存在的问题。
  • 其它:修复并发导入 Auto Partition 表可能报 Tablet 不存在的问题;修复可能的 Load Stream 泄露问题;修复 INSERT INTO SELECT 没有数据时开启事务的问题;使用 Memtable 前移时忽略单副本导入的配置;修复后台导入 stream load record 遇见 Database 删除时异常中止的问题;修复 Strict Mode 模式下,出现数据错误时错误信息提示不准确的问题;修复 Stream Load 遇见错误数据不返回 Error URL 的问题。

Enterprise Core 2.1.5

发布日期:2024 年 7 月 25 日

行为变更

  • JDBC Catalog 的默认连接池大小从 10 调整为 30。
  • 创建 JDBC Catalog 时,参数connection_pool_max_size的默认值改为 30,以避免高并发场景下连接池耗尽的问题。
  • 将系统的保留内存的最小值,即low water mark调整为min (6.4G, MemTotal * 5%),以更好地防止 BE 出现 OOM 问题。
  • 修改了单请求多个语句的处理逻辑,当客户端未设置CLIENT_MULTI_STATEMENTS标志位时,将仅返回最后一个语句的结果,而非所有语句结果。
  • 不再允许直接更改异步物化视图的数据。
  • 增加会话变量use_max_length_of_varchar_in_ctas,用于控制 CTAS 时 VARCHAR 和 CHAR 类型长度的生成行为。默认值是 true。当设置为 false 时,使用推导出的 VARCHAR 长度,而不是使用最大长度。
  • 统计信息收集,默认开启了通过文件大小预估 Hive 表行数的功能。
  • 默认开启异步物化视图透明改写机制。
  • 透明改写利用分区物化视图,如果分物物化视图部分分区失效,默认行为是将所有基础表与物化视图联合,以保证查询数据的正确性。

新功能

  • 湖仓一体:会话变量read_csv_empty_line_as_null用于控制在读取 CSV 格式文件时,是否忽略空行。默认情况下忽略空行,当设置为 true 时,空行将被读取为所有列均为 Null 的行;新增兼容 Presto 的复杂类型输出格式。通过设置set serde_dialect="presto",可以控制复杂类型的输出格式 与 Presto 一致,用于平滑迁移 Presto 业务。
  • 多表物化视图:支持在构建物化视图中使用非确定性函数;支持原子替换异步物化视图定义;支持通过show create materialized view查看异步物化视图创建语句;支持对多维聚合查询的透明改写;支持对非聚合物化视图的聚合查询进行透明改写;支持使用 Key 列,对查询中的 DISTINCT 聚合做透明改写;支持对物化视图进行分区,通过使用date_trunc对分区进行汇总;支持分区表值函数(TVF)。
  • 半结构化数据分析:使用 VARIANT 类型的表支持部分列更新;支持默认开启 PreparedStatement;VARIANT 类型支持导出为 CSV 格式;支持explode_json_object函数,用于将 JSON Object 行转列;ES Catalog 将 ES 的 NESTED 或者 OBJECT 类型映射成 Doris JSON 类型;默认情况下,对于具有指定分词器的倒排索引,默认开启support_phrase以提升match_phrase系列查询性能。
  • 查询优化器:支持explain DELETE FROM语句;支持常量表达式参数的 Hint 形式。
  • 内存管理:增加了 HTTP API 以清除缓存。
  • 权限管理:支持对表值函数(TVF)中的资源进行鉴权。

改进提升

  • 湖仓一体:将 Paimon 升级至 0.8.1 版本;修复在部分情况下,查询 Paimon 表时导致org.apache.commons.lang.StringUtils的问题;支持腾讯云 LakeFS;优化了外部表查询时获取文件列表的超时时间;可通过会话变量fetch_splits_max_wait_time_ms进行设置;改进了 SQLServer JDBC Catalog 的默认连接逻辑;默认情况下,不干预连接加密设置。仅当force_sqlserver_jdbc_encrypt_false设置为true时,才会强制在 JDBC URL 中添加encrypt=false以减少认证错误,从而提供更灵活的控制加密行为的能力;Hive 表的 show create table 语句增加序列化/反序列化;FE 端 Hive 表列表默认缓存时间由 1 天改为 4 小时;数据导出(Export/Outfile)支持指定 Parquet 和 ORC 的压缩格式;当使用 CTAS+TVF 创建表时,TVF 中的分区列将被自动映射为 Varchar(65533)而非 String,以便该分区列能够作为内表的分区列使用;优化 Hive 写入操作元数据的访问次数;ES Catalog 支持将 NESTED/OBJECT 类型映射到 Doris 的 JSON 类型;优化使用低版本 OBJECT 驱动连接 Oracle 时的报错信息;当 Hudi 表 Incremental Read 返回空集时,Doris 同样返回空集而非报错;修复部分情况下内外表关联查询可能导致 FE 超时的问题;修复了在从旧版本升级到新版本时,如果开启了 Hive Metastore Even Listener 情况下,可能出现 FE 元数据回放错误的问题。
  • 多表物化视图:创建异步物化视图时,支持自动选择 Key 列;异步物化视图分区刷新支持定义中使用date_trunc函数;嵌套物化视图中,当下层命中聚合上卷改写后,上层现在依然可以继续进行透明改写;当 Schema Change 不影响异步物化视图数据正确性时,异步物化视图保持可用状态;提升了透明改写的规划速度;计算异步物化视图可用性时,不再考虑当前的刷新状态。
  • 半结构化数据管理:通过采样优化 DESC 查看 VARIANT 子列的性能;行存page_size默认从 4K 调到 16K 压缩率提升 30%,而且支持表级别可配置;JSON 类型支持 Key 为空的特殊 JSON 数据。
  • 倒排索引:减少倒排索引 Exists 调用避免对象存储访问延迟;优化倒排索引查询流程额外开销;在物化视图中不创建倒排索引。
  • 查询优化器:当比较表达式两侧都是 Literal 时,String Literal 会尝试向另一侧的类型转换;重构了 VARIANT 类型的子路径下推功能,现在可以更好地支持复杂的下推场景;优化了物化视图代价计算的逻辑,能够更准确的选择代价更低的物化视图;提升了 SQL 中使用用户变量时的 SQL 缓存规划速度;优化了 NOT NULL 表达式的估行逻辑,当查询中存在 NOT NULL 时可以获得更好的性能;优化了 LIKE 表达式的 NULL 拒绝推导逻辑;优化查询指定分区失败时的报错信息,可以更清楚看到是哪个表导致的问题。
  • 查询引擎:将某些场景下 BITMAP_UNION 算子的性能提升了 3 倍;提升 Arrow Flight 在 ARM 环境下的读取性能;优化了explodeexplode_mapexplode_json函数的执行性能。
  • 数据导入:支持为INSERT INTO ... FROM TABLE VALUE FUNCTION语句设置max_filter_ratio参数。

Bug 修复

  • 湖仓一体:修复部分情况下查询 Parquet 格式导致 BE 宕机的问题;修复查询 Parquet 格式,BE 端打印大量日志的问题;修复部分情况下 FE 端重复创建大量 FileSystem 对象、写入 Hive 后的事务信息未清理、Hive 表写入操作导致线程泄露、无法正确获取 Hive Text 格式行列分隔符、读取 lz4 压缩块时的并发、Iceberg 表 count(*) 返回错误、创建基于 MinIO 的 Paimon Catalog 导致 FE 元数据回放错误、使用 Ranger 创建 Catalog 客户端卡死的问题。
  • 多表物化视图:修复当基表增加新的分区时,可能导致的分区聚合上卷改写后结果错误的问题;修复关联的基表分区删除后,物化视图分区状态没有被置为不同步的问题;修复异步物化视图构建偶现的死锁问题;修复异步物化视图单次刷新大量分区时偶现的,报错 nereids cost too much time 问题;修复创建异步物化视图时,如果最终的 Select List 中存在 Null Literal,则无法创建的问题;修复单表物化视图,如果构建了聚合的物化视图,虽然改写成功,但是 CBO 没有选择的问题;修复 Join 输入都是聚合的情况下,构建分区物化视图,分区推导失败的问题。
  • 半结构化数据管理:修复 VARIANT 在并发/异常数据等特殊情况下的问题;修复 VARIANT 用在不支持的 SQL 中 Coredump 的问题;修复 1.x 版本升级到 2.x 或者更高版本时因为 MAP 数据类型 Coredump 的问题;修复 ES Catalog 对 Array 的支持。
  • 倒排索引:修复倒排索引 v2 DROP INDEX 元数据没有删除的问题;修复字符串长度超过“ignore above”时查询准确性问题;修复索引大小统计的问题。
  • 查询优化器:修复部分因为保留关键字而导致导入无法执行的问题;修复了在创建表时 CHAR(255) 类型错误的记录为 CHAR(1) 的问题;修复了在相关子查询中的连接表达式为复杂表达式时返回错误结果的问题;修复了 DECIMAL 类型分桶裁剪有可能错误的问题;修复了部分场景下开启 Pipeline Local Shuffle 后,聚合算子计算结果错误的问题;修复当聚合算子中存在相等的表达式时,可能出现的规划报错问题;修复当聚合算子中存在 Lambda 表达式时,可能出现的规划报错问题;修复了由窗口函数生成的字面量在优化为字面量时类型错误导致无法执行的问题;修复了聚合函数 foreach combinator 错误输出 Null 属性问题;修复了 acos 函数在参数为超越范围值的字面量时不能规划的问题;修复当查询指定的同步物化视图时,显示指定查询分区导致规划报错的问题;修复了在规划过程中偶尔出现 NPE 的问题。
  • 查询引擎:修复 DELETE WHERE 语句中,在 DECIMAL 数据类型作为条件报错的问题;修复查询执行结束,但是 BE 内存不释放的问题;修复在千级别 QPS 场景下,Audit Log 占用 FE 内存太多的问题;修复 sleep 函数在输入非法值时 BE Core 的问题;修复执行过程中 sync filter size meet error、使用时区时结果不对的问题;修复 cast string 到 int 时结果不对的问题;修复 Arrow Flight 协议在开启 Pipelinex 时查询报错的问题;修复 cast string to date/datetime 报错的问题;修复使用 <=> 做大表关联查询时 BE Core 的问题。
  • 存储管理:修复列更新写入时遇到 DELETE SIGN 数据不可见问题;优化 Schema Change 期间 FE 的内存占用;修复 BE 重启时事务没有 Abort 导致的 BE 下线卡住问题;修复 NOT-NULL 到 NULL 类型变更的偶发报错问题;优化 BE 宕机时的副本修复调度;单个 BE 创建 Tablet 时支持 round-robin 选择磁盘;修复 Publish 慢导致的查询 -230 错误;优化 Partition Balance 的速度;使用 FD 数目和内存控制 Segment Cache 避免 FD 不足;修复 Clone 和 Alter 并发可能导致的副本丢失问题;修复不能调整列顺序问题;禁止自增列的部分 Schema Change 操作;修复 Delete 操作报错不准确;BE 侧 Trash 过期时间调整为一天;优化 Compaction 内存占用和调度;检查潜在的过大 Backup 导致 FE 重启的问题;恢复动态分区删除策略以及交叉分区的行为到 2.1.3;修复 DELETE 谓词重部分 DECIMAL 报错问题。
  • 数据导入:修复导入时错误处理竞争导致的数据不可见问题;Stream Load 导入支持 hhl_from_base64;修复潜在的单表非常多 Tablet 导入失败时可能导致 FE OOM 的问题;修复 FE 主从切换时自增列可能重复的问题;修复 INSERT INTO SELECT 自增列报错问题;降低数据下刷线程数,优化内存占用;优化 Routine Load 任务自动恢复和错误信息;增加 Routine Load 默认攒批大小;修复 Routine Load 在 Kafka EOF 过期的任务停止问题;修复一流多表 Coredump;修复 Group Commit 内存估计不准导致的提前反压问题;优化 Group Commit BE 侧线程占用;修复数据没有分区时没有错误 URL 的问题;修复导入时潜在的内存误操作问题。
  • 主键模型:降低主键表 Compaction 的内存占用;修复主键副本 Clone 失败时可能的重复数据问题。
  • 内存管理:修复 Jemalloc Cache 统计不准的问题;修复在 K8s / CGroup 中不能正确获取内存大小的问题。
  • 权限管理:修复 Table Valued Function 引用 Resource 时没有鉴权的问题;修复 Show Role 语句中没有 Workload Group 权限的问题;修复创建 Row Policy 时,同时执行两条语句,导致 FE 重启失败的问题;修复部分情况下,老版本升级后,因为 Row Policy 导致 FE 元数据回放失败的问题。
  • 其他:修复计算节点参与内部表创建的问题;修复 enable_strong_read_consistency = true 时从延迟问题。

Enterprise Core 2.1.4

发布日期:2024 年 6 月 26 日

  • 查询优化器支持 FE 火焰图工具、SELECT DISTINCT 与聚合函数同时使用、无 GROUP BY 的单表查询重写及高并发点查询功能。
  • 湖仓一体支持 Paimon 的原生读取器来处理 Deletion Vector、在表值函数(TVF)中使用 Resource及通过 Ranger 插件实现数据脱敏。
  • 异步物化视图构建支持分区上卷、触发式更新、指定 store_row_column及Storage Medium,透明改写支持单表异步物化视图及AGG_STATE 类型的聚合上卷。
  • 其他功能支持,包括新增 replace_empty 函数、支持 show storage policy using 语句及 BE 侧的 JVM 指标。
  • 进行了多项功能优化,包括优化 Segment Cache 所消耗内存的估算准确度、支持为中文列名创建倒排索引等。
  • 对查询优化器、查询执行、物化试图、半结构化数据分析等多方面进行了问题修复。

Enterprise Core 2.1.3

发布日期:2024 年 5 月 17 日

  • 支持INSERT INTO Hive Catalog 中的 hive 表。
  • 添加视图显示语句以查询视图。
  • 工作负载组支持绑定到特定的 BE 主机。
  • Broker Load 支持压缩的 JSON 格式。
  • 截断函数可以使用列作为比例参数。
  • 支持 mv 嵌套物化视图重写。
  • 添加 BypassWorkloadGroup 以传递查询队列。
  • 添加添加新函数 uuid_to_int、int_to_uuid 和 strcmp,支持hll函数hll_from_base64、hll_to_base64。
  • 支持Variant类型的聚合模型。

Enterprise Core 2.1.2

发布日期:2024 年 4 月 18 日

  • 增加 processlist 系统表功能,用户可以通过查询系统表获得活跃的链接信息。
  • 增加新的表函数 LOCAL 以访问部分共享存储上的文件。
  • 将 EXPORT 命令中 data_consistence 属性的默认值调整为 Partition,这可以使得并发导入的同时做 EXPORT 操作更容易成功。
  • 兼容部分 MySQL Connector(如 MySQL.Data for .NET)将 SELECT @``@autocommit 的返回值类型变更为 BIGINT。
  • 修复正常 Workload Group 从 2.0 或者更早版本升级到 2.1 时没有默认创建的问题。
  • 在 Profile 中增加已命中的物化视图信息,能够方便地定位物化视图是否命中。
  • 增加 DNS Cache,解决 K8s 环境下域名解析较慢,从而影响查询的问题。
  • 增加异步刷新 Catalog 中表的行数信息,避免查询抖动。

Enterprise Core 2.1.1

发布日期:2024 年 4 月 8 日

  • 改变 Float 类型字段返回值序列化的方式,提升大数据量下 Float 返回的性能。
  • 修复了从 2.0.x 滚动升级至 2.1.x 的过程中,部分 BE 节点升级出现 Core 的问题及使用 JDBC Catalog 会出现 Query 报错的问题。
  • 支持 IP 透传的协议,以方便在 FE 之前启用代理的同时还能获取客户端准确的 IP 地址,实现白名单权限控制。
  • 增加系统表 backend_active_tasks ,以实时监测每个 BE 上活跃任务以及消耗的资源信息。
  • CCR 支持倒排索引。
  • Arrow 序列化方式增加对 Variant 类型的支持。
  • 修复包括在 Restore 过程中 BE 有时候会 Core 在内的 20 项 bug 。

Enterprise Core 2.1.0

发布日期:2024 年 3 月 18 日

  • 复杂 SQL 查询性能的进一步提升,在 TPC-DS 1TB 测试数据集上获得超过 100% 的性能提升,查询性能居于业界领先地位。
  • 数据湖分析场景性能改进、相对于 Trino 和 Spark 分别有 4-6 倍的性能提升,并引入了多 SQL 方言兼容、便于用户可以从原有系统无缝切换至 Apache Doris。在面向数据科学以及其他形式的大规模数据读取场景,引入了基于 Arrow Flight 的高速读取接口,数据传输效率提升 100 倍。
  • 在半结构化数据分析场景,引入了全新的 Variant 和 IP 数据类型,完善了一系列分析函数,面向复杂半结构化数据的存储和分析处理更加得心应手。
  • 引入基于多表的异步物化视图以提升查询性能,支持透明改写加速、自动刷新、外表到内表的物化视图以及物化视图直查,基于这一能力物化视图也可用于数据仓库分层建模、作业调度和数据加工。
  • 在数据存储方面,引入了自增列、自动分区、MemTable 前移以及服务端攒批的能力,提高大规模数据实时写入的效率。
  • 在负载管理方面,进一步完善了 Workload Group 资源组的隔离能力,并增加了运行时查看 SQL 资源用量的能力,进一步提升了多负载场景下的稳定性。

Enterprise Core 2.0.x

Enterprise Core 2.0.14

发布日期:2024 年 8 月 8 日

  • 增加获取最近一个查询 Profile 的 REST 接口 curl http://user:password@127.0.0.1:8030/api/profile/text
  • 优化 MOW 表带有 Sequence 列的主键点查性能。
  • 优化倒排索引在查询条件很多时的性能。
  • 创建带分词的倒排索引时,自动开启 support_phrase 选项加速 match_phrase 系列短语查询。
  • 支持简化的 SQL Hint,例如 SELECT /*+ query_timeout(3000) */ * FROM t 。
  • 读对象存储遇到 429 错误时自动重试提升稳定性。
  • LEFT SEMI / ANTI JOIN 在匹配到符合的数据行时,终止后续的匹配执行提升性能。
  • 避免非法数据返回 MySQL 结果时出发 coredump。
  • 输出类型名字时统一使用小写,保持跟 MySQL 兼容对 BI 工具更加友好。

Enterprise Core 2.0.13

发布日期:2024 年 7 月 23 日

  • 仅在客户端设置 CLIENT_MULTI_STATEMENTS 时,将输入的 SQL 视为多个语句处理,以增强与 MySQL 的兼容性。
  • 新增 BE 配置 allow_zero_date,允许使用全零的日期。设置为false0000-00-00被解析成NULL,设置为true时则被解析成0000-01-01, 默认值为false,跟之前的行为保持一致。
  • LogicalWindow 和 LogicalPartitionTopN 允许多字段谓词下推,以提升性能。
  • ES Catalog 将 ES nested或者object类型映射成 Doris JSON类型。
  • LIMIT 查询现在会更早地停止读取数据,以减少资源消耗并提升性能。
  • 支持具有空键的特殊 JSON 数据。
  • routine load 的稳定性和易用性提升,包括负载均衡,自动恢复,异常处理,更友好的错误信息等。
  • 对 BE 的硬盘选择策略和速度进行了优化。
  • 改进了 JDBC Catalog 的稳定性和可用性,包括加密,线程池连接数等配置,更友好的错误信息等。

Enterprise Core 2.0.12

发布日期:2024 年 7 月 1 日

  • 不再将建表的默认注释设置为表的类型,而是改成默认为空,比如 COMMENT 'OLAP' 变成 COMMENT '',这样对于依赖注释的 BI 软件更加友好。
  • 将 autocommit 变量的类型从 BOOLEAN 改成 BIGINT,以免有些 mysql 客户端(比如.NET MySQL.Data)报错
  • 删除 disable_nested_complex_type 参数,默认允许创建嵌套的 ARRAY MAP STRUCT 类型
  • HMS catalog 支持 SHOW CREATE DATABASE 命令
  • 在 query profile 中增加更多倒排索引的指标
  • 跨集群数据复制(CCR)支持倒排索引

Enterprise Core 2.0.11

发布日期:2024 年 6 月 7 日

  • 为 JSON 和 TIME 添加 Trino JDBC catalog 类型映射
  • 在无法转移到(非)主节点时,FE 退出以防止未知状态和过多日志
  • 在删除统计表时写入审计日志
  • 如果表只进行了部分分析,忽略最小/最大列统计以避免低效的查询计划
  • 支持集合操作减法,例如set1 - set2
  • 使用 concat(col, pattern_str) 改进 LIKE 和 REGEXP 子句的性能,例如:col1 LIKE concat('%', col2, '%')
  • 添加查询选项以支持短路查询,保证升级兼容性
  • 由于倒排索引已经成熟稳定,可以替换老的 BITMAP INDEX,因此后续新建 BITMAP INDEX 会自动切换成 INVERTED INDEX,而已经创建的 BITMAP INDEX 保持不变。整个切换过程对用户无感知,写入和查询没有变化,此外用户可以修改 FE 配置 enable_create_bitmap_index_as_inverted_index = false 来关闭该自动切换

Enterprise Core 2.0.10

发布日期:2024 年 5 月 20 日

  • 增加了read_onlysuper_read_only 变量以保持和 MySQL 兼容
  • 仅在 IO_ERROR 的错误才把数据目录加入 broken list,防止 fd 超限等错误导致误加入
  • 基于外表 CTAS 创建新表时,把 varchar 类型转成 string 类型
  • 支持把 Paimon 的 Row 类型映射成 Doris 的 Struct 类型
  • 在创建 tablet 选择数据盘时,允许存在少量的倾斜
  • set replica drop命令记录 editlog,以防止在 follower 节点执行命令后,其状态显示不正确
  • schema change 内存自适应避免内存超限
  • 倒排索引中 unicode 分词器可以配置不使用停用词

Enterprise Core 2.0.9

发布日期:2024 年 4 月 24 日

  • 物化视图的 key 和 value 列都允许出现谓词
  • 物化视图支持 bitmap_union(bitmap_from_array())
  • 增加一个 fe 配置强制集群中所有表的 replicate allocation
  • 新优化器支持日期字面量指定时区
  • MATCH_PHRASE 全文检索支持 slop 参数指定搜索词之间的距离
  • first_value/last_value 函数增加第二个参数指定忽略 NULL 值
  • lead/lag function 的offset 参数可以为 0
  • 调整物化视图匹配的顺序优先利用索引和预聚合加速查询

Enterprise Core 2.0.8

发布日期:2024 年 4 月 12 日

  • 新优化器支持 TopN 优化中使用倒排索引
  • 限制统计信息 STRING 长度为 1024 以控制 BE 内存消耗
  • 修复未创建 JDBC Client 时意外关闭的情况
  • 接受所有 Iceberg Database,不再做额外的名字检查
  • 异步更新外表行数统计,避免同步更新带来的 Cache miss 和 Plan 不稳定
  • 简化 Hive 外表的 isSplitable 方法,避免过多的 Hadoop metric

Enterprise Core 2.0.7

发布日期:2024 年 3 月 26 日

  • round 函数行为及时间精度转换行为跟 MySQL 保持一致
  • 支持通过 Nginx, HAProxy 等代理连接的 IP 透传
  • 通过在 information_schema 中增加 DEFAULT_ENCRYPTION 列、增加 processlist 表,提升 BI 工具的兼容性
  • 创建 JDBC Catalog 时默认自动检测连通性
  • 增强自动恢复提升 kafka routine load 的稳定性
  • 倒排索引中文分词对英文默认做小写转换
  • repeat 函数的重复次数超过限制时报错
  • 自动跳过 Hive 外表中的隐藏文件和目录
  • 在某些极端情况下减少 file meta cache 避免 OOM
  • 减少 broker load 的 jvm 内存占用
  • 加速带排序的 INSERT INTO SELECT 比如 INSERT INTO t1 SELECT * FROM t2 ORDER BY k

Enterprise Core 2.0.6

发布日期:2024 年 3 月 14 日

  • 自动选择物化视图时支持匹配带别名的函数
  • 增加安全下线一个 tablet 副本的命令
  • 外表统计信息增加行数统计缓存
  • 统计信息收集支持 rollup
  • 使用 protobuf 稳定序列化减少 tablet schema 缓存内存占用
  • 提升 show column stats 的性能
  • 统计信息收集和优化器支持 iceberg 和 paimon 的行数估计
  • jdbc catalog 支持读取 SQL Server 的 timestamp 类型

Enterprise Core 2.0.5

发布日期:2024 年 2 月 28 日

  • 增加 SHOW TABLETS BELONG 语法用于获取 tablet 属于哪个 table。
  • InferPredicates 支持 IN,例如:a = b & a in [1, 2] -> b in [1, 2]。
  • 利用过滤条件中的 is null 谓词,将 outer join 转换为 anti join。
  • 支持对物化视图收集统计信息,并对统计信息收集任务优化,停止 auto analyze 后尽快停止统计收集。
  • SHOW PROCESSLIST 支持输出连接对应的 fe。
  • export 导出 csv 文件支持通过 with_bom 参数控制是否带有 Windows BOM。
  • Query plan 优化,包含在无统计信息时的优化和基于 rollup 的统计信息的优化。
  • 修复 MySQL catalog 中 to_date 函数下推的问题。
  • 优化 JDBC 客户端连接关闭的逻辑,在异常时正常取消查询。
  • 优化 routine load 的内存占用和错误信息。

Enterprise Core 2.0.4

发布日期:2024 年 1 月 26 日

  • 新优化器支持 datev1, datetimev1 和 decimalv2 数据类型以及 ODBC 外表,自动统计信息收集的可观测性和性能优化。
  • 倒排索引支持 lower_case 和 ignore_above 选项以及 match_regexp 和 match_phrase_prefix 查询加速。
  • 数据湖支持 paimon native reader 以及读取 lzo 压缩的 parquet 文件。
  • 审计日志支持 insert into。
  • 更加合理、精确的 precision 和 scale 的推导,满足金融场景的计算需求。
  • drop policy 支持 user 和 role。
  • 改进数据冷却策略以及数据均衡、迁移等存储管控部分,节省本地硬盘存储空间。
  • ASCII 字符串 substr 优化及使用 date 函数时分区裁剪优化。

Enterprise Core 2.0.3

发布日期:2023 年 12 月 8 日

  • 支持自动统计信息收集,通过收集统计信息有助于优化器了解数据分布特性,选择更优的计划以大幅提升查询效率。从2.0.3版本开始正式支持,默认为全天开启状态。
  • 数据湖支持 JAVA UDF、JDBC、Hudi MOR 更多系统支持复杂数据类型。
  • CCR跨集群复制支持限速、truncate table等增强。
  • 增加SHA、JSON更多内置函数。
  • 倒排索引、case when、谓词下推等20多项性能提升。
  • 分布式副本管理改进,包括跳过删除分区,colocate group ,持续写时均衡失败,冷热分层表不能均衡等。
  • 复杂数据类型、倒排索引、物化视图、导入和compaction、数据湖兼容性、SQL规划等稳定性提升。

Enterprise Core 2.0.2

发布日期:2023 年 10 月 8 日

  • 易用性提升,包括优化优先级网络匹配逻辑、行级别支持角色授权等。
  • 新优化器 Nereids 统计数据收集改进,包括运行分析任务时取消文件缓存、支持基本的 jdbc 外部表统计信息收集等。
  • 倒排索引查询性能优化及增强,包括增加 bkd 索引提升新能、优化多词连接查询等。
  • 数据湖 multi-catalog 更友好支持多类型数据源,包括jdbc、hdfs、hive、mysql、maxcompute等。
  • 数组函数优化,array_union 支持多参数。

Enterprise Core 2.0.1

发布日期:2023 年 9 月 10 日

  • 完善了 array 和 map 复杂数据类型的功能和稳定性,包括内表复杂类型嵌套、外表嵌套 orc/parquet 等。
  • 倒排索引查询性能提升,包括分词、数值处理、谓词下推等。
  • 查询性能提升,包括 bitmap, like, scan, 聚合函数等。
  • 跨集群复制 CCR 功能和稳定性完善。
  • 查询优化器统计信息收集更加快速和准确,提升自动查询优化效果。
  • 数据湖 multi-catalog 功能和性能增强,包括 iceberg 性能优化、复杂数据类型等。

Enterprise Core 1.2.x

Enterprise Core 1.2.8

发布日期:2023 年 9 月 5 日

  • 修复若干 decimal 相关的问题。
  • 修复 show tables 无法显示拥有 select 权限的表。
  • 修复副本调度相关的问题。
  • 修复若干查询规划问题。
  • 修复某些情况下,BE 进程文件句柄泄漏的问题。
  • 修复某些情况下,建表超时的问题。
  • 修复读取 ORC 格式文件错误的问题。
  • 修复 Broker 关闭 FileSystem 导致读取错误的问题。
  • 优化 Auto Bucket 的副本大小计算逻辑。
  • 修复某些情况下,Spark Load 空指针异常问题。
© 2023 北京飞轮数据科技有限公司 京ICP备2022004029号 | Apache、Apache Doris 以及相关开源项目名称均为 Apache 基金会商标