2019
ClickHouse 版本 19.17
ClickHouse 版本 19.17.6.36, 2019-12-27
Bug 修复
- 修复了解压缩中潜在的缓冲区溢出. 恶意用户可以传递可能导致缓冲区读取的伪造压缩数据. 这个问题是由 Yandex 信息安全团队的 Eldar Zaitov 发现的. #8404 (alexey-milovidov)
- 修复了当服务器无法使用字符串数据类型的值 (需要 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) - 修复了聚合位图和标量位图相交时的位图和错误. #8082 (Yue Huang)
- 修复了在没有
TABLE或DICTIONARY限定符的情况下使用EXISTS查询时的段错误,就像EXISTS. #8213 (alexey-milovidov) - 修复了函数
rand和randConstant在参数可为空的情况下的返回类型. 现在函数总是返回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)
- 修复了在合并指定部分后立即执行的
ALTER table MOVE part, 这可能导致移动指定部分合并到的部分. 现在它正确地移动了指定的部分. #8104 (Vladimir Chebotarev) - 现在可以将字典的表达式指定为字符串. 这对于从非 ClickHouse 源中提取数据时计算属性很有用, 因为它允许对这些表达式使用非 ClickHouse 语法. #8098 (alesapin)
- 修复了
clickhouse-copier中由于 ZXid 溢出而导致的非常罕见的竞争. #8088 (Ding Xiang Fei) - 修复了查询失败后 (例如由于"Too many simultaneous queries") 不会读取外部表信息的错误, 并且下一个请求会将此信息解释为下一个查询的开始, 从而导致
Unknown packet from client. #8084 (Azat Khuzhin) - 避免在"Unknown packet X from server"之后取消引用. #8071 (Azat Khuzhin)
- 恢复对所有 ICU 语言环境的支持, 添加为常量表达式应用排序规则的功能, 并将语言名称添加到 system.collations 表. #8051 (alesapin)
- 从
StorageFile和StorageHDFS读取的流数量现在受到限制, 以避免超过内存限制. #7981 (alesapin) - 修复了没有键的
*MergeTree表的CHECK TABLE查询. #7979 (alesapin) - 如果没有突变, 则从零件名称中删除了突变编号. 此删除改进了与旧版本的兼容性. #8250 (alesapin)
- 修复部分附属部分由于 data_version 大于表突变版本而跳过突变的 bug. #7812 (Zhichang Yu)
- 允许在将零件移动到另一台设备后使用零件的冗余副本启动服务器. #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 版本 19.17.4.11, 2019-11-22
向后不兼容的更新
- 使用列而不是 AST 来存储标量子查询结果以获得更好的性能. 设置
enable_scalar_subquery_optimization是在 19.17 中添加的, 默认情况下启用. 在从以前的版本升级到 19.17.2 或 19.17.3 期间, 它会导致类似 this 的错误. 此设置在 19.17.4 中默认禁用, 以便从 19.16 和更旧版本升级而不会出错. #7392 (Amos Bird)
新特征
- 添加使用 DDL 查询创建字典的功能. #7360 (alesapin)
- 使
bloom_filter类型的索引支持LowCardinality和Nullable. #7363 #7561 (Nikolai Kochetov) - 添加函数
isValidJSON以检查传递的字符串是否是有效的 json. #5910 #7293 (Vdimir) - 实现
arrayCompact函数. #7328 (Memo) - 为十进制数创建函数
hex. 它的工作原理类似于hex(reinterpretAsString()), 但不会删除最后的零字节. #7355 (Mikhail Korotov) - 添加
arrayFill和arrayReverseFill函数, 将元素替换为数组前/后的其他元素. #7380 (hcz) - 添加
CRC32IEEE()/CRC64()支持. #7480 (Azat Khuzhin) - 实现类似于 in 的
char函数. mysql #7486 (sundyli) - 添加
bitmapTransform函数. 它将位图中的一组值转换为另一个值数组, 结果是一个新的位图. #7598 (Zhichang Yu) - 实现了
javaHashUTF16LE()函数. #7651 (achimbab) - 为分布式引擎添加
_shard_num虚拟列. #7624 (Azat Khuzhin)
实验功能
- 支持
MergeTree中的处理器 (新的查询执行管道). #7181 (Nikolai Kochetov)
Bug 修复
- 修复
Values中不正确的浮点解析. #7817 #7870 (tavplubix) - 修复启用 trace_log 时可能发生的罕见死锁. #7838 (filimonov)
- 生成 Kafka 表时防止消息重复, 其中有任何 MV 从中选择. #7265 (Ivan)
- 支持
IN中的Array(LowCardinality(Nullable(String))). 解决 #7364 #7366 (achimbab) - 在
SQL BIGINT中添加对SQL TINYINT的处理, 并在 ODBC Bridge 中修复对SQL_FLOAT数据源类型的处理. #7491 (Denis Glazachev) - 修复空十进制列上的聚合(
avg和分位数). #7431 (Andrey Konyaev) - 将
INSERT修复为 Distributed withMATERIALIZED列. #7377 (Azat Khuzhin) - 如果分区的某些部分已经在目标磁盘或卷上, 则使
MOVE PARTITION工作. #7434 (Vladimir Chebotarev) - 修复了在多磁盘配置中
ReplicatedMergeTree中的突变期间无法创建硬链接的错误. #7558 (Vladimir Chebotarev) - 修复了当整个部分保持不变并且在另一个磁盘上找到最佳空间时 MergeTree 上发生突变的错误. #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 的函数) 的谓词的突变中的错误, 这可能导致崩溃或奇怪的异常. #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) - 再次尝试以
PrettySpaceformat 格式修复无限循环. #7591 (Olga Khvostikova) - 当所有参数都是相同大小的
FixedString时, 修复concat函数中的错误. #7635 (alesapin) - 修复了在定义 S3、URL 和 HDFS 存储时使用 1 个参数的异常. #7618 (Vladimir Chebotarev)
- 修复带有查询的视图的 InterpreterSelectQuery 的范围. #7601 (Azat Khuzhin)
改进
Nullable列识别和 NULL 值由 ODBC 桥正确处理. #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 格式,以便可以通过 clickhouse-client 使用
select ignore(<expression>) from table format Null进行性能测量. #7606 (Amos Bird) - 像
CREATE TABLE ... AS (SELECT (1, 2))这样的查询被正确解析. #7542 (hcz)
性能改进
- 改进了对短字符串键的聚合性能. #6243 (Alexander Kuzmenkov, Amos Bird)
- 在折叠常量谓词后运行另一遍语法/表达式分析以获得潜在的优化. #7497 (Amos Bird)
- 使用存储元信息来评估琐碎的
SELECT count() FROM table;. #7510 (Amos Bird, alexey-milovidov) - 矢量化处理
arrayReduce类似于聚合器addBatch. #7608 (Amos Bird) Kafka消费性能的小幅改进. #7475 (Ivan)
构建/测试/打包改进
- 添加对 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 SQL 方言添加了 ANTLR4 语法. #7595 #7596 (alexey-milovidov)
ClickHouse 版本 19.16
ClickHouse 版本 19.16.14.65, 2020-03-25
- 修复了多个参数 (超过 10 个) 的三元逻辑 OP 的批量计算中的错误. #8718 (Alexander Kazakov) This bugfix was backported to version 19.16 by a special request from Altinity.
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. Incorporates #9507. #9513 (filimonov) - 允许将
MaterializedView与Kafka表上方的子查询一起使用. #8197 (filimonov)
新特征
- 添加
deduplicate_blocks_in_dependent_materialized_views选项以控制幂等插入到具有物化视图的表中的行为. 应 Altinity 的特殊要求, 此新功能已添加到错误修复版本中. #9070 (urykhy)
ClickHouse 版本 19.16.2.2, 2019-10-30
向后不兼容的更新
- 为 count/countIf 添加缺失的 arity 验证. #7095, #7298 (Vdimir)
- 删除旧的
asterisk_left_columns_only设置 (默认情况下禁用). #7335 (Artem Zuikov) - 模板数据格式的格式字符串现在在文件中指定. #7118 (tavplubix)
新特征
- 引入 uniqCombined64() 计算大于 UINT_MAX 的基数. #7213, #7222 (Azat Khuzhin)
- 支持数组列上的布隆过滤器索引. #6984 (achimbab)
- 添加一个函数
getMacro(name), 它从服务器配置中返回带有相应<macros>值的字符串. #7240 (alexey-milovidov) - 为基于 HTTP 源的字典设置两个配置选项:
credentials和http-headers. #7092 (Guillaume Tassery) - 添加一个新的 ProfileEvent
Merge来计算启动的后台合并的数量. #7093 (Mikhail Korotov) - 添加返回完全限定域名的 fullHostName 函数. #7263 #7291 (sundyli)
- 添加函数
arraySplit和arrayReverseSplit, 它们通过cut off条件拆分数组. 它们在时间序列处理中很有用. #7294 (hcz) - 添加返回 multiMatch 系列函数中所有匹配索引数组的新函数. #7299 (Danila Kutenin)
- 添加一个新的数据库引擎
Lazy, 该引擎针对存储大量小型 -Log 表进行了优化. #7171 (Nikita Vasilev) - 为位图列添加聚合函数 groupBitmapAnd、-Or、-Xor. #7109 (Zhichang Yu)
- 添加聚合函数组合子 -OrNull 和 -OrDefault,当没有聚合时返回空值或默认值. #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)
- 修复异常
Cannot convert column ... because it is constant but values of constants are different in source and result, 这在函数now()、today()、yesterday()、randConstant()时, 这种情况很少发生. #7156 (Nikolai Kochetov) - 修复了使用 HTTP 保持活动超时而不是 TCP 保持活动超时的问题. #7351 (Vasily Nemkov)
- 修复了 groupBitmapOr 中的分段错误. (issue #7109). #7289 (Zhichang Yu)
- 对于物化视图,在写入所有数据后调用 Kafka 的提交. #7175 (Ivan)
- 修复了
system.part_log表中错误的duration_ms值. 差了十倍. #7172 (Vladimir Chebotarev) - 解决 LIVE VIEW 表崩溃并重新启用所有 LIVE VIEW 测试的快速修复. #7201 (vzakaznikov)
- 在 MergeTree 部分的最小/最大索引中正确序列化 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)
- 不允许在复制表引擎的突变中使用非确定性函数, 因为这会导致副本之间的不一致. #7247 (Alexander Kazakov)
- 在将异常堆栈跟踪转换为字符串时禁用内存跟踪器. 可以防止服务器上的
Memory limit exceeded类型的错误信息丢失, 导致客户端Attempt to read after eof异常. #7264 (Nikolai Kochetov) - 各种格式改进. 解决 #6033, #2633, #6611, #6742 #7215 (tavplubix)
- ClickHouse 会忽略 IN 运算符右侧无法转换为左侧类型的值. 使其适用于复合类型——数组和元组. #7283 (Alexander Kuzmenkov)
- 支持 ASOF JOIN 缺失的不等式. 可以在 ON 语法中为 ASOF 列加入 less-or-equal 变体和严格的更大和更少变体. #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)
构建/测试/打包改进
- 禁用一些用于交叉编译到 Mac OS 的贡献. #7101 (Ivan)
- 为 clickhouse_common_io 添加缺少的 PocoXML 链接. #7200 (Azat Khuzhin)
- 在 clickhouse-test 中接受多个测试过滤器参数. #7226 (Alexander Kuzmenkov)
- 为 ARM 启用 musl 和 jemalloc. #7300 (Amos Bird)
- 将
--client-option参数添加到clickhouse-test以将附加参数传递给客户端. #7277 (Nikolai Kochetov) - 在 rpm 包升级时保留现有配置. #7103 (filimonov)
- 修复 PVS 检测到的错误. #7153 (Artem Zuikov)
- 修复 Darwin 的构建. #7149 (Ivan)
- glibc 2.29 兼容性. #7142 (Amos Bird)
- 确保 dh_clean 不接触潜在的源文件. #7205 (Amos Bird)
- 从 altinity rpm 更新时尝试避免冲突 - 它在 clickhouse-server-common 中单独打包了配置文件. #7073 (filimonov)
- 优化一些头文件以加快重建速度. #7212, #7231 (Alexander Kuzmenkov)
- 添加日期和日期时间的性能测试. #7332 (Vasily Nemkov)
- 修复一些包含非确定性突变的测试. #7132 (Alexander Kazakov)
- 将带有 MemorySanitizer 的构建添加到 CI. #7066 (Alexander Kuzmenkov)
- 避免在 MetricsTransmitter 中使用未初始化的值. #7158 (Azat Khuzhin)
- 修复 MemorySanitizer 发现的 Fields 中的一些问题. #7135, #7179 (Alexander Kuzmenkov), #7376 (Amos Bird)
- 修复 murmurhash32 中未定义的行为. #7388 (Amos Bird)
- 修复 StoragesInfoStream 中未定义的行为. #7384 (tavplubix)
- 修复了外部数据库引擎 (MySQL、ODBC、JDBC) 的常量表达式折叠. 在以前的版本中, 它不适用于多个常量表达式, 也不适用于 Date、DateTime 和 UUID. 这修复了 #7245 #7252 (alexey-milovidov)
- 在访问 no_users_thread 变量时修复实时视图中的 ThreadSanitizer 数据竞争错误. #7353 (vzakaznikov)
- 摆脱 libcommon 中的 malloc 符号. #7134, #7065 (Amos Bird)
- 添加全局标志 ENABLE_LIBRARIES 以禁用所有库. #7063 (proller)
代码清理
- 通用化配置存储库以准备 DDL for Dictionaries. #7155 (alesapin)
- 没有任何语义的字典 DDL 解析器. #7209 (alesapin)
- 将 ParserCreateQuery 拆分为不同的较小解析器. #7253 (alesapin)
- 外部字典附近的小重构和重命名. #7111 (alesapin)
- 重构一些代码, 为基于角色的访问控制做准备. #7235 (Vitaly Baranov)
- DatabaseOrdinary 代码的一些改进. #7086 (Nikita Vasilev)
- 不要在哈希表的 find() 和 emplace() 方法中使用迭代器. #7026 (Alexander Kuzmenkov)
- 修复 getMultipleValuesFromConfig 以防参数 root 不为空. #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 修复
- 添加了 SQL BIGINT 中 SQL TINYINT 的处理, 并修复了 ODBC Bridge 中 SQL_FLOAT 数据源类型的处理. #7491 (Denis Glazachev)
- 允许在 MOVE PARTITION 中的目标磁盘或卷上有一些部分. #7434 (Vladimir Chebotarev)
- 通过 ODBC 桥修复可空列中的 NULL 值. #7402 (Vasily Nemkov)
- 修复了 INSERT 到具有 MATERIALIZED 列的分布式非本地节点. #7377 (Azat Khuzhin)
- 固定函数 getMultipleValuesFromConfig. #7374 (Mikhail Korotov)
- 修复了使用 HTTP 保持活动超时而不是 TCP 保持活动超时的问题. #7351 (Vasily Nemkov)
- 等待所有作业在异常情况下完成 (修复罕见的段错误). #7350 (tavplubix)
- 插入 Kafka 表时不要推送到 MV. #7265 (Ivan)
- 禁用异常堆栈的内存跟踪器. #7264 (Nikolai Kochetov)
- 修复了转换外部数据库查询中的错误代码. #7252 (alexey-milovidov)
- 避免在 MetricsTransmitter 中使用未初始化的值. #7158 (Azat Khuzhin)
- 添加了带有用于测试的宏的示例配置. (alexey-milovidov)
ClickHouse 版本 19.15.3.6, 2019-10-09
Bug 修复
- 修复了散列字典中的 bad_variant. (alesapin)
- 修复了 ATTACH PART 查询中分段错误的错误. (alesapin)
- 修复了
MergeTreeData中的时间计算. (Vladimir Chebotarev) - 在编写完成后显式提交给Kafka. #7175 (Ivan)
- 在 MergeTree 部分的最小/最大索引中正确序列化 NULL 值. #7234 (Alexander Kuzmenkov)
ClickHouse 版本 19.15.2.2, 2019-10-01
新特征
- 分层存储: 支持使用 MergeTree 引擎为表使用多个存储卷. 可以在 SSD 上存储新数据并自动将旧数据移动到 HDD. (example). #4918 (Igr) #6489 (alesapin)
- 添加表函数
input, 用于在INSERT SELECT查询中读取传入数据. #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) - 添加
bitmapMin和bitmapMax函数. #6970 (Zhichang Yu) - 添加与 issue-6648 #6999 相关的函数
repeat.(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部分支持枚举的数值. #6766 #6941 (dimarub2000) - 支持 (可选, 默认禁用) 重定向 URL 存储. #6914 (maqroll)
- 添加旧版本客户端连接到服务器时的信息消息. #6893 (Philipp Malkovsky)
- 删除分布式表中发送数据的最大退避睡眠时间限制. #6895 (Azat Khuzhin)
- 添加将带有累积值的配置文件事件 (计数器) 发送到石墨的功能. 它可以在服务器
config.xml中的<events_cumulative>下启用. #6969 (Azat Khuzhin) - 在通过 HTTP 以本机格式将数据插入类型为
LowCardinality(T)的列中时, 自动将类型T添加到LowCardinality(T). #6891 (Nikolai Kochetov) - 添加使用函数
hex而不使用reinterpretAsString为Float32和Float64的能力. #7024 (Mikhail Korotov)
构建/测试/打包改进
- 将 gdb-index 添加到带有调试信息的 clickhouse 二进制文件中. 它将加快
gdb的启动时间. #6947 (alesapin) - 使用使用
pigz的补丁dpkg-deb加速deb打包. #6960 (alesapin) - 设置
enable_fuzzing = 1以启用所有项目代码的 libfuzzer 检测. #7042 (kyprizel) - 在 CI 中添加 split build 冒烟测试. #7061 (alesapin)
- 将带有 MemorySanitizer 的构建添加到 CI. #7066 (Alexander Kuzmenkov)
- 用
sparsehash-c11替换libsparsehash. #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) - 使用数组连接和全局子查询修复复杂查询. #6934 (Ivan)
- 使用多个 JOIN 修复 ORDER BY 和 GROUP BY 中的
Unknown identifier错误. #7022 (Artem Zuikov) - 修复了在执行带有
LowCardinality参数的函数时发出的MSan警告. #7062 (Nikolai Kochetov)
向后不兼容的更新
- 更改了位图* 聚合函数状态的序列化格式以提高性能. 无法读取之前版本中位图* 的序列化状态. #6908 (Zhichang Yu)
ClickHouse 版本 19.14
ClickHouse 版本 19.14.7.15, 2019-10-02
Bug 修复
- 此版本还包含 19.11.12.69 的所有错误修复.
- 修复了 19.14 和更早版本之间分布式查询的兼容性. 这修复了 #7068. #7069 (alexey-milovidov)
ClickHouse 版本 19.14.6.12, 2019-09-19
Bug 修复
- 修复函数
АrrayEnumerateUniqRanked在参数中带有空数组. #6928 (proller) - 使用带有别名的
ARRAY JOIN和GLOBAL IN subquery修复了查询中的子查询名称. 如果指定了外部表名, 则使用子查询别名. #6934 (Ivan)
构建/测试/打包改进
- 修复 flapping 测试
00715_fetch_merged_or_mutated_part_zookeeper00715mut_fetch_merged 的脚本需要重新写入 shellpart或重新写入它的 shell 脚本申请. #6977 (Alexander Kazakov) - 修复了函数
groupUniqArray中的 UBSan 和 MemSan 失败,并带有 emtpy 数组参数. 这是由于没有调用零单元格值的构造函数, 将空的PaddPODArray放入哈希表零单元格中引起的. #6937 (Amos Bird)
ClickHouse 版本 19.14.3.3, 2019-09-10
新特征
ORDER BY的WITH FILL修饰符. (continuation of #5069) #6610 (Anton Popov)LIMIT的WITH TIES修饰符. (continuation of #5069) #6610 (Anton Popov)- 将未加引号的
NULL文字解析为 NULL (如果设置format_csv_unquoted_null_literal_as_null=1). 如果此字段的数据类型不可为空, 则使用默认值初始化空字段 (如果设置input_format_null_as_default=1). #5990 #6055 (tavplubix) - 支持在表函数
file和hdfs的路径中使用通配符. 如果路径包含通配符, 则该表将是只读的. 用法示例: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.events和system.metrics的值. #6363 #6467 (Nikita Mikhaylov) #6530 (alexey-milovidov) - 允许将 ClickHouse 文本日志写入
system.text_log表. #6037 #6103 (Nikita Mikhaylov) #6164 (alexey-milovidov) - 在堆栈跟踪中显示私有符号 (这是通过解析 ELF 文件的符号表完成的). 如果存在调试信息, 则在堆栈跟踪中添加有关文件和行号的信息. 使用程序中存在的索引符号加速符号名称查找. 添加了用于自省的新 SQL 函数:
demangle和addressToLine. 将函数symbolizeAddress重命名为addressToSymbol以保持一致性. 出于性能原因, 函数addressToSymbol将返回损坏的名称, 您必须应用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) - 支持拆卸分离部件. 语法:
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) - 添加了两个新函数:
sigmoid和tanh(对机器学习应用程序很有用). #6254 (alexey-milovidov) - 函数
hasToken(haystack, token),hasTokenCaseInsensitive(haystack, token)来检查给定的令牌是否在 haystack 中. 令牌是两个非字母数字 ASCII 字符 (或 haystack 的边界) 之间的最大长度子串. 令牌必须是一个常量字符串. 由 tokenbf_v1 索引专业化支持. #6596, #6662 (Vasily Nemkov) - 新函数
neighbor(value, offset[, default_value]). 允许在数据块中的列中达到上一个/下一个值. #5925 (Alex Krash) 6685365ab8c5b74f9650492c88a012596eb1b0c6 341e2e4587a18065c2da1ca888c73389f48ce36c Alexey Milovidov - 创建了一个函数
currentUser(), 返回授权用户的登录信息. 添加别名user()以兼容 MySQL. #6470 (Alex Krash) - #5885 中提出的新聚合函数
quantilesExactInclusive和quantilesExactExclusive. #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) - 可以从
query_log、服务器日志、使用基于正则表达式的规则的进程列表中删除敏感数据. #5710 (filimonov)
实验功能
- 输入和输出数据格式
Template. 它允许为输入和输出指定自定义格式字符串. #4354 #6727 (tavplubix) - 最初在 #2898 中提出的
LIVE VIEW表的实现, 在 #3925 中准备 /ClickHouse/issues/3925),然后在 #5541 中更新. 详细说明见#5541. #5541 (vzakaznikov) [#6425](https://github.com/ ClickHouse/ClickHouse/pull/6425) (Nikolai Kochetov) #6656 ([vzakaznikov] (https://github.com/vzakaznikov)) 请注意,下一个版本可能会删除LIVE VIEW功能.
Bug 修复
- 此版本还包含 19.13 和 19.11 的所有错误修复.
- 修复表有跳过索引和垂直合并时的分段错误. #6723 (alesapin)
- 使用非平凡的列默认值修复每列 TTL. 以前在强制 TTL 合并与
OPTIMIZE ... FINAL查询的情况下, 过期值被替换为类型默认值而不是用户指定的列默认值. #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) - 修复了可能导致内存损坏的突变中的错误代码. 修复了由于从
system.parts或system.parts_columns并发DROP TABLE和SELECT而可能发生的读取地址0x14c0的段错误. 修复了准备突变查询时的竞争条件. 修复复制表的OPTIMIZE和 ALTER 等并发修改操作导致的死锁. #6514 (alexey-milovidov) - 在 MySQL 界面中删除了额外的详细日志记录. #6389 (alexey-milovidov)
- 返回从配置文件中的
true和false解析布尔设置的能力. #6278 (alesapin) - 修复了
Nullable(Decimal128)上quantile和median函数中的崩溃. #6378 (Artem Zuikov) - 修复了主键上包含转换为 Float 类型的带有
WHERE条件的SELECT查询可能返回的不完整结果. 它是由toFloat函数中的单调性检查不正确引起的. #6248 #6374 (dimarub2000) - 检查
max_expanded_ast_elements设置是否有突变. 在TRUNCATE TABLE之后清除突变. #6205 (Winter Zhang) - 与
join_use_nulls一起使用时,修复键列的JOIN 结果. 附加空值而不是列默认值. #6249 (Artem Zuikov) - 修复具有垂直合并和更改的跳过索引. 修复
Bad size of marks file异常. #6594 #6713 (alesapin) - 当合并/更改的部分之一为空(0 行)时, 修复
ALTER MODIFY COLUMN和垂直合并中的罕见崩溃. #6746 #6780 (alesapin) - 修复了在
AggregateFunctionFactory中转换LowCardinality类型的错误. 这修复了 #6257. #6281 (Nikolai Kochetov) - 修复
topK和topK Weighted聚合函数中的错误行为和可能的段错误. #6404 (Anton Popov) - 修复了围绕
getIdentifier函数的不安全代码. #6401 #6409 (alexey-milovidov) - 修复了 MySQL 有线协议中的错误(在连接到 ClickHouse 表单 MySQL 客户端时使用). 由
PacketPayloadWriteBuffer中的堆缓冲区溢出引起. #6212 (Yuriy Baranov) - 修复了
bitmapSubsetInRange函数中的内存泄漏. #6819 (Zhichang Yu) - 修复粒度更改后执行变异时的罕见错误. #6816 (alesapin)
- 默认允许所有字段的 protobuf 消息. #6132 (Vitaly Baranov)
- 当我们在第二个参数上发送一个
NULL参数时,解决了一个带有nullIf函数的错误. #6446 (Guillaume Tassery) - 修复带有字符串字段的复杂键缓存字典中内存分配/释放错误的罕见错误, 这会导致无限内存消耗(看起来像内存泄漏). 当字符串大小是从 8 开始的 2 的幂(8、16、32 等)时会重现错误. #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之后恢复副本时可能出现的不一致部分. #6522 #6523 (tavplubix) - 修复了
JSONExtractRaw函数挂起的问题. #6195 #6198 (alexey-milovidov) - 使用自适应粒度修复不正确的跳过索引序列化和聚合的错误. #6594. #6748 (alesapin)
- 使用两级聚合修复
GROUP BY的WITH ROLLUP和WITH CUBE修饰符. #6225 (Anton Popov) - 修复以自适应粒度写入二级索引标记的错误. #6126 (alesapin)
- 修复服务器启动时的初始化顺序. 由于
StorageMergeTree::background_task_handle是在startup()中初始化的, 所以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)转换为 not-Nullable 列中的不相关异常, 以防它不包含 Nulls (例如, 在像SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String)))] AS String 这样的查询中 ). #6094 #6119 (Nikolai Kochetov) - 删除了
system.settings表中额外的描述引用. #6696 #6699 (alexey-milovidov) - 避免在复制表的
TRUNCATE中可能出现死锁. #6695 (alexey-milovidov) - 修正了按键排序的顺序读取. #6189 (Anton Popov)
- 修复带有
enable_mixed_granularity_parts=1的表的ALTER TABLE ... UPDATE查询. #6543 (alesapin) - 修复 #4405 打开的错误 (自 19.4.0 起). 当我们不查询任何列 (
SELECT 1) 时, 通过 MergeTree 表在对分布式表的查询中重现. #6236 (alesapin) - 修复了有符号类型到无符号类型的整数除法中的溢出. 该行为与 C 或 C++ 语言 (整数提升规则) 中的行为完全相同, 这可能令人惊讶. 请注意, 将大有符号数除以大无符号数或反之亦然时仍然可能发生溢出 (但这种情况不太常见). 所有服务器版本都存在该问题. #6214 #6233 (alexey-milovidov)
- 当设置了
max_execution_speed或max_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)
- 如果类型包含逗号, 则从字符串解析列列表时已修复错误 (此问题与
File、URL、HDFS存储相关) #6217. #6209 (dimarub2000)
安全修复
- 此版本还包含 19.13 和 19.11 的所有错误安全修复.
- 修复了由于 SQL 解析器中的堆栈溢出, 伪造查询导致服务器崩溃的可能性. 修复了合并和分布式表、物化视图和涉及子查询的行级安全条件中堆栈溢出的可能性. #6433 (alexey-milovidov)
改进
- 正确实现
AND/OR的三元逻辑. #6048 (Alexander Kazakov) - 现在, 在从没有 TTL 信息或过时的 TTL 信息的旧部分进行
OPTIMIZE ... FINAL查询后, 将删除具有过期 TTL 的值和行, 例如, 在ALTER ... MODIFY TTL查询之后. 添加了查询SYSTEM STOP/START TTL MERGES以禁止/允许使用 TTL 分配合并并过滤所有合并中的过期值. #6274 (Anton Popov) - 可以使用
CLICKHOUSE_HISTORY_FILEenv 为客户端更改 ClickHouse 历史文件的位置. #6840 (filimonov) - 从
InterpreterSelectQuery中删除dry_run标志. … #6375 (Nikolai Kochetov) - 支持带有
ON部分的ASOF JOIN. #6211 (Artem Zuikov) - 更好地支持用于突变和复制的跳过索引. 支持
MATERIALIZE/CLEAR INDEX ... IN PARTITION查询.UPDATE x = x重新计算所有使用列x的索引. #5053 (Nikita Vasilev) - 无论
allow_experimental_live_view设置如何, 都允许使用ATTACH实时视图 (例如,在服务器启动时). #6754 (alexey-milovidov) - 对于查询分析器收集的堆栈跟踪, 不包括查询分析器本身生成的堆栈帧. #6250 (alexey-milovidov)
- 现在表函数
values、file、url、hdfs支持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 语句的prewhere和where子句的条件. #6521 (Alexander Kazakov) - 为没有 AVX2 但有 SSE 4.2 和 PCLMUL 指令集的机器启用
SIMDJSON. #6285 #6320 (alexey-milovidov) - ClickHouse 可以在没有
O_DIRECT支持的文件系统上工作(例如 ZFS 和 BtrFS),无需额外调整. #4449 #6730 (alexey-milovidov) - 支持最终子查询的下推谓词. #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) - 禁用无键聚合的
read in order优化. #6599 (Anton Popov) INCORRECT_DATA和TYPE_MISMATCH错误代码的 HTTP 状态代码从默认的500 Internal Server Error更改为400 Bad Request. #6271 (Alexander Rodin)- 将 Join 对象从
ExpressionAction移动到AnalyzedJoin.ExpressionAnalyzer和ExpressionAction不再了解Join类. 它的逻辑被AnalyzedJoiniface隐藏了. #6801 (Artem Zuikov) - 修复了当分片之一是本地主机但查询是通过网络连接发送时分布式查询可能出现的死锁. #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: 允许在查询中使用带有partition_key别名的配置中的where_condition来检查分区是否存在 (之前它仅用于读取数据查询). #6577 (proller)- 在
throwIf中添加了可选的消息参数. (#5772) #6329 (Vdimir) - 发送插入数据时出现的服务器异常现在也在客户端处理. #5891 #6711 (dimarub2000)
- 添加了一个指标
DistributedFilesToInsert, 显示文件系统中被分布式表选择发送到远程服务器的文件总数. 该数字是所有分片的总和. #6600 (alexey-milovidov) - 将大部分 JOIN 准备逻辑从
ExpressionAction/ExpressionAnalyzer移动到AnalyzedJoin. #6785 (Artem Zuikov) - 修复 TSan warning
lock-order-inversion. #6740 (Vasily Nemkov) - 关于缺乏 Linux 功能的更好的信息消息. 使用
fatal级别记录致命错误, 这将使其更容易在system.text_log中找到. #6441 (alexey-milovidov) - 当启用将临时数据转储到磁盘以限制
GROUP BY、ORDER BY期间的内存使用时, 它没有检查可用磁盘空间. 修复添加一个新的设置min_free_disk_space, 当可用磁盘空间小于阈值时, 查询将停止并抛出ErrorCodes::NOT_ENOUGH_SPACE. #6678 (Weiqing Xu) #6691 (alexey-milovidov) - 通过线程删除递归 rwlock. 这是没有意义的,因为线程在查询之间被重用.
SELECT查询可能会在一个线程中获取锁, 从另一个线程持有锁并从第一个线程退出. 同时, 第一个线程可以被DROP查询重用。 这将导致错误的Attempt to acquire exclusive lock recursively消息. #6771 (alexey-milovidov) - 拆分
Expression Analyzer.appendLine(). 在ExpressionAnalyzer中为Merge Join准备一个位置. #6524 (Artem Zuikov) - 向 MySQL 兼容服务器添加了
mysql_native_password身份验证插件. #6194 (Yuriy Baranov) - 更少的
clock_gettime调用; 修复了Allocator中调试/发布之间的 ABI 兼容性 (无关紧要的问题). #6197 (alexey-milovidov) - 将
collectUsedColumns从ExpressionAnalyzer移至Syntax Analyzer.Syntax Analyzer现在生成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.o、unable to find library -lc等错误. #6309 (alexey-milovidov) - 对可能来自恶意副本的输入进行更多验证. #6303 (alexey-milovidov)
- 现在
clickhouse-obfuscator文件在clickhouse-client包中可用. 在以前的版本中, 它可用作clickhouse obfuscator(带空格). #5816 #6609 (dimarub2000) - 当我们有至少两个以不同顺序读取至少两个表的查询和另一个对其中一个表执行 DDL 操作的查询时, 修复了死锁. 修复了另一个非常罕见的僵局. #6764 (alexey-milovidov)
- 向
system.processes和system.query_log添加了os_thread_ids列以获得更好的调试可能性. #6763 (alexey-milovidov) - 当
sha256_password用作默认身份验证插件时发生的PHP mysqlnd扩展错误的解决方法 (在#6031中描述). #6113 (Yuriy Baranov) - 使用已更改的可空性列删除不需要的位置. #6693 (Artem Zuikov)
- 将
queue_max_wait_ms的默认值设置为零, 因为当前值(五秒) 没有意义. 在极少数情况下, 此设置有任何用处. 添加了设置replace_running_query_max_wait_ms、kafka_max_wait_ms和connection_pool_max_wait_ms以消除歧义. #6692 (alexey-milovidov) - 从
ExpressionAnalyzer中提取SelectQueryExpressionAnalyzer. 保留最后一个用于非选择查询. #6499 (Artem Zuikov) - 删除了重复的输入和输出格式. #6239 (Nikolai Kochetov)
- 允许用户在连接时覆盖
poll_interval和idle_connection_timeout设置. #6230 (alexey-milovidov) MergeTree现在有一个附加选项ttl_only_drop_parts(默认情况下禁用) 以避免部分修剪部分, 以便在部分中的所有行都过期时完全删除. #6191 (Sergi Vladykin)- 类型检查集合索引函数. 如果函数类型错误, 则抛出异常. 这修复了 UBSan 的模糊测试. #6511 (Nikita Vasilev)
性能改进
- 使用
ORDER BY expressions子句优化查询, 其中expressions具有与MergeTree表中的排序键重合的前缀. 此优化由optimize_read_in_order设置控制. #6054 #6629 (Anton Popov) - 允许在零件装载和拆卸期间使用多个螺纹. #6372 #6074 #6438 (alexey-milovidov)
- 实现了更新聚合函数状态的批处理变体. 它可能会带来性能优势. #6435 (alexey-milovidov)
- 对函数
exp、log、sigmoid、tanh使用FastOps库. FastOps 是 Michael Parakhin(Yandex CTO)的一个快速向量数学库.exp和log函数的性能提高了 6 倍以上.Float32参数中的函数exp和log将返回Float32(在以前的版本中,它们总是返回Float64). 现在exp(nan)可能返回inf.exp和log函数的结果可能不是最接近真实答案的机器可表示数字. #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)
构建/测试/打包改进
- 删除编译器 (运行时模板实例化), 因为我们已经赢得了它的性能. #6646 (alexey-milovidov)
- 添加了性能测试, 以更孤立的方式显示 gcc-9 中的性能下降. #6302 (alexey-milovidov)
- 添加了表函数
numbers_mt, 它是numbers的多线程版本. 使用哈希函数更新性能测试. #6554 (Nikolai Kochetov) clickhouse-benchmark中的比较模式. #6220 #6343 (dimarub2000)- 尽最大努力打印堆栈跟踪. 还添加了
SIGPROF作为调试信号以打印正在运行的线程的堆栈跟踪. #6529 (alexey-milovidov) - 每个函数都在自己的文件中, 第 10 部分. #6321 (alexey-milovidov)
- 删除加倍的 const
TABLE_IS_READ_ONLY. #6566 (filimonov) StringHashMapPR #5417 的格式更改. #6700 (akuzm)- 在
ExpressionAnalyzer中创建连接的更好子查询. #6824 (Artem Zuikov) - 删除冗余条件 (由 PVS Studio 发现). #6775 (akuzm)
- 分离
ReverseIndex的哈希表接口. #6672 (akuzm) - 重构设置. #6689 (alesapin)
- 为
set索引函数添加注释. #6319 (Nikita Vasilev) - 在 Linux 上的调试版本中提高 OOM 分数. #6152 (akuzm)
- HDFS HA 现在可用于调试版本. #6650 (Weiqing Xu)
- 向
transform_query_for_external_database添加了一个测试. #6388 (alexey-milovidov) - 为 Kafka 表添加多个物化视图的测试. #6509 (Ivan)
- 制定更好的构建方案. #6500 (Ivan)
- 修复了
test_external_dictionaries集成, 以防它在非 root 用户下执行. #6507 (Nikolai Kochetov) - 当写入数据包的总大小超过
DBMS_DEFAULT_BUFFER_SIZE时, 该错误会重现. #6204 (Yuriy Baranov) - 添加了对
RENAME表竞争条件的测试. #6752 (alexey-milovidov) - 避免
KILL QUERY中设置的数据竞争. #6753 (alexey-milovidov) - 添加集成测试以通过缓存字典处理错误. #6755 (Vitaly Baranov)
- 在 Mac OS 上禁用解析 ELF 对象文件, 因为它没有意义. #6578 (alexey-milovidov)
- 尝试使变更日志生成器更好. #6327 (alexey-milovidov)
- 将
-Wshadow开关添加到 GCC. #6325 (kreuzerkrieg) - 删除了对
mimalloc支持的过时代码. #6715 (alexey-milovidov) zlib-ng确定 x86 功能并将此信息保存到全局变量. 这是在 defalteInit 调用中完成的, 它可以由不同的线程同时进行. 为避免多线程写入, 请在库启动时执行. #6141 (akuzm)- 对在 #5192 中修复的连接中的错误进行回归测试. #6147 (Bakhtiyor Ruziev)
- 修复了 MSan 报告. #6144 (alexey-milovidov)
- 修复抖动 TTL 测试. #6782 (Anton Popov)
- 修复了
MergeTreeDataPart::is_frozen字段中的错误数据竞争. #6583 (alexey-milovidov) - 修复了模糊测试中的超时. 在以前的版本中, 它设法在查询
SELECT * FROM numbers_mt(gccMurmurHash(''))中找到错误挂断. #6582 (alexey-milovidov) - 向列的
static_cast添加调试检查. #6581 (alexey-milovidov) - 在官方 RPM 包中支持 Oracle Linux. #6356 #6585 (alexey-milovidov)
- 将 json perftests 从
once更改为loop类型. #6536 (Nikolai Kochetov) odbc-bridge.cpp定义了main(), 因此它不应包含在clickhouse-lib中. #6538 (Orivej Desh)- 测试
FULL|RIGHT JOIN中的崩溃, 右表的键为空. #6362 (Artem Zuikov) - 添加了对别名扩展限制的测试以防万一. #6442 (alexey-milovidov)
- 在适当的地方从
boost::filesystem切换到std::filesystem. #6253 #6385 (alexey-milovidov) - 向网站添加了 RPM 包. #6251 (alexey-milovidov)
- 在
IN部分添加修复Unknown identifier异常的测试. #6708 (Artem Zuikov) - 简化
shared_ptr_helper, 因为人们难以理解它. #6675 (alexey-milovidov) - 添加了针对固定 Gorilla 和 DoubleDelta 编解码器的性能测试. #6179 (Vasily Nemkov)
- 将集成测试
test_dictionaries拆分为 4 个单独的测试. #6776 (Vitaly Baranov) - 修复
PipelineExecutor中的 PVS-Studio 警告. #6777 (Nikolai Kochetov) - 允许在 ASan 中使用
library字典源. #6482 (alexey-milovidov) - 添加了从 PR 列表生成变更日志的选项. #6350 (alexey-milovidov)
- 读取时锁定
TinyLog存储. #6226 (akuzm) - 检查 CI 中损坏的符号链接. #6634 (alexey-milovidov)
- 增加
stack overflow测试的超时时间,因为在调试构建中可能需要很长时间. #6637 (alexey-milovidov) - 添加了对双空格的检查. #6643 (alexey-milovidov)
- 修复使用消毒剂构建时的
new/delete内存跟踪. 跟踪不清楚. 它只防止测试中的内存限制异常. #6450 (Artem Zuikov) - 在链接时启用对未定义符号的检查. #6453 (Ivan)
- 避免每天重建
hyperscan. #6307 (alexey-milovidov) - 修复了
ProtobufWriter中的 UBSan 报告. #6163 (alexey-milovidov) - 不允许将查询分析器与消毒剂一起使用, 因为它不兼容. #6769 (alexey-milovidov)
- 添加测试以在计时器失败后重新加载字典. #6114 (Vitaly Baranov)
- 修复
PipelineExecutor::prepareProcessor参数类型的不一致. #6494 (Nikolai Kochetov) - 添加了对错误 URI 的测试. #6493 (alexey-milovidov)
- 向
CAST函数添加了更多检查. 这应该在模糊测试中获得有关分段错误的更多信息. #6346 (Nikolai Kochetov) - 为在本地构建镜像的
docker/builder容器添加了gcc-9支持. #6333 (Gleb Novikov) - 使用
Low Cardinality(String)测试主键. #5044 #6219 (dimarub2000) - 修复了受缓慢堆栈跟踪打印影响的测试. #6315 (alexey-milovidov)
- 在 #6029 中修复的
groupUniqArray中添加崩溃测试用例. #4402 #6129 (akuzm) - 修复指数变异测试. #6645 (Nikita Vasilev)
- 在性能测试中, 不要读取我们没有运行的查询的查询日志. #6427 (akuzm)
- 现在可以使用任何低基数类型创建物化视图, 而不管有关可疑低基数类型的设置. #6428 (Olga Khvostikova)
- 更新了
send_logs_level设置的测试. #6207 (Nikolai Kochetov) - 修复 gcc-8.2 下的构建. #6196 (Max Akhmedov)
- 使用内部 libc++ 修复构建. #6724 (Ivan)
- 使用
rdkafka库修复共享构建. #6101 (Ivan) - Mac OS 版本的修复 (不完整). #6390 (alexey-milovidov) #6429 (alex-zaitsev)
- 修复
splitted构建. #6618 (alexey-milovidov) - 其他构建修复: #6186 (Amos Bird) #6486 #6348 (vxider) #6744 (Ivan) #6016 #6421 #6491 (proller)
向后不兼容的更新
- 删除了很少使用的表函数
catBoostPool和存储CatBoostPool. 如果您使用过此表格功能, 请写邮件至clickhouse-feedback@yandex-team.com. 请注意, CatBoost 集成仍然存在并将得到支持. #6279 (alexey-milovidov) - 默认情况下禁用
ANY RIGHT JOIN和ANY 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 修复
- 此版本还包含 19.14.6.12 的所有错误修复.
- 修复了在 Zookeeper 不可访问时对复制表执行
DROP查询时可能出现的表不一致状态. #6045 #6413 (Nikita Mikhaylov) - 修复 StorageMerge 中的数据竞争. #6717 (alexey-milovidov)
- 修复查询分析器中引入的错误, 该错误导致来自套接字的无休止的接收. #6386 (alesapin)
- 修复在布尔值上执行
JSONExtractRaw函数时 CPU 使用率过高的问题. #6208 (Vitaly Baranov) - 修复了推送到物化视图时的回归. #6415 (Ivan)
- 表函数
url存在允许攻击者在请求中注入任意 HTTP 头的漏洞. 此问题由 Nikita Tikhomirov 发现. #6466 (alexey-milovidov) - 修复 Set index 中无用的
AST检查. #6510 #6651 (Nikita Vasilev) - 修复了对嵌入在查询中的
AggregateFunction值的解析. #6575 #6773 (Zhichang Yu) - 修复了
trim函数族的错误行为. #6647 (alexey-milovidov)
ClickHouse 版本 19.13.4.32, 2019-09-10
Bug 修复
- 此版本还包含 19.11.9.52 和 19.11.10.54 的所有错误安全修复.
- 修复了
system.parts表和ALTER查询中的数据争用. #6245 #6513 (alexey-milovidov) - 修复了在从带有样本和 prewhere 的空分布式表中读取时发生的流中不匹配的标头. #6167 (Lixiang Qian) #6823 (Nikolai Kochetov)
- 修复了在带有元组的子查询中使用
IN子句时崩溃的问题. #6125 #6550 (tavplubix) - 修复
GLOBAL JOIN ON部分中列名相同的情况. #6181 (Artem Zuikov) - 修复将类型转换为不支持它的
Decimal时的崩溃。 改为抛出异常. #6297 (Artem Zuikov) - 修复了
extractAll()函数中的崩溃问题. #6644 (Artem Zuikov) MySQL、ODBC、JDBC表函数的查询转换现在可以正常用于带有多个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)
- 修复了可能导致内存损坏的突变中的错误代码. 修复了由于从
system.parts或system.parts_columns并发DROP TABLE和SELECT而可能发生的读取地址0x14c0的段错误. 修复了准备突变查询时的竞争条件. 修复复制表的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
新特征
- 查询级别的采样分析器. Example. #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_omited_fields。 分布式表中的插入需要此设置在集群上相同 (您需要在滚动更新之前设置它). 它可以为JSONEachRow和CSV*格式的省略字段计算复杂的默认表达式. 它应该是预期的行为, 但可能导致可以忽略不计的性能差异. #6043 (Artem Zuikov), #5625 (akuzm)
实验功能
- 新的查询处理管道. 使用
experimental_use_processors=1选项来启用它. 用于自己的麻烦. #4914 (Nikolai Kochetov)
Bug 修复
- Kafka 集成已在此版本中修复.
- 修复了大
DoubleDelta值的Int64的DoubleDelta编码, 改进了Int32随机数据的DoubleDelta编码. #5998 (Vasily Nemkov) - 如果设置
merge_tree_uniform_read_distribution设置为 0, 则修复了对max_rows_to_read的高估. #6019 (alexey-milovidov)
改进
- 如果
config.d文件没有对应的根元素作为配置文件, 则抛出异常. #6123 (dimarub2000)
性能改进
构建/测试/打包改进
ClickHouse 版本 19.11
ClickHouse 版本 19.11.13.74, 2019-11-01
Bug 修复
- 修复了
ALTER MODIFY COLUMN和垂直合并中的罕见崩溃,当合并/更改的部分之一为空时 (0 行). #6780 (alesapin) - 手动更新
SIMDJSON. 这修复了使用虚假 json 诊断消息可能导致 stderr 文件泛滥的问题. #7548 (Alexander Kazakov) - 修复了用于突变的
mrk文件扩展名的错误. (alesapin)
ClickHouse 版本 19.11.12.69, 2019-10-02
Bug 修复
- 修复了大型表上复杂键的索引分析性能下降. 这修复了 #6924. #7075 (alexey-milovidov)
- 使用分布式引擎在表中发送数据时避免罕见的 SIGSEGV (
Failed to send batch: file with index XXXXX is absent). #7032 (Azat Khuzhin) - 使用多个连接修复
Unknown identifier. 这修复了 #5254. #7022 (Artem Zuikov)
ClickHouse 版本 19.11.11.57, 2019-09-13
- 修复从 Kafka 空主题中选择时导致段错误的逻辑错误. #6902 #6909 (Ivan)
- 修复函数
АrrayEnumerateUniqRanked在参数中带有空数组. #6928 (proller)
ClickHouse 版本 19.11.10.54, 2019-09-10
Bug 修复
ClickHouse 版本 19.11.9.52, 2019-09-6
- 改进缓存字典中的错误处理. #6737 (Vitaly Baranov)
- 修复了函数
arrayEnumerateUniqRanked中的错误. #6779 (proller) - 在从 JSON 中提取
Tuple时修复JSONExtract函数. #6718 (Vitaly Baranov) - 修复了在跳过索引的表上进行
ALTER DELETE查询后可能丢失的数据. #6224 #6282 (Nikita Vasilev) - 修复了性能测试. #6392 (alexey-milovidov)
- Parquet: 修复读取布尔列. #6579 (alexey-milovidov)
- 修复了常量参数的
nullIf函数的错误行为. #6518 (Guillaume Tassery) #6580 (alexey-milovidov) - 修复正常服务器重启时Kafka消息重复问题. #6597 (Ivan)
- 修复了长时间
ALTER UPDATE或ALTER DELETE可能会阻止常规合并运行的问题. 如果没有足够的可用线程, 则防止执行突变. #6502 #6617 (tavplubix) - 修复了在服务器配置文件中处理
timezone的错误. #6709 (alexey-milovidov) - 修复 kafka 测试. #6805 (Ivan)
安全修复
- 果攻击者拥有对 ZooKeeper 的写访问权限, 并且能够从运行 ClickHouse 的网络中运行可用的自定义服务器, 则它可以创建自定义构建的恶意服务器, 该服务器将充当 ClickHouse 副本并将其注册到 ZooKeeper 中. 当另一个副本从恶意副本中获取数据部分时, 它可以强制 clickhouse-server 写入文件系统上的任意路径. 由 Yandex 信息安全团队 Eldar Zaitov 发现. #6247 (alexey-milovidov)
ClickHouse 版本 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)
- 修复了可能导致内存损坏的突变中的错误代码. 修复了由于从
system.parts或system.parts_columns并发DROP TABLE和SELECT而可能发生的读取地址0x14c0的段错误. 修复了准备突变查询时的竞争条件. 修复复制表的OPTIMIZE和 ALTER 等并发修改操作导致的死锁. #6514 (alexey-milovidov)
ClickHouse 版本 19.11.7.40, 2019-08-14
Bug 修复
- Kafka 集成已在此版本中修复.
- 修复了当使用
arrayReduce作为常量参数时的段错误. #6326 (alexey-milovidov) - 修复了
toFloat()单调性. #6374 (dimarub2000) - 修复了启用的
optimize_skip_unused_shards和丢失的分片键修复段错误. #6384 (CurtizJ) - 修复了
arrayEnumerateUniqRanked函数的逻辑. #6423 (alexey-milovidov) - 从 MySQL 处理程序中删除了额外的详细日志记录. #6389 (alexey-milovidov)
- 修复
topK和topK Weighted聚合函数中的错误行为和可能的段错误. #6404 (CurtizJ) - 不要在
system.columns表中暴露虚拟列. 这是向后兼容所必需的. #6406 (alexey-milovidov) - 修复复杂键缓存字典中字符串字段的内存分配错误. #6447 (alesapin)
- 修复在为
Replicated*MergeTree表创建新副本时启用自适应粒度的错误. #6452 (alesapin) - 修复读取 Kafka 消息时的无限循环. #6354 (abyss7)
- 修复了由于 SQL 解析器中的堆栈溢出以及
Merge和Distributed表中的堆栈溢出的可能性, 伪造查询导致服务器崩溃的可能性 #6433 (alexey-milovidov) - 修复了小序列上的 Gorilla 编码错误. #6444 (Enmk)
改进
- 允许用户在连接时覆盖
poll_interval和idle_connection_timeout设置. #6230 (alexey-milovidov)
ClickHouse 版本 19.11.5.28, 2019-08-05
Bug 修复
- 修复了服务器过载时挂起查询的可能性. #6301 (alexey-milovidov)
- 修复 yandexConsistentHash 函数中的 FPE. 这修复了 #6304. #6126 (alexey-milovidov)
- 修复了在
AggregateFunctionFactory中转换LowCardinality类型的错误. 这修复了 #6257. #6281 (Nikolai Kochetov) - 修复从配置文件中的
true和false字符串解析bool设置. #6278 (alesapin) - 当
WHERE的一部分移动到PREWHERE时, 修复了在对MergeTree表上的Distributed表的查询中流标头不兼容的罕见错误. #6236 (alesapin) - 修复了有符号类型到无符号类型的整数除法中的溢出. 这修复了 #6214. #6233 (alexey-milovidov)
向后不兼容的更新
Kafka仍然损坏.
ClickHouse 版本 19.11.4.24, 2019-08-01
Bug 修复
- 修复以自适应粒度写入二级索引标记的错误. #6126 (alesapin)
- 修复了带有两级聚合的
GROUP BY的WITH ROLLUP和WITH 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)转换为 not-Nullable 列中的不相关异常,以防它不包含 Nulls(例如, 像在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) Note that Kafka is broken in this version.
- 清除之前已完成但出现错误的读取操作中的 Kafka 数据缓冲区 #6026 ([Nikolay](https://github.com/ bopohaa)) 请注意, 此版本中 Kafka 已损坏.
- 由于
StorageMergeTree::background_task_handle是在startup()中初始化的, 所以MergeTreeBlockOutputStream::write()可能会在初始化之前尝试使用它. 只需检查它是否已初始化. #6080 (Ivan)
构建/测试/打包改进
- 添加官方
rpm包. #5740 (proller) (alesapin) - 添加使用
packager脚本构建.rpm和.tgz包的能力. #5769 (alesapin) - 修复“Arcadia”构建系统. #6223 (proller)
向后不兼容的更新
Kafka在这个版本中仍然被损坏.
ClickHouse 版本 19.11.3.11, 2019-07-18
新特征
- 添加了对准备好的语句的支持. #5331 (Alexander) #5630 (alexey-milovidov)
DoubleDelta和Gorilla列编解码器. #5600 (Vasily Nemkov)- 添加了
os_thread_priority设置, 允许控制操作系统使用的查询处理线程的nice值来调整动态调度优先级. 它需要CAP_SYS_NICE功能才能工作. 这实现 #5858 #5909 (alexey-milovidov) - 为 Kafka 引擎实现
_topic、_offset、_key列 #5382 ([Ivan](https://github.com/ abyss7)) 请注意, 这个版本中 Kafka 已损坏. - 添加聚合函数组合器
-Resample. #5590 (hcz) - 聚合函数
groupArrayMovingSum(win_size)(x)和groupArrayMovingAvg(win_size)(x), 计算有或没有窗口大小限制的移动总和/平均. #5595 (inv2004) - 添加同义词
arrayFlatten\<->flatten. #5764 (hcz) - 将优步的H3功能
geoToH3集成在一起. #4724 (Remen Ivan) #5805 (alexey-milovidov)
Bug 修复
- 使用异步更新实现 DNS 缓存. 单独的线程解析所有主机并使用周期更新 DNS 缓存 (设置
dns_cache_update_period). 当主机的 ip 频繁更改时. 它应该会有所帮助. #5857 (Anton Popov) - 修复
Delta编解码器中的段错误, 该错误会影响值小于 32 位大小的列. 该错误导致随机内存损坏. #5786 (alesapin) - 修复 TTL 合并中的段错误与块中的非物理列. #5819 (Anton Popov)
- 修复了检查带有
LowCardinality列的部分的罕见错误. 以前,checkDataPart对于带有LowCardinality列的部分总是失败. #5832 (alesapin) - 避免在服务器线程池已满时挂起连接. 当连接超时很长时, 对于从
remote表函数的连接或到没有副本的分片的连接很重要. 这修复了 #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) - 使用
ColumnNullable+ 相关更改修复ColumnConst的coalesce. #5755 (Artem Zuikov) - 修复
ReadBufferFromKafkaConsumer以便它在commit()之后继续读取新消息,即使它之前被停止. #5852 (Ivan) - 在右表中的
Nullable键上连接时修复FULL和RIGHT连接结果. #5859 (Artem Zuikov) - 低优先级查询无限休眠的可能修复. #5842 (alexey-milovidov)
- 修复竞争条件, 导致某些查询在
SYSTEM FLUSH LOGS查询后可能不会出现在 query_log 中. #5456 #5685 (Anton Popov) - 修复了 ClusterCopier 中的
heap-use-after-freeASan 警告,由 watch 导致尝试使用已删除的复制器对象. #5871 (Nikolai Kochetov) - 修复了由
IColumn::deserializeAndInsertFromArena的某些实现返回的错误StringRef指针. 此错误仅影响单元测试. #5973 (Nikolai Kochetov) - 防止屏蔽同名列的源和中间数组连接列. #5941 (Artem Zuikov)
- 使用 MySQL 样式标识符引用修复对 MySQL 引擎的插入和选择查询. #5704 (Winter Zhang)
- 现在
CHECK TABLE查询可以与 MergeTree 引擎系列一起使用. 如果每个部分 (或在更简单的引擎情况下的文件) 有任何检查状态和消息, 它会返回检查状态和消息. 此外, 修复了获取损坏部分的错误. #5865 (alesapin) - 修复 SPLIT_SHARED_LIBRARIES 运行时. #5793 (Danila Kutenin)
- 当
/etc/localtime是一个像../usr/share/zoneinfo/Asia/Istanbul这样的相对符号链接时, 修复了时区初始化 #5922 (alexey-milovidov) - clickhouse-copier: 修复关机后免费使用. #5752 (proller)
- 更新了
simdjson. 修复部分无效的零字节JSON解析成功的问题. #5938 (alexey-milovidov) - 修复关闭系统日志 #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 函数现在可以用于没有方案的不完整 URL. #5725 (alesapin)
- 将校验和添加到
system.parts_columns表. #5874 (Nikita Mikhaylov) - 添加了
Enum数据类型作为Enum或Enum 16的同义词. #5886 (dimarub2000) T64编解码器的全位转置变体. 可以使用zstd实现更好的压缩. #5742 (Artem Zuikov)startsWith函数的条件现在可以使用主键. 这修复了 #5310 and #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
性能改进
- 增加从合并表中选择的流数量, 以实现更均匀的线程分布. 添加了设置
max_streams_multiplier_for_merge_tables. 这修复了 #5797 #5915 (alexey-milovidov)
构建/测试/打包改进
- 为客户端-服务器与不同版本的clickhouse交互添加向后兼容性测试. #5868 (alesapin)
- 在每个提交和拉取请求中测试覆盖率信息. #5896 (alesapin)
- 与 address sanitizer 合作以支持我们的自定义分配器 (
Arena和ArenaWithFreeLists), 以便更好地调试use-after-free错误. #5728 (akuzm) - 切换到 LLVM libunwind implementation 以进行 C++ 异常处理和堆栈跟踪打印. #4828 (Nikita Lapkov)
- 添加来自 -Weverything 的另外两个警告. #5923 (alexey-milovidov)
- 允许使用 Memory Sanitizer 构建 ClickHouse. #3949 (alexey-milovidov)
- 修复了关于模糊测试中
bitTest函数的 ubsan 报告. #5943 (alexey-milovidov) - Docker: 增加了初始化需要身份验证的 ClickHouse 实例的可能性. #5727 (Korviakov Andrey)
- 将 librdkafka 更新至 1.1.0 版. #5872 (Ivan)
- 为集成测试添加全局超时并在测试代码中禁用其中的一些. #5741 (alesapin)
- 修复一些 ThreadSanitizer 故障. #5854 (akuzm)
--no-undefined选项强制链接器在链接时检查所有外部名称是否存在. 在拆分构建模式下跟踪库之间的真实依赖关系非常有用. #5855 (Ivan)- 添加了 #5797 #5914 (alexey-milovidov) 的性能测试.
- 修复了与 gcc-7 的兼容性. #5840 (alexey-milovidov)
- 添加了对 gcc-9 的支持. 这修复了 #5717 #5774 (alexey-milovidov)
- 修复了 libunwind 可以错误链接时的错误. #5948 (alexey-milovidov)
- 修复了 PVS-Studio 发现的一些警告. #5921 (alexey-milovidov)
- 添加了对
clang-tidy静态分析器的初始支持. #5806 (alexey-milovidov) - 将 BSD/Linux 字节序宏 (
be64toh和htobe64) 转换为 Mac OS X 等价物. #5785 (Fu Chen) - 改进的集成测试指南. #5796 (Vladimir Chebotarev)
- 修复在macosx + gcc9的构建. #5822 (filimonov)
- 修复一个难以发现的拼写错误: aggreGate ->aggregate. #5753 (akuzm)
- 修复 freebsd 构建. #5760 (proller)
- 将实验性 YouTube 频道的链接添加到网站 #5845 (Ivan Blinkov)
- CMake: 添加覆盖标志选项: WITH_COVERAGE #5776 (proller)
- 修复一些内联 PODArray 的初始大小. #5787 (akuzm)
- clickhouse-server.postinst: 修复 centos 6 的操作系统检测. #5788 (proller)
- 添加了 Arch linux 包生成. #5719 (Vladimir Chebotarev)
- 通过 libs (dbms) 拆分 Common/config.h. #5715 (proller)
- 修复
Arcadia构建平台 #5795 (proller) - 修复非常规构建 (gcc9, 无子模块). #5792 (proller)
- 在 unalignedStore 中需要显式类型, 因为它被证明容易出错. #5791 (akuzm)
- 修复 MacOS 构建. #5830 (filimonov)
- 根据此处的要求, 关于具有更大数据集的新 JIT 功能的性能测试 #5263 #5887 (Guillaume Tassery)
- 在压力测试中运行状态测试 12693e568722f11e19859742f56428455501fd2a (alesapin)
向后不兼容变更
Kafka在这个版本中被损坏.- 默认情况下为新的
MergeTree表启用adaptive_index_granularity= 10MB. 如果您在 19.11+ 版本上创建了新的 MergeTree 表, 则无法降级到 19.6 之前的版本. #5628 (alesapin) - 删除了 Yandex.Metrica 使用的过时的未记录的嵌入式词典.
OSIn、SEIn、OSToRoot、SEToRoot、OSHierarchy、SEHierarchy函数不再可用. 如果您正在使用这些功能, 请发送电子邮件至 clickhouse-feedback@yandex-team.com. 注意: 最后一刻我们决定暂时保留这些功能. #5780 (alexey-milovidov)
ClickHouse 版本 19.10
ClickHouse 版本 19.10.1.5, 2019-07-12
新特征
- 添加新的列编解码器:
T64. 适用于 (U)IntX/EnumX/Data(Time)/DecimalX 列. 它应该适用于具有恒定值或小范围值的列. 编解码器本身允许放大或缩小数据类型而无需重新压缩. #5557 (Artem Zuikov) - 添加数据库引擎
MySQL, 允许查看远程MySQL服务器中的所有表. #5599 (Winter Zhang) bitmapContains实现. 如果第二个位图包含一个元素, 它比bitmapHasAny快 2 倍. #5535 (Zhichang Yu)- 支持
crc32函数 (行为与 MySQL 或 PHP 完全相同). 如果您需要哈希函数, 请不要使用它. #5661 (Remen Ivan) - 实现了
SYSTEM START/STOP DISTRIBUTED SENDS查询以控制对Distributed表的异步插入. #4935 (Winter Zhang)
Bug 修复
- 执行突变时忽略查询执行限制和合并限制的最大部分大小. #5659 (Anton Popov)
- 修复可能导致正常块重复数据删除 (极其罕见) 和插入重复块 (更常见) 的错误. #5549 (alesapin)
- 修复函数
arrayEnumerateUniqRanked的空数组参数. #5559 (proller) - 不要在无意轮询任何消息的情况下订阅 Kafka 主题. #5698 (Ivan)
- 使设置
join_use_nulls对不能在 Nullable 内的类型无效. #5700 (Olga Khvostikova) - 修复了
Incorrect size of index granularity错误. #5720 (coraxster) - 修复 Float 到 Decimal 转换溢出. #5607 (coraxster)
- 当
WriteBufferFromHDFS的析构函数被调用时刷新缓冲区. 这修复了写入HDFS. #5684 (Xindong Peng)
改进
- 启用设置
input_format_defaults_for_omited_fields时,将CSV中的空单元格视为默认值. #5625 (akuzm) - 非阻塞加载外部字典. #5567 (Vitaly Baranov)
- 可以根据设置为已建立的连接动态更改网络超时. #4558 (Konstantin Podshumok)
- 使用
public_suffix_list作为函数firstSignificantSubdomain、cutToFirstSignificantSubdomain. 它使用由gperf生成的完美哈希表和从文件生成的列表: https://publicsuffix.org/list/public_suffix_list.dat. (例如, 现在我们认为域ac.uk不重要). #5030 (Guillaume Tassery) - 在系统表中采用了
IPv6数据类型;system.processes和system.query_log中的统一客户端信息列. #5640 (alexey-milovidov) - 使用会话与 MySQL 兼容协议进行连接. #5476 #5646 (Yuriy Baranov)
- 支持更多
ALTER查询ON CLUSTER. #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 版本 19.9
ClickHouse 版本 19.9.3.31, 2019-07-05
Bug 修复
- 修复 Delta 编解码器中的段错误, 该错误会影响值小于 32 位大小的列. 该错误导致随机内存损坏. #5786 (alesapin)
- 修复使用低基数列检查零件时的罕见错误. #5832 (alesapin)
- 修复 TTL 合并中的段错误与块中的非物理列. #5819 (Anton Popov)
- 修复低优先级查询的潜在无限睡眠. #5842 (alexey-milovidov)
- 修复 ClickHouse 如何将默认时区确定为 UCT 而不是 UTC. #5828 (alexey-milovidov)
- 修复关于在领导者副本之前在跟随者副本上执行分布式 DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTER 查询的错误. 现在它们将直接在领导者副本上执行. #5757 (alesapin)
- 修复竞争条件, 导致某些查询在 SYSTEM FLUSH LOGS 查询后可能不会立即出现在 query_log 中. #5685 (Anton Popov)
- 为
evalMLModel函数添加了对常量参数的缺失支持. #5820 (alexey-milovidov)
ClickHouse 版本 19.9.2.4, 2019-06-24
新特征
- 在
system.parts表中打印有关冻结部件的信息. #5471 (proller) - 如果未在参数中设置, 则在 tty 上启动 clickhouse-client 时询问客户端密码. #5092 (proller)
- 为 Decimal 类型实现
dictGet和dictGetOrDefault函数. #5394 (Artem Zuikov)
改进
- Debian init: 添加服务停止超时. #5522 (proller)
- 添加默认禁止设置为 LowCardinality 创建具有可疑类型的表. #5448 (Olga Khvostikova)
- 回归函数在不用作函数
evalMLMethod中的状态时返回模型权重. #5411 (Quid37) - 重命名和改进回归方法. #5492 (Quid37)
- 字符串搜索器的界面更清晰. #5586 (Danila Kutenin)
Bug 修复
- 修复 Kafka 中潜在的数据丢失问题. #5445 (Ivan)
- 使用零列调用时以
PrettySpace格式修复潜在的无限循环. #5560 (Olga Khvostikova) - 修复了线性模型中的 UInt32 溢出错误. 允许 eval 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 修复到分布式表中. #5429 (Azat Khuzhin)
- 在截断 Join 存储时修复错误分配 #5437 (TCeason)
- 在包 tzdata 的最新版本中, 一些文件现在是符号链接. 当前检测默认时区的机制被破坏, 并为某些时区提供了错误的名称. 现在至少我们将时区名称强制为 TZ 的内容 (如果提供). #5443 (Ivan)
- 使用 MultiVolnitsky 搜索器修复一些非常罕见的情况, 当总针数总和至少为 16KB 时. 该算法遗漏或覆盖了之前的结果, 这可能导致
multiSearchAny的结果不正确. #5588 (Danila Kutenin) - 修复 ExternalData 请求的设置无法使用 ClickHouse 设置时的问题. 此外, 目前无法使用设置
date_time_input_format和low_cardinality_allow_in_native_format, 因为名称不明确 (在外部数据中它可以解释为表格式, 在查询中它可以是一个设置). #5455 (Danila Kutenin) - 修复了仅从 FS 中删除部件而不将它们从 Zookeeper 中删除的错误. #5520 (alesapin)
- 从 MySQL 协议中删除调试日志记录. #5478 (alexey-milovidov)
- 在 DDL 查询处理过程中跳过 ZNONODE. #5489 (Azat Khuzhin)
- 修复混合
UNION ALL结果列类型. 存在数据和结果列的列类型不一致的情况. #5503 (Artem Zuikov) - 在 dictGetT 函数中对错误的整数抛出异常而不是崩溃. #5446 (Artem Zuikov)
- 修复
system.dictionaries表中散列字典的错误 element_count 和 load_factor. #5440 (Azat Khuzhin)
构建/测试/打包改进
- 修复了没有
BrotliHTTP 压缩支持的构建 (ENABLE_BROTLI=OFFcmake 变量). #5521 (Anton Yuzhaninov) - 包含 roaring.h 作为 roaring/roaring.h. #5523 (Orivej Desh)
- 修复 hyperscan 中的 gcc9 警告 (#line directive is evil!). #5546 (Danila Kutenin)
- 修复使用 gcc-9 编译时的所有警告. 修复一些贡献问题. 修复 gcc9 ICE 并提交给 bugzilla. #5498 (Danila Kutenin)
- 修复了与 lld 的链接. #5477 (alexey-milovidov)
- 删除字典中未使用的专业化. #5452 (Artem Zuikov)
- 针对不同类型文件的格式化和解析表的改进性能测试. #5497 (Olga Khvostikova)
- 修复并行测试运行. #5506 (proller)
- Docker: 使用 clickhouse-test 中的配置. #5531 (proller)
- 修复 FreeBSD 编译. #5447 (proller)
- 升级 boost 到 1.70. #5570 (proller)
- 修复构建clickhouse作为子模块的问题. #5574 (proller)
- 改进 JSONExtract 性能测试. #5444 (Vitaly Baranov)
ClickHouse 版本 19.8
ClickHouse 版本 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 BY或LIMIT m OFFSET n BY语法来为LIMIT BY 子句设置n 的偏移量. #5138 (Anton Popov) - 添加了新的数据类型
SimpleAggregateFunction, 它允许在AggregatingMergeTree中具有轻聚合的列. 这只能与简单的函数一起使用, 如any、anyLast、sum、min、max. #4629 (Boris Granveaud) - 在函数
ngramDistance中添加了对非常量参数的支持. #5198 (Danila Kutenin) - 添加函数
skewPop、skewSamp、kurtPop和kurtSamp分别计算序列偏度、样本偏度、峰度和样本峰度. #5200 (hcz) - 支持
MaterializeView存储的重命名操作. #5209 (Guillaume Tassery) - 添加了允许使用 MySQL 客户端连接到 ClickHouse 的服务器. #4715 (Yuriy Baranov)
- 添加
toDecimal*OrZero和toDecimal*OrNull函数. #5291 (Artem Zuikov) - 支持函数中的十进制类型:
quantile、quantiles、median、quantileExactWeighted、quantilesExactWeighted、medianExactWeighted. #5304 (Artem Zuikov) - 添加了
toValidUTF8函数,用替换字符 � (U+FFFD) 替换所有无效的 UTF-8 字符. #5322 (Danila Kutenin) - 添加了
format功能. 使用参数中列出的字符串格式化常量模式 (简化的 Python 格式模式). #5330 (Danila Kutenin) - 添加了
system.detached_parts表, 其中包含有关MergeTree表的分离部分的信息. #5353 (akuzm) - 添加了
ngramSearch函数来计算needle和haystack之间的非对称差异. #5418#5422 (Danila Kutenin) - 使用聚合函数接口实现基本机器学习方法 (随机线性回归和逻辑回归). 有不同的更新模型权重的策略 (简单梯度下降、动量方法、Nesterov 方法). 还支持自定义尺寸的小批量. #4943 (Quid37)
geohashEncode和geohashDecode函数的实现. #5003 (Vasily Nemkov)- 添加聚合函数
timeSeriesGroupSum, 可以聚合采样时间戳不对齐的不同时间序列. 它将在两个样本时间戳之间使用线性插值, 然后将时间序列相加. 添加聚合函数timeSeriesGroupRateSum, 它计算时间序列的速率, 然后将速率相加. #4542 (Yangkuan Liu) - 添加了函数
IPv4CIDRtoIPv4Range和IPv6CIDRtoIPv6Range以使用 CIDR 计算子网中 IP 的下限和上限. #5095 (Guillaume Tassery) - 当我们使用启用设置
send_progress_in_http_headers的 HTTP 发送查询时, 添加 X-ClickHouse-Summary 标头. 返回 X-ClickHouse-Progress 的常用信息, 附加信息, 如查询中插入了多少行和字节数. #5116 (Guillaume Tassery)
改进
- 为 MergeTree 系列表(默认值: 100 000) 添加了
max_parts_in_total设置, 以防止不安全的分区键规范 #5166. #5171 (alexey-milovidov) clickhouse-obfuscator: 通过将初始种子与列名而不是列位置相结合来为各个列派生种子. 这旨在转换具有多个相关表的数据集, 以便转换后表保持可连接. #5178 (alexey-milovidov)- 添加了函数
JSONExtractRaw、JSONExtractKeyAndValues. 将函数jsonExtract<type>重命名为JSONExtract<type>. 当出现问题时, 这些函数返回相应的值, 而不是NULL. 修改了函数JSONExtract, 现在它从它的最后一个参数中获取返回类型并且不注入可空值. 在 AVX2 指令不可用的情况下, 实现了对 RapidJSON 的回退. Simdjson 库更新到新版本. #5235 (Vitaly Baranov) - 现在
if和multiIf函数不依赖于条件的Nullable, 而是依赖于分支的sql兼容性. #5238 (Jian Wu) In谓词现在从Null输入生成Null结果, 就像Equal函数一样. #5152 (Jian Wu)- 查来自 Kafka 的每 (flush_interval / poll_timeout) 行数的时间限制. 这允许更频繁地中断 Kafka 消费者的读取并检查顶级流的时间限制. #5249 (Ivan)
- 将 rdkafka 与捆绑的 SASL 联系起来. 它应该允许使用 SASL SCRAM 身份验证. #5253 (Ivan)
- 用于 ALL JOINS 的 RowRefList 的批处理版本. #5267 (Artem Zuikov)
- clickhouse-server: 提供更多信息的侦听错误消息. #5268 (proller)
- 支持 clickhouse-copier 中的字典用于
<sharding_key>中的函数. #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 协议的改进. 将格式名称更改为 MySQLWire. 使用 RAII 调用 RSA_free. 如果无法创建上下文, 则禁用 SSL. #5419 (Yuriy Baranov)
- 允许使用不可访问的历史文件运行 (只读,没有磁盘空间,文件是目录,...). #5431 (proller)
- 尊重异步 INSERT 中的查询设置到分布式表. #4936 (TCeason)
- 将函数
leastSqr重命名为simpleLinearRegression,将LinearRegression重命名为linearRegression,将LogisticRegression重命名为logisticRegression. #5391 (Nikolai Kochetov)
性能改进
- 在 ALTER MODIFY 查询中并行处理部分非复制 MergeTree 表. #4639 (Ivan Kush)
- 正则表达式提取优化. #5193 #5191 (Danila Kutenin)
- 如果仅在连接部分中使用, 请勿添加右连接键列以连接结果. #5260 (Artem Zuikov)
- 在第一个空响应后冻结 Kafka 缓冲区. 它避免了多次调用
ReadBuffer::next()以获得一些行解析流中的空结果. #5283 (Ivan) - 多参数的
concat函数优化. #5357 (Danila Kutenin) - 查询优化. 允许在将逗号/交叉连接重写为内部语句时下推 IN 语句. #5396 (Artem Zuikov)
- 用参考文件1升级您的LZ4实现以获得更快的解压. #5070 (Danila Kutenin)
- 实现了 MSD 基数排序 (基于 kxsort) 和部分排序. #5129 (Evgenii Pravda)
Bug 修复
- 修复推送需要加入的列. #5192 (Winter Zhang)
- 修复了当 ClickHouse 由 systemd 运行时, 命令
sudo service clickhouse-server forcerestart没有按预期工作的问题. #5204 (proller) - 复 DataPartsExchange 中的 http 错误代码 (9009 端口上的服务器间 http 服务器始终返回代码 200, 即使出现错误). #5216 (proller)
- 修复长度超过 MAX_SMALL_STRING_SIZE 的字符串的 SimpleAggregateFunction #5311 (Azat Khuzhin)
- 修复 IN 中
Decimal到Nullable(Decimal)的转换错误. 支持其他十进制到十进制的转换 (包括不同的尺度). #5350 (Artem Zuikov) - 修复了 simdjson 库中的 FPU 破坏导致
uniqHLL和uniqCombined聚合函数和数学函数 (如log) 计算错误的问题. #5354 (alexey-milovidov) - 修复了 JSON 函数中混合常量/非常量情况的处理. #5435 (Vitaly Baranov)
- 修复
retention功能. 现在在一行数据中满足的所有条件都添加到数据状态中. #5119 (小路) - 用小数修复
quantileExact的结果类型. #5304 (Artem Zuikov)
文档
构建/测试/打包改进
- 复一些显示可能在免费后使用的清除报告. #5139 #5143 #5393 (Ivan)
- 为方便起见, 将性能测试移出单独的目录. #5158 (alexey-milovidov)
- 修复不正确的性能测试. #5255 (alesapin)
- 增加了一个工具来计算由位转换引起的校验和来调试硬件问题. #5334 (alexey-milovidov)
- 使运行脚本更有用. #5340#5360 (filimonov)
- 添加如何编写性能测试的小说明. #5408 (alesapin)
- 添加在性能测试中的创建、填充和删除查询中进行替换的能力. #5367 (Olga Khvostikova)
ClickHouse 版本 19.7
ClickHouse 版本 19.7.5.29, 2019-07-05
Bug 修复
- 使用 JOIN 修复某些查询中的性能回归. #5192 (Winter Zhang)
ClickHouse 版本 19.7.5.27, 2019-06-09
新特征
- 添加位图相关函数
bitmapHasAny和bitmapHasAll类似于数组的hasAny和hasAll函数. #5279 (Sergi Vladykin)
Bug 修复
- 使用 Null 值修复
minmaxINDEX 上的段错误. #5246 (Nikita Vasilev) - 将 LIMIT BY 中的所有输入列标记为所需输出。 它修复了某些分布式查询中的
Not found column错误. #5407 (Constantin S. Pan) - 在带有 DEFAULT 的列上修复
SELECT .. PREWHERE中的Column '0' already exists错误. #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)
- 修复了仅从 FS 中删除部件而不将它们从 Zookeeper 中删除的错误. #5520 (alesapin)
- 修复了
bitmapHasAny函数中的分段错误. #5528 (Zhichang Yu) - 修复了复制连接池不重试解析主机时的错误, 即使 DNS 缓存已删除. #5534 (alesapin)
- 修复了
DROP INDEX IF EXISTS查询. 现在ALTER TABLE ... DROP INDEX IF EXISTS ...如果提供的索引不存在, 查询不会引发异常. #5524 (Gleb Novikov) - 修复联合所有超类型列. 存在数据和结果列的列类型不一致的情况. #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 客户端查询系统表时出现分段错误. #5066. #5127 (Ivan)
- 通过 KafkaEngine 重载数据丢失. (#4736) #5080 (Ivan)
- 修复了在使用 UNION ALL 执行涉及至少两个来自 system.columns、system.tables、system.parts、system.parts_tables 或 Merge 系列表的查询并执行相关列的 ALTER 时可能发生的非常罕见的数据竞争条件并发表. #5189 (alexey-milovidov)
性能改进
- 使用基数排序按
ORDER BY中的单个数字列进行排序, 而无需LIMIT. #5106, #4439 (Evgenii Pravda, alexey-milovidov)
文档
构建/测试/打包改进
- 在
clickhouse-test中正确打印 UTF-8 字符. #5084 (alexey-milovidov) - 为 clickhouse-client 添加命令行参数以始终加载建议数据. #5102 (alexey-milovidov)
- 解决部分 PVS-Studio 警告. #5082 (alexey-milovidov)
- 更新 LZ4. #5040 (Danila Kutenin)
- 添加 gperf 以构建即将到来的拉取请求的需求 #5030. #5110 (proller)
ClickHouse 版本 19.6
ClickHouse 版本 19.6.3.18, 2019-06-13
Bug 修复
- 修复了来自表函数
mysql和odbc以及相应表引擎的查询的 IN 条件下推. 这修复了 #3540 和 #2384. #5313 (alexey-milovidov) - 修复 Zookeeper 中的死锁. #5297 (github1youlc)
- 允许在 CSV 中引用小数. #5284 (Artem Zuikov
- 禁止从浮点 Inf/NaN 转换为小数 (抛出异常). #5282 (Artem Zuikov)
- 修复重命名查询中的数据竞争. #5247 (Winter Zhang)
- 暂时禁用 LFAlloc. 使用 LFAlloc 可能会导致在分配 UncompressedCache 时出现大量 MAP_FAILED 并导致高负载服务器上的查询崩溃. cfdba93(Danila Kutenin)
ClickHouse 版本 19.6.2.11, 2019-05-13
新特征
- 列和表的 TTL 表达式. #4212 (Anton Popov)
- 添加了对 HTTP 响应的
brotli压缩的支持 (接受编码:br). #4388 (Mikhail) - 添加了新函数
isValidUTF8用于检查一组字节是否正确 utf-8 编码. #4934 (Danila Kutenin) - 添加新的负载平衡策略
first_or_random, 它将查询发送到第一个指定的主机, 如果无法访问, 则将查询发送到分片的随机主机. 对交叉复制拓扑设置有用. #5012 (nvartolomei)
实验功能
改进
- 添加了对函数
substringUTF8的非常量和负大小和长度参数的支持. #4989 (alexey-milovidov) - 在左连接中禁用右表下推, 右连接中禁用左表, 以及完全连接中的两个表. 这在某些情况下修复了错误的 JOIN 结果. #4846 (Ivan)
clickhouse-copier: 从--task-file选项自动上传任务配置. #4876 (proller)- 为存储工厂和表函数工厂添加了错别字处理程序. #4891 (Danila Kutenin)
- 支持无子查询的多个连接的星号和合格星号. #4898 (Artem Zuikov)
- 使缺失列错误消息更加用户友好. #4915 (Artem Zuikov)
性能改进
- ASOF JOIN 的显着加速. #4924 (Martijn Bakker)
向后不兼容更改
Bug 修复
- 修复了
clickhouse-copier中潜在的空指针取消引用. #4900 (proller) - 修复了 JOIN + ARRAY JOIN 查询错误. #4938 (Artem Zuikov)
- 修复了当字典通过带有 engine=Dictionary 的数据库依赖另一个字典时服务器启动时挂起的问题. #4962 (Vitaly Baranov)
- 部分修复了
distributed_product_mode = local. 可以通过表别名允许本地表的列在where/have/order by/...中. 如果表没有别名, 则抛出异常. 目前还无法访问没有表别名的列. #4986 (Artem Zuikov) - 使用
JOIN修复SELECT DISTINCT的潜在错误结果. #5001 (Artem Zuikov) - 修复了在使用 UNION ALL 执行涉及至少两个来自 system.columns、system.tables、system.parts、system.parts_tables 或 Merge 系列表的查询并执行相关列的 ALTER 时可能发生的非常罕见的数据竞争条件并发表. #5189 (alexey-milovidov)
构建/测试/打包改进
- 修复了在不同主机上运行 clickhouse-server 时的测试失败. #4713 (Vasily Nemkov)
- clickhouse-test: 在非 tty 环境中禁用颜色控制序列. #4937 (alesapin)
- clickhouse-test: 允许使用任何测试数据库 (尽可能删除
test.限定) #5008 (proller) - 修复 ubsan 错误. #5037 (Vitaly Baranov)
- 在 ClickHouse 中添加了 Yandex LFAlloc 以不同方式分配 MarkCache 和 UncompressedCache 数据以更可靠地捕获段错误. #4995 (Danila Kutenin)
- Python util 可帮助进行向后移植和更改日志. #4949 (Ivan)
ClickHouse 版本 19.5
ClickHouse 版本 19.5.4.22, 2019-05-13
Bug 修复
- 修复了位图* 函数中可能发生的崩溃. #5220 #5228 (Andy Yang)
- 修复了在使用 UNION ALL 执行涉及至少两个来自 system.columns、system.tables、system.parts、system.parts_tables 或 Merge 系列表的查询并执行相关列的 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) - 保留函数修改: 如果一行同时满足第一个和第NTH个条件, 则只将第一个满足的条件添加到数据状态中. 现在在一行数据中满足的所有条件都添加到数据状态中. #5119 (小路)
ClickHouse 版本 19.5.3.8, 2019-04-18
Bug 修复
- 固定类型的设置
max_partitions_per_insert_block从布尔值到 UInt64. #5028 (Mohammad Hossein Sekhavat)
ClickHouse 版本 19.5.2.6, 2019-04-15
新特征
- Hyperscan 添加了多个正则表达式匹配 (函数
multiMatchAny、multiMatchAnyIndex、multiFuzzyMatchAny、multiFuzzyMatchAnyIndex). #4780, #4841 (Danila Kutenin) - 添加了
multiSearchFirstPosition功能. #4780 (Danila Kutenin) - 表实现每行预定义的表达式过滤器. #4792 (Ivan)
- 一种基于布隆过滤器的新型数据跳过索引 (可用于
equal、in和like函数). #4499 (Nikita Vasilev) - 添加了
ASOF JOIN, 它允许运行连接到已知最新值的查询. #4774 #4867 #4863 #4875 (Martijn Bakker, Artem Zuikov) - 将多个
COMMA JOIN重写为CROSS JOIN. 如果可能, 然后将它们重写为INNER JOIN. #4661 (Artem Zuikov)
改进
topK和topK Weighted现在支持自定义load Factor. (fixes issue #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并添加更多带有CaseInsensitive和UTF的函数. #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) hasAny或hasAll函数的错误参数可能会导致段错误. #4698 (alexey-milovidov)- 执行
DROP DATABASE dictionary查询时可能发生死锁. #4701 (alexey-milovidov) - 修复
median和quantile函数中未定义的行为. #4702 (hcz) - 修复
network_compression_method为小写时的压缩级别检测. 在 v19.1 中损坏. #4706 (proller) - 修复了对
<timezone>UTC</timezone>设置的无知 (修复了问题 #4658. #4718 (proller) - 使用
Distributed表修复histogram函数行为. #4741 (olegkv) - 修复了 tsan 报告
destroy of a locked mutex的问题. #4742 (alexey-milovidov) - 修复了由于系统日志使用中的竞争条件而导致关闭的 TSan 报告。 修复了启用 part_log 时关闭时潜在的释放后使用问题. #4758 (alexey-milovidov)
- 修复
ReplicatedMergeTreeAlterThread中的重新检查部分以防出错. #4772 (Nikolai Kochetov) - 中间聚合函数状态的算术运算不适用于常量参数 (例如子查询结果). #4776 (alexey-milovidov)
- 始终在元数据中反引用列名称. 否则不可能创建一个名为
index的列的表 (由于元数据中的ATTACH查询格式错误, 服务器不会重启). #4782 (alexey-milovidov) - 修复
Distributed表上的ALTER ... MODIFY ORDER BY崩溃. #4790 (TCeason) - 使用启用的
enable_optimize_predicate_expression修复JOIN ON中的段错误. #4794 (Winter Zhang) - 使用来自 Kafka 的 protobuf 消息后通过添加无关行来修复错误. #4808 (Vitaly Baranov)
- 修复
JOIN在不可为空与可为空列上的崩溃. 修复ANY JOIN+join_use_nulls中右键中的NULLs. #4815 (Artem Zuikov) - 修复
clickhouse-copier中的分段错误. #4835 (proller) - 如果表被重命名或同时更改, 则修复了来自
system.tables的SELECT中的竞争条件. #4836 (alexey-milovidov) - 在获取已经过时的数据部分时修复了数据竞争. #4839 (alexey-milovidov)
- 修复了 MergeTree 系列的
RENAME表中可能发生的罕见数据竞争. #4844 (alexey-milovidov) - 修复了函数
arrayIntersect中的分段错误. 如果使用混合常量和普通参数调用函数, 可能会发生分段错误. #4847 (Lixiang Qian) - 当列包含一长串空数组时, 修复了在极少数情况下从
Array(LowCardinality)列读取的问题. #4850 (Nikolai Kochetov) - 当我们加入可空与不可空时,, 修复
FULL/RIGHT JOIN中的崩溃. #4855 (Artem Zuikov) - 在副本之间获取部分时修复
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) - 修复未指定列类型时列
CODEC的ALTER 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) - 修复
DROP、TRUNCATE和OPTIMIZE查询重复, 当在ON CLUSTER上为ReplicatedMergeTree*表族执行时. #4991 (alesapin)
向后不兼容更新
- 将设置
insert_sample_with_metadata重命名为设置input_format_defaults_for_omited_fields. #4771 (Artem Zuikov) - 添加了设置
max_partitions_per_insert_block(默认值为 100). 如果插入的块包含更多的分区, 则抛出异常. 如果要取消限制, 请将其设置为 0 (不推荐). #4845 (alexey-milovidov) - 多重搜索功能被重命名 (
multiPosition到multiSearchAllPositions,multiSearch到multiSearchAny,firstMatch到multiSearchFirstIndex). #4780 (Danila Kutenin)
性能改进
- 通过内联优化 Volnitsky 搜索器, 为具有许多针或许多相似二元组的查询提供大约 5-10% 的搜索改进. #4862 (Danila Kutenin)
- 修复了当设置
use_uncompressed_cache大于零时的性能问题, 当所有读取包含在缓存中的数据时出现 #4913 (alesapin)
构建/测试/打包改进
- 强化调试构建: 更细粒度的内存映射和 ASLR; 为标记缓存和索引添加内存保护. 这允许在 ASan 和 MSan 无法执行的情况下找到更多内存踩踏错误. #4632 (alexey-milovidov)
- 添加对 cmake 变量
ENABLE_PROTOBUF、ENABLE_PARQUET和ENABLE_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 升级到 1.69. #4793 (proller)
- 使用 Thread Sanitizer 编译时禁用
mremap. 令人惊讶的是, TSan 没有拦截导致误报的mremap(尽管它确实拦截了mmap、munmap). 修复了状态测试中的 TSan 报告. #4859 (alexey-milovidov) - 通过 HTTP 接口使用格式模式添加测试检查. #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) hasAny或hasAll函数的错误参数可能会导致段错误. #4698 (alexey-milovidov)- 执行
DROP DATABASE dictionary查询时可能发生死锁. #4701 (alexey-milovidov) - 修复
median和quantile函数中未定义的行为. #4702 (hcz) - 修复
network_compression_method为小写时的压缩级别检测. 在 v19.1 中损坏. #4706 (proller) - 修复了对
<timezone>UTC</timezone>设置的无知 (修复了问题 #4658). #4718 (proller) - 使用
Distributed表修复histogram函数行为. #4741 (olegkv) - 修复了 tsan 报告
destroy of a locked mutex的问题. #4742 (alexey-milovidov) - 修复了由于系统日志使用中的竞争条件而导致关闭的 TSan 报告. 修复了启用 part_log 时关闭时潜在的释放后使用问题. #4758 (alexey-milovidov)
- 修复
ReplicatedMergeTreeAlterThread中的重新检查部分以防出错. #4772 (Nikolai Kochetov) - 中间聚合函数状态的算术运算不适用于常量参数 (例如子查询结果). #4776 (alexey-milovidov)
- 始终在元数据中反引用列名称. 否则不可能创建一个名为
index的列的表 (由于元数据中的ATTACH查询格式错误, 服务器不会重启). #4782 (alexey-milovidov) - 修复
Distributed表上的ALTER ... MODIFY ORDER BY崩溃. #4790 (TCeason) - 修复了启用
enable_optimize_predicate_expression的JOIN ON中段错误. #4794 (Winter Zhang) - 使用来自 Kafka 的 protobuf 消息后通过添加无关行来修复错误. #4808 (Vitaly Baranov)
- 修复
clickhouse-copier中的分段错误. #4835 (proller) - 如果表被重命名或同时更改, 则修复了来自
system.tables的SELECT中的竞争条件. #4836 (alexey-milovidov) - 在获取已经过时的数据部分时修复了数据竞争. #4839 (alexey-milovidov)
- 修复了 MergeTree 系列的
RENAME表中可能发生的罕见数据竞争. #4844 (alexey-milovidov) - 修复了函数
arrayIntersect中的分段错误. Segmentation fault could happen if function was called with mixed constant and ordinary arguments. #4847 (Lixiang Qian) - 当列包含一长串空数组时, 修复了在极少数情况下从
Array(LowCardinality)列读取的问题. #4850 (Nikolai Kochetov) - 在副本之间获取部分时修复
No message received异常. #4856 (alesapin) - 修复了在单个数组中有多个重复值的情况下
arrayIntersect函数错误结果. #4871 (Nikolai Kochetov) - 修复并发
ALTER COLUMN查询期间可能导致服务器崩溃的竞争条件 (修复问题 #3421). #4592 (Alex Zatelepin) - 修复未指定列类型时列
CODEC的ALTER 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) - 修复
DROP、TRUNCATE和OPTIMIZE查询重复,当在ON CLUSTER上为ReplicatedMergeTree*表族执行时. #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)
构建/测试/打包改进
- Add a way to launch clickhouse-server image from a custom user. #4753 (Mikhail f. Shiryaev)
ClickHouse 版本 19.4.2.7, 2019-03-30
Bug 修复
- 当列包含一长串空数组时, 修复了在极少数情况下从
Array(LowCardinality)列读取的问题. #4850 (Nikolai Kochetov)
ClickHouse 版本 19.4.1.3, 2019-03-19
Bug 修复
- 修复了同时包含
LIMIT BY和LIMIT的远程查询. 以前, 如果使用LIMIT BY和LIMIT进行远程查询,LIMIT可能发生在LIMIT BY之前, 导致过滤结果过分. #4708 (Constantin S. Pan)
ClickHouse 版本 19.4.0.49, 2019-03-09
新特征
- 添加了对
Protobuf格式的完全支持 (输入和输出, 嵌套数据结构). #4174 #4493 (Vitaly Baranov) - 使用 Roaring Bitmaps 添加位图功能. #4207 (Andy Yang) #4568 (Vitaly Baranov)
- Parquet 格式支持. #4448 (proller)
- 添加了 N-gram 距离以进行模糊字符串比较. 它类似于 R 语言中的 q-gram 度量. #4466 (Danila Kutenin)
- 从专用的聚合和保留模式中组合石墨聚合规则. #4426 (Mikhail f. Shiryaev)
- 添加了
max_execution_speed和max_execution_speed_bytes以限制资源使用. 添加了min_execution_speed_bytes设置以补充min_execution_speed. #4430 (Winter Zhang) - 实现的函数
flatten. #4555 #4409 (alexey-milovidov, kzon) - 添加了函数
arrayEnumerateDenseRanked和arrayEnumerateUniqRanked(类似于arrayEnumerateUniq, 但允许微调数组深度以查看多维数组内部). #4475 (proller) #4601 (alexey-milovidov) - 有一些限制的多个 JOINS: 没有星号, 在 ON/WHERE/GROUP BY/... 中没有复杂的别名. #4462 (Artem Zuikov)
Bug 修复
- 此版本还包含 19.3 和 19.1 的所有错误修复.
- 修复了数据跳过索引中的错误: INSERT 后的颗粒顺序不正确. #4407 (Nikita Vasilev)
- 修复了
Nullable和LowCardinality列的set索引. 在此之前, 带有Nullable或LowCardinality列的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 直到我们获得自己的
llvmcontrib 并且可以使用clang和asan对其进行测试. #4579 (alesapin) clickhouse外部字典源的invalidate_query返回错误的结果集 (空或多于一行或多于一列) 时, 防止std::terminate. 修复了每五秒执行一次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)
- 多个连接多个修复. #4595 (Artem Zuikov)
改进
- 支持右表列的 JOIN ON 部分中的别名. #4412 (Artem Zuikov)
- 多个 JOIN 的结果需要在子选择中使用正确的结果名称. 在结果中用源名称替换平面别名. #4474 (Artem Zuikov)
- 改进连接语句的下推逻辑. #4387 (Ivan)
性能改进
- 改进了
move to PREWHERE优化的启发式方法. #4405 (alexey-milovidov) - 使用适当的查找表, 使用 HashTable 的 API 获取 8 位和 16 位密钥. #4536 (Amos Bird)
- 改进了字符串比较的性能. #4564 (alexey-milovidov)
- 在单独的线程中清理分布式 DDL 队列, 使其不会减慢处理分布式 DDL 任务的主循环. #4502 (Alex Zatelepin)
- 当
min_bytes_to_use_direct_io设置为 1 时, 并不是每个文件都以 O_DIRECT 模式打开, 因为读取的数据大小有时会被一个压缩块的大小低估. #4526 (alexey-milovidov)
构建/测试/打包改进
- 添加了对 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聚合函数的情况 (这修复了使用未定义行为清理器的模糊测试). #4506 (alexey-milovidov) - 拼写错误更正. #4531 (sdk2)
- 修复 Mac 上的编译. #4371 (Vitaly Baranov)
- 为 FreeBSD 和各种不寻常的构建配置构建修复. #4444 (proller)
ClickHouse 版本 19.3
ClickHouse 版本 19.3.9.1, 2019-04-02
Bug 修复
- 当我们加入可空与不可空时, 修复
FULL/RIGHT JOIN中的崩溃. #4855 (Artem Zuikov) - 修复
clickhouse-copier中的分段错误. #4835 (proller) - 当列包含一长串空数组时, 修复了在极少数情况下从
Array(LowCardinality)列读取的问题. #4850 (Nikolai Kochetov)
构建/测试/打包改进
- 添加一种从自定义用户启动 clickhouse-server 图像的方法. #4753 (Mikhail f. Shiryaev)
ClickHouse 版本 19.3.7, 2019-03-12
Bug 修复
- 修复了 #3920 中的错误。 此错误表现为随机缓存损坏 (消息
Unknown codec family code,Cannot seek through file) 和段错误. 此错误首先出现在 19.1 版本中, 并存在于 19.1.10 和 19.3.6 之前的版本中. #4623 (alexey-milovidov)
ClickHouse 版本 19.3.6, 2019-03-02
Bug 修复
- 当线程池中的线程超过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)
构建/测试/打包改进
- 修复了启用 AVX 的构建. #4527 (alexey-milovidov)
- 用基于已知版本而不是编译它的内核的扩展记帐和 IO 记帐. #4541 (nvartolomei)
- 用基于已知版本而不是合成它的知识的扩展记录帐和 IO. #4473 (proller)
- 删除了
Field.cpp中void readBinary(...)的inline标签. 还合并了冗余的namespace DB块. #4530 (hcz)
ClickHouse 版本 19.3.5, 2019-02-21
Bug 修复
- 修复了大型 http 插入查询处理的错误. #4454 (alesapin)
- 修复了由于
send_logs_level设置的错误实现而导致的与旧版本的向后不兼容. #4445 (alexey-milovidov) - 修复了使用列注释引入的表函数
remote向后不兼容的问题. #4446 (alexey-milovidov)
ClickHouse 版本 19.3.4, 2019-02-16
改进
- 当执行
ATTACH Table查询时, 表索引大小不考虑内存限制. 避免了表被分离后无法被附加的可能性. #4396 (alexey-milovidov) - 稍微提高了从 ZooKeeper 接收的最大字符串和数组大小的限制. 它允许继续使用 ZooKeeper 上增加的
CLIENT_JVMFLAGS=-Djute.maxbuffer=...大小. #4398 (alexey-milovidov) - 允许修复废弃的副本, 即使它的队列中已经有大量节点. #4399 (alexey-milovidov)
- 向
SET索引添加一个必需参数 (最大存储行数). #4386 (Nikita Vasilev)
Bug 修复
- 修复了按单个
LowCardinality键分组的WITH ROLLUP结果. #4384 (Nikolai Kochetov) - 修复了集合索引中的错误 (如果包含超过
max_rows行,则删除一个粒度). #4386 (Nikita Vasilev) - 许多 FreeBSD 构建修复. #4397 (proller)
- 使用包含相同别名的子查询修复了查询中的别名替换 (问题 #4110). #4351 (Artem Zuikov)
构建/测试/打包改进
- 添加在 docker 镜像中运行
clickhouse-server以进行无状态测试的能力. #4347 (Vasily Nemkov)
ClickHouse 版本 19.3.3, 2019-02-13
新特征
- 添加了
KILL MUTATION语句,允许删除由于某些原因卡住的突变。 将latest_failed_part、latest_fail_time、latest_fail_reason字段添加到system.mutations表中,以便于故障排除. #4287 (Alex Zatelepin) - 添加了计算信息熵的聚合函数
entropy. #4238 (Quid37) - 添加了向服务器发送查询
INSERT INTO tbl VALUES (....)的功能, 而无需拆分query和data部分. #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) - 添加了
IPv4和IPv6数据类型. 更有效地实现IPv*功能. #3669 (Vasily Nemkov) - 添加函数
toStartOfTenMinutes(). #4298 (Vitaly Baranov) - 添加了
Protobuf输出格式. #4005 #4158 (Vitaly Baranov) - 为数据导入的 HTTP 接口添加了 brotli 支持 (插入). #4235 (Mikhail)
- 添加了用户在函数名称中输入拼写错误或在命令行客户端中输入时的提示. #4239 (Danila Kutenin)
- 将
Query-Id添加到服务器的 HTTP 响应标头. #4231 (Mikhail)
实验功能
- 为 MergeTree 表引擎系列添加了
minmax和set数据跳过索引. #4143 (Nikita Vasilev) - 如果可能, 添加了
CROSS JOIN到INNER JOIN的转换. #4221 #4266 (Artem Zuikov)
Bug 修复
- 修复了
JOIN ON部分中重复列的Not found column. #4279 (Artem Zuikov) - 使
START REPLICATED SENDS命令开始复制发送. #4229 (nvartolomei) - 使用
Array(LowCardinality)参数修复了聚合函数的执行. #4055 (KochetovNicolai) - 修复了在执行
INSERT ... SELECT ... FROM file(...)查询和文件具有CSVWithNames或TSVWIthNames格式并且缺少第一个数据行时的错误行为. #4297 (alexey-milovidov) - 修复了字典不可用时重新加载字典时崩溃的问题. 这个bug出现在19.1.6. #4188 (proller)
- 修复了右表中有重复项的
ALL JOIN. #4184 (Artem Zuikov) - 修复了
use_uncompressed_cache=1的分段错误和错误未压缩大小的异常. 这个bug出现在19.1.6. #4186 (alesapin) - 修复了
compile_expressions与大 (超过 int16) 日期比较的错误. #4341 (alesapin) - 从表函数
numbers(0)中选择时修复了无限循环. #4280 (alexey-milovidov) - 暂时禁用
ORDER BY的谓词优化. #3890 (Winter Zhang) - 修复了在旧 CPU 上使用 base64 函数时的
Illegal instruction错误. 仅在使用 gcc-8 编译 ClickHouse 时才重现此错误. #4275 (alexey-milovidov) - 修复了通过 TLS 连接与 PostgreSQL ODBC 驱动程序交互时的
No message received错误. 还修复了使用 MySQL ODBC 驱动程序时的段错误. #4170 (alexey-milovidov) - 修复了在条件运算符 (函数
if) 的分支中使用Date和DateTime参数时不正确的结果. 为函数if添加了通用情况. #4243 (alexey-milovidov) - ClickHouse 词典现在在
clickhouse进程中加载. #4166 (alexey-milovidov) - 修复了在
No such file or directory错误后重试带有File引擎的表中的SELECT时的死锁. #4161 (alexey-milovidov) - 修复了从
system.tables中选择时的竞争条件可能会出现table does not exist错误. #4313 (alexey-milovidov) - 如果以交互模式运行,
clickhouse-client可以在退出时加载命令行建议数据时出现段错误. #4317 (alexey-milovidov) - 修复了执行包含
IN运算符的突变时产生错误结果的错误. #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) - 修复了错误的
Date和DateTime比较错误. #4237 (valexey) - 修复了未定义行为消毒剂下的模糊测试: 添加了对
quantile*Weighted系列函数的参数类型检查. #4145 (alexey-milovidov) - 修复了删除旧数据部分可能会因
File not found错误而失败时的罕见竞争条件. #4378 (alexey-milovidov) - 修复缺少 /etc/clickhouse-server/config.xml 的安装包. #4343 (proller)
构建/测试/打包改进
- Debian 软件包: 根据配置更正 /etc/clickhouse-server/preprocessed 链接. #4205 (proller)
- FreeBSD 的各种构建修复. #4225 (proller)
- 添加了在 perftest 中创建、填充和删除表格的功能. #4220 (alesapin)
- 添加了一个脚本来检查重复的包含. #4326 (alexey-milovidov)
- 添加了在性能测试中按索引运行查询的功能. #4264 (alesapin)
- 建议安装带有调试符号的包. #4274 (alexey-milovidov)
- 重构性能测试. 更好的日志记录和信号处理. #4171 (alesapin)
- 向匿名化的 Yandex.Metrika 数据集添加了文档. #4164 (alesapin)
- Аdded 工具, 用于将旧的月份分区部分转换为自定义分区格式. #4195 (Alex Zatelepin)
- 在 s3 中添加了关于两个数据集的文档. #4144 (alesapin)
- 添加了从拉取请求描述创建变更日志的脚本. #4169 #4173 (KochetovNicolai) (KochetovNicolai)
- 为 ClickHouse 添加了 puppet 模块. #4182 (Maxim Fedotov)
- 添加了一组未记录功能的文档. #4168 (Winter Zhang)
- ARM 构建修复. #4210#4306 #4291 (proller) (proller)
- 字典测试现在可以从
ctest运行. #4189 (proller) - 现在
/etc/ssl被用作 SSL 证书的默认目录. #4167 (alexey-milovidov) - 在开始时添加了检查 SSE 和 AVX 指令. #4234 (Igr)
- 初始化脚本将等待服务器直到启动. #4281 (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)
性能改进
std::sort替换为pdqsort用于没有LIMIT的查询. #4236 (Evgenii Pravda)- 现在服务器重用来自全局线程池的线程. 这会影响某些极端情况下的性能. #4150 (alexey-milovidov)
改进
- 为 FreeBSD 实现 AIO 支持. #4305 (urgordeadbeef)
SELECT * FROM a JOIN b USING a, b现在只从左表返回a和b列. #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)
- 改进了服务器关闭时间和 ALTERs 等待时间. #4372 (alexey-milovidov)
- 向 system.replicas 添加了关于 replicad_can_become_leader 设置的信息, 如果副本不会尝试成为领导者,则添加日志记录. #4379 (Alex Zatelepin)
ClickHouse 版本 19.1
ClickHouse 版本 19.1.14, 2019-03-14
- 修复了在将
GLOBAL JOIN与SELECT *(罕见情况) 一起使用的情况下, 如果设置asterisk_left_columns_only设置为 1 时可能发生的错误Column ... queried more than once. 该问题在 19.3 及更新版本中不存在. 6bac7d8d (Artem Zuikov)
ClickHouse 版本 19.1.13, 2019-03-12
此版本包含与 19.3.7 完全相同的补丁集.
ClickHouse 版本 19.1.10, 2019-03-03
此版本包含与 19.3.6 完全相同的补丁集
ClickHouse 版本 19.1
ClickHouse 版本 19.1.9, 2019-02-21
Bug 修复
- 修复了由于
send_logs_level设置的错误实现而导致的与旧版本的向后不兼容. #4445 (alexey-milovidov) - 修复了使用列注释引入的表函数
remote向后不兼容的问题. #4446 (alexey-milovidov)
ClickHouse 版本 19.1.8, 2019-02-16
Bug 修复
ClickHouse 版本 19.1
ClickHouse 版本 19.1.7, 2019-02-15
Bug 修复
- 正确返回正确的类型并正确处理
joinGet函数中的锁. #4153 (Amos Bird) - 修复了在服务器关闭时尝试再次创建系统日志时的错误. #4254 (alexey-milovidov)
- 修复错误: 如果有一个带有
Dictionary引擎的数据库, 所有词典都在服务器启动时强制加载, 如果有来自localhost的带有ClickHouse源的词典, 则该词典无法加载. #4255 (alexey-milovidov) - 修复了执行包含
IN运算符的突变时产生错误结果的错误. #4099 (Alex Zatelepin) - 如果以交互模式运行,
clickhouse-client可以在退出时加载命令行建议数据时出现段错误. #4317 (alexey-milovidov) - 从
system.tables中选择时固定的竞争条件可能会给出“表不存在”错误. #4313 (alexey-milovidov) - 修复了在
No such file or directory错误后重试带有File引擎的表中的SELECT时的死锁. #4161 (alexey-milovidov) - 修复了一个问题: 本地 ClickHouse 词典通过 TCP 加载, 但应在进程内加载. #4166 (alexey-milovidov)
- 修复了通过 TLS 连接与 PostgreSQL ODBC 驱动程序交互时的
No message received错误. 还修复了使用 MySQL ODBC 驱动程序时的段错误. #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(...)查询和文件具有CSVWithNames或TSVWIthNames格式并且缺少第一个数据行时的错误行为. #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)
- 修复了错误的
Date和DateTime比较错误. #4237 (valexey) - 修复了在条件运算符(函数
if) 的分支中使用Date和DateTime参数时不正确的结果. 为函数if添加了通用情况. #4243 (alexey-milovidov)
ClickHouse 版本 19.1.6, 2019-01-24
新特征
- 表的自定义每列压缩编解码器. #3899 #4111 (alesapin, Winter Zhang, Anatoly)
- 添加了压缩编解码器
Delta. #4052 (alesapin) - 允许
ALTER压缩编解码器. #4054 (alesapin) - 添加函数
left、right、trim、ltrim、rtrim、timestampadd、timestampsub以实现SQL标准兼容性. #3826 (Ivan Blinkov) - 支持写入
HDFS表和hdfs表功能. #4084 (alesapin) - 添加了从大型 haystack 中搜索多个常量字符串的函数:
multiPosition、multiSearch、firstMatch以及-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) - 添加函数
filesystemAvailable、filesystemFree、filesystemCapacity. #4097 (Boris Granveaud) - 添加了散列函数
xxHash64和xxHash32. #3905 (filimonov) - 添加了
gccMurmurHash散列函数 (GCC 风味的 Murmur 散列), 它使用与 [gcc] (https://github.com/gcc-mirror/gcc/blob/41d6b10e96a1de98e90a7c0378437c3255814b16/libstdc%2B%2B-v3/include/bits/functional_hash.h#L191)相同的散列种子. #4000 (sundyli) - 添加了散列函数
javaHash、hiveHash. #3811 (shangshujie365) - 添加了表功能
remoteSecure. 功能作为remote工作,但使用安全连接. #4088 (proller)
实验功能
- 添加了多个 JOIN 仿真 (
allow_experimental_multiple_joins_emulation设置). #3946 (Artem Zuikov)
Bug 修复
- 将
compiled_expression_cache_size设置限制为默认以降低内存消耗. #4041 (alesapin) - 修复导致执行复制表 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) - 修复在
getStructureOfRemoteTable中使用错误限制时在remote表函数执行中的错误. #4009 (alesapin) - 修复 netlink 套接字泄漏. 它们被放置在一个永远不会被删除的池中, 并且当所有当前套接字都在使用时, 在新线程开始时创建新套接字. #4017 (Alex Zatelepin)
- 修复在分支
odbc-bridge子进程后, 在从/proc读取所有 fds 之前关闭/proc/self/fd目录的错误. #4120 (alesapin) - 在主键中使用字符串的情况下修复了字符串到 UInt 的单调转换. #3870 (Winter Zhang)
- 修复整数转换函数单调性计算错误. #3921 (alexey-milovidov)
- 修复了
arrayEnumerateUniq、arrayEnumerateDense函数中某些无效参数的段错误. #3909 (alexey-milovidov) - 修复 StorageMerge 中的 UB. #3910 (Amos Bird)
- 修复了函数
addDays、subtractDays中的段错误. #3913 (alexey-milovidov) - 修复错误: 函数
round、floor、trunc、ceil在整数参数和大的负比例上执行时可能返回虚假结果. #3914 (alexey-milovidov) - 修复了由
kill query sync引起的导致核心转储的错误. #3916 (muVulDeePecker) - 修复空复制队列后长时间延迟的错误. #3928 #3932 (alesapin)
- 修复了使用
LowCardinality主键插入表时过多的内存使用. #3955 (KochetovNicolai) - 在空数组的情况下修复了
Native格式的LowCardinality序列化. #3907 #4011 (KochetovNicolai) - 修复了使用单 LowCardinality 数字列不同时的错误结果. #3895 #4012 (KochetovNicolai)
- 使用 LowCardinality 键修复了专门的聚合 (如果启用了
compile设置). #3886 (KochetovNicolai) - 修复复制表查询的用户和密码转发. #3957 (alesapin) (小路)
- 修复了在重新加载字典时列出字典数据库中的表时可能发生的非常罕见的竞争条件. #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.YYYY、DD.MM.YY、DD-MM-YYYY、DD-Mon-YYYY、DD/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. 如果启用,复制表将在单个部分 znode 中存储压缩部分元数据. 这可以显着减少 ZooKeeper 快照大小 (特别是如果表有很多列). 请注意, 启用此设置后, 您将无法降级到不支持它的版本. #3960 (Alex Zatelepin) - 为函数
sequenceMatch和sequenceCount添加基于 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 allowed消息启动时的错误. #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 映像中 chown 目录,请添加 env 变量. #3967 (alesapin)
- 在 clang 中启用了来自
-Weverything的大部分警告. 启用-Wpedantic. #3986 (alexey-milovidov) - 添加了一些仅在 clang 8 中可用的警告. #3993 (alexey-milovidov)
- 使用共享链接时链接到
libLLVM而不是单个 LLVM 库. #3989 (Orivej Desh) - 测试图像添加了清除变量. #4072 (alesapin)
clickhouse-serverdebian 包会推荐libcap2-bin包使用setcap工具设置功能. 这是可选的. #4093 (alexey-milovidov)- 改进了编译时间, 修复了包含. #3898 (proller)
- 添加了哈希函数的性能测试. #3918 (filimonov)
- 修复了循环库依赖. #3958 (proller)
- 改进了低可用内存的编译. #4030 (proller)
- 添加了测试脚本以重现
jemalloc中的性能下降. #4036 (alexey-milovidov) - 修复了
dbms下注释和字符串中的拼写错误. #4122 (maiha) - 修正了评论中的错别字. #4089 (Evgenii Pravda)