跳到主要内容
跳到主要内容

2019 年更新日志

ClickHouse Release 19.17

ClickHouse Release 19.17.6.36, 2019-12-27

Bug 修复

  • 修复了解压缩中潜在的缓冲区溢出。恶意用户可以传递伪造的压缩数据,可能导致缓冲区后读取。此问题由 Yandex 信息安全团队的 Eldar Zaitov 发现。#8404 (alexey-milovidov)
  • 修复了在服务器无法发送或写入具有 String 数据类型值(需要 UTF-8 验证)的 JSON 或 XML 格式数据,或者使用 Brotli 算法压缩结果数据,或在某些其他罕见情况下,可能导致服务器崩溃 (std::terminate) 的问题。#8384 (alexey-milovidov)
  • 修复了源自 clickhouse VIEW 的字典,现在读取此类字典不会导致错误 There is no query#8351 (Nikolai Kochetov)
  • 修复了检查客户端主机是否被 users.xml 中指定的 host_regexp 允许的问题。#8241, #8342 (Vitaly Baranov)
  • 分布式表的 RENAME TABLE 现在会在发送到分片之前重命名包含插入数据的文件夹。这修复了连续重命名 tableA->tableB, tableC->tableA 的问题。#8306 (tavplubix)
  • 由 DDL 查询创建的 range_hashed 外部字典现在允许任意数字类型的范围。#8275 (alesapin)
  • 修复了 INSERT INTO table SELECT ... FROM mysql(...) 表函数。#8234 (tavplubix)
  • 修复了在插入到不存在的文件时,INSERT INTO TABLE FUNCTION file() 中的段错误。现在在这种情况下,文件将被创建,然后处理插入。#8177 (Olga Khvostikova)
  • 修复了当聚合位图与标量位图相交时的 bitmapAnd 错误。#8082 (Yue Huang)
  • 修复了当 EXISTS 查询在没有 TABLEDICTIONARY 限定符的情况下使用时(例如 EXISTS t)发生的段错误。#8213 (alexey-milovidov)
  • 修复了可空参数情况下函数 randrandConstant 的返回类型。现在函数始终返回 UInt32,而不是 Nullable(UInt32)#8204 (Nikolai Kochetov)
  • 修复了 DROP DICTIONARY IF EXISTS db.dict,现在如果 db 不存在,它不会抛出异常。#8185 (Vitaly Baranov)
  • 如果表由于服务器崩溃而未完全删除,服务器将尝试恢复和加载它。#8176 (tavplubix)
  • 修复了如果分片本地表超过两个的分布式表的简单计数查询。#8164 (小路)
  • 修复了导致 DB::BlockStreamProfileInfo::calculateRowsBeforeLimit() 中数据竞争的错误。#8143 (Alexander Kazakov)
  • 修复了在合并指定 part 后立即执行 ALTER table MOVE part,这可能导致移动指定 part 合并到的 part。现在它会正确移动指定的 part。#8104 (Vladimir Chebotarev)
  • 字典的表达式现在可以指定为字符串。这对于从非 ClickHouse 源提取数据时计算属性非常有用,因为它允许对这些表达式使用非 ClickHouse 语法。#8098 (alesapin)
  • 修复了由于 ZXid 溢出导致 clickhouse-copier 中非常罕见的竞争。#8088 (Ding Xiang Fei)
  • 修复了查询失败后(例如由于“同时查询过多”),不会读取外部表信息,并且下一个请求会将此信息解释为下一个查询的开始,从而导致类似 Unknown packet from client 的错误。#8084 (Azat Khuzhin)
  • 避免在 "Unknown packet X from server" 之后出现空指针解引用。#8071 (Azat Khuzhin)
  • 恢复对所有 ICU 区域设置的支持,添加对常量表达式应用排序规则的能力,并将语言名称添加到 system.collations 表。#8051 (alesapin)
  • 现在限制了从 StorageFileStorageHDFS 读取的流的数量,以避免超出内存限制。#7981 (alesapin)
  • 修复了没有键的 *MergeTree 表的 CHECK TABLE 查询。#7979 (alesapin)
  • 如果不存在 mutation,则从 part 名称中删除 mutation 编号。此删除改进了与旧版本的兼容性。#8250 (alesapin)
  • 修复了由于某些附加 part 的 data_version 大于表 mutation 版本而跳过这些 part 的 mutation 的错误。#7812 (Zhichang Yu)
  • 允许在将 part 移动到另一个设备后,使用冗余 part 副本启动服务器。#7810 (Vladimir Chebotarev)
  • 修复了使用聚合函数列时可能出现的错误 "Sizes of columns does not match"。#7790 (Boris Granveaud)
  • 现在,如果将 WITH TIES 与 LIMIT BY 一起使用,将抛出异常。现在可以将 TOP 与 LIMIT BY 一起使用。#7637 (Nikita Mikhaylov)
  • 修复了字典重新加载,如果它有 invalidate_query,它会停止更新以及之前更新尝试的一些异常。#8029 (alesapin)

ClickHouse Release 19.17.4.11, 2019-11-22

向后不兼容的变更

  • 使用列而不是 AST 来存储标量子查询结果,以获得更好的性能。设置 enable_scalar_subquery_optimization 在 19.17 中添加,默认启用。它导致了类似 this 的错误,在从以前版本升级到 19.17.2 或 19.17.3 期间。此设置在 19.17.4 中默认禁用,以便可以从 19.16 和更旧版本升级而不会出错。#7392 (Amos Bird)

新功能

  • 添加了使用 DDL 查询创建字典的功能。#7360 (alesapin)
  • 使 bloom_filter 类型的索引支持 LowCardinalityNullable #7363 #7561 (Nikolai Kochetov)
  • 添加函数 isValidJSON 以检查传递的字符串是否为有效的 json。#5910 #7293 (Vdimir)
  • 实现了 arrayCompact 函数。#7328 (Memo)
  • 为 Decimal 数字创建了函数 hex。它的工作方式类似于 hex(reinterpretAsString()),但不删除最后的零字节。#7355 (Mikhail Korotov)
  • 添加了 arrayFillarrayReverseFill 函数,它们用数组前面/后面的其他元素替换元素。#7380 (hcz)
  • 添加 CRC32IEEE()/CRC64() 支持。#7480 (Azat Khuzhin)
  • 实现了类似于 mysql 中的 char 函数。#7486 (sundyli)
  • 添加了 bitmapTransform 函数。它将位图中值的数组转换为另一个值的数组,结果是一个新的位图。#7598 (Zhichang Yu)
  • 实现了 javaHashUTF16LE() 函数。#7651 (achimbab)
  • 为 Distributed 引擎添加了 _shard_num 虚拟列。#7624 (Azat Khuzhin)

实验性功能

Bug 修复

  • 修复了 Values 中不正确的浮点数解析。#7817 #7870 (tavplubix)
  • 修复了启用 trace_log 时可能发生的罕见死锁。#7838 (filimonov)
  • 防止 Kafka 表生成任何从中选择数据的 MV 时消息重复。#7265 (Ivan)
  • 支持 IN 中的 Array(LowCardinality(Nullable(String)))。解决了 #7364 #7366 (achimbab)
  • 在 ODBC Bridge 中添加了对 SQL_TINYINTSQL_BIGINT 的处理,并修复了对 SQL_FLOAT 数据源类型的处理。#7491 (Denis Glazachev)
  • 修复了空 decimal 列上的聚合(avg 和分位数)。#7431 (Andrey Konyaev)
  • 修复了 INSERT 到带有 MATERIALIZED 列的 Distributed 表。#7377 (Azat Khuzhin)
  • 使 MOVE PARTITION 在分区的一些 part 已经在目标磁盘或卷上时工作。#7434 (Vladimir Chebotarev)
  • 修复了在多磁盘配置中,ReplicatedMergeTree 中 mutation 期间硬链接创建失败的错误。#7558 (Vladimir Chebotarev)
  • 修复了 MergeTree 上 mutation 的错误,当整个 part 保持不变并且在另一个磁盘上找到最佳空间时。#7602 (Vladimir Chebotarev)
  • 修复了 keep_free_space_ratio 未从磁盘配置中读取的错误。#7645 (Vladimir Chebotarev)
  • 修复了表仅包含 Tuple 列或具有复杂路径的列的错误。修复了 7541#7545 (alesapin)
  • 在 max_memory_usage 限制中不考虑 Buffer 引擎的内存。#7552 (Azat Khuzhin)
  • 修复了按 tuple() 排序的 MergeTree 表中的最终标记使用。在极少数情况下,它可能导致在选择时出现 Can't adjust last granule 错误。#7639 (Anton Popov)
  • 修复了具有需要上下文的动作(例如 json 函数)的谓词的 mutation 中的错误,这可能导致崩溃或奇怪的异常。#7664 (alesapin)
  • 修复了 data/shadow/ 目录中数据库和表名称转义不匹配的问题。#7575 (Alexander Burmak)
  • 支持 RIGHT|FULL JOIN 中的重复键,例如 ON t.x = u.x AND t.x = u.y。修复了这种情况下的崩溃。#7586 (Artem Zuikov)
  • 修复了在使用 RIGHT 或 FULL JOIN 连接表达式时出现的 Not found column <expression> in block 错误。#7641 (Artem Zuikov)
  • 再次尝试修复 PrettySpace 格式中的无限循环。#7591 (Olga Khvostikova)
  • 修复了当所有参数都是相同大小的 FixedStringconcat 函数中的错误。#7635 (alesapin)
  • 修复了在使用 1 个参数定义 S3、URL 和 HDFS 存储时出现的异常。#7618 (Vladimir Chebotarev)
  • 修复了带有 query 的视图的 InterpreterSelectQuery 的作用域。#7601 (Azat Khuzhin)

改进

  • ODBC-bridge 正确识别 Nullable 列并处理 NULL 值。#7402 (Vasily Nemkov)
  • 原子性地写入分布式发送的当前批次。#7600 (Azat Khuzhin)
  • 如果无法检测查询中列名的表,则抛出异常。#7358 (Artem Zuikov)
  • merge_max_block_size 设置添加到 MergeTreeSettings#7412 (Artem Zuikov)
  • 带有 HAVING 但没有 GROUP BY 的查询假定按常量分组。因此,SELECT 1 HAVING 1 现在返回结果。#7496 (Amos Bird)
  • 支持将 (X,) 解析为类似于 python 的元组。#7501, #7562 (Amos Bird)
  • 使 range 函数的行为几乎像 pythonic 那样。#7518 (sundyli)
  • constraints 列添加到表 system.settings#7553 (Vitaly Baranov)
  • 改进了 tcp 处理程序的 Null 格式,因此可以使用 select ignore(<expression>) from table format Null 通过 clickhouse-client 进行性能测量。#7606 (Amos Bird)
  • CREATE TABLE ... AS (SELECT (1, 2)) 这样的查询被正确解析。#7542 (hcz)

性能改进

构建/测试/打包改进

  • 增加对交叉编译到 CPU 架构 AARCH64 的支持。重构打包脚本。 #7370 #7539 (Ivan)
  • 在构建包时,将 darwin-x86_64 和 linux-aarch64 工具链解压到挂载的 Docker 卷中 #7534 (Ivan)
  • 更新二进制打包器的 Docker 镜像 #7474 (Ivan)
  • 修复了 macOS Catalina 上的编译错误 #7585 (Ernest Poletaev)
  • 查询分析逻辑中的一些重构:将复杂的类拆分为几个简单的类。 #7454 (Artem Zuikov)
  • 修复了不带子模块的构建 #7295 (proller)
  • 改进了 CMake 文件中的 add_globs #7418 (Amos Bird)
  • 移除 unwind 目标中的硬编码路径 #7460 (Konstantin Podshumok)
  • 允许在不使用 SSL 的情况下使用 mysql 格式 #7524 (proller)

其他

ClickHouse 19.16 版本

ClickHouse 19.16.14.65 版本,2020-03-25

  • 修复了在多个参数(超过 10 个)上批量计算三元逻辑运算中的一个错误。 #8718 (Alexander Kazakov) 此错误修复已根据 Altinity 的特殊请求反向移植到 19.16 版本。

ClickHouse 19.16.14.65 版本,2020-03-05

  • 修复了分布式子查询与旧版本 CH 的不兼容性。修复了 #7851 (tabplubix)
  • 当执行 CREATE 查询时,折叠存储引擎参数中的常量表达式。用当前数据库替换空数据库名称。修复了 #6508, #3492。同时修复了 ClickHouseDictionarySource 中对本地地址的检查。 #9262 (tabplubix)
  • 现在 *MergeTree 表引擎系列中的后台合并更准确地保留存储策略卷顺序。 #8549 (Vladimir Chebotarev)
  • 防止在读取后缀后但在提交前发生异常的罕见情况下丢失 Kafka 中的数据。修复了 #9378。相关: #7175 #9507 (filimonov)
  • 修复了尝试使用/删除使用错误参数创建的 Kafka 表时导致服务器终止的错误。修复了 #9494。包含 #9507#9513 (filimonov)
  • 允许将 MaterializedViewKafka 表之上的子查询一起使用。 #8197 (filimonov)

新功能

  • 添加 deduplicate_blocks_in_dependent_materialized_views 选项,以控制对包含物化视图的表执行幂等插入的行为。此新功能是根据 Altinity 的特殊请求添加到错误修复版本中的。 #9070 (urykhy)

ClickHouse 19.16.2.2 版本,2019-10-30

向后不兼容的变更

  • 为 count/countIf 添加缺失的参数个数验证。 #7095 #7298 (Vdimir)
  • 移除旧的 asterisk_left_columns_only 设置(默认情况下已禁用)。 #7335 (Artem Zuikov)
  • Template 数据格式的格式化字符串现在在文件中指定。 #7118 (tavplubix)

新功能

  • 引入 uniqCombined64() 以计算大于 UINT_MAX 的基数。 #7213, #7222 (Azat Khuzhin)
  • 支持 Array 列上的 Bloom 过滤器索引。 #6984 (achimbab)
  • 添加一个函数 getMacro(name),该函数返回一个字符串,其中包含服务器配置中相应 <macros> 的值。 #7240 (alexey-milovidov)
  • 为基于 HTTP 源的字典设置两个配置选项:credentialshttp-headers#7092 (Guillaume Tassery)
  • 添加一个新的 ProfileEvent Merge,用于计算启动的后台合并的数量。 #7093 (Mikhail Korotov)
  • 添加 fullHostName 函数,该函数返回完全限定域名。 #7263 #7291 (sundyli)
  • 添加函数 arraySplitarrayReverseSplit,它们通过“切断”条件来分割数组。它们在时间序列处理中很有用。 #7294 (hcz)
  • 添加返回 multiMatch 函数族中所有匹配索引数组的新函数。 #7299 (Danila Kutenin)
  • 添加一个新的数据库引擎 Lazy,该引擎针对存储大量小型 -Log 表进行了优化。 #7171 (Nikita Vasilev)
  • 为 bitmap 列添加聚合函数 groupBitmapAnd、-Or、-Xor。 #7109 (Zhichang Yu)
  • 添加聚合函数组合器 -OrNull 和 -OrDefault,当没有聚合内容时,它们返回 null 或默认值。 #7331 (hcz)
  • 引入 CustomSeparated 数据格式,该格式支持自定义转义和分隔符规则。 #7118 (tavplubix)
  • 支持 Redis 作为外部字典的来源。 #4361 #6962 (comunodi, Anton Popov)

Bug 修复

  • 修复了如果查询具有 WHERE IN (SELECT ...) 部分并且使用了 optimize_read_in_order 时,查询结果错误的问题。 #7371 (Anton Popov)
  • 禁用了 MariaDB 身份验证插件,该插件依赖于项目外部的文件。 #7140 (Yuriy Baranov)
  • 修复了当使用函数 now()today()yesterday()randConstant() 时,可能极少发生的异常 Cannot convert column ... because it is constant but values of constants are different in source and result#7156 (Nikolai Kochetov)
  • 修复了使用 HTTP keep alive 超时而不是 TCP keep alive 超时的问题。 #7351 (Vasily Nemkov)
  • 修复了 groupBitmapOr 中的段错误(问题 #7109)。 #7289 (Zhichang Yu)
  • 对于物化视图,Kafka 的提交在所有数据写入后调用。 #7175 (Ivan)
  • 修复了 system.part_log 表中错误的 duration_ms 值。它相差了十倍。 #7172 (Vladimir Chebotarev)
  • 一个快速修复程序,用于解决 LIVE VIEW 表中的崩溃问题,并重新启用所有 LIVE VIEW 测试。 #7201 (vzakaznikov)
  • 在 MergeTree 分区的 min/max 索引中正确序列化 NULL 值。 #7234 (Alexander Kuzmenkov)
  • 当表创建为 CREATE TABLE AS 时,不要将虚拟列放入 .sql 元数据中。 #7183 (Ivan)
  • 修复 ATTACH PART 查询中的段错误。 #7185 (alesapin)
  • 修复了由空 IN 子查询和空 INNER/RIGHT JOIN 优化给出的一些查询的错误结果。 #7284 (Nikolai Kochetov)
  • 修复了 LIVE VIEW getHeader() 方法中的 AddressSanitizer 错误。 #7271 (vzakaznikov)

改进

  • 在发生 queue_wait_max_ms 等待时添加一条消息。 #7390 (Azat Khuzhin)
  • 使设置 s3_min_upload_part_size 成为表级别。 #7059 (Vladimir Chebotarev)
  • 在 StorageFactory 中检查 TTL。 #7304 (sundyli)
  • 在部分合并连接中压缩左侧块(优化)。 #7122 (Artem Zuikov)
  • 不允许在 Replicated 表引擎的 mutation 中使用非确定性函数,因为这可能会在副本之间引入不一致性。 #7247 (Alexander Kazakov)
  • 在将异常堆栈跟踪转换为字符串时禁用内存跟踪器。它可以防止服务器上 Memory limit exceeded 类型的错误消息丢失,这会导致客户端出现 Attempt to read after eof 异常。 #7264 (Nikolai Kochetov)
  • 杂项格式改进。 解决了 #6033, #2633, #6611, #6742 #7215 (tavplubix)
  • ClickHouse 忽略 IN 运算符右侧无法转换为左侧类型的值。使其对于复合类型(Array 和 Tuple)正常工作。 #7283 (Alexander Kuzmenkov)
  • 支持 ASOF JOIN 缺少的不等式。可以在 ON 语法中连接 ASOF 列的小于等于变体以及严格大于和小于变体。 #7282 (Artem Zuikov)
  • 优化部分合并连接。 #7070 (Artem Zuikov)
  • 在 uniqCombined 函数中不要使用超过 98K 的内存。 #7236, #7270 (Azat Khuzhin)
  • 在 PartialMergeJoin 中将右侧连接表的部分刷新到磁盘(如果内存不足)。在需要时加载回数据。 #7186 (Artem Zuikov)

性能改进

  • 通过避免数据重复来加速带有 const 参数的 joinGet。 #7359 (Amos Bird)
  • 如果子查询为空,则提前返回。 #7007 (小路)
  • 优化 Values 中 SQL 表达式的解析。 #6781 (tavplubix)

构建/测试/打包改进

代码清理

  • 通用化配置存储库,为字典的 DDL 做准备。 #7155 (alesapin)
  • 用于字典 DDL 的解析器,没有任何语义。 #7209 (alesapin)
  • 将 ParserCreateQuery 拆分为不同的较小解析器。 #7253 (alesapin)
  • 外部字典附近的一些小的重构和重命名。 #7111 (alesapin)
  • 重构一些代码,为基于角色的访问控制做准备。 #7235 (Vitaly Baranov)
  • DatabaseOrdinary 代码中的一些改进。 #7086 (Nikita Vasilev)
  • 不要在哈希表的 find() 和 emplace() 方法中使用迭代器。 #7026 (Alexander Kuzmenkov)
  • 修复了当参数 root 不为空时 getMultipleValuesFromConfig 中的错误。 #7374 (Mikhail Korotov)
  • 删除一些复制粘贴的代码 (TemporaryFile 和 TemporaryFileStream) #7166 (Artem Zuikov)
  • 稍微提高了代码可读性 (MergeTreeData::getActiveContainingPart)。 #7361 (Vladimir Chebotarev)
  • 如果 ThreadPool::schedule(...) 抛出异常,则等待所有使用本地对象的计划作业。将 ThreadPool::schedule(...) 重命名为 ThreadPool::scheduleOrThrowOnError(...) 并修复注释,以明确它可能会抛出异常。 #7350 (tavplubix)

ClickHouse 19.15 版本

ClickHouse 19.15.4.10 版本,2019-10-31

Bug 修复

ClickHouse 19.15.3.6 版本,2019-10-09

Bug 修复

  • 修复了哈希字典中的 bad_variant。 (alesapin)
  • 修复了 ATTACH PART 查询中段错误的错误。 (alesapin)
  • 修复了 MergeTreeData 中的时间计算。 (Vladimir Chebotarev)
  • 在写入完成后显式提交到 Kafka。 #7175 (Ivan)
  • 在 MergeTree 分区的 min/max 索引中正确序列化 NULL 值。 #7234 (Alexander Kuzmenkov)

ClickHouse 19.15.2.2 版本,2019-10-01

新功能

  • 分层存储:支持为使用 MergeTree 引擎的表使用多个存储卷。可以将新数据存储在 SSD 上,并自动将旧数据移动到 HDD。(示例)。 #4918 (Igr) #6489 (alesapin)
  • 为在 INSERT SELECT 查询中读取传入数据添加表函数 input#5450 (palasonic1) #6832 (Anton Popov)
  • 添加一个 sparse_hashed 字典布局,它在功能上等同于 hashed 布局,但内存效率更高。它使用大约一半的内存,但代价是值检索速度较慢。 #6894 (Azat Khuzhin)
  • 实现定义用户列表以访问字典的能力。仅使用当前连接的数据库。 #6907 (Guillaume Tassery)
  • SHOW 查询添加 LIMIT 选项。 #6944 (Philipp Malkovsky)
  • 添加 bitmapSubsetLimit(bitmap, range_start, limit) 函数,该函数返回集合中不小于 range_start 的最小 limit 值的子集。 #6957 (Zhichang Yu)
  • 添加 bitmapMinbitmapMax 函数。 #6970 (Zhichang Yu)
  • 添加与 issue-6648 相关的函数 repeat #6999 (flynn)

实验性功能

  • 实现(内存中)Merge Join 变体,该变体不会更改当前管道。结果按合并键部分排序。设置 partial_merge_join = 1 以使用此功能。Merge Join 仍在开发中。 #6940 (Artem Zuikov)
  • 添加 S3 引擎和表函数。它仍在开发中(尚无身份验证支持)。 #5596 (Vladimir Chebotarev)

改进

  • 从 Kafka 读取的每条消息都以原子方式插入。这解决了几乎所有已知的 Kafka 引擎问题。 #6950 (Ivan)
  • 改进分布式查询的故障转移。缩短恢复时间,现在可以配置,并在 system.clusters 中可见。 #6399 (Vasily Nemkov)
  • 直接在 IN 部分支持 Enum 的数值。 #6766 #6941 (dimarub2000)
  • 支持 URL 存储上的重定向(可选,默认禁用)。 #6914 (maqroll)
  • 当旧版本的客户端连接到服务器时,添加信息消息。 #6893 (Philipp Malkovsky)
  • 删除分布式表发送数据的最大退避睡眠时间限制 #6895 (Azat Khuzhin)
  • 添加将配置文件事件(计数器)及其累积值发送到 Graphite 的功能。可以在服务器 config.xml 中的 <events_cumulative> 下启用它。 #6969 (Azat Khuzhin)
  • 在通过 HTTP 以 Native 格式将数据插入 LowCardinality(T) 类型的列时,添加自动将类型 T 转换为 LowCardinality(T) 的功能。 #6891 (Nikolai Kochetov)
  • 添加在不使用 reinterpretAsString 的情况下对 Float32Float64 使用函数 hex 的能力。 #7024 (Mikhail Korotov)

构建/测试/打包改进

  • 将 gdb-index 添加到带有调试信息的 clickhouse 二进制文件。这将加快 gdb 的启动时间。 #6947 (alesapin)
  • 使用打了补丁的 dpkg-deb 加快 deb 打包速度,该补丁使用 pigz#6960 (alesapin)
  • 设置 enable_fuzzing = 1 以启用所有项目代码的 libfuzzer instrumentation。 #7042 (kyprizel)
  • 在 CI 中添加拆分构建冒烟测试。 #7061 (alesapin)
  • 将使用 MemorySanitizer 的构建添加到 CI。 #7066 (Alexander Kuzmenkov)
  • libsparsehash 替换为 sparsehash-c11 #6965 (Azat Khuzhin)

Bug 修复

  • 修复了大型表上复杂键的索引分析性能下降的问题。这修复了 #6924。 #7075 (alexey-milovidov)
  • 修复了从 Kafka 空主题中选择时导致段错误的逻辑错误。 #6909 (Ivan)
  • 修复了 MySQLBlockInputStream.cpp 中 MySQL 连接过早关闭的问题。 #6882 (Clément Rodriguez)
  • 恢复了对非常旧的 Linux 内核的支持(修复了 #6841#6853 (alexey-milovidov)
  • 修复了在输入流中存在空块的情况下,insert select 查询中可能发生数据丢失的问题。 #6834 #6862 #6911 (Nikolai Kochetov)
  • 修复了函数 АrrayEnumerateUniqRanked 在参数为空数组时的错误 #6928 (proller)
  • 修复了带有数组 JOIN 和全局子查询的复杂查询。 #6934 (Ivan)
  • 修复了在使用多个 JOIN 的 ORDER BY 和 GROUP BY 中出现的 Unknown identifier 错误 #7022 (Artem Zuikov)
  • 修复了使用 LowCardinality 参数执行函数时出现的 MSan 警告。 #7062 (Nikolai Kochetov)

向后不兼容的更改

  • 更改了 bitmap* 聚合函数状态的序列化格式以提高性能。无法读取先前版本 bitmap* 的序列化状态。 #6908 (Zhichang Yu)

ClickHouse Release 19.14

ClickHouse Release 19.14.7.15, 2019-10-02

Bug 修复

  • 此版本还包含 19.11.12.69 中的所有错误修复。
  • 修复了 19.14 和更早版本之间分布式查询的兼容性问题。这修复了 #7068#7069 (alexey-milovidov)

ClickHouse Release 19.14.6.12, 2019-09-19

Bug 修复

  • 修复了函数 АrrayEnumerateUniqRanked 在参数为空数组时的错误。 #6928 (proller)
  • 修复了带有别名的 ARRAY JOINGLOBAL IN subquery 查询中的子查询名称。如果指定了子查询别名,则将其用作外部表名。 #6934 (Ivan)

构建/测试/打包改进

  • 修复了 flapping 测试 00715_fetch_merged_or_mutated_part_zookeeper,方法是将其重写为 shell 脚本,因为它需要等待 mutation 应用。 #6977 (Alexander Kazakov)
  • 修复了函数 groupUniqArray 在使用空数组参数时出现的 UBSan 和 MemSan 失败。这是由于将空的 PaddedPODArray 放入哈希表零单元格引起的,因为没有调用零单元格值的构造函数。 #6937 (Amos Bird)

ClickHouse Release 19.14.3.3, 2019-09-10

新功能

  • 用于 ORDER BYWITH FILL 修饰符。(#5069 的延续) #6610 (Anton Popov)
  • 用于 LIMITWITH TIES 修饰符。(#5069 的延续) #6610 (Anton Popov)
  • 将未加引号的 NULL 字面量解析为 NULL(如果设置 format_csv_unquoted_null_literal_as_null=1)。如果此字段的数据类型不可为空,则使用默认值初始化空字段(如果设置 input_format_null_as_default=1)。 #5990 #6055 (tavplubix)
  • 支持表函数 filehdfs 路径中的通配符。如果路径包含通配符,则表将为只读。用法示例:select * from hdfs('hdfs://hdfs1:9000/some_dir/another_dir/*/file{0..9}{0..9}')select * from file('some_dir/{some_file,another_file,yet_another}.tsv', 'TSV', 'value UInt32')#6092 (Olga Khvostikova)
  • 新的 system.metric_log 表,用于存储指定时间间隔的 system.eventssystem.metrics 的值。 #6363 #6467 (Nikita Mikhaylov) #6530 (alexey-milovidov)
  • 允许将 ClickHouse 文本日志写入 system.text_log 表。 #6037 #6103 (Nikita Mikhaylov) #6164 (alexey-milovidov)
  • 在堆栈跟踪中显示私有符号(通过解析 ELF 文件的符号表完成)。如果存在调试信息,则在堆栈跟踪中添加有关文件和行号的信息。通过索引程序中存在的符号来加速符号名称查找。为内省添加了新的 SQL 函数:demangleaddressToLine。为了保持一致性,将函数 symbolizeAddress 重命名为 addressToSymbol。出于性能原因,函数 addressToSymbol 将返回 mangled 名称,您必须应用 demangle。添加了默认关闭的设置 allow_introspection_functions#6201 (alexey-milovidov)
  • 表函数 values (名称不区分大小写)。它允许从 #5984 中提出的 VALUES 列表读取数据。示例:SELECT * FROM VALUES('a UInt64, s String', (1, 'one'), (2, 'two'), (3, 'three'))#6217. #6209 (dimarub2000)
  • 添加了更改存储设置的功能。语法:ALTER TABLE <table> MODIFY SETTING <setting> = <value>#6366 #6669 #6685 (alesapin)
  • 支持删除 detached parts。语法:ALTER TABLE <table_name> DROP DETACHED PART '<part_id>'#6158 (tavplubix)
  • 表约束。允许向表定义添加约束,该约束将在插入时进行检查。 #5273 (Gleb Novikov) #6652 (alexey-milovidov)
  • 支持级联物化视图。 #6324 (Amos Bird)
  • 默认启用查询分析器,每秒对每个查询执行线程采样一次。 #6283 (alexey-milovidov)
  • 输入格式 ORC#6454 #6703 (akonyaev90)
  • 添加了两个新函数:sigmoidtanh(对机器学习应用程序很有用)。 #6254 (alexey-milovidov)
  • 函数 hasToken(haystack, token)hasTokenCaseInsensitive(haystack, token),用于检查 haystack 中是否包含给定的 token。Token 是两个非字母数字 ASCII 字符(或 haystack 的边界)之间的最大长度子字符串。Token 必须是常量字符串。由 tokenbf_v1 索引专业化支持。 #6596, #6662 (Vasily Nemkov)
  • 新函数 neighbor(value, offset[, default_value])。允许访问数据块中列内的上一个/下一个值。 #5925 (Alex Krash) 6685365ab8c5b74f9650492c88a012596eb1b0c6 341e2e4587a18065c2da1ca888c73389f48ce36c Alexey Milovidov
  • 创建了函数 currentUser(),返回授权用户的登录名。添加了别名 user() 以与 MySQL 兼容。 #6470 (Alex Krash)
  • 新的聚合函数 quantilesExactInclusivequantilesExactExclusive,它们在 #5885 中提出。 #6477 (dimarub2000)
  • 函数 bitmapRange(bitmap, range_begin, range_end),它返回一个包含指定范围(不包括 range_end)的新集合。 #6314 (Zhichang Yu)
  • 函数 geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision),它创建精度长的 geohash-boxes 字符串数组,覆盖提供的区域。 #6127 (Vasily Nemkov)
  • 实现对 Kafka 表的 INSERT 查询的支持。 #6012 (Ivan)
  • 为 Kafka 引擎添加了对 _partition_timestamp 虚拟列的支持。 #6400 (Ivan)
  • 可以使用基于 regexp 规则从 query_log、服务器日志、进程列表中删除敏感数据的可能性。 #5710 (filimonov)

实验性功能

Bug 修复

  • 此版本还包含 19.13 和 19.11 中的所有错误修复。
  • 修复了表具有 skip indices 且发生 vertical merge 时出现的段错误。 #6723 (alesapin)
  • 修复了具有非平凡列默认值的 per-column TTL。以前,在强制执行带有 OPTIMIZE ... FINAL 查询的 TTL merge 时,过期的值被类型默认值替换,而不是用户指定的列默认值。 #6796 (Anton Popov)
  • 修复了正常服务器重启时 Kafka 消息重复问题。 #6597 (Ivan)
  • 修复了读取 Kafka 消息时的无限循环。完全不要在订阅时暂停/恢复消费者 - 否则在某些情况下可能会无限期地暂停。 #6354 (Ivan)
  • 修复了 bitmapContains 函数中 Key expression contains comparison between inconvertible types 异常。 #6136 #6146 #6156 (dimarub2000)
  • 修复了启用 optimize_skip_unused_shards 且缺少分片键时出现的段错误。 #6384 (Anton Popov)
  • 修复了 mutation 中的错误代码,该代码可能导致内存损坏。修复了由于并发 DROP TABLE 和从 system.partssystem.parts_columns 进行 SELECT 而可能发生的读取地址 0x14c0 的段错误。修复了 mutation 查询准备中的竞争条件。修复了由 Replicated 表的 OPTIMIZE 和并发修改操作(如 ALTER)引起的死锁。 #6514 (alexey-milovidov)
  • 删除了 MySQL 接口中额外的详细日志记录 #6389 (alexey-milovidov)
  • 恢复了在配置文件中从 ‘true’ 和 ‘false’ 解析布尔设置的功能。 #6278 (alesapin)
  • 修复了 quantilemedian 函数在 Nullable(Decimal128) 上的崩溃问题。 #6378 (Artem Zuikov)
  • 修复了 SELECT 查询在主键上使用 WHERE 条件,且主键包含转换为 Float 类型时可能返回不完整结果的问题。这是由于 toFloat 函数中不正确的单调性检查引起的。 #6248 #6374 (dimarub2000)
  • 检查 mutation 的 max_expanded_ast_elements 设置。在 TRUNCATE TABLE 后清除 mutation。 #6205 (Winter Zhang)
  • 修复了与 join_use_nulls 一起使用时,JOIN 结果中键列的问题。附加 Null 而不是列默认值。 #6249 (Artem Zuikov)
  • 修复了带有 vertical merge 和 alter 的 skip indices 问题。修复了 Bad size of marks file 异常。 #6594 #6713 (alesapin)
  • 修复了 ALTER MODIFY COLUMN 和 vertical merge 在合并/更改的部分之一为空(0 行)时的罕见崩溃问题 #6746 #6780 (alesapin)
  • 修复了 AggregateFunctionFactoryLowCardinality 类型转换的错误。这修复了 #6257#6281 (Nikolai Kochetov)
  • 修复了 topKtopKWeighted 聚合函数中的错误行为和可能的段错误。 #6404 (Anton Popov)
  • 修复了 getIdentifier 函数周围的不安全代码。 #6401 #6409 (alexey-milovidov)
  • 修复了 MySQL 有线协议中的错误(在从 MySQL 客户端连接到 ClickHouse 时使用)。由 PacketPayloadWriteBuffer 中的堆缓冲区溢出引起。 #6212 (Yuriy Baranov)
  • 修复了 bitmapSubsetInRange 函数中的内存泄漏。 #6819 (Zhichang Yu)
  • 修复了在粒度更改后执行 mutation 的罕见错误。 #6816 (alesapin)
  • 默认允许包含所有字段的 protobuf 消息。 #6132 (Vitaly Baranov)
  • 解决了当我们在第二个参数上发送 NULL 参数时 nullIf 函数的错误。 #6446 (Guillaume Tassery)
  • 修复了复杂键缓存字典中字符串字段的错误内存分配/释放的罕见错误,该错误导致无限内存消耗(看起来像内存泄漏)。当字符串大小是 8(8、16、32 等)开始的 2 的幂时,会重现此错误。 #6447 (alesapin)
  • 修复了小序列上的 Gorilla 编码,该编码导致异常 Cannot write after end of buffer#6398 #6444 (Vasily Nemkov)
  • 允许在启用 join_use_nulls 的 JOIN 中使用不可为空的类型。 #6705 (Artem Zuikov)
  • 禁用 clickhouse-client 中查询中的 Poco::AbstractConfiguration 替换。 #6706 (alexey-milovidov)
  • 避免 REPLACE PARTITION 中的死锁。 #6677 (alexey-milovidov)
  • 对常量参数使用 arrayReduce 可能会导致段错误。 #6242 #6326 (alexey-milovidov)
  • 修复了在 DROP PARTITION 后恢复副本时可能出现的不一致 parts。 #6522 #6523 (tavplubix)
  • 修复了 JSONExtractRaw 函数中的挂起问题。 #6195 #6198 (alexey-milovidov)
  • 修复了自适应粒度下不正确的跳过索引序列化和聚合的错误。 #6594. #6748 (alesapin)
  • 修复了带有两级聚合的 GROUP BYWITH ROLLUPWITH CUBE 修饰符。 #6225 (Anton Popov)
  • 修复了使用自适应粒度写入二级索引标记的错误。 #6126 (alesapin)
  • 修复了服务器启动时的初始化顺序问题。由于 StorageMergeTree::background_task_handlestartup() 中初始化,MergeTreeBlockOutputStream::write() 可能会在初始化之前尝试使用它。现在会检查它是否已初始化。 #6080 (Ivan)
  • 清除了先前读取操作的数据缓冲区,该操作已完成并出现错误。 #6026 (Nikolay)
  • 修复了为 Replicated*MergeTree 表创建新副本时启用自适应粒度的错误。 #6394 #6452 (alesapin)
  • 修复了在服务器启动期间,当访问未初始化的 ThreadStatus 结构时,libunwind 中发生异常可能导致的崩溃。 #6456 (Nikita Mikhaylov)
  • 修复了 yandexConsistentHash 函数中的崩溃。通过模糊测试发现。 #6304 #6305 (alexey-milovidov)
  • 修复了当服务器过载且全局线程池接近满载时,可能导致查询挂起的问题。在具有大量分片(数百个)的集群上,这种情况更有可能发生,因为分布式查询会为每个分片的连接分配一个线程。例如,如果一个包含 330 个分片的集群正在处理 30 个并发分布式查询,则可能会重现此问题。此问题影响从 19.2 开始的所有版本。 #6301 (alexey-milovidov)
  • 修复了 arrayEnumerateUniqRanked 函数的逻辑。 #6423 (alexey-milovidov)
  • 修复了解码符号表时的段错误。 #6603 (Amos Bird)
  • 修复了在将 LowCardinality(Nullable) 类型转换为非 Nullable 列时,如果它不包含 Null 值的情况下(例如,在类似 SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String) 的查询中)出现的不相关的异常。 #6094 #6119 (Nikolai Kochetov)
  • 移除了 system.settings 表中描述的额外引号。 #6696 #6699 (alexey-milovidov)
  • 避免了 Replicated 表 TRUNCATE 操作中可能发生的死锁。 #6695 (alexey-milovidov)
  • 修复了按排序键顺序读取的问题。 #6189 (Anton Popov)
  • 修复了 enable_mixed_granularity_parts=1 表的 ALTER TABLE ... UPDATE 查询。 #6543 (alesapin)
  • 修复了由 #4405(自 19.4.0 起)引入的错误。当我们在 MergeTree 表上对 Distributed 表执行查询且不查询任何列(SELECT 1)时重现。 #6236 (alesapin)
  • 修复了有符号类型除以无符号类型的整数除法中的溢出。其行为与 C 或 C++ 语言(整数提升规则)完全相同,这可能会令人惊讶。请注意,当将大的有符号数除以大的无符号数或反之亦然时,仍然可能发生溢出(但这种情况不太常见)。该问题存在于所有服务器版本中。 #6214 #6233 (alexey-milovidov)
  • 限制了当设置 max_execution_speedmax_execution_speed_bytes 时,节流的最大睡眠时间。修复了类似 Estimated query execution time (inf seconds) is too long 的错误。 #5547 #6232 (alexey-milovidov)
  • 修复了在 MaterializedView 中使用 MATERIALIZED 列和别名的问题。 #448 #3484 #3450 #2878 #2285 #3796 (Amos Bird) #6316 (alexey-milovidov)
  • 修复了 FormatFactory 对于未作为处理器实现的输入流的行为。 #6495 (Nikolai Kochetov)
  • 修复了拼写错误。 #6631 (Alex Ryndin)
  • 错误消息中的拼写错误 ( is -> are )。 #6839 (Denis Zhuravlev)
  • 修复了从字符串解析列列表时,如果类型包含逗号(此问题与 FileURLHDFS 存储相关)的错误 #6217#6209 (dimarub2000)

安全修复

  • 此版本还包含来自 19.13 和 19.11 的所有安全漏洞修复程序。
  • 修复了精心构造的查询可能导致服务器因 SQL 解析器中的堆栈溢出而崩溃的可能性。修复了 Merge 和 Distributed 表、物化视图以及涉及子查询的行级安全条件中堆栈溢出的可能性。 #6433 (alexey-milovidov)

改进

  • 修正了 AND/OR 的三值逻辑的实现。 #6048 (Alexander Kazakov)
  • 现在,在 OPTIMIZE ... FINAL 查询之后,具有过期 TTL 的值和行将从旧 parts 中删除,这些旧 parts 没有 TTL 信息或 TTL 信息已过时,例如在 ALTER ... MODIFY TTL 查询之后。添加了查询 SYSTEM STOP/START TTL MERGES 以禁止/允许分配带有 TTL 的合并,并在所有合并中过滤过期值。 #6274 (Anton Popov)
  • 可以使用 CLICKHOUSE_HISTORY_FILE 环境变量更改客户端 ClickHouse 历史记录文件的位置。 #6840 (filimonov)
  • InterpreterSelectQuery 中删除 dry_run 标志。 … #6375 (Nikolai Kochetov)
  • 支持带有 ON 部分的 ASOF JOIN#6211 (Artem Zuikov)
  • 更好地支持 mutation 和 replication 的跳过索引。支持 MATERIALIZE/CLEAR INDEX ... IN PARTITION 查询。 UPDATE x = x 重新计算所有使用列 x 的索引。 #5053 (Nikita Vasilev)
  • 允许 ATTACH live view(例如,在服务器启动时),而无需考虑 allow_experimental_live_view 设置。 #6754 (alexey-milovidov)
  • 对于查询分析器收集的堆栈跟踪,不要包含由查询分析器本身生成的堆栈帧。 #6250 (alexey-milovidov)
  • 现在,表函数 valuesfileurlhdfs 支持 ALIAS 列。 #6255 (alexey-milovidov)
  • 如果 config.d 文件没有与配置文件对应的根元素,则抛出异常。 #6123 (dimarub2000)
  • no space left on device 的异常消息中打印额外信息。 #6182, #6252 #6352 (tavplubix)
  • 当确定要由读取查询覆盖的 Distributed 表的分片时(对于 optimize_skip_unused_shards = 1),ClickHouse 现在会检查 select 语句的 prewherewhere 子句中的条件。 #6521 (Alexander Kazakov)
  • 为没有 AVX2 但具有 SSE 4.2 和 PCLMUL 指令集的机器启用了 SIMDJSON#6285 #6320 (alexey-milovidov)
  • ClickHouse 可以在没有 O_DIRECT 支持的文件系统(例如 ZFS 和 BtrFS)上工作,而无需额外的调整。 #4449 #6730 (alexey-milovidov)
  • 支持 final 子查询的下推谓词。 #6120 (TCeason) #6162 (alexey-milovidov)
  • 更好的 JOIN ON 键提取 #6131 (Artem Zuikov)
  • 更新了 SIMDJSON#6285. #6306 (alexey-milovidov)
  • 优化了 SELECT count() 查询中最小列的选择。 #6344 (Amos Bird)
  • windowFunnel() 中添加了 strict 参数。当设置 strict 时,windowFunnel() 仅对唯一值应用条件。 #6548 (achimbab)
  • 更安全的 mysqlxx::Pool 接口。 #6150 (avasiliev)
  • 使用 --help 选项执行时,选项行大小现在与终端大小相对应。 #6590 (dimarub2000)
  • 禁用了没有键的聚合的“按顺序读取”优化。 #6599 (Anton Popov)
  • INCORRECT_DATATYPE_MISMATCH 错误代码的 HTTP 状态代码已从默认的 500 Internal Server Error 更改为 400 Bad Request#6271 (Alexander Rodin)
  • 将 Join 对象从 ExpressionAction 移动到 AnalyzedJoinExpressionAnalyzerExpressionAction 不再了解 Join 类。其逻辑由 AnalyzedJoin 接口隐藏。 #6801 (Artem Zuikov)
  • 修复了当一个分片是 localhost 但查询通过网络连接发送时,分布式查询可能发生的死锁。 #6759 (alexey-milovidov)
  • 更改了多个表 RENAME 的语义,以避免可能发生的死锁。 #6757. #6756 (alexey-milovidov)
  • 重写了 MySQL 兼容性服务器,以防止在内存中加载完整的数据包负载。降低了每个连接的内存消耗,大约为 2 * DBMS_DEFAULT_BUFFER_SIZE(读/写缓冲区)。 #5811 (Yuriy Baranov)
  • 将 AST 别名解释逻辑移出解析器,解析器不必了解任何查询语义。 #6108 (Artem Zuikov)
  • 稍微更安全地解析 NamesAndTypesList#6408. #6410 (alexey-milovidov)
  • clickhouse-copier:允许在配置中使用 where_condition,并在查询中使用 partition_key 别名来检查分区是否存在(之前仅在读取数据查询中使用)。 #6577 (proller)
  • throwIf 中添加了可选的消息参数。 (#5772) #6329 (Vdimir)
  • 在客户端中也处理了发送插入数据时服务器抛出的异常。 #5891 #6711 (dimarub2000)
  • 添加了一个指标 DistributedFilesToInsert,显示文件系统中选择发送到远程服务器的 Distributed 表的文件总数。该数字是跨所有分片求和的。 #6600 (alexey-milovidov)
  • 将大部分 JOIN 准备逻辑从 ExpressionAction/ExpressionAnalyzer 移动到 AnalyzedJoin#6785 (Artem Zuikov)
  • 修复 TSan 警告 ‘lock-order-inversion’。 #6740 (Vasily Nemkov)
  • 关于缺少 Linux 功能的更好的信息消息。使用 "fatal" 级别记录致命错误,这将使其更容易在 system.text_log 中找到。 #6441 (alexey-milovidov)
  • 当启用将临时数据转储到磁盘以限制 GROUP BYORDER BY 期间的内存使用量时,它不会检查可用磁盘空间。此修复添加了一个新的设置 min_free_disk_space,当可用磁盘空间小于阈值时,查询将停止并抛出 ErrorCodes::NOT_ENOUGH_SPACE 错误。 #6678 (Weiqing Xu) #6691 (alexey-milovidov)
  • 删除了线程的递归 rwlock。这没有意义,因为线程在查询之间重用。 SELECT 查询可能在一个线程中获取锁,持有来自另一个线程的锁并从第一个线程退出。同时,第一个线程可以被 DROP 查询重用。这将导致错误的“尝试以递归方式获取独占锁”消息。 #6771 (alexey-milovidov)
  • 拆分 ExpressionAnalyzer.appendJoin()。在 ExpressionAnalyzer 中为 MergeJoin 准备一个位置。 #6524 (Artem Zuikov)
  • 为 MySQL 兼容性服务器添加了 mysql_native_password 身份验证插件。 #6194 (Yuriy Baranov)
  • 减少了 clock_gettime 调用次数;修复了 Allocator 中调试/发布版本之间的 ABI 兼容性(不重要的问题)。 #6197 (alexey-milovidov)
  • collectUsedColumnsExpressionAnalyzer 移动到 SyntaxAnalyzerSyntaxAnalyzer 现在自己生成 required_source_columns#6416 (Artem Zuikov)
  • 添加设置 joined_subquery_requires_alias,以要求在 FROM 中为子查询和表函数使用别名,其中存在多个表(即带有 JOIN 的查询)。 #6733 (Artem Zuikov)
  • ExpressionAnalyzer 中提取 GetAggregatesVisitor 类。 #6458 (Artem Zuikov)
  • system.query_log:将 type 列的数据类型更改为 Enum#6265 (Nikita Mikhaylov)
  • 静态链接 sha256_password 身份验证插件。 #6512 (Yuriy Baranov)
  • 避免了 compile 设置工作所需的额外依赖项。在以前的版本中,用户可能会收到类似 cannot open crti.ounable to find library -lc 等错误。 #6309 (alexey-milovidov)
  • 对可能来自恶意副本的输入进行了更多验证。 #6303 (alexey-milovidov)
  • 现在,clickhouse-obfuscator 文件在 clickhouse-client 包中可用。在以前的版本中,它以 clickhouse obfuscator(带有空格)的形式提供。 #5816 #6609 (dimarub2000)
  • 修复了当我们至少有两个以不同顺序读取至少两个表的查询,以及另一个对其中一个表执行 DDL 操作的查询时发生的死锁。修复了另一个非常罕见的死锁。 #6764 (alexey-milovidov)
  • system.processessystem.query_log 中添加了 os_thread_ids 列,以提高调试可能性。 #6763 (alexey-milovidov)
  • PHP mysqlnd 扩展错误的解决方法,当 sha256_password 用作默认身份验证插件时会发生这些错误(在 #6031 中描述)。 #6113 (Yuriy Baranov)
  • 删除了更改可空列的不必要位置。 #6693 (Artem Zuikov)
  • queue_max_wait_ms 的默认值设置为零,因为当前值(五秒)没有意义。在极少数情况下,此设置才有用。添加了设置 replace_running_query_max_wait_mskafka_max_wait_msconnection_pool_max_wait_ms 以消除歧义。 #6692 (alexey-milovidov)
  • ExpressionAnalyzer 中提取 SelectQueryExpressionAnalyzer。保留最后一个用于非选择查询。 #6499 (Artem Zuikov)
  • 删除了重复的输入和输出格式。 #6239 (Nikolai Kochetov)
  • 允许用户在连接上覆盖 poll_intervalidle_connection_timeout 设置。 #6230 (alexey-milovidov)
  • MergeTree 现在有一个额外的选项 ttl_only_drop_parts(默认禁用),以避免 parts 的部分修剪,以便当 part 中的所有行都过期时完全删除它们。 #6191 (Sergi Vladykin)
  • 设置索引函数的类型检查。如果函数获取了错误的类型,则抛出异常。这修复了带有 UBSan 的模糊测试。 #6511 (Nikita Vasilev)

性能提升

  • 优化了带有 ORDER BY expressions 子句的查询,其中 expressionsMergeTree 表中与排序键具有重合前缀。此优化由 optimize_read_in_order 设置控制。 #6054 #6629 (Anton Popov)
  • 允许在 parts 加载和删除期间使用多个线程。 #6372 #6074 #6438 (alexey-milovidov)
  • 实现了批量更新聚合函数状态的变体。这可能会带来性能优势。 #6435 (alexey-milovidov)
  • 为函数 explogsigmoidtanh 使用 FastOps 库。FastOps 是 Michael Parakhin(Yandex CTO)提供的快速向量数学库。explog 函数的性能提高了 6 倍以上。来自 Float32 参数的函数 explog 将返回 Float32(在以前的版本中,它们始终返回 Float64)。现在 exp(nan) 可能会返回 infexplog 函数的结果可能不是最接近真实答案的机器可表示数字。 #6254 (alexey-milovidov) 使用 Danila Kutenin 变体使 fastops 工作 #6317 (alexey-milovidov)
  • 禁用 UInt8/16 的连续键优化。 #6298 #6701 (akuzm)
  • 通过消除 ParsedJson::Iterator 中的动态分配,提高了 simdjson 库的性能。 #6479 (Vitaly Baranov)
  • 在使用 mmap() 分配内存时预先加载页面。 #6667 (akuzm)
  • 修复了 Decimal 比较中的性能错误。 #6380 (Artem Zuikov)

构建/测试/打包改进

向后不兼容的更改

  • 移除了很少使用的表函数 catBoostPool 和存储 CatBoostPool。如果您使用过此表函数,请发送电子邮件至 [email protected]。请注意,CatBoost 集成仍然存在并将得到支持。 #6279 (alexey-milovidov)
  • 默认禁用 ANY RIGHT JOINANY FULL JOIN。设置 any_join_distinct_right_table_keys 设置以启用它们。 #5126 #6351 (Artem Zuikov)

ClickHouse 版本 19.13

ClickHouse 版本 19.13.6.51, 2019-10-02

Bug 修复

  • 此版本还包含 19.11.12.69 中的所有错误修复。

ClickHouse 版本 19.13.5.44, 2019-09-20

Bug 修复

ClickHouse 版本 19.13.4.32, 2019-09-10

Bug 修复

  • 此版本还包含 19.11.9.52 和 19.11.10.54 中的所有 bug 安全性修复。
  • 修复了 system.parts 表和 ALTER 查询中的数据竞争。 #6245 #6513 (alexey-milovidov)
  • 修复了从带有 sample 和 prewhere 的空分布式表读取时发生的流中 header 不匹配的问题。 #6167 (Lixiang Qian) #6823 (Nikolai Kochetov)
  • 修复了在带有元组的子查询中使用 IN 子句时发生的崩溃。 #6125 #6550 (tavplubix)
  • 修复了 GLOBAL JOIN ON 部分中具有相同列名的情况。 #6181 (Artem Zuikov)
  • 修复了将类型转换为不支持它的 Decimal 时发生的崩溃。改为抛出异常。 #6297 (Artem Zuikov)
  • 修复了 extractAll() 函数中的崩溃。 #6644 (Artem Zuikov)
  • 用于 MySQLODBCJDBC 表函数的查询转换现在可以正确处理带有多个 AND 表达式的 SELECT WHERE 查询。 #6381 #6676 (dimarub2000)
  • 为 MySQL 8 集成添加了先前的声明检查。 #6569 (Rafael David Tinoco)

安全修复

  • 修复了解压缩阶段编解码器中的两个漏洞(恶意用户可以伪造压缩数据,从而导致解压缩中的缓冲区溢出)。 #6670 (Artem Zuikov)

ClickHouse 版本 19.13.3.26, 2019-08-22

Bug 修复

  • 修复了 enable_mixed_granularity_parts=1 表的 ALTER TABLE ... UPDATE 查询。 #6543 (alesapin)
  • 修复了在带有元组的子查询中使用 IN 子句时发生的 NPE。 #6125 #6550 (tavplubix)
  • 修复了一个问题,即如果过时的副本变为活动状态,它可能仍然具有已被 DROP PARTITION 删除的数据部分。 #6522 #6523 (tavplubix)
  • 修复了 CSV 解析问题 #6426 #6559 (tavplubix)
  • 修复了 system.parts 表和 ALTER 查询中的数据竞争。这修复了 #6245#6513 (alexey-milovidov)
  • 修复了 mutation 中的错误代码,该代码可能导致内存损坏。修复了由于并发 DROP TABLE 和从 system.partssystem.parts_columns 进行 SELECT 而可能发生的读取地址 0x14c0 的段错误。修复了 mutation 查询准备中的竞争条件。修复了由 Replicated 表的 OPTIMIZE 和并发修改操作(如 ALTER)引起的死锁。 #6514 (alexey-milovidov)
  • 修复了在具有跳过索引的表上执行 ALTER DELETE 查询后可能发生的数据丢失。 #6224 #6282 (Nikita Vasilev)

安全修复

  • 如果攻击者具有 ZooKeeper 的写入权限,并且能够运行可从 ClickHouse 运行的网络访问的自定义服务器,则它可以创建自定义构建的恶意服务器,该服务器将充当 ClickHouse 副本并在 ZooKeeper 中注册它。当另一个副本将从恶意副本中获取数据部分时,它可以强制 clickhouse-server 写入文件系统上的任意路径。由 Yandex 信息安全团队的 Eldar Zaitov 发现。 #6247 (alexey-milovidov)

ClickHouse 版本 19.13.2.19, 2019-08-14

新功能

  • 查询级别的采样分析器。 示例#4247 (laplab) #6124 (alexey-milovidov) #6250 #6283 #6386
  • 允许使用 COLUMNS('regexp') 表达式指定列列表,该表达式的工作方式类似于更复杂的 * 星号变体。 #5951 (mfridental), (alexey-milovidov)
  • 现在可以 CREATE TABLE AS table_function() #6057 (dimarub2000)
  • 随机梯度下降的 Adam 优化器默认用于 stochasticLinearRegression()stochasticLogisticRegression() 聚合函数,因为它在几乎不需要调整的情况下显示出良好的质量。 #6000 (Quid37)
  • 添加了用于处理自定义周数的函数 #5212 (Andy Yang)
  • RENAME 查询现在可以与所有存储一起使用。 #5953 (Ivan)
  • 现在,客户端可以通过设置 send_logs_level 接收来自服务器的任何所需级别的日志,而无需考虑服务器设置中指定的日志级别。 #5964 (Nikita Mikhaylov)

向后不兼容的更改

  • 默认情况下启用设置 input_format_defaults_for_omitted_fields。分布式表中的插入需要此设置在集群上保持相同(您需要在滚动更新之前设置它)。它为 JSONEachRowCSV* 格式中省略的字段启用复杂默认表达式的计算。这应该是预期的行为,但可能会导致可忽略的性能差异。 #6043 (Artem Zuikov), #5625 (akuzm)

实验性功能

  • 新的查询处理管道。使用 experimental_use_processors=1 选项启用它。使用风险自负。 #4914 (Nikolai Kochetov)

Bug 修复

  • Kafka 集成在此版本中已修复。
  • 修复了大型 DoubleDelta 值的 Int64DoubleDelta 编码,改进了 Int32 的随机数据的 DoubleDelta 编码。 #5998 (Vasily Nemkov)
  • 修复了如果设置 merge_tree_uniform_read_distribution 设置为 0,则 max_rows_to_read 的高估。 #6019 (alexey-milovidov)

改进

  • 如果 config.d 文件没有与配置文件对应的根元素,则抛出异常 #6123 (dimarub2000)

性能提升

  • 优化 count() 函数。现在它会使用最小的列(如果可能)。 #6028 (Amos Bird)

构建/测试/打包改进

  • 在性能测试中报告内存使用情况。 #5899 (akuzm)
  • 修复使用外部 libcxx 构建的问题 #6010 (Ivan)
  • 修复带有 rdkafka 库的共享构建 #6101 (Ivan)

ClickHouse Release 19.11

ClickHouse Release 19.11.13.74, 2019-11-01

Bug 修复

  • 修复了在 ALTER MODIFY COLUMN 和垂直合并中,当合并/修改的部分之一为空(0 行)时,罕见的崩溃问题。 #6780 (alesapin)
  • 手动更新 SIMDJSON。这修复了可能用虚假的 json 诊断消息填充 stderr 文件的问题。 #7548 (Alexander Kazakov)
  • 修复了 mutations 的 mrk 文件扩展名的错误 (alesapin)

ClickHouse Release 19.11.12.69, 2019-10-02

Bug 修复

  • 修复了大型表上复杂键的索引分析性能下降的问题。 这修复了 #6924#7075 (alexey-milovidov)
  • 避免在使用 Distributed 引擎的表发送数据时出现罕见的 SIGSEGV 错误(Failed to send batch: file with index XXXXX is absent)。 #7032 (Azat Khuzhin)
  • 修复了多个 joins 导致的 Unknown identifier 错误。 这修复了 #5254#7022 (Artem Zuikov)

ClickHouse Release 19.11.11.57, 2019-09-13

  • 修复了从 Kafka 空主题中选择数据时导致段错误的逻辑错误。 #6902 #6909 (Ivan)
  • 修复了函数 АrrayEnumerateUniqRanked 在参数为空数组时的错误。 #6928 (proller)

ClickHouse Release 19.11.10.54, 2019-09-10

Bug 修复

  • 手动存储 Kafka 消息的 offsets,以便能够一次性提交所有分区的所有 offsets。 修复了“一个消费者 - 多个分区”场景中潜在的重复数据问题。 #6872 (Ivan)

ClickHouse Release 19.11.9.52, 2019-09-6

安全修复

  • 如果攻击者具有 ZooKeeper 的写入权限,并且能够从 ClickHouse 运行的网络上运行自定义服务器,则它可以创建自定义构建的恶意服务器,该服务器将充当 ClickHouse 副本并在 ZooKeeper 中注册它。 当另一个副本从恶意副本获取数据 part 时,它可能强制 clickhouse-server 写入文件系统上的任意路径。 由 Yandex 信息安全团队的 Eldar Zaitov 发现。 #6247 (alexey-milovidov)

ClickHouse Release 19.11.8.46, 2019-08-22

Bug 修复

  • 修复了 enable_mixed_granularity_parts=1 表的 ALTER TABLE ... UPDATE 查询。 #6543 (alesapin)
  • 修复了在带有元组的子查询中使用 IN 子句时发生的 NPE。 #6125 #6550 (tavplubix)
  • 修复了一个问题,即如果过时的副本变为活动状态,它可能仍然具有已被 DROP PARTITION 删除的数据部分。 #6522 #6523 (tavplubix)
  • 修复了 CSV 解析问题 #6426 #6559 (tavplubix)
  • 修复了 system.parts 表和 ALTER 查询中的数据竞争。这修复了 #6245#6513 (alexey-milovidov)
  • 修复了 mutation 中的错误代码,该代码可能导致内存损坏。修复了由于并发 DROP TABLE 和从 system.partssystem.parts_columns 进行 SELECT 而可能发生的读取地址 0x14c0 的段错误。修复了 mutation 查询准备中的竞争条件。修复了由 Replicated 表的 OPTIMIZE 和并发修改操作(如 ALTER)引起的死锁。 #6514 (alexey-milovidov)

ClickHouse Release 19.11.7.40, 2019-08-14

Bug 修复

  • Kafka 集成在此版本中已修复。
  • 修复了为常量参数使用 arrayReduce 时发生的段错误。 #6326 (alexey-milovidov)
  • 修复了 toFloat() 的单调性。 #6374 (dimarub2000)
  • 修复了启用 optimize_skip_unused_shards 和缺少 sharding key 时发生的段错误。 #6384 (CurtizJ)
  • 修复了 arrayEnumerateUniqRanked 函数的逻辑。 #6423 (alexey-milovidov)
  • 从 MySQL handler 中删除了额外的详细日志记录。 #6389 (alexey-milovidov)
  • 修复了 topKtopKWeighted 聚合函数中的错误行为和可能的段错误。 #6404 (CurtizJ)
  • 不要在 system.columns 表中公开虚拟列。 这是向后兼容性所必需的。 #6406 (alexey-milovidov)
  • 修复了复杂键缓存字典中字符串字段的内存分配错误。 #6447 (alesapin)
  • 修复了为 Replicated*MergeTree 表创建新副本时启用自适应粒度的错误。 #6452 (alesapin)
  • 修复了读取 Kafka 消息时的无限循环。 #6354 (abyss7)
  • 修复了构造的查询可能由于 SQL 解析器中的堆栈溢出以及 MergeDistributed 表中的堆栈溢出而导致服务器崩溃的可能性 #6433 (alexey-milovidov)
  • 修复了小序列上的 Gorilla 编码错误。 #6444 (Enmk)

改进

  • 允许用户在连接上覆盖 poll_intervalidle_connection_timeout 设置。 #6230 (alexey-milovidov)

ClickHouse Release 19.11.5.28, 2019-08-05

Bug 修复

  • 修复了服务器过载时可能发生的查询挂起问题。 #6301 (alexey-milovidov)
  • 修复了 yandexConsistentHash 函数中的 FPE 错误。 这修复了 #6304#6126 (alexey-milovidov)
  • 修复了 AggregateFunctionFactoryLowCardinality 类型转换的错误。这修复了 #6257#6281 (Nikolai Kochetov)
  • 修复了解析配置文件中 truefalse 字符串的 bool 设置。 #6278 (alesapin)
  • 修复了在 WHERE 的一部分移动到 PREWHERE 时,对 MergeTree 表的 Distributed 表的查询中出现不兼容流头的罕见错误。 #6236 (alesapin)
  • 修复了有符号类型除以无符号类型的整数除法中的溢出。 这修复了 #6214#6233 (alexey-milovidov)

向后不兼容的变更

  • Kafka 仍然损坏。

ClickHouse Release 19.11.4.24, 2019-08-01

Bug 修复

  • 修复了使用自适应粒度写入二级索引标记的错误。 #6126 (alesapin)
  • 修复了带有两级聚合的 GROUP BYWITH ROLLUPWITH CUBE 修饰符。 #6225 (Anton Popov)
  • 修复了 JSONExtractRaw 函数中的挂起问题。 修复了 #6195 #6198 (alexey-milovidov)
  • 修复了 ExternalLoader::reloadOutdated() 中的段错误。 #6082 (Vitaly Baranov)
  • 修复了服务器可能关闭监听套接字但不关闭并继续处理剩余查询的情况。 您最终可能会得到两个正在运行的 clickhouse-server 进程。 有时,服务器可能会为剩余查询返回错误 bad_function_call#6231 (alexey-milovidov)
  • 修复了通过 ODBC、MySQL、ClickHouse 和 HTTP 初始加载外部字典时,更新字段上的无用且不正确的条件。 这修复了 #6069 #6083 (alexey-milovidov)
  • 修复了在将 LowCardinality(Nullable) 类型转换为非 Nullable 列时,如果它不包含 Null 值的情况下(例如,在类似 SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String) 的查询中)出现的不相关的异常。 #6094 #6119 (Nikolai Kochetov)
  • 修复了极少数情况下 "uniq" 聚合函数的非确定性结果。 此错误存在于所有 ClickHouse 版本中。 #6058 (alexey-milovidov)
  • 当我们在函数 IPv6CIDRToRange 上设置过高的 CIDR 时,会发生段错误。 #6068 (Guillaume Tassery)
  • 修复了服务器从许多不同上下文中抛出许多异常时出现的小内存泄漏。 #6144 (alexey-milovidov)
  • 修复了消费者在订阅之前暂停,之后未恢复的情况。 #6075 (Ivan) 请注意,Kafka 在此版本中已损坏。
  • 清除了先前读取操作中完成并出现错误的 Kafka 数据缓冲区 #6026 (Nikolay) 请注意,Kafka 在此版本中已损坏。
  • 由于 StorageMergeTree::background_task_handlestartup() 中初始化,因此 MergeTreeBlockOutputStream::write() 可能会在初始化之前尝试使用它。 只需检查它是否已初始化。 #6080 (Ivan)

构建/测试/打包改进

向后不兼容的变更

  • Kafka 在此版本中已损坏。

ClickHouse Release 19.11.3.11, 2019-07-18

新功能

  • 添加了对预处理语句的支持。 #5331 (Alexander) #5630 (alexey-milovidov)
  • DoubleDeltaGorilla 列编解码器 #5600 (Vasily Nemkov)
  • 添加了 os_thread_priority 设置,该设置允许控制查询处理线程的 "nice" 值,操作系统使用该值来调整动态调度优先级。 它需要 CAP_SYS_NICE 权限才能工作。 这实现了 #5858 #5909 (alexey-milovidov)
  • 为 Kafka 引擎实现 _topic_offset_key#5382 (Ivan) 请注意,Kafka 在此版本中已损坏。
  • 添加聚合函数组合器 -Resample #5590 (hcz)
  • 聚合函数 groupArrayMovingSum(win_size)(x)groupArrayMovingAvg(win_size)(x),用于计算具有或不具有窗口大小限制的移动总和/平均值。 #5595 (inv2004)
  • 添加同义词 arrayFlatten <-> flatten #5764 (hcz)
  • 整合 Uber 的 H3 函数 geoToH3#4724 (Remen Ivan) #5805 (alexey-milovidov)

Bug 修复

  • 实现具有异步更新的 DNS 缓存。 单独的线程解析所有主机并使用周期(设置 dns_cache_update_period)更新 DNS 缓存。 当主机的 IP 频繁更改时,它应该有所帮助。 #5857 (Anton Popov)
  • 修复了 Delta 编解码器中的段错误,该错误影响值小于 32 位大小的列。 该错误导致随机内存损坏。 #5786 (alesapin)
  • 修复了 TTL 合并中块中非物理列的段错误。 #5819 (Anton Popov)
  • 修复了检查带有 LowCardinality 列的 part 的罕见错误。 以前 checkDataPart 总是对带有 LowCardinality 列的 part 失败。 #5832 (alesapin)
  • 避免在服务器线程池已满时挂起连接。 这对于每个服务器上都有多个分布式表的大型集群非常重要,因为每个服务器都可能保持与每个其他服务器的连接池,并且在查询并发高峰之后,连接将停滞。 这修复了 #5878 #5881 (alexey-milovidov)
  • 支持 evalMLModel 函数的常量参数。 这修复了 #5817 #5820 (alexey-milovidov)
  • 修复了 ClickHouse 将默认时区确定为 UCT 而不是 UTC 的问题。 这修复了 #5804#5828 (alexey-milovidov)
  • 修复了 visitParamExtractRaw 中的缓冲区下溢。 这修复了 #5901 #5902 (alexey-milovidov)
  • 现在,分布式 DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTER 查询将直接在 leader 副本上执行。 #5757 (alesapin)
  • 修复了带有 ColumnNullableColumnConstcoalesce 以及相关更改。 #5755 (Artem Zuikov)
  • 修复了 ReadBufferFromKafkaConsumer,以便即使之前停顿,它也能在 commit() 之后继续读取新消息 #5852 (Ivan)
  • 修复了在右表中对 Nullable 键进行连接时的 FULLRIGHT JOIN 结果。 #5859 (Artem Zuikov)
  • 可能修复了低优先级查询的无限休眠问题。 #5842 (alexey-milovidov)
  • 修复了竞争条件,该条件导致在 SYSTEM FLUSH LOGS 查询之后某些查询可能不会出现在 query_log 中。 #5456 #5685 (Anton Popov)
  • 修复了 ClusterCopier 中由 watch 引起的 heap-use-after-free ASan 警告,该 watch 尝试使用已删除的 copier 对象。 #5871 (Nikolai Kochetov)
  • 修复了 IColumn::deserializeAndInsertFromArena 的某些实现返回的错误的 StringRef 指针。 此错误仅影响单元测试。 #5973 (Nikolai Kochetov)
  • 防止源数组连接列和中间数组连接列掩盖同名列。 #5941 (Artem Zuikov)
  • 修复了使用 MySQL 样式标识符引用对 MySQL 引擎的 insert 和 select 查询。 #5704 (Winter Zhang)
  • 现在 CHECK TABLE 查询可以与 MergeTree 引擎系列一起使用。 它为每个 part(或对于更简单的引擎,为文件)返回检查状态和消息(如果有)。 此外,修复了获取损坏 part 的错误。 #5865 (alesapin)
  • 修复了 SPLIT_SHARED_LIBRARIES 运行时问题 #5793 (Danila Kutenin)
  • 修复了当 /etc/localtime 是相对符号链接(如 ../usr/share/zoneinfo/Asia/Istanbul)时的时间zone初始化问题 #5922 (alexey-milovidov)
  • clickhouse-copier:修复了 shutdown 时的 use-after-free 错误 #5752 (proller)
  • 更新了 simdjson。 修复了一些带有零字节的无效 JSON 成功解析的问题。 #5938 (alexey-milovidov)
  • 修复了 SystemLogs 的 shutdown 问题 #5802 (Anton Popov)
  • 修复了 invalidate_query 中的条件依赖于字典时发生的挂起问题。 #6011 (Vitaly Baranov)

改进

  • 允许在集群配置中使用无法解析的地址。 它们将被视为不可用,并在每次连接尝试时尝试解析。 这对于 Kubernetes 特别有用。 这修复了 #5714 #5924 (alexey-milovidov)
  • 关闭空闲 TCP 连接(默认超时时间为一小时)。 这对于每个服务器上都有多个分布式表的大型集群尤其重要,因为每个服务器都可能保持与每个其他服务器的连接池,并且在查询并发高峰之后,连接将停滞。 这修复了 #5879 #5880 (alexey-milovidov)
  • topK 函数的质量更高。 更改了 SavingSpace 集合的行为,以便在新元素具有更大的权重时删除最后一个元素。 #5833 #5850 (Guillaume Tassery)
  • 用于处理域名的 URL 函数现在可以用于不带 scheme 的不完整 URL #5725 (alesapin)
  • 校验和已添加到 system.parts_columns 表中。 #5874 (Nikita Mikhaylov)
  • 添加了 Enum 数据类型作为 Enum8Enum16 的同义词。 #5886 (dimarub2000)
  • T64 编解码器的完整位转置变体。 可以使用 zstd 实现更好的压缩。 #5742 (Artem Zuikov)
  • startsWith 函数的条件现在可以使用主键。 这修复了 #5310#5882 #5919 (dimarub2000)
  • 允许将 clickhouse-copier 与跨复制集群拓扑一起使用,方法是允许空数据库名称。 #5745 (nvartolomei)
  • 在没有 tzdata 的系统(例如,裸 Docker 容器)上使用 UTC 作为默认时区。 在此补丁之前,会打印错误消息 Could not determine local time zone,并且服务器或客户端拒绝启动。 #5827 (alexey-milovidov)
  • 为了向后兼容性,在函数 quantileTiming 中返回了对浮点参数的支持。 #5911 (alexey-milovidov)
  • 在错误消息中显示哪个表缺少列。 #5768 (Ivan)
  • 禁止不同用户运行具有相同 query_id 的查询 #5430 (proller)
  • 更健壮的代码用于将指标发送到 Graphite。 即使在长时间的多次 RENAME TABLE 操作期间,它也能正常工作。 #5875 (alexey-milovidov)
  • 当 ThreadPool 无法调度任务执行时,将显示更具信息量的错误消息。 这修复了 #5305 #5801 (alexey-milovidov)
  • 反转 ngramSearch 以使其更直观 #5807 (Danila Kutenin)
  • 在 HDFS 引擎构建器中添加用户解析 #5946 (akonyaev90)
  • 更新 max_ast_elements parameter 的默认值 #5933 (Artem Konovalov)
  • 添加了过时设置的概念。 过时设置 allow_experimental_low_cardinality_type 可以使用,但没有效果。 0f15c01c6802f7ce1a1494c12c846be8c98944cd Alexey Milovidov

性能提升

  • 增加从 Merge 表中 SELECT 的流的数量,以实现更均匀的线程分布。 添加了设置 max_streams_multiplier_for_merge_tables。 这修复了 #5797 #5915 (alexey-milovidov)

构建/测试/打包改进

向后不兼容的变更

  • Kafka 在此版本中已损坏。
  • 为新的 MergeTree 表默认启用 adaptive_index_granularity = 10MB。 如果您在 19.11+ 版本上创建了新的 MergeTree 表,则降级到 19.6 之前的版本将不可能。 #5628 (alesapin)
  • 移除了 Yandex.Metrica 使用的过时的、未文档化的嵌入式字典。 函数 OSIn, SEIn, OSToRoot, SEToRoot, OSHierarchy, SEHierarchy 不再可用。 如果您正在使用这些函数,请发送电子邮件至 [email protected]。 注意:在最后一刻我们决定暂时保留这些函数。 #5780 (alexey-milovidov)

ClickHouse Release 19.10

ClickHouse Release 19.10.1.5, 2019-07-12

新功能

  • 添加新的列编解码器:T64。 专为 (U)IntX/EnumX/Data(Time)/DecimalX 列设计。 它应该适用于具有常量或小范围值的列。 编解码器本身允许在不重新压缩的情况下放大或缩小数据类型。 #5557 (Artem Zuikov)
  • 添加数据库引擎 MySQL,允许查看远程 MySQL 服务器中的所有表 #5599 (Winter Zhang)
  • bitmapContains 实现。 如果第二个 bitmap 包含一个元素,则它比 bitmapHasAny 快 2 倍。 #5535 (Zhichang Yu)
  • 支持 crc32 函数(行为与 MySQL 或 PHP 完全相同)。 如果您需要哈希函数,请不要使用它。 #5661 (Remen Ivan)
  • 实现了 SYSTEM START/STOP DISTRIBUTED SENDS 查询,以控制异步插入到 Distributed 表中。 #4935 (Winter Zhang)

Bug 修复

  • 在执行 mutations 时,忽略查询执行限制和合并限制的最大 parts 大小。 #5659 (Anton Popov)
  • 修复了可能导致正常数据块重复数据删除(极其罕见)和插入重复数据块(更常见)的错误。 #5549 (alesapin)
  • 修复了参数为空数组的 arrayEnumerateUniqRanked 函数的错误 #5559 (proller)
  • 不要订阅无意轮询任何消息的 Kafka 主题。 #5698 (Ivan)
  • 使设置 join_use_nulls 对不能在 Nullable 内部的类型无效 #5700 (Olga Khvostikova)
  • 修复了 索引粒度大小不正确 错误 #5720 (coraxster)
  • 修复了 Float 到 Decimal 转换溢出问题 #5607 (coraxster)
  • 当调用 WriteBufferFromHDFS 的析构函数时刷新缓冲区。 这修复了写入 HDFS 的问题。 #5684 (Xindong Peng)

改进

  • 当启用设置 input_format_defaults_for_omitted_fields 时,将 CSV 中的空单元格视为默认值。 #5625 (akuzm)
  • 外部字典的非阻塞加载。 #5567 (Vitaly Baranov)
  • 可以根据设置动态更改已建立连接的网络超时。 #4558 (Konstantin Podshumok)
  • 将 “public_suffix_list” 用于函数 firstSignificantSubdomaincutToFirstSignificantSubdomain。 它使用由 gperf 生成的完美哈希表,该表使用从文件生成的列表:https://publicsuffix.org/list/public_suffix_list.dat。(例如,现在我们将域 ac.uk 识别为非显著的)。 #5030 (Guillaume Tassery)
  • 在系统表中采用了 IPv6 数据类型; 统一了 system.processessystem.query_log 中的客户端信息列 #5640 (alexey-milovidov)
  • 将会话用于与 MySQL 兼容性协议的连接。 #5476 #5646 (Yuriy Baranov)
  • 支持更多 ON CLUSTERALTER 查询。 #5593 #5613 (sundyli)
  • clickhouse-local 配置文件中支持 <logger> 节。 #5540 (proller)
  • 允许在 clickhouse-local 中使用 remote 表函数运行查询 #5627 (proller)

性能改进

  • 添加了在 MergeTree 列末尾写入最终标记的可能性。 它允许避免对超出表数据范围的键进行无用的读取。 仅当使用自适应索引粒度时才启用。 #5624 (alesapin)
  • 通过减少 stat 系统调用的数量,提高了在非常慢的文件系统上 MergeTree 表的性能。 #5648 (alexey-milovidov)
  • 修复了版本 19.6 中引入的从 MergeTree 表读取时的性能下降问题。 修复了 #5631。 #5633 (alexey-milovidov)

构建/测试/打包改进

  • 实现了 TestKeeper,作为用于测试的 ZooKeeper 接口的实现 #5643 (alexey-milovidov) (levushkin aleksej)
  • 从现在开始,.sql 测试可以由服务器隔离运行,并行运行,并使用随机数据库。 它允许更快地运行它们,添加具有自定义服务器配置的新测试,并确保不同的测试不会相互影响。 #5554 (Ivan)
  • 从性能测试中删除 <name><metrics> #5672 (Olga Khvostikova)
  • 修复了 Pretty 格式的 “select_format” 性能测试 #5642 (alexey-milovidov)

ClickHouse Release 19.9

ClickHouse Release 19.9.3.31, 2019-07-05

Bug 修复

  • 修复了 Delta 编解码器中的段错误,该错误影响值大小小于 32 位的列。 该错误导致随机内存损坏。 #5786 (alesapin)
  • 修复了检查带有 LowCardinality 列的 part 时出现的罕见错误。 #5832 (alesapin)
  • 修复了 TTL 合并中块中非物理列的段错误。 #5819 (Anton Popov)
  • 修复了低优先级查询可能无限期休眠的问题。 #5842 (alexey-milovidov)
  • 修复了 ClickHouse 将默认时区确定为 UCT 而不是 UTC 的问题。 #5828 (alexey-milovidov)
  • 修复了在 leader 副本之前在 follower 副本上执行分布式 DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTER 查询的错误。 现在它们将直接在 leader 副本上执行。 #5757 (alesapin)
  • 修复了竞争条件,这导致某些查询可能在 SYSTEM FLUSH LOGS 查询后不会立即出现在 query_log 中。 #5685 (Anton Popov)
  • evalMLModel 函数添加了对常量参数的缺失支持。 #5820 (alexey-milovidov)

ClickHouse Release 19.9.2.4, 2019-06-24

新功能

  • system.parts 表中打印有关冻结 parts 的信息。 #5471 (proller)
  • 如果未在参数中设置,则在 tty 上的 clickhouse-client 启动时询问客户端密码 #5092 (proller)
  • 为 Decimal 类型实现 dictGetdictGetOrDefault 函数。 #5394 (Artem Zuikov)

改进

  • Debian init:添加服务停止超时 #5522 (proller)
  • 添加默认禁止的设置,以使用可疑类型为 LowCardinality 创建表 #5448 (Olga Khvostikova)
  • 当不作为 evalMLMethod 函数中的 State 使用时,回归函数返回模型权重。 #5411 (Quid37)
  • 重命名并改进回归方法。 #5492 (Quid37)
  • 更清晰的字符串搜索器接口。 #5586 (Danila Kutenin)

Bug 修复

  • 修复了 Kafka 中潜在的数据丢失问题 #5445 (Ivan)
  • 修复了使用零列调用 PrettySpace 格式时可能发生的无限循环 #5560 (Olga Khvostikova)
  • 修复了线性模型中的 UInt32 溢出错误。 允许为非 const 模型参数评估 ML 模型。 #5516 (Nikolai Kochetov)
  • 如果提供的索引不存在,ALTER TABLE ... DROP INDEX IF EXISTS ... 不应引发异常 #5524 (Gleb Novikov)
  • 修复了标量子查询中 bitmapHasAny 引起的段错误 #5528 (Zhichang Yu)
  • 修复了即使在 DNS 缓存被删除后,复制连接池也不重试解析主机的错误。 #5534 (alesapin)
  • 修复了 ReplicatedMergeTree 上的 ALTER ... MODIFY TTL#5539 (Anton Popov)
  • 修复了带有 MATERIALIZED 列的 INSERT 到 Distributed 表的问题 #5429 (Azat Khuzhin)
  • 修复了截断 Join 存储时发生的 bad alloc 问题 #5437 (TCeason)
  • 在最新版本的 package tzdata 中,某些文件现在是符号链接。 当前用于检测默认时区的机制被破坏,并为某些时区提供了错误的名称。 现在,至少我们强制时区名称为 TZ 的内容(如果提供)。 #5443 (Ivan)
  • 修复了 MultiVolnitsky 搜索器在总和中的常量 needles 至少为 16KB 长时出现的一些极其罕见的情况。 该算法遗漏或覆盖了之前的结果,这可能导致 multiSearchAny 的结果不正确。 #5588 (Danila Kutenin)
  • 修复了 ExternalData 请求的设置无法使用 ClickHouse 设置的问题。 此外,目前,由于名称的歧义(在外部数据中,它可以被解释为表格式,而在查询中,它可以是一个设置),因此无法使用设置 date_time_input_formatlow_cardinality_allow_in_native_format#5455 (Danila Kutenin)
  • 修复了 parts 仅从 FS 中删除而未从 Zookeeper 中删除的错误。 #5520 (alesapin)
  • 从 MySQL 协议中删除调试日志 #5478 (alexey-milovidov)
  • 在 DDL 查询处理期间跳过 ZNONODE #5489 (Azat Khuzhin)
  • 修复了 mix UNION ALL 结果列类型。 存在结果列的数据和列类型不一致的情况。 #5503 (Artem Zuikov)
  • dictGetT 函数中对错误的整数抛出异常,而不是崩溃。 #5446 (Artem Zuikov)
  • 修复了 system.dictionaries 表中哈希字典的错误 element_count 和 load_factor。 #5440 (Azat Khuzhin)

构建/测试/打包改进

ClickHouse Release 19.8

ClickHouse Release 19.8.3.8, 2019-06-11

新功能

  • 添加了处理 JSON 的函数 #4686 (hcz) #5124。 (Vitaly Baranov)
  • 添加了一个 basename 函数,其行为类似于许多语言中存在的 basename 函数(python 中的 os.path.basename,PHP 中的 basename 等)。 可以处理类 UNIX 路径或 Windows 路径。 #5136 (Guillaume Tassery)
  • 添加了 LIMIT n, m BYLIMIT m OFFSET n BY 语法,用于为 LIMIT BY 子句设置偏移量 n。 #5138 (Anton Popov)
  • 添加了新的数据类型 SimpleAggregateFunction,它允许在 AggregatingMergeTree 中使用轻量聚合的列。 这只能与简单的函数一起使用,例如 anyanyLastsumminmax#4629 (Boris Granveaud)
  • 添加了对 ngramDistance 函数中非常量参数的支持 #5198 (Danila Kutenin)
  • 添加了函数 skewPopskewSampkurtPopkurtSamp,分别用于计算序列偏度、样本偏度、峰度和样本峰度。 #5200 (hcz)
  • 支持 MaterializeView 存储的重命名操作。 #5209 (Guillaume Tassery)
  • 添加了允许使用 MySQL 客户端连接到 ClickHouse 的服务器。 #4715 (Yuriy Baranov)
  • 添加 toDecimal*OrZerotoDecimal*OrNull 函数。 #5291 (Artem Zuikov)
  • 在函数中支持 Decimal 类型:quantilequantilesmedianquantileExactWeightedquantilesExactWeighted,medianExactWeighted。 #5304 (Artem Zuikov)
  • 添加了 toValidUTF8 函数,该函数将所有无效的 UTF-8 字符替换为替换字符 � (U+FFFD)。 #5322 (Danila Kutenin)
  • 添加了 format 函数。 使用参数中列出的字符串格式化常量模式(简化的 Python 格式模式)。 #5330 (Danila Kutenin)
  • 添加了 system.detached_parts 表,其中包含有关 MergeTree 表的 detached parts 的信息。 #5353 (akuzm)
  • 添加了 ngramSearch 函数,以计算 needle 和 haystack 之间的非对称差异。 #5418#5422 (Danila Kutenin)
  • 使用聚合函数接口实现了基本的机器学习方法(随机线性回归和逻辑回归)。 具有不同的模型权重更新策略(简单梯度下降法、动量法、Nesterov 法)。 还支持自定义大小的 mini-batches。 #4943 (Quid37)
  • 实现了 geohashEncodegeohashDecode 函数。 #5003 (Vasily Nemkov)
  • 添加了聚合函数 timeSeriesGroupSum,它可以聚合采样时间戳未对齐的不同时间序列。 它将使用两个采样时间戳之间的线性插值,然后将时间序列加在一起。 添加了聚合函数 timeSeriesGroupRateSum,它计算时间序列的速率,然后将速率加在一起。 #4542 (Yangkuan Liu)
  • 添加了函数 IPv4CIDRtoIPv4RangeIPv6CIDRtoIPv6Range,以使用 CIDR 计算子网中 IP 的下限和上限。 #5095 (Guillaume Tassery)
  • 当我们使用 HTTP 发送查询并启用 send_progress_in_http_headers 设置时,添加一个 X-ClickHouse-Summary 标头。返回 X-ClickHouse-Progress 的常用信息,并包含诸如查询中插入了多少行和多少字节的额外信息。#5116 (Guillaume Tassery)

改进

  • 为 MergeTree 系列表添加了 max_parts_in_total 设置(默认值:100 000),以防止分区键的不安全规范 #5166。#5171 (alexey-milovidov)
  • clickhouse-obfuscator: 通过将初始种子与列名(而不是列位置)组合来为各个列派生种子。这旨在转换具有多个相关表的数据集,以便表在转换后仍保持可 JOIN 状态。#5178 (alexey-milovidov)
  • 添加了函数 JSONExtractRawJSONExtractKeyAndValues。将函数 jsonExtract<type> 重命名为 JSONExtract<type>。当出现错误时,这些函数返回相应的值,而不是 NULL。修改了函数 JSONExtract,现在它从最后一个参数获取返回类型,并且不注入 Nullable。在 AVX2 指令不可用时,实现了回退到 RapidJSON。Simdjson 库已更新到新版本。#5235 (Vitaly Baranov)
  • 现在 ifmultiIf 函数不再依赖于条件的 Nullable,而是依赖于分支以实现 SQL 兼容性。#5238 (Jian Wu)
  • In 谓词现在从 Null 输入生成 Null 结果,就像 Equal 函数一样。#5152 (Jian Wu)
  • 每隔 (flush_interval / poll_timeout) 行从 Kafka 检查一次时间限制。这允许更频繁地中断从 Kafka 消费者的读取,并检查顶级流的时间限制。#5249 (Ivan)
  • 将 rdkafka 与捆绑的 SASL 链接。这应该允许使用 SASL SCRAM 身份验证。#5253 (Ivan)
  • 用于 ALL JOINS 的 RowRefList 的批处理版本。#5267 (Artem Zuikov)
  • clickhouse-server:更具信息量的监听错误消息。#5268 (proller)
  • <sharding_key> 中的函数中支持 clickhouse-copier 中的字典。#5270 (proller)
  • 添加新的设置 kafka_commit_every_batch 来调节 Kafka 提交策略。它允许设置提交模式:在处理完每批消息后,或在整个块写入存储后。这是在丢失一些消息或在某些极端情况下读取两次消息之间进行权衡。#5308 (Ivan)
  • 使 windowFunnel 支持其他无符号整数类型。#5320 (sundyli)
  • 允许在 Merge 引擎中隐藏虚拟列 _table#5325 (Ivan)
  • 使 sequenceMatch 聚合函数支持其他无符号整数类型。#5339 (sundyli)
  • 如果校验和不匹配很可能是由硬件故障引起的,则提供更好的错误消息。#5355 (alexey-milovidov)
  • 检查底层表是否支持 StorageMerge 的抽样。#5366 (Ivan)
  • 在外部字典中使用 MySQL 连接后关闭它们。这与问题 #893 相关。#5395 (Clément Rodriguez)
  • 改进 MySQL Wire Protocol。将格式名称更改为 MySQLWire。使用 RAII 调用 RSA_free。如果无法创建上下文,则禁用 SSL。#5419 (Yuriy Baranov)
  • clickhouse-client:允许在无法访问历史记录文件的情况下运行(只读、磁盘空间不足、文件是目录等)。#5431 (proller)
  • 在异步 INSERT 中尊重对 Distributed 表的查询设置。#4936 (TCeason)
  • 重命名函数 leastSqrsimpleLinearRegressionLinearRegressionlinearRegressionLogisticRegressionlogisticRegression#5391 (Nikolai Kochetov)

性能改进

  • 并行化 ALTER MODIFY 查询中非复制 MergeTree 表的 parts 处理。#4639 (Ivan Kush)
  • 正则表达式提取中的优化。#5193 #5191 (Danila Kutenin)
  • 如果右连接键列仅在 join on 部分中使用,则不要将其添加到连接结果中。#5260 (Artem Zuikov)
  • 在第一个空响应后冻结 Kafka 缓冲区。这避免了在某些行解析流中对空结果多次调用 ReadBuffer::next()#5283 (Ivan)
  • concat 函数对多个参数的优化。#5357 (Danila Kutenin)
  • 查询优化。允许在将逗号/交叉连接重写为内部连接时下推 IN 语句。#5396 (Artem Zuikov)
  • 使用参考实现升级我们的 LZ4 实现,以获得更快的解压缩速度。#5070 (Danila Kutenin)
  • 实现了 MSD 基数排序(基于 kxsort)和部分排序。#5129 (Evgenii Pravda)

Bug 修复

  • 修复了使用 join 推送 require 列的问题。#5192 (Winter Zhang)
  • 修复了当 ClickHouse 由 systemd 运行时,命令 sudo service clickhouse-server forcerestart 未按预期工作的问题。#5204 (proller)
  • 修复了 DataPartsExchange 中的 http 错误代码(interserver http 服务器在 9009 端口始终返回代码 200,即使发生错误)。#5216 (proller)
  • 修复了 String 长度超过 MAX_SMALL_STRING_SIZE 的 SimpleAggregateFunction 的问题。#5311 (Azat Khuzhin)
  • 修复了 IN 中 DecimalNullable(Decimal) 转换的错误。支持其他 Decimal 到 Decimal 的转换(包括不同的 scale)。#5350 (Artem Zuikov)
  • 修复了 simdjson 库中 FPU clobbering,这导致 uniqHLLuniqCombined 聚合函数以及数学函数(如 log)的错误计算。#5354 (alexey-milovidov)
  • 修复了 JSON 函数中混合 const/nonconst 情况的处理。#5435 (Vitaly Baranov)
  • 修复 retention 函数。现在,满足数据行中条件的所有条件都将添加到数据状态中。#5119 (小路)
  • 修复了带 Decimals 的 quantileExact 的结果类型。#5304 (Artem Zuikov)

文档

构建/测试/打包改进

ClickHouse 19.7 版本

ClickHouse 19.7.5.29 版本,2019-07-05

Bug 修复

ClickHouse 19.7.5.27 版本,2019-06-09

新功能

  • 添加了位图相关函数 bitmapHasAnybitmapHasAll,类似于数组的 hasAnyhasAll 函数。#5279 (Sergi Vladykin)

Bug 修复

  • 修复了带有 Null 值的 minmax INDEX 上的段错误。#5246 (Nikita Vasilev)
  • 将 LIMIT BY 中的所有输入列标记为必需输出。它修复了一些分布式查询中的“找不到列”错误。#5407 (Constantin S. Pan)
  • 修复了在具有 DEFAULT 的列上 SELECT .. PREWHERE 中“列 '0' 已存在”错误。#5397 (proller)
  • 修复了 ReplicatedMergeTree 上的 ALTER MODIFY TTL 查询。#5539 (Anton Popov)
  • 当 Kafka 消费者启动失败时,不要使服务器崩溃。#5285 (Ivan)
  • 修复了位图函数产生错误结果的问题。#5359 (Andy Yang)
  • 修复了哈希字典的 element_count(不包括重复项)。#5440 (Azat Khuzhin)
  • 使用环境变量 TZ 的内容作为时区名称。这有助于在某些情况下正确检测默认时区。#5443 (Ivan)
  • 不要尝试转换 dictGetT 函数中的整数,因为它无法正确工作。而是抛出异常。#5446 (Artem Zuikov)
  • 修复了 ExternalData HTTP 请求中的设置。#5455 (Danila Kutenin)
  • 修复了 parts 仅从 FS 中删除而未从 Zookeeper 中删除的错误。 #5520 (alesapin)
  • 修复了 bitmapHasAny 函数中的段错误。#5528 (Zhichang Yu)
  • 修复了即使在 DNS 缓存被删除后,复制连接池也不重试解析主机的错误。 #5534 (alesapin)
  • 修复了 DROP INDEX IF EXISTS 查询。现在,如果提供的索引不存在,ALTER TABLE ... DROP INDEX IF EXISTS ... 查询不会引发异常。#5524 (Gleb Novikov)
  • 修复了 union all 超类型列。存在结果列的数据和列类型不一致的情况。#5503 (Artem Zuikov)
  • 在 DDL 查询处理期间跳过 ZNONODE。之前,如果另一个节点删除了任务队列中的 znode,而尚未处理它的节点但已经获取了子节点列表,则会终止 DDLWorker 线程。#5489 (Azat Khuzhin)
  • 修复了带有 MATERIALIZED 列的 INSERT 到 Distributed() 表中的问题。#5429 (Azat Khuzhin)

ClickHouse 19.7.3.9 版本,2019-05-30

新功能

  • 允许限制用户可以指定的设置范围。这些约束可以在用户设置配置文件中设置。#4931 (Vitaly Baranov)
  • 添加了函数 groupUniqArray 的第二个版本,其中包含可选的 max_size 参数,用于限制结果数组的大小。此行为类似于 groupArray(max_size)(x) 函数。#5026 (Guillaume Tassery)
  • 对于 TSVWithNames/CSVWithNames 输入文件格式,现在可以从文件头确定列顺序。这由 input_format_with_names_use_header 参数控制。#5081 (Alexander)

Bug 修复

  • 合并期间 uncompressed_cache + JOIN 导致崩溃 (#5197) #5133 (Danila Kutenin)
  • clickhouse-client 查询系统表时出现段错误。#5066 #5127 (Ivan)
  • 通过 KafkaEngine 在重负载下数据丢失 (#4736) #5080 (Ivan)
  • 修复了非常罕见的数据竞争条件,当执行 UNION ALL 查询(涉及至少两个来自 system.columns、system.tables、system.parts、system.parts_tables 或 Merge 系列表的 SELECT)并同时执行相关表的列的 ALTER 时,可能会发生这种情况。#5189 (alexey-milovidov)

性能改进

文档

构建/测试/打包改进

ClickHouse 19.6 版本

ClickHouse 19.6.3.18 版本,2019-06-13

Bug 修复

  • 修复了来自表函数 mysqlodbc 以及相应的表引擎的查询的 IN 条件下推。这修复了 #3540 和 #2384。#5313 (alexey-milovidov)
  • 修复了 Zookeeper 中的死锁。#5297 (github1youlc)
  • 允许在 CSV 中引用小数。#5284 (Artem Zuikov
  • 禁止将 float Inf/NaN 转换为 Decimals(抛出异常)。#5282 (Artem Zuikov)
  • 修复了重命名查询中的数据竞争。#5247 (Winter Zhang)
  • 临时禁用 LFAlloc。在分配 UncompressedCache 和结果中,使用 LFAlloc 可能会导致大量 MAP_FAILED,并在高负载服务器上导致查询崩溃。cfdba93(Danila Kutenin)

ClickHouse 19.6.2.11 版本,2019-05-13

新功能

  • 列和表的 TTL 表达式。#4212 (Anton Popov)
  • 为 HTTP 响应添加了对 brotli 压缩的支持 (Accept-Encoding: br)。#4388 (Mikhail)
  • 添加了新函数 isValidUTF8,用于检查一组字节是否正确地进行了 utf-8 编码。#4934 (Danila Kutenin)
  • 添加了新的负载均衡策略 first_or_random,它将查询发送到第一个指定的主机,如果无法访问,则将查询发送到分片的随机主机。适用于跨复制拓扑设置。#5012 (nvartolomei)

实验性功能

  • 为 MergeTree* 表系列添加了设置 index_granularity_bytes(自适应索引粒度)。#4826 (alesapin)

改进

  • 为函数 substringUTF8 添加了对非常量和负数 size 和 length 参数的支持。#4989 (alexey-milovidov)
  • 在左连接中禁用向下推送到右表,在右连接中禁用向下推送到左表,以及在全连接中禁用向下推送到两个表。这修复了某些情况下错误的 JOIN 结果。#4846 (Ivan)
  • clickhouse-copier:从 --task-file 选项自动上传任务配置。#4876 (proller)
  • 为存储工厂和表函数工厂添加了拼写错误处理程序。#4891 (Danila Kutenin)
  • 支持没有子查询的多个连接的星号和限定星号。#4898 (Artem Zuikov)
  • 使缺少列错误消息更加用户友好。#4915 (Artem Zuikov)

性能改进

向后不兼容的更改

  • 为了保持一致性,HTTP 标头 Query-Id 已重命名为 X-ClickHouse-Query-Id#4972 (Mikhail)

Bug 修复

  • 修复了 clickhouse-copier 中潜在的空指针解引用。#4900 (proller)
  • 修复了带有 JOIN + ARRAY JOIN 的查询错误。#4938 (Artem Zuikov)
  • 修复了当字典通过 engine=Dictionary 的数据库依赖于另一个字典时,服务器启动时挂起的问题。#4962 (Vitaly Baranov)
  • 部分修复了 distributed_product_mode = local。可以通过表别名允许在 where/having/order by/… 中使用本地表的列。如果表没有别名,则抛出异常。尚无法访问没有表别名的列。#4986 (Artem Zuikov)
  • 修复了带有 JOINSELECT DISTINCT 可能产生的错误结果。#5001 (Artem Zuikov)
  • 修复了非常罕见的数据竞争条件,当执行 UNION ALL 查询(涉及至少两个来自 system.columns、system.tables、system.parts、system.parts_tables 或 Merge 系列表的 SELECT)并同时执行相关表的列的 ALTER 时,可能会发生这种情况。#5189 (alexey-milovidov)

构建/测试/打包 改进

  • 修复了在不同主机上运行 clickhouse-server 时测试失败的问题 #4713 (Vasily Nemkov)
  • clickhouse-test: 在非 tty 环境中禁用颜色控制序列。 #4937 (alesapin)
  • clickhouse-test: 允许使用任何测试数据库 (移除所有可能的 test. 限定) #5008 (proller)
  • 修复 ubsan 错误 #5037 (Vitaly Baranov)
  • Yandex LFAlloc 已添加到 ClickHouse 中,用于以不同方式分配 MarkCache 和 UncompressedCache 数据,以更可靠地捕获段错误 #4995 (Danila Kutenin)
  • Python 工具,以帮助进行向后移植和变更日志。 #4949 (Ivan)

ClickHouse 19.5 版本

ClickHouse 19.5.4.22 版本,2019-05-13

Bug 修复

  • 修复了 bitmap* 函数中可能发生的崩溃 #5220 #5228 (Andy Yang)
  • 修复了非常罕见的数据竞争条件,当执行 UNION ALL 查询(涉及至少两个来自 system.columns、system.tables、system.parts、system.parts_tables 或 Merge 系列表的 SELECT)并同时执行相关表的列的 ALTER 时,可能会发生这种情况。#5189 (alexey-milovidov)
  • 修复了错误 Set for IN is not created yet in case of using single LowCardinality column in the left part of IN。如果 LowCardinality 列是主键的一部分,则会发生此错误。 #5031 #5154 (Nikolai Kochetov)
  • 修改了 retention 函数:如果一行同时满足第一个和第 N 个条件,则仅将第一个满足的条件添加到数据状态。现在,所有满足数据行的条件都将添加到数据状态。 #5119 (小路)

ClickHouse 19.5.3.8 版本,2019-04-18

Bug 修复

ClickHouse 19.5.2.6 版本,2019-04-15

新特性

改进

  • topKtopKWeighted 现在支持自定义 loadFactor(修复了问题 #4252)。 #4634 (Kirill Danshin)
  • 即使对于没有采样的表,也允许使用 parallel_replicas_count > 1(对于这些表,该设置将被简单地忽略)。在以前的版本中,这会导致异常。 #4637 (Alexey Elymanov)
  • 支持 CREATE OR REPLACE VIEW。允许在单个语句中创建视图或设置新的定义。 #4654 (Boris Granveaud)
  • Buffer 表引擎现在支持 PREWHERE#4671 (Yangkuan Liu)
  • 添加了在 readonly 模式下启动复制表而无需 zookeeper 中的元数据的能力。 #4691 (alesapin)
  • 修复了 clickhouse-client 中进度条的闪烁问题。当使用带有流式查询的 FORMAT Null 时,此问题最为明显。 #4811 (alexey-milovidov)
  • 允许在每个用户的基础上禁用带有 hyperscan 库的函数,以限制可能过度和不受控制的资源使用。 #4816 (alexey-milovidov)
  • 在所有错误中添加版本号日志记录。 #4824 (proller)
  • multiMatch 函数添加了限制,要求字符串大小适合 unsigned int。还为 multiSearch 函数添加了参数数量限制。 #4834 (Danila Kutenin)
  • 改进了 Hyperscan 中暂存空间的使用和错误处理。 #4866 (Danila Kutenin)
  • *GraphiteMergeTree 引擎表的表配置中填充 system.graphite_detentions#4584 (Mikhail f. Shiryaev)
  • trigramDistance 函数重命名为 ngramDistance,并添加了更多带有 CaseInsensitiveUTF 的函数。 #4602 (Danila Kutenin)
  • 改进了数据跳过索引的计算。 #4640 (Nikita Vasilev)
  • 将普通列、DEFAULT 列、MATERIALIZED 列和 ALIAS 列保存在单个列表中(修复了问题 #2867)。 #4707 (Alex Zatelepin)

Bug 修复

  • 避免在内存分配失败时出现 std::terminate。现在,将按预期抛出 std::bad_alloc 异常。 #4665 (alexey-milovidov)
  • 修复了从缓冲区读取 capnproto 的问题。有时,通过 HTTP 无法成功加载文件。 #4674 (Vladislav)
  • 修复了 OPTIMIZE TABLE FINAL 查询后出现的错误 Unknown log entry type: 0#4683 (Amos Bird)
  • hasAnyhasAll 函数的错误参数可能会导致段错误。 #4698 (alexey-milovidov)
  • 执行 DROP DATABASE dictionary 查询时可能会发生死锁。 #4701 (alexey-milovidov)
  • 修复了 medianquantile 函数中的未定义行为。 #4702 (hcz)
  • 修复了当 network_compression_method 为小写时压缩级别检测失败的问题。在 v19.1 中被破坏。 #4706 (proller)
  • 修复了忽略 <timezone>UTC</timezone> 设置的问题(修复了问题 #4658)。 #4718 (proller)
  • 修复了 histogram 函数在 Distributed 表上的行为。 #4741 (olegkv)
  • 修复了 tsan 报告 destroy of a locked mutex#4742 (alexey-milovidov)
  • 修复了由于系统日志使用中的竞争条件导致的关机时 TSan 报告。修复了启用 part_log 时关机时潜在的 use-after-free 问题。 #4758 (alexey-milovidov)
  • 修复了在发生错误时 ReplicatedMergeTreeAlterThread 中重新检查 parts 的问题。 #4772 (Nikolai Kochetov)
  • 中间聚合函数状态的算术运算不适用于常量参数(例如子查询结果)。 #4776 (alexey-milovidov)
  • 始终在元数据中反引号列名。否则,无法创建名为 index 的列的表(服务器将由于元数据中格式错误的 ATTACH 查询而无法重启)。 #4782 (alexey-milovidov)
  • 修复了在 Distributed 表上 ALTER ... MODIFY ORDER BY 中的崩溃。 #4790 (TCeason)
  • 修复了启用 enable_optimize_predicate_expressionJOIN ON 中的段错误。 #4794 (Winter Zhang)
  • 修复了从 Kafka 消费 protobuf 消息后添加额外行的错误。 #4808 (Vitaly Baranov)
  • 修复了在不可为空列与可为空列上进行 JOIN 时发生的崩溃。修复了 ANY JOIN + join_use_nulls 中右键中的 NULLs#4815 (Artem Zuikov)
  • 修复了 clickhouse-copier 中的段错误。 #4835 (proller)
  • 修复了并发重命名或更改表时,从 system.tablesSELECT 时的竞争条件。 #4836 (alexey-milovidov)
  • 修复了获取已过时的数据 part 时的数据竞争。 #4839 (alexey-milovidov)
  • 修复了在重命名 MergeTree 系列表期间可能发生的罕见数据竞争。 #4844 (alexey-milovidov)
  • 修复了函数 arrayIntersect 中的段错误。如果使用混合常量参数和普通参数调用该函数,则可能会发生段错误。 #4847 (Lixiang Qian)
  • 修复了在极少数情况下从 Array(LowCardinality) 列读取数据的问题,当列包含一长串空数组时。 #4850 (Nikolai Kochetov)
  • 修复了在可为空列与不可为空列上进行连接时 FULL/RIGHT JOIN 中的崩溃。 #4855 (Artem Zuikov)
  • 修复了在副本之间获取 parts 时出现的 No message received 异常。 #4856 (alesapin)
  • 修复了在单个数组中存在多个重复值的情况下,arrayIntersect 函数的错误结果。 #4871 (Nikolai Kochetov)
  • 修复了并发 ALTER COLUMN 查询期间的竞争条件,这可能导致服务器崩溃(修复了问题 #3421)。 #4592 (Alex Zatelepin)
  • 修复了带有 const 列的 FULL/RIGHT JOIN 中的不正确结果。 #4723 (Artem Zuikov)
  • 修复了带有星号的 GLOBAL JOIN 中的重复项。 #4705 (Artem Zuikov)
  • 修复了未指定列类型时,列 CODECALTER MODIFY 中的参数推导。 #4883 (alesapin)
  • 函数 cutQueryStringAndFragment()queryStringAndFragment() 现在在 URL 包含片段且没有查询时也能正常工作。 #4894 (Vitaly Baranov)
  • 修复了当设置 min_bytes_to_use_direct_io 大于零时出现的罕见错误,当线程必须在列文件中向后查找时会发生此错误。 #4897 (alesapin)
  • 修复了带有 LowCardinality 参数的聚合函数的错误参数类型(修复了问题 #4919)。 #4922 (Nikolai Kochetov)
  • 修复了 GLOBAL JOIN 中的错误名称限定。 #4969 (Artem Zuikov)
  • 修复了 toISOWeek 函数对 1970 年的结果。 #4988 (alexey-milovidov)
  • 修复了在 ReplicatedMergeTree* 表族上为 ON CLUSTER 执行 DROPTRUNCATEOPTIMIZE 查询时的重复问题。 #4991 (alesapin)

向后不兼容的更改

  • 将设置 insert_sample_with_metadata 重命名为设置 input_format_defaults_for_omitted_fields#4771 (Artem Zuikov)
  • 添加了设置 max_partitions_per_insert_block(默认值为 100)。如果插入的块包含更多分区,则会抛出异常。如果想要删除限制(不建议),请将其设置为 0。 #4845 (alexey-milovidov)
  • 多搜索函数已重命名 (multiPositionmultiSearchAllPositions, multiSearchmultiSearchAny, firstMatchmultiSearchFirstIndex)。 #4780 (Danila Kutenin)

性能改进

  • 通过内联优化 Volnitsky 搜索器,对于具有许多 needle 或许多相似 bigram 的查询,性能提升约 5-10%。 #4862 (Danila Kutenin)
  • 修复了当设置 use_uncompressed_cache 大于零时出现的性能问题,当所有读取的数据都包含在缓存中时会出现此问题。 #4913 (alesapin)

构建/测试/打包 改进

  • 强化调试构建:更细粒度的内存映射和 ASLR;为标记缓存和索引添加内存保护。这允许在 ASan 和 MSan 无法做到时,找到更多的内存踩踏错误。 #4632 (alexey-milovidov)
  • 添加了对 cmake 变量 ENABLE_PROTOBUFENABLE_PARQUETENABLE_BROTLI 的支持,允许启用/禁用上述功能(与我们对 librdkafka、mysql 等所做的相同)。 #4669 (Silviu Caragea)
  • 添加了在测试运行后某些查询挂起时,打印进程列表和所有线程的堆栈跟踪的能力。 #4675 (alesapin)
  • clickhouse-test 中添加了对 Connection loss 错误的重试。 #4682 (alesapin)
  • 添加了带有 vagrant 的 freebsd 构建,并将线程清理器构建添加到打包器脚本。 #4712 #4748 (alesapin)
  • 现在,用户在安装期间被要求为用户 'default' 设置密码。 #4725 (proller)
  • 抑制 rdkafka 库中的警告。 #4740 (alexey-milovidov)
  • 允许在不使用 ssl 的情况下构建。 #4750 (proller)
  • 添加了一种从自定义用户启动 clickhouse-server 镜像的方法。 #4753 (Mikhail f. Shiryaev)
  • 升级 contrib boost 到 1.69。 #4793 (proller)
  • 使用 Thread Sanitizer 编译时禁用 mremap 的使用。令人惊讶的是,TSan 不会拦截 mremap(尽管它会拦截 mmapmunmap),这会导致误报。修复了状态测试中的 TSan 报告。 #4859 (alexey-milovidov)
  • 添加了测试,检查通过 HTTP 接口使用格式 schema。 #4864 (Vitaly Baranov)

ClickHouse 19.4 版本

ClickHouse 19.4.4.33 版本,2019-04-17

Bug 修复

  • 避免在内存分配失败时出现 std::terminate。现在,将按预期抛出 std::bad_alloc 异常。 #4665 (alexey-milovidov)
  • 修复了从缓冲区读取 capnproto 的问题。有时,通过 HTTP 无法成功加载文件。 #4674 (Vladislav)
  • 修复了 OPTIMIZE TABLE FINAL 查询后出现的错误 Unknown log entry type: 0#4683 (Amos Bird)
  • hasAnyhasAll 函数的错误参数可能会导致段错误。 #4698 (alexey-milovidov)
  • 执行 DROP DATABASE dictionary 查询时可能会发生死锁。 #4701 (alexey-milovidov)
  • 修复了 medianquantile 函数中的未定义行为。 #4702 (hcz)
  • 修复了当 network_compression_method 为小写时压缩级别检测失败的问题。在 v19.1 中被破坏。 #4706 (proller)
  • 修复了忽略 <timezone>UTC</timezone> 设置的问题(修复了问题 #4658)。 #4718 (proller)
  • 修复了 histogram 函数在 Distributed 表上的行为。 #4741 (olegkv)
  • 修复了 tsan 报告 destroy of a locked mutex#4742 (alexey-milovidov)
  • 修复了由于系统日志使用中的竞争条件导致的关机时 TSan 报告。修复了启用 part_log 时关机时潜在的 use-after-free 问题。 #4758 (alexey-milovidov)
  • 修复了在发生错误时 ReplicatedMergeTreeAlterThread 中重新检查 parts 的问题。 #4772 (Nikolai Kochetov)
  • 中间聚合函数状态的算术运算不适用于常量参数(例如子查询结果)。 #4776 (alexey-milovidov)
  • 始终在元数据中反引号列名。否则,无法创建名为 index 的列的表(服务器将由于元数据中格式错误的 ATTACH 查询而无法重启)。 #4782 (alexey-milovidov)
  • 修复了在 Distributed 表上 ALTER ... MODIFY ORDER BY 中的崩溃。 #4790 (TCeason)
  • 修复了启用 enable_optimize_predicate_expressionJOIN ON 中的段错误。 #4794 (Winter Zhang)
  • 修复了从 Kafka 消费 protobuf 消息后添加额外行的错误。 #4808 (Vitaly Baranov)
  • 修复了 clickhouse-copier 中的段错误。 #4835 (proller)
  • 修复了并发重命名或更改表时,从 system.tablesSELECT 时的竞争条件。 #4836 (alexey-milovidov)
  • 修复了获取已过时的数据 part 时的数据竞争。 #4839 (alexey-milovidov)
  • 修复了在重命名 MergeTree 系列表期间可能发生的罕见数据竞争。 #4844 (alexey-milovidov)
  • 修复了函数 arrayIntersect 中的段错误。如果使用混合常量参数和普通参数调用该函数,则可能会发生段错误。 #4847 (Lixiang Qian)
  • 修复了在极少数情况下从 Array(LowCardinality) 列读取数据的问题,当列包含一长串空数组时。 #4850 (Nikolai Kochetov)
  • 修复了在副本之间获取 parts 时出现的 No message received 异常。 #4856 (alesapin)
  • 修复了在单个数组中存在多个重复值的情况下,arrayIntersect 函数的错误结果。 #4871 (Nikolai Kochetov)
  • 修复了并发 ALTER COLUMN 查询期间的竞争条件,这可能导致服务器崩溃(修复了问题 #3421)。 #4592 (Alex Zatelepin)
  • 修复了未指定列类型时,列 CODECALTER MODIFY 中的参数推导。 #4883 (alesapin)
  • 函数 cutQueryStringAndFragment()queryStringAndFragment() 现在在 URL 包含片段且没有查询时也能正常工作。 #4894 (Vitaly Baranov)
  • 修复了当设置 min_bytes_to_use_direct_io 大于零时出现的罕见错误,当线程必须在列文件中向后查找时会发生此错误。 #4897 (alesapin)
  • 修复了带有 LowCardinality 参数的聚合函数的错误参数类型(修复了问题 #4919)。 #4922 (Nikolai Kochetov)
  • 修复了 toISOWeek 函数对 1970 年的结果。 #4988 (alexey-milovidov)
  • 修复了在 ReplicatedMergeTree* 表族上为 ON CLUSTER 执行 DROPTRUNCATEOPTIMIZE 查询时的重复问题。 #4991 (alesapin)

改进

  • 将普通列、DEFAULT 列、MATERIALIZED 列和 ALIAS 列保存在单个列表中(修复了问题 #2867)。 #4707 (Alex Zatelepin)

ClickHouse 19.4.3.11 版本,2019-04-02

Bug 修复

  • 修复了在可为空列与不可为空列上进行连接时 FULL/RIGHT JOIN 中的崩溃。 #4855 (Artem Zuikov)
  • 修复了 clickhouse-copier 中的段错误。 #4835 (proller)

构建/测试/打包 改进

ClickHouse 19.4.2.7 版本,2019-03-30

Bug 修复

  • 修复了在极少数情况下从 Array(LowCardinality) 列读取数据的问题,当列包含一长串空数组时。 #4850 (Nikolai Kochetov)

ClickHouse 19.4.1.3 版本,2019-03-19

Bug 修复

  • 修复了包含 LIMIT BYLIMIT 的远程查询。之前,如果 LIMIT BYLIMIT 用于远程查询,则 LIMIT 可能会在 LIMIT BY 之前发生,这会导致结果过滤过度。 #4708 (Constantin S. Pan)

ClickHouse 19.4.0.49 版本,2019-03-09

新特性

Bug Fixes

  • 此版本还包含来自 19.3 和 19.1 的所有错误修复。
  • 修复了数据跳过索引中的错误:INSERT 后的 granules 顺序不正确。 #4407 (Nikita Vasilev)
  • 修复了 NullableLowCardinality 列的 set 索引。在此之前,带有 NullableLowCardinality 列的 set 索引在选择时会导致错误 Data type must be deserialized with multiple streams#4594 (Nikolai Kochetov)
  • 正确设置完整 executable 字典更新的 update_time。 #4551 (Tema Novikov)
  • 修复了 19.3 中损坏的进度条。 #4627 (filimonov)
  • 修复了在某些情况下,当内存区域收缩时,MemoryTracker 的值不一致的问题。 #4619 (alexey-milovidov)
  • 修复了 ThreadPool 中的未定义行为。 #4612 (alexey-milovidov)
  • 修复了一个非常罕见的崩溃,消息为 mutex lock failed: Invalid argument,当 MergeTree 表在与 SELECT 并发删除时可能发生。 #4608 (Alex Zatelepin)
  • ODBC 驱动程序与 LowCardinality 数据类型的兼容性。 #4381 (proller)
  • FreeBSD:修复了 AIOcontextPool: Found io_event with unknown id 0 错误。 #4438 (urgordeadbeef)
  • system.part_log 表无论配置如何都会被创建。 #4483 (alexey-milovidov)
  • 修复了缓存字典的 dictIsIn 函数中的未定义行为。 #4515 (alesapin)
  • 修复了当 SELECT 查询多次锁定同一张表(例如,来自不同线程或执行多个子查询时)并且存在并发 DDL 查询时发生的死锁。 #4535 (Alex Zatelepin)
  • 默认禁用 compile_expressions,直到我们获得自己的 llvm contrib 并可以使用 clangasan 对其进行测试。 #4579 (alesapin)
  • 防止 std::terminate,当 clickhouse 外部字典源的 invalidate_query 返回了错误的结果集(空或多于一行或多于一列)。修复了 invalidate_query 每五秒执行一次,而不管 lifetime 的问题。 #4583 (alexey-milovidov)
  • 避免了当 clickhouse 源字典的 invalidate_query 涉及到 system.dictionaries 表或 Dictionaries 数据库时发生的死锁(罕见情况)。 #4599 (alexey-milovidov)
  • 修复了带有空 WHERE 的 CROSS JOIN。 #4598 (Artem Zuikov)
  • 修复了当传递常量参数时函数 "replicate" 中的段错误。 #4603 (alexey-milovidov)
  • 修复了带有谓词优化器的 lambda 函数。 #4408 (Winter Zhang)
  • 多重 JOIN 的多项修复。 #4595 (Artem Zuikov)

Improvements

  • 支持右表列的 JOIN ON 部分中的别名。 #4412 (Artem Zuikov)
  • 多重 JOIN 的结果需要正确的结果名称才能在子查询中使用。在结果中用源名称替换扁平别名。 #4474 (Artem Zuikov)
  • 改进了 joined 语句的下推逻辑。 #4387 (Ivan)

Performance Improvements

  • 改进了 "move to PREWHERE" 优化的启发式方法。 #4405 (alexey-milovidov)
  • 对 8 位和 16 位键使用利用 HashTable API 的适当的查找表。 #4536 (Amos Bird)
  • 提高了字符串比较的性能。 #4564 (alexey-milovidov)
  • 在单独的线程中清理分布式 DDL 队列,使其不会减慢处理分布式 DDL 任务的主循环。 #4502 (Alex Zatelepin)
  • min_bytes_to_use_direct_io 设置为 1 时,并非每个文件都以 O_DIRECT 模式打开,因为要读取的数据大小有时会被低估一个压缩块的大小。 #4526 (alexey-milovidov)

Build/Testing/Packaging Improvement

  • 增加了对 clang-9 的支持 #4604 (alexey-milovidov)
  • 修复了错误的 __asm__ 指令(再次) #4621 (Konstantin Podshumok)
  • 添加了从命令行指定 clickhouse-performance-test 设置的能力。 #4437 (alesapin)
  • 将字典测试添加到集成测试中。 #4477 (alesapin)
  • 将网站上基准测试中的查询添加到自动化性能测试中。 #4496 (alexey-milovidov)
  • xxhash.h 在外部 lz4 中不存在,因为它是一个实现细节,并且其符号使用 XXH_NAMESPACE 宏进行命名空间限定。当 lz4 是外部的时,xxHash 也必须是外部的,并且依赖项必须链接到它。 #4495 (Orivej Desh)
  • 修复了一个案例,其中 quantileTiming 聚合函数可以使用负数或浮点参数调用(这修复了带有未定义行为 sanitizer 的模糊测试)。 #4506 (alexey-milovidov)
  • 拼写错误更正。 #4531 (sdk2)
  • 修复了 Mac 上的编译。 #4371 (Vitaly Baranov)
  • 修复了 FreeBSD 和各种不寻常的构建配置的构建问题。 #4444 (proller)

ClickHouse Release 19.3

ClickHouse Release 19.3.9.1, 2019-04-02

Bug Fixes

  • 修复了在可为空列与不可为空列上进行连接时 FULL/RIGHT JOIN 中的崩溃。 #4855 (Artem Zuikov)
  • 修复了 clickhouse-copier 中的段错误。 #4835 (proller)
  • 修复了在极少数情况下从 Array(LowCardinality) 列读取数据的问题,当列包含一长串空数组时。 #4850 (Nikolai Kochetov)

Build/Testing/Packaging Improvement

ClickHouse Release 19.3.7, 2019-03-12

Bug Fixes

  • 修复了 #3920 中的错误。此错误表现为随机缓存损坏(消息 Unknown codec family codeCannot seek through file)和段错误。此错误首次出现在 19.1 版本中,并且存在于 19.1.10 和 19.3.6 版本中。 #4623 (alexey-milovidov)

ClickHouse Release 19.3.6, 2019-03-02

Bug Fixes

  • 当线程池中有超过 1000 个线程时,std::terminate 可能会在线程退出时发生。 Azat Khuzhin #4485 #4505 (alexey-milovidov)
  • 现在可以创建带有列注释(没有默认值)和列编解码器(没有注释和默认值)的 ReplicatedMergeTree* 表。同时修复了编解码器的比较。 #4523 (alesapin)
  • 修复了带有数组或元组的 JOIN 上的崩溃。 #4552 (Artem Zuikov)
  • 修复了 clickhouse-copier 中崩溃,消息为 ThreadStatus not created#4540 (Artem Zuikov)
  • 修复了如果使用了分布式 DDL,服务器关闭时挂起的问题。 #4472 (Alex Zatelepin)
  • 对于列号大于 10 的列,在关于文本格式解析的错误消息中打印了不正确的列号。 #4484 (alexey-milovidov)

Build/Testing/Packaging Improvements

  • 修复了启用 AVX 时的构建。 #4527 (alexey-milovidov)
  • 基于良好的已知版本而不是编译时内核启用扩展的 accounting 和 IO accounting。 #4541 (nvartolomei)
  • 允许跳过设置 core_dump.size_limit,如果设置限制失败,则发出警告而不是抛出异常。 #4473 (proller)
  • 删除了 Field.cppvoid readBinary(...)inline 标签。同时合并了冗余的 namespace DB 块。 #4530 (hcz)

ClickHouse Release 19.3.5, 2019-02-21

Bug Fixes

  • 修复了处理大型 http insert 查询的错误。 #4454 (alesapin)
  • 修复了由于错误实现 send_logs_level 设置而导致的与旧版本的向后不兼容性。 #4445 (alexey-milovidov)
  • 修复了由于列注释而引入的表函数 remote 的向后不兼容性。 #4446 (alexey-milovidov)

ClickHouse Release 19.3.4, 2019-02-16

Improvements

  • 当执行 ATTACH TABLE 查询时,表索引大小未计入内存限制。避免了在 detached 后无法 attach 表的可能性。 #4396 (alexey-milovidov)
  • 略微提高了从 ZooKeeper 接收的最大字符串和数组大小的限制。它允许继续使用 ZooKeeper 上增加的 CLIENT_JVMFLAGS=-Djute.maxbuffer=... 大小。 #4398 (alexey-milovidov)
  • 即使废弃的副本在其队列中已经有大量节点,也允许修复它。 #4399 (alexey-milovidov)
  • SET 索引添加一个必需的参数(最大存储行数)。 #4386 (Nikita Vasilev)

Bug Fixes

  • 修复了 WITH ROLLUP 对单个 LowCardinality 键进行 group by 的结果。 #4384 (Nikolai Kochetov)
  • 修复了 set 索引中的错误(如果一个 granule 包含超过 max_rows 行,则删除该 granule)。 #4386 (Nikita Vasilev)
  • 大量的 FreeBSD 构建修复。 #4397 (proller)
  • 修复了在包含相同别名的子查询的查询中别名替换的问题 (issue #4110)。 #4351 (Artem Zuikov)

Build/Testing/Packaging Improvements

  • 添加了在 docker 镜像中为无状态测试运行 clickhouse-server 的能力。 #4347 (Vasily Nemkov)

ClickHouse Release 19.3.3, 2019-02-13

New Features

  • 添加了 KILL MUTATION 语句,允许删除由于某些原因卡住的 mutations。在 system.mutations 表中添加了 latest_failed_partlatest_fail_timelatest_fail_reason 字段,以便更轻松地进行故障排除。 #4287 (Alex Zatelepin)
  • 添加了聚合函数 entropy,用于计算香农熵。 #4238 (Quid37)
  • 添加了向服务器发送 INSERT INTO tbl VALUES (.... 查询的能力,而无需拆分为 querydata 部分。 #4301 (alesapin)
  • 添加了 arrayWithConstant 函数的通用实现。 #4322 (alexey-milovidov)
  • 实现了 NOT BETWEEN 比较运算符。 #4228 (Dmitry Naumov)
  • 实现 sumMapFiltered,以便能够限制将通过 sumMap 求和的值的键的数量。 #4129 (Léo Ercolanelli)
  • mysql 表函数中添加了对 Nullable 类型的支持。 #4198 (Emmanuel Donin de Rosière)
  • 支持 LIMIT 子句中的任意常量表达式。 #4246 (k3box)
  • 添加了 topKWeighted 聚合函数,该函数接受带有(无符号整数)权重的附加参数。 #4245 (Andrew Golman)
  • StorageJoin 现在支持 join_any_take_last_row 设置,该设置允许覆盖同一键的现有值。 #3973 (Amos Bird
  • 添加了函数 toStartOfInterval#4304 (Vitaly Baranov)
  • 添加了 RowBinaryWithNamesAndTypes 格式。 #4200 (Oleg V. Kozlyuk)
  • 添加了 IPv4IPv6 数据类型。更有效的 IPv* 函数实现。 #3669 (Vasily Nemkov)
  • 添加了函数 toStartOfTenMinutes()#4298 (Vitaly Baranov)
  • 添加了 Protobuf 输出格式。 #4005 #4158 (Vitaly Baranov)
  • 为 HTTP 接口的数据导入 (INSERT) 添加了 brotli 支持。 #4235 (Mikhail)
  • 当用户在命令行客户端中输入函数名称或类型时,添加了提示。 #4239 (Danila Kutenin)
  • 在服务器的 HTTP 响应头中添加了 Query-Id#4231 (Mikhail)

Experimental Features

Bug Fixes

  • 修复了 JOIN ON 部分中重复列的 Not found column 错误。 #4279 (Artem Zuikov)
  • 使 START REPLICATED SENDS 命令启动复制发送。 #4229 (nvartolomei)
  • 修复了带有 Array(LowCardinality) 参数的聚合函数执行。 #4055 (KochetovNicolai)
  • 修复了当执行 INSERT ... SELECT ... FROM file(...) 查询且文件具有 CSVWithNamesTSVWIthNames 格式并且缺少第一个数据行时的错误行为。 #4297 (alexey-milovidov)
  • 修复了字典不可用时字典重载时的崩溃。此错误出现在 19.1.6 版本中。 #4188 (proller)
  • 修复了右表中有重复项的 ALL JOIN#4184 (Artem Zuikov)
  • 修复了 use_uncompressed_cache=1 时的段错误以及未压缩大小错误的异常。此错误出现在 19.1.6 版本中。 #4186 (alesapin)
  • 修复了 compile_expressions 在比较大的(超过 int16)日期时的错误。 #4341 (alesapin)
  • 修复了从表函数 numbers(0) 中选择时的无限循环。 #4280 (alexey-milovidov)
  • 临时禁用 ORDER BY 的谓词优化。 #3890 (Winter Zhang)
  • 修复了在旧 CPU 上使用 base64 函数时的 Illegal instruction 错误。此错误仅在 ClickHouse 使用 gcc-8 编译时重现。 #4275 (alexey-milovidov)
  • 修复了通过 TLS 连接与 PostgreSQL ODBC Driver 交互时的 No message received 错误。同时修复了使用 MySQL ODBC Driver 时的段错误。 #4170 (alexey-milovidov)
  • 修复了在条件运算符(函数 if)的分支中使用 DateDateTime 参数时的不正确结果。为函数 if 添加了通用情况。 #4243 (alexey-milovidov)
  • ClickHouse 字典现在在 clickhouse 进程中加载。 #4166 (alexey-milovidov)
  • 修复了从带有 File 引擎的表中进行 SELECTNo such file or directory 错误后重试时发生的死锁。 #4161 (alexey-milovidov)
  • 修复了从 system.tables 中选择时可能给出 table does not exist 错误的竞争条件。 #4313 (alexey-milovidov)
  • 如果 clickhouse-client 在交互模式下运行,则在加载命令行建议的数据时,可能会在退出时发生段错误。 #4317 (alexey-milovidov)
  • 修复了一个错误,即执行包含 IN 运算符的 mutations 会产生不正确的结果。 #4099 (Alex Zatelepin)
  • 修复了错误:如果存在带有 Dictionary 引擎的数据库,则所有字典在服务器启动时都会强制加载,并且如果存在来自 localhost 的 ClickHouse 源的字典,则该字典无法加载。 #4255 (alexey-milovidov)
  • 修复了在服务器关闭时尝试再次创建系统日志时发生的错误。 #4254 (alexey-milovidov)
  • 正确返回 joinGet 函数的正确类型并正确处理锁。 #4153 (Amos Bird)
  • 添加了 sumMapWithOverflow 函数。 #4151 (Léo Ercolanelli)
  • 修复了使用 allow_experimental_multiple_joins_emulation 时发生的段错误。 52de2c (Artem Zuikov)
  • 修复了 DateDateTime 比较不正确的错误。 #4237 (valexey)
  • 修复了未定义行为清理器下的模糊测试:为 quantile*Weighted 函数族添加了参数类型检查。 #4145 (alexey-milovidov)
  • 修复了删除旧数据 part 时可能发生的 File not found 错误的罕见竞争条件。 #4378 (alexey-milovidov)
  • 修复了安装包缺少 /etc/clickhouse-server/config.xml 的问题。 #4343 (proller)

构建/测试/打包改进

向后不兼容的变更

  • 移除了 allow_experimental_low_cardinality_type 设置。 LowCardinality 数据类型已可用于生产环境。 #4323 (alexey-milovidov)
  • 根据可用内存量减少了标记缓存大小和未压缩缓存大小。 #4240 (Lopatin Konstantin
  • CREATE TABLE 查询中添加了关键字 INDEX。 名称为 index 的列必须用反引号或双引号引用:`index`#4143 (Nikita Vasilev)
  • sumMap 现在提升结果类型而不是溢出。 旧的 sumMap 行为可以通过使用 sumMapWithOverflow 函数获得。 #4151 (Léo Ercolanelli)

性能提升

  • 对于没有 LIMIT 的查询,std::sort 替换为 pdqsort#4236 (Evgenii Pravda)
  • 现在服务器重用来自全局线程池的线程。 这会影响某些极端情况下的性能。 #4150 (alexey-milovidov)

改进

  • 为 FreeBSD 实现了 AIO 支持。 #4305 (urgordeadbeef)
  • SELECT * FROM a JOIN b USING a, b 现在仅从左表返回 ab 列。 #4141 (Artem Zuikov)
  • 允许客户端的 -C 选项像 -c 选项一样工作。 #4232 (syominsergey)
  • 现在,不带值的 --password 选项需要从 stdin 获取密码。 #4230 (BSD_Conqueror)
  • 在包含 LIKE 表达式或正则表达式的字符串文字中添加了对未转义的元字符的突出显示。 #4327 (alexey-milovidov)
  • 如果客户端套接字断开,则添加了取消 HTTP 只读查询的功能。 #4213 (nvartolomei)
  • 现在服务器报告进度以保持客户端连接活动。 #4215 (Ivan)
  • 对于启用了 optimize_throw_if_noop 设置的 OPTIMIZE 查询,提供了稍好的消息和原因。 #4294 (alexey-milovidov)
  • 为 clickhouse 服务器添加了 --version 选项的支持。 #4251 (Lopatin Konstantin)
  • clickhouse-server 添加了 --help/-h 选项。 #4233 (Yuriy Baranov)
  • 添加了对带有聚合函数状态结果的标量子查询的支持。 #4348 (Nikolai Kochetov)
  • 改进了服务器关闭时间和 ALTER 等待时间。 #4372 (alexey-milovidov)
  • 向 system.replicas 添加了关于 replicated_can_become_leader 设置的信息,并在副本不尝试成为 leader 时添加了日志记录。 #4379 (Alex Zatelepin)

ClickHouse Release 19.1

ClickHouse Release 19.1.14, 2019-03-14

  • 修复了如果设置 asterisk_left_columns_only 在使用带有 SELECT *GLOBAL JOIN 的情况下设置为 1 时可能发生的错误 Column ... queried more than once(罕见情况)。 此问题在 19.3 及更新版本中不存在。 6bac7d8d (Artem Zuikov)

ClickHouse Release 19.1.13, 2019-03-12

此版本包含与 19.3.7 完全相同的补丁集。

ClickHouse Release 19.1.10, 2019-03-03

此版本包含与 19.3.6 完全相同的补丁集。

ClickHouse Release 19.1

ClickHouse Release 19.1.9, 2019-02-21

Bug 修复

  • 修复了由于错误实现 send_logs_level 设置而导致的与旧版本的向后不兼容性。 #4445 (alexey-milovidov)
  • 修复了由于列注释而引入的表函数 remote 的向后不兼容性。 #4446 (alexey-milovidov)

ClickHouse Release 19.1.8, 2019-02-16

Bug 修复

  • 修复了安装包缺少 /etc/clickhouse-server/config.xml 的问题。 #4343 (proller)

ClickHouse Release 19.1

ClickHouse Release 19.1.7, 2019-02-15

Bug 修复

  • 正确返回 joinGet 函数的正确类型并正确处理锁。 #4153 (Amos Bird)
  • 修复了在服务器关闭时尝试再次创建系统日志时发生的错误。 #4254 (alexey-milovidov)
  • 修复了错误:如果存在带有 Dictionary 引擎的数据库,则所有字典在服务器启动时都会强制加载,并且如果存在来自 localhost 的 ClickHouse 源的字典,则该字典无法加载。 #4255 (alexey-milovidov)
  • 修复了一个错误,即执行包含 IN 运算符的 mutations 会产生不正确的结果。 #4099 (Alex Zatelepin)
  • 如果 clickhouse-client 在交互模式下运行,则在加载命令行建议的数据时,可能会在退出时发生段错误。 #4317 (alexey-milovidov)
  • 修复了从 system.tables 中选择时可能给出 table does not exist 错误的竞争条件。 #4313 (alexey-milovidov)
  • 修复了从带有 File 引擎的表中进行 SELECTNo such file or directory 错误后重试时发生的死锁。 #4161 (alexey-milovidov)
  • 修复了一个问题:本地 ClickHouse 字典通过 TCP 加载,但应该在进程内加载。 #4166 (alexey-milovidov)
  • 修复了通过 TLS 连接与 PostgreSQL ODBC Driver 交互时的 No message received 错误。同时修复了使用 MySQL ODBC Driver 时的段错误。 #4170 (alexey-milovidov)
  • 临时禁用 ORDER BY 的谓词优化。 #3890 (Winter Zhang)
  • 修复了从表函数 numbers(0) 中选择时的无限循环。 #4280 (alexey-milovidov)
  • 修复了 compile_expressions 在比较大的(超过 int16)日期时的错误。 #4341 (alesapin)
  • 修复了 uncompressed_cache=1 和未压缩大小错误的异常导致的段错误。 #4186 (alesapin)
  • 修复了右表中有重复项的 ALL JOIN#4184 (Artem Zuikov)
  • 修复了当执行 INSERT ... SELECT ... FROM file(...) 查询且文件具有 CSVWithNamesTSVWIthNames 格式并且缺少第一个数据行时的错误行为。 #4297 (alexey-milovidov)
  • 修复了带有 Array(LowCardinality) 参数的聚合函数执行。 #4055 (KochetovNicolai)
  • Debian 包:根据配置更正 /etc/clickhouse-server/preprocessed 链接。 #4205 (proller)
  • 修复了未定义行为清理器下的模糊测试:为 quantile*Weighted 函数族添加了参数类型检查。 #4145 (alexey-milovidov)
  • 使 START REPLICATED SENDS 命令启动复制发送。 #4229 (nvartolomei)
  • 修复了 JOIN ON 部分中重复列的 Not found column 错误。 #4279 (Artem Zuikov)
  • 现在 /etc/ssl 用作 SSL 证书的默认目录。 #4167 (alexey-milovidov)
  • 修复了字典不可用时字典重新加载时发生的崩溃。 #4188 (proller)
  • 修复了 DateDateTime 比较不正确的错误。 #4237 (valexey)
  • 修复了在条件运算符(函数 if)的分支中使用 DateDateTime 参数时的不正确结果。为函数 if 添加了通用情况。 #4243 (alexey-milovidov)

ClickHouse Release 19.1.6, 2019-01-24

新功能

  • 表的自定义每列压缩编解码器。 #3899 #4111 (alesapin, Winter Zhang, Anatoly)
  • 添加了压缩编解码器 Delta#4052 (alesapin)
  • 允许 ALTER 压缩编解码器。 #4054 (alesapin)
  • 为了 SQL 标准兼容性,添加了函数 leftrighttrimltrimrtrimtimestampaddtimestampsub#3826 (Ivan Blinkov)
  • 支持在 HDFS 表和 hdfs 表函数中写入。 #4084 (alesapin)
  • 添加了从大的 haystack 中搜索多个常量字符串的函数:multiPositionmultiSearchfirstMatch 以及 -UTF8-CaseInsensitive-CaseInsensitiveUTF8 变体。 #4053 (Danila Kutenin)
  • 如果 SELECT 查询按分片键过滤(设置 optimize_skip_unused_shards),则修剪未使用的分片。 #3851 (Gleb Kanterov, Ivan)
  • 允许 Kafka 引擎忽略每个块的一些解析错误。 #4094 (Ivan)
  • 添加了对 CatBoost 多分类模型评估的支持。 函数 modelEvaluate 返回包含多分类模型每个类别的原始预测的元组。 libcatboostmodel.so 应该使用 #607 构建。 #3959 (KochetovNicolai)
  • 添加了函数 filesystemAvailablefilesystemFreefilesystemCapacity#4097 (Boris Granveaud)
  • 添加了哈希函数 xxHash64xxHash32#3905 (filimonov)
  • 添加了 gccMurmurHash 哈希函数(GCC 风格的 Murmur 哈希),它使用与 gcc 相同的哈希种子 #4000 (sundyli)
  • 添加了哈希函数 javaHashhiveHash#3811 (shangshujie365)
  • 添加了表函数 remoteSecure。 函数的工作方式与 remote 相同,但使用安全连接。 #4088 (proller)

实验性功能

  • 添加了多 JOIN 模拟(allow_experimental_multiple_joins_emulation 设置)。 #3946 (Artem Zuikov)

Bug 修复

  • 默认情况下限制 compiled_expression_cache_size 设置以降低内存消耗。 #4041 (alesapin)
  • 修复了一个导致在执行 Replicated 表的 ALTER 的线程和从 ZooKeeper 更新配置的线程中发生挂起的问题。 #2947 #3891 #3934 (Alex Zatelepin)
  • 修复了执行分布式 ALTER 任务时的竞争条件。 竞争条件导致多个副本尝试执行任务,除一个副本外,所有副本都因 ZooKeeper 错误而失败。 #3904 (Alex Zatelepin)
  • 修复了从 ZooKeeper 请求超时后,from_zk 配置元素未刷新的错误。 #2947 #3947 (Alex Zatelepin)
  • 修复了 IPv4 子网掩码前缀错误的错误。 #3945 (alesapin)
  • 修复了由于资源耗尽而无法创建新线程时,在极少数情况下发生的崩溃 (std::terminate)。 #3956 (alexey-milovidov)
  • 修复了在 remote 表函数执行中,为 getStructureOfRemoteTable 使用了错误限制的错误。 #4009 (alesapin)
  • 修复了 netlink 套接字的泄漏。 它们被放置在一个池中,在那里它们永远不会被删除,并且当所有当前套接字都在使用时,在启动新线程时会创建新套接字。 #4017 (Alex Zatelepin)
  • 修复了在 fork odbc-bridge 子进程后,比从 /proc 读取所有 fds 更早关闭 /proc/self/fd 目录的错误。 #4120 (alesapin)
  • 修复了在主键中使用 String 的情况下,String 到 UInt 的单调转换。 #3870 (Winter Zhang)
  • 修复了整数转换函数单调性计算中的错误。 #3921 (alexey-milovidov)
  • 修复了在某些无效参数情况下,arrayEnumerateUniqarrayEnumerateDense 函数中的段错误。 #3909 (alexey-milovidov)
  • 修复了 StorageMerge 中的 UB。 #3910 (Amos Bird)
  • 修复了 addDayssubtractDays 函数中的段错误。 #3913 (alexey-milovidov)
  • 修复了错误:当对整数参数和大的负比例执行时,函数 roundfloortruncceil 可能会返回错误的结果。 #3914 (alexey-milovidov)
  • 修复了由 ‘kill query sync’ 引起的可能导致核心转储的 bug。 #3916 (muVulDeePecker)
  • 修复了空复制队列后长时间延迟的错误。 #3928 #3932 (alesapin)
  • 修复了在插入具有 LowCardinality 主键的表时,过度的内存使用。 #3955 (KochetovNicolai)
  • 修复了空数组情况下 Native 格式的 LowCardinality 序列化。 #3907 #4011 (KochetovNicolai)
  • 修复了使用单个 LowCardinality 数字列进行 distinct 时结果不正确的问题。 #3895 #4012 (KochetovNicolai)
  • 修复了带有 LowCardinality 键的专用聚合(在启用 compile 设置的情况下)。 #3886 (KochetovNicolai)
  • 修复了复制表查询的用户和密码转发。 #3957 (alesapin) (小路)
  • 修复了在重新加载字典时,列出 Dictionary 数据库中的表时可能发生的非常罕见的竞争条件。 #3970 (alexey-milovidov)
  • 修复了 HAVING 与 ROLLUP 或 CUBE 一起使用时结果不正确的问题。 #3756 #3837 (Sam Chou)
  • 修复了带有 JOIN ON 语法和分布式表的查询的列别名。 #3980 (Winter Zhang)
  • 修复了 quantileTDigest 内部实现中的错误(由 Artem Vakhrushev 发现)。 此错误永远不会在 ClickHouse 中发生,并且仅与那些直接使用 ClickHouse 代码库作为库的人员相关。 #3935 (alexey-milovidov)

改进

  • 支持 ALTER TABLE ADD COLUMN 语句中的 IF NOT EXISTS 以及 DROP/MODIFY/CLEAR/COMMENT COLUMN 中的 IF EXISTS#3900 (Boris Granveaud)
  • 函数 parseDateTimeBestEffort:支持格式 DD.MM.YYYYDD.MM.YYDD-MM-YYYYDD-Mon-YYYYDD/Month/YYYY 和类似格式。 #3922 (alexey-milovidov)
  • CapnProtoInputStream 现在支持锯齿状结构。 #4063 (Odin Hultgren Van Der Horst)
  • 可用性改进:添加了检查服务器进程是否从数据目录的所有者启动。 如果数据属于非 root 用户,则不允许从 root 启动服务器。 #3785 (sergey-v-galtsev)
  • 在分析带有 JOIN 的查询期间,改进了检查所需列的逻辑。 #3930 (Artem Zuikov)
  • 减少了单个服务器中大量分布式表情况下的连接数。 #3726 (Winter Zhang)
  • 支持 ODBC 驱动程序的 WITH TOTALS 查询的总计行。 #3836 (Maksim Koritckiy)
  • 允许在 if 函数内部使用 Enum 作为整数。 #3875 (Ivan)
  • 添加了 low_cardinality_allow_in_native_format 设置。 如果禁用,则不在 Native 格式中使用 LowCadrinality 类型。 #3879 (KochetovNicolai)
  • 从编译表达式缓存中删除了一些冗余对象,以降低内存使用量。 #4042 (alesapin)
  • 添加了检查 SET send_logs_level = 'value' 查询是否接受适当值的检查。 #3873 (Sabyanin Maxim)
  • 修复了类型转换函数中的固定数据类型检查。 #3896 (Winter Zhang)

性能提升

  • 添加了一个 MergeTree 设置 use_minimalistic_part_header_in_zookeeper。如果启用,Replicated 表将在单个 part znode 中存储紧凑的部分元数据。这可以显著减小 ZooKeeper 快照大小(特别是当表有很多列时)。请注意,启用此设置后,您将无法降级到不支持它的版本。 #3960 (Alex Zatelepin)
  • 为函数 sequenceMatchsequenceCount 添加了基于 DFA 的实现,以处理不包含时间的情况。 #4004 (Léo Ercolanelli)
  • 提升了整数序列化的性能。 #3968 (Amos Bird)
  • 对 PODArray 进行零左填充,以便 -1 元素始终有效且为零。它用于无分支偏移量计算。 #3920 (Amos Bird)
  • 回退了导致性能下降的 jemalloc 版本。 #4018 (alexey-milovidov)

向后不兼容的变更

  • 移除了未文档化的功能 ALTER MODIFY PRIMARY KEY,因为它已被 ALTER MODIFY ORDER BY 命令取代。 #3887 (Alex Zatelepin)
  • 移除了函数 shardByHash#3833 (alexey-milovidov)
  • 禁止将标量子查询与 AggregateFunction 类型的返回值一起使用。 #3865 (Ivan)

构建/测试/打包改进

  • 增加了对 PowerPC (ppc64le) 构建的支持。 #4132 (Danila Kutenin)
  • 状态功能测试在公开可用的数据集上运行。 #3969 (alexey-milovidov)
  • 修复了在 Docker 或 systemd-nspawn 中服务器无法启动并显示 bash: /usr/bin/clickhouse-extract-from-config: Operation not permitted 消息的错误。 #4136 (alexey-milovidov)
  • rdkafka 库更新到 v1.0.0-RC5。使用 cppkafka 代替原始 C 接口。 #4025 (Ivan)
  • 更新了 mariadb-client 库。修复了 UBSan 发现的一个问题。 #3924 (alexey-milovidov)
  • 一些针对 UBSan 构建的修复。 #3926 #3021 #3948 (alexey-milovidov)
  • 添加了针对每个提交运行的带有 UBSan 构建的测试。
  • 添加了针对每个提交运行的 PVS-Studio 静态分析器。
  • 修复了 PVS-Studio 发现的错误。 #4013 (alexey-milovidov)
  • 修复了 glibc 兼容性问题。 #4100 (alexey-milovidov)
  • 将 Docker 镜像移动到 18.10,并为 glibc >= 2.28 添加兼容性文件 #3965 (alesapin)
  • 如果用户不想在服务器 Docker 镜像中更改目录所有者,则添加环境变量。 #3967 (alesapin)
  • 在 clang 中启用了 -Weverything 中的大多数警告。启用了 -Wpedantic#3986 (alexey-milovidov)
  • 添加了一些仅在 clang 8 中可用的更多警告。 #3993 (alexey-milovidov)
  • 当使用共享链接时,链接到 libLLVM 而不是单独的 LLVM 库。 #3989 (Orivej Desh)
  • 为测试镜像添加了 sanitizer 变量。 #4072 (alesapin)
  • clickhouse-server debian 包将推荐 libcap2-bin 包,以使用 setcap 工具设置 capabilities。这是可选的。 #4093 (alexey-milovidov)
  • 改进了编译时间,修复了 includes。 #3898 (proller)
  • 为哈希函数添加了性能测试。 #3918 (filimonov)
  • 修复了循环库依赖。 #3958 (proller)
  • 改进了低可用内存下的编译。 #4030 (proller)
  • 添加了测试脚本以重现 jemalloc 中的性能下降。 #4036 (alexey-milovidov)
  • 修复了 dbms 下注释和字符串文字中的拼写错误。 #4122 (maiha)
  • 修复了注释中的错别字。 #4089 (Evgenii Pravda)

2018 年变更日志