mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 00:52:02 +00:00
40bc4d3c7b
Chinese translation for zh what's new
106 KiB
106 KiB
ClickHouse 版本 18.16
ClickHouse 版本 18.16.1, 2018-12-21
Bug 修复:
改进:
- 添加了
low_cardinality_allow_in_native_format
设置 (默认启用). 禁用时, LowCardinality 列将转换为用于 SELECT 查询的普通列, 而用于 INSERT 查询的普通列将被转换. #3879
Build 改进:
- 修复了在 macOS 和 ARM 上的构建.
ClickHouse 版本 18.16.0, 2018-12-14
新特征:
- 以半结构化输入格式 (
JSONEachRow
、TSKV
) 加载数据时, 会评估DEFAULT
表达式的缺失字段. 该功能通过insert_sample_with_metadata
设置启用. #3555 ALTER TABLE
查询现在具有MODIFY ORDER BY
操作, 用于在添加或删除表列时更改排序键. 这对于MergeTree
系列中的表很有用, 这些表在基于此排序键合并时执行附加任务, 例如SummingMergeTree
、AggregatingMergeTree
等. #3581 #3755- 对于
MergeTree
系列中的表, 现在您可以指定不同的排序键 (ORDER BY
) 和索引 (PRIMARY KEY
) . 排序键可以比索引长. #3581 - 添加了
hdfs
表功能和HDFS
表引擎, 用于导入和导出数据到HDFS. chenxing-xc - 添加了使用 base64 的函数:
base64Encode
,base64Decode
,tryBase64Decode
. Alexander Krasheninnikov - 现在你可以使用一个参数来配置
uniqCombined
聚合函数的精度(选择HyperLogLog单元格的数量). #3406 - 添加了
system.contributors
表, 其中包含在 ClickHouse 中提交的每个人的姓名. #3452 - 添加了省略
ALTER TABLE ... FREEZE
查询的分区的功能,以便一次备份所有分区. #3514 - 添加了不需要指定返回值类型的
dictGet
和dictGetOrDefault
函数. 类型是根据字典描述自动确定的. Amos Bird - 现在您可以为表描述中的列指定注释并使用
ALTER
更改它. #3377 - 支持使用简单键读取
Join
类型的表. Amos Bird - 现在您可以在创建
Join
类型表时指定选项join_use_nulls
、max_rows_in_join
、max_bytes_in_join
和join_overflow_mode
. Amos Bird - 加了
joinGet
函数, 允许您像使用字典一样使用Join
类型的表. Amos Bird - 将
partition_key
、sorting_key
、primary_key
和sampling_key
列添加到system.tables
表中, 以提供有关表键的信息. #3609 - 向
system.columns
表添加了is_in_partition_key
、is_in_sorting_key
、is_in_primary_key
和is_in_sampling_key
列. #3609 - 将
min_time
和max_time
列添加到system.parts
表中. 当分区键是由DateTime
列组成的表达式时,将填充这些列. Emmanuel Donin de Rosière
Bug 修复:
LowCardinality
数据类型的修复和性能改进.GROUP BY
使用LowCardinality(Nullable(...))
. 获取extremes
的值. 处理高阶函数.LEFT ARRAY JOIN
. 分布式GROUP BY
. 返回Array
的函数. 执行ORDER BY
. 写入Distributed
表(nicelulu). 向后兼容来自实现Native
协议的旧客户端的INSERT
查询. 支持JOIN
的LowCardinality
. 在单个流中工作时提高了性能. #3823 #3803 #3799 #3769 #3744 #3681 #3651 #3649 #3641 #3632 #3568 #3523 #3518- 修复了
select_sequential_consistency
选项的工作方式. 以前, 启用此设置后, 有时会在开始写入新分区后返回不完整的结果. #2863 - 执行 DDL
ON CLUSTER
查询和ALTER UPDATE/DELETE
时正确指定数据库. #3772 #3460 - 为 VIEW 内的子查询正确指定了数据库. #3521
- 修复了
PREWHERE
中的FINAL
错误, 用于VersionedCollapsingMergeTree
. 7167bfd7 - 现在您可以使用
KILL QUERY
取消尚未启动的查询, 因为它们正在等待表被锁定. #3517 - 如果时钟在午夜后移, 则更正了日期和时间计算(这发生在伊朗, 1981 年至 1983 年发生在莫斯科). 以前, 这导致时间比必要的提前一天重置, 并且还导致文本格式的日期和时间格式不正确. #3819
- 修复了某些情况下
VIEW
和省略数据库的子查询的错误. Winter Zhang - 修复了由于未锁定内部
MATERIALIZED VIEW
而同时从MATERIALIZED VIEW
中读取并删除MATERIALIZED VIEW
时的竞争条件. #3404 #3694 - 修复了错误
Lock handler cannot be nullptr
. #3689 - 修复了启用
compile_expressions
选项时的查询处理(默认情况下启用). 不再展开像now
函数这样的非确定性常量表达式. #3457 - 修复了在
toDecimal32/64/128
函数中指定非常量比例参数时崩溃的问题s. - 修复了尝试将包含
Values
格式的NULL
元素的数组插入没有Nullable
的Array
类型的列时的错误(如果input_format_values_interpret_expressions
= 1). #3487 #3503 - 如果 ZooKeeper 不可用, 则修复了在
DDLWorker
中连续错误记录的问题. 8f50c620 - 修复了来自
Date
和DateTime
类型参数的quantile*
函数的返回类型. #3580 - 修复了
WITH
子句 如果它指定一个没有表达式的简单别名. #3570 - 修复了启用
enable_optimize_predicate_expression
时使用命名子查询和限定列名的查询的处理. Winter Zhang - 修复了使用物化视图时
尝试附加到 nullptr 线程组
的错误. Marek Vavruša - 修复了将某些不正确的参数传递给
arrayReverse
函数时发生的崩溃. 73e3a7b6 - 修复了
extractURLParameter
函数中的缓冲区溢出问题. 改进性能. 添加了对包含零字节的字符串的正确处理. 141e9799 - 修复了
lowerUTF8
和upperUTF8
函数中的缓冲区溢出. 删除了通过FixedString
类型参数执行这些函数的能力. #3662 - 修复了删除
MergeTree
表时罕见的竞争条件. #3680 - 修复了从
Buffer
表读取并同时在目标表上执行ALTER
或DROP
时的竞争条件. #3719 - 修复了超出
max_temporary_non_const_columns
限制时的段错误. #3788
改进:
- 服务器不会将处理后的配置文件写入
/etc/clickhouse-server/
目录. 相反, 它将它们保存在path
内的preprocessed_configs
目录中. 这意味着/etc/clickhouse-server/
目录对clickhouse
用户没有写权限, 提高了安全性. #2443 min_merge_bytes_to_use_direct_io
选项默认设置为 10 GiB. 形成 MergeTree 系列中大部分表的合并将在O_DIRECT
模式下执行,以防止过多的页面缓存逐出. #3504- 当表数量非常多时,加速服务器启动. #3398
- 为副本之间的连接添加了连接池和 HTTP
Keep-Alive
. #3594 - 如果查询语法无效,
HTTP
接口返回400 Bad Request
代码(之前返回500). 31bc680a join_default_strictness
选项默认设置为ALL
以实现兼容性. 120e2cbe- 对于无效或复杂的正则表达式,从
re2
库中删除了对stderr
的日志记录. #3723 - 为
Kafka
表引擎添加: 在开始从 Kafka 读取之前检查订阅; 表的 kafka_max_block_size 设置. Marek Vavruša cityHash64
、farmHash64
、metroHash64
、sipHash64
、halfMD5
、murmurHash2_32
、murmurHash2_64
、murmurHash3_32
和murmurHash3_64
函数现在可用于任意数量的参数和参数元组的形式. #3451 #3519arrayReverse
函数现在适用于任何类型的数组. 73e3a7b6- 添加了一个可选参数:
timeSlots
函数的插槽大小. Kirill Shvakov - 对于
FULL
和RIGHT JOIN
,max_block_size
设置用于来自右表的非连接数据流. Amos Bird - 在
clickhouse-benchmark
和clickhouse-performance-test
中添加了--secure
命令行参数以启用 TLS. #3688 #3690 Buffer
类型表的结构与目标表的结构不匹配时的类型转换. Vitaly Baranov- 添加了
tcp_keep_alive_timeout
选项以在指定时间间隔内不活动后启用保持活动数据包. #3441 - 如果
system.parts
表包含单列, 则删除了不必要的对分区键值的引用. #3652 - 模函数适用于
Date
和DateTime
数据类型. #3385 - 添加了
POWER
、LN
、LCASE
、UCASE
、REPLACE
、LOCATE
、SUBSTR
和MID
函数的同义词. #3774 #3763 Some function names are case-insensitive for compatibility with the SQL standard. Added syntactic sugarSUBSTRING(expr FROM start FOR length)
for compatibility with SQL. #3804 - 添加了对与
clickhouse-server
可执行代码对应的mlock
内存页面的功能,以防止其被强制内存不足. 默认情况下禁用此功能. #3553 - 从
O_DIRECT
读取时提高了性能(启用了min_bytes_to_use_direct_io
选项). #3405 - 改进了用于常量键参数和非常量默认参数的
dictGet...OrDefault
函数的性能. Amos Bird firstSignificantSubdomain
函数现在可以处理域gov
、mil
和edu
. Igor Hatarist Improved performance. #3628- 能够通过在
/etc/default/clickhouse
中定义CLICKHOUSE_PROGRAM_ENV
使用SYS-V init.d
脚本来指定用于启动clickhouse-server
的自定义环境变量. Pavlo Bashynskyi - clickhouse-server 初始化脚本的正确返回码. #3516
system.metrics
表现在有VersionInteger
指标,system.build_options
添加了行VERSION_INTEGER
, 其中包含 ClickHouse 版本的数字形式, 例如18016000
. #3644- 删除了将
Date
类型与数字进行比较的功能,以避免诸如date = 2018-12-17
之类的潜在错误, 其中错误地省略了日期周围的引号. #3687 - 修复了像
rowNumberInAllBlocks
这样的有状态函数的行为。 由于在查询分析期间启动,他们以前输出的结果大一个数字. Amos Bird - 如果无法删除
force_restore_data
文件, 则会显示错误消息. Amos Bird
Build 改进:
- 更新了
jemalloc
库, 修复了潜在的内存泄漏. Amos Bird - 默认情况下启用使用
jemalloc
进行分析以便调试构建. 2cc82f5c - 添加了仅在系统上安装了
Docker
时运行集成测试的能力. #3650 - 在 SELECT 查询中添加了模糊表达式测试. #3442
- 添加了针对提交的压力测试, 它以并行和随机顺序执行功能测试以检测更多竞争条件. #3438
- 改进了在 Docker 镜像中启动 clickhouse-server 的方法. Elghazal Ahmed
- 对于 Docker 映像, 添加了对使用
/docker-entrypoint-initdb.d
目录中的文件初始化数据库的支持. Konstantin Lebedev - 修复了 ARM 上的构建. #3709
向后不兼容的更新:
- 删除了将
Date
类型与数字进行比较的能力. 而不是toDate('2018-12-18') = 17883
, 你必须使用显式类型转换= toDate(17883)
. #3687
ClickHouse 版本 18.14
ClickHouse 版本 18.14.19, 2018-12-19
Bug 修复:
- 修复了导致使用 ODBC 源更新字典出现问题的错误. #3825, #3829
- 执行 DDL
ON CLUSTER
查询时正确指定数据库. #3460 - 修复了超出
max_temporary_non_const_columns
限制时的段错误. #3788
Build 改进:
- 修复了 ARM 上的构建.
ClickHouse 版本 18.14.18, 2018-12-04
Bug 修复:
- 修复了
dictGet...
函数对于range
类型的字典的错误,如果其中一个参数是常量而另一个不是. #3751 - 修复了导致消息
netlink: '...': attribute type 1 has an invalid length
打印在 Linux 内核日志中的错误, 这种错误只发生在足够新的 Linux 内核版本上. #3749 - 修复了函数
empty
中FixedString
类型参数的段错误. Daniel, Dao Quang Minh - 修复了在使用大值
max_query_size
设置时过多的内存分配(一次性预分配了max_query_size
字节的内存块). #3720
Build 更新:
- 使用 OS 包中版本 7 的 LLVM/Clang 库修复构建 (这些库用于运行时查询编译). #3582
ClickHouse 版本 18.14.17, 2018-11-30
Bug 修复:
- 修复了 ODBC 桥进程未随主服务器进程终止的情况. #3642
- 修复了同步插入到
Distributed
表中的问题, 其中的列列表与远程表的列列表不同. #3673 - 修复了在删除 MergeTree 表时可能导致崩溃的罕见竞争条件. #3643
- 修复了查询线程创建失败并出现
资源暂时不可用
错误时的查询死锁. #3643 - 修复了当使用
CREATE AS table
语法并且在AS table
之前指定ENGINE
子句时对ENGINE
子句的解析 (错误导致忽略指定的引擎). #3692
ClickHouse 版本 18.14.15, 2018-11-21
Bug 修复:
- 反序列化
Array(String)
类型的列时高估了内存块的大小, 导致Memory limit exceeded
错误. 该问题出现在版本 18.12.13. #3589
ClickHouse 版本 18.14.14, 2018-11-20
Bug 修复:
- 修复了集群配置为安全时的
ON CLUSTER
查询 (标志<secure>
). #3599
Build Changes:
- 修复的问题(来自系统的 llvm-7, macos). #3582
ClickHouse 版本 18.14.13, 2018-11-08
Bug 修复:
- 修复了
MergingSorted 流中的块结构不匹配
错误. #3162 - 修复了
ON CLUSTER
查询, 以防在集群配置中打开安全连接 (<secure>
标志). #3465 - 修复了使用
SAMPLE
、PREWHERE
和 alias 列的查询中的错误. #3543 - 修复了启用
min_bytes_to_use_direct_io
设置时罕见的unknown compression method
错误. 3544
性能改进:
- 修复了在 AMD EPYC 处理器上执行时使用 UInt16 或 Date 类型列的
GROUP BY
查询的性能回归. Igor Lapko - 修复了处理长字符串的查询的性能回归. #3530
Build 改进:
ClickHouse 版本 18.14.12, 2018-11-02
Bug 修复:
- 修复了加入两个未命名子查询时崩溃的问题. #3505
- 修复了在查询外部数据库时生成不正确的查询 (带有空的
WHERE
子句). hotid - 修复了在 ODBC 字典中使用错误超时值的问题. Marek Vavruša
ClickHouse 版本 18.14.11, 2018-10-29
Bug 修复:
- 修复了错误
Block structure mismatch in UNION stream: different number of columns
. #2156 - 修复了在包含嵌套结构内的数组的表中合并数据时出现的错误. #3397
- 修复了如果禁用
merge_tree_uniform_read_distribution
设置 (默认启用) 时查询结果不正确的问题. #3429 - 修复了以本机格式插入分布式表的错误. #3411
ClickHouse 版本 18.14.10, 2018-10-23
compile_expressions
设置 (表达式的 JIT 编译) 默认是禁用的. #3410enable_optimize_predicate_expression
设置默认是禁用的.
ClickHouse 版本 18.14.9, 2018-10-16
新特征:
GROUP BY
的WITH CUBE
修饰符 (也可以使用替代语法GROUP BY CUBE(...)
). #3172- 添加了
formatDateTime
函数. Alexandr Krasheninnikov - 增加了
JDBC
表引擎和jdbc
表功能 (需要安装clickhouse-jdbc-bridge) . Alexandr Krasheninnikov - 添加了用于处理 ISO 周数的函数:
toISOWeek
、toISOYear
、toStartOfISOYear
和toDayOfYear
. #3146 - 现在您可以为
MySQL
和ODBC
表使用Nullable
列. #3362 - 嵌套数据结构可以作为
JSONEachRow
格式的嵌套对象读取. 添加了input_format_import_nested_json
设置. Veloman Yunkan - 插入数据时,许多
MATERIALIZED VIEW
都可以进行并行处理. 请参阅parallel_view_processing
设置. Marek Vavruša - 添加了
SYSTEM FLUSH LOGS
查询 (强制日志刷新到系统表,例如query_log
) #3321 - 现在你可以在声明
Replicated
表时使用预定义的database
和table
宏. #3251 - 添加了以工程符号 (表示十的幂) 读取
Decimal
类型值的能力. #3153
实验特征:
改进:
- 使用
ORDER BY
和LIMIT
显着减少了查询的内存消耗. 查看max_bytes_before_remerge_sort
设置. #3205 - 如果没有
JOIN
(LEFT
,INNER
,...), 则假定INNER JOIN
. #3147 - 合格的星号在使用
JOIN
的查询中正常工作. Winter Zhang ODBC
表引擎正确选择引用远程数据库的 SQL 方言中的标识符的方法. Alexandr Krasheninnikovcompile_expressions
设置 (表达式的 JIT 编译) 默认启用.- 修复了同时 DROP DATABASE/TABLE IF EXISTS 和 CREATE DATABASE/TABLE IF NOT EXISTS 的行为. 以前,
CREATE DATABASE ... IF NOT EXISTS
查询可能会返回错误消息"File ... already exists", 而CREATE TABLE ... IF NOT EXISTS
和DROP TABLE IF EXISTS
查询可能会返回Table ...现在正在创建或附加
. #3101 - 当从 MySQL 或 ODBC 表查询时, 带有常量右半部分的 LIKE 和 IN 表达式被传递到远程服务器. #3182
- 从 MySQL 和 ODBC 表查询时, 与 WHERE 子句中的常量表达式的比较将传递到远程服务器. 以前,只通过与常量的比较. #3182
- 正确计算终端中
Pretty
格式的行宽,包括带有象形文字的字符串. Amos Bird. - 可以为
ALTER UPDATE
查询指定ON CLUSTER
. - 提高了读取
JSONEachRow
格式数据的性能. #3332 - 为兼容性添加了
LENGTH
和CHARACTER_LENGTH
函数的同义词.CONCAT
函数不再区分大小写. #3306 - 添加了
DateTime
类型的TIMESTAMP
同义词. #3390 - 服务器日志中始终为 query_id 保留空间, 即使日志行与查询无关. 这使得使用第三方工具解析服务器文本日志变得更容易.
- 当查询超过整数 GB 的下一个级别时, 会记录查询的内存消耗. #3205
- 为使用 Native 协议的客户端库错误发送的列数少于服务器预期的 INSERT 查询的情况添加了兼容模式. 这种情况在使用 clickhouse-cpp 库时是可能的. 之前这种场景导致服务器崩溃. #3171
- 在
clickhouse-copier
中用户定义的WHERE 表达式中, 您现在可以使用partition_key
别名(用于按源表分区进行额外过滤). 如果分区方案在复制过程中发生变化, 但只是轻微变化, 这将很有用. #3166 Kafka
引擎的工作流已移至后台线程池, 以便在高负载时自动降低数据读取速度. Marek Vavruša.- 支持以
Cap'n'Proto format
读取结构的Tuple
和Nested
值,例如struct
. Marek Vavruša firstSignificantSubdomain
函数的顶级域列表现在包括域biz
. decaseal- 在外部字典的配置中,
null_value
被解释为默认数据类型的值. #3330 - 支持
Decimal
的intDiv
和intDivOrZero
函数. b48402e8 - 支持
Date
、DateTime
、UUID
和Decimal
类型作为sumMap
聚合函数的键. #3281 - 支持外部字典中的
Decimal
数据类型. #3324 - 支持
SummingMergeTree
表中的Decimal
数据类型. #3348 - 在
if
中添加了针对UUID
的专业化. #3366 - 从
MergeTree 表
读取时减少了open
和close
系统调用的数量. #3283 TRUNCATE TABLE
查询可以在任何副本上执行 (查询被传递给领导副本). Kirill Shvakov
Bug 修复:
- 修复了
range_hashed
词典的Dictionary
表问题。 此错误发生在 18.12.17 版本中. #1702 - 修复了加载
range_hashed
字典时的错误 (消息Unsupported type Nullable (...)
). 此错误发生在 18.12.17 版本中. #3362 - 修复了
pointInPolygon
函数中由于大量顶点彼此靠近的多边形计算不准确而导致的错误. #3331 #3341 - 如果合并数据部分后, 结果部分的校验和与另一个副本中相同合并的结果不同, 则删除合并的结果并从另一个副本下载数据部分(这是正确的行为). 但是下载数据部分后, 由于该部分已经存在的错误, 无法将其添加到工作集中(因为数据部分在合并后有一些延迟被删除). 这导致循环尝试下载相同的数据. #3194
- 修复了查询总内存消耗的错误计算 (由于计算错误,
max_memory_usage_for_all_queries
设置工作不正确,MemoryTracking
指标的值不正确). 此错误发生在 18.12.13 版本中. Marek Vavruša - 修复了
CREATE TABLE ... ON CLUSTER ... AS SELECT ...
的功能.此错误发生在 18.12.13 版本. #3247 - 修复了如果
JOIN
仅在远程服务器上执行, 则在启动查询的服务器上为JOIN
准备不必要的数据结构. #3340 - 修复了
Kafka
引擎中的错误:开始读取数据时出现异常后死锁, 完成后锁定. Marek Vavruša. - 对于
Kafka
表, 未传递可选的schema
参数 (Cap'n'Proto
格式的模式). Vojtech Splichal - 如果 ZooKeeper 服务器的集合具有接受连接但随后立即关闭它而不是响应握手的服务器, 则 ClickHouse 选择连接另一台服务器. 以前, 这会产生错误
无法读取所有数据. 读取的字节数:0.预期的字节数:4
. 并且服务器无法启动. 8218cf3a - 如果 ZooKeeper 服务器的集合包含 DNS 查询返回错误的服务器, 这些服务器将被忽略. 17b8e209
VALUES
格式插入数据时, 修复了Date
和DateTime
之间的类型转换 (如果input_format_values_interpret_expressions = 1
). 之前在Unix Epoch时间的天数数值和Unix时间戳之间进行了转换, 导致了意想不到的结果. #3229- 更正了
Decimal
和整数之间的类型转换. #3211 - 修复了
enable_optimize_predicate_expression
设置中的错误. Winter Zhang - 修复了 CSV 格式的浮点数解析错误, 如果使用非默认的 CSV 分隔符, 例如
;
. #3155 - 修复了
arrayCumSumNonNegative
函数 (如果累加器小于零,它不会累加负值). Aleksey Studnev - 修复了使用
PREWHERE
时Merge
表如何在Distributed
表之上工作. #3165 - ALTER UPDATE` 查询中的错误修复.
- 修复了 18.12 版本中出现的
odbc
表函数中的错误. #3197 - 修复了使用
StateArray
组合器的聚合函数的操作. #3188 - 修复了将
Decimal
值除以零时的崩溃. 69dd6609 - 修复了使用
Decimal
和整数参数的操作类型的输出. #3224 - 修复了在
Decimal128
上的GROUP BY
期间的段错误. 3359ba06 log_query_threads
设置 (关于查询执行的每个线程的日志信息) 现在只有在log_queries
选项 (关于查询的日志信息) 设置为 1 时才生效. 由于log_query_threads
选项默认启用, 即使查询日志被禁用, 有关线程的信息也会被记录. #3241- 修复了分位数聚合函数分布式操作的错误 (错误信息
Not found column quantile...
). 292a8855 - 修复了同时在 18.12.17 版本服务器和旧服务器的集群上工作时的兼容性问题. 对于具有固定长度和非固定长度的 GROUP BY 键的分布式查询, 如果有大量数据要聚合, 则返回的数据并不总是完全聚合 (两个不同的行包含相同的聚合键). #3254
- 如果查询仅包含测试中声明的部分替换,则修复了对
clickhouse-performance-test
中替换的处理. #3263 - 修复了将
FINAL
与PREWHERE
结合使用时的错误. #3298 - 修复了在
ALTER
期间添加的列上使用PREWHERE
时的错误. #3298 - 添加了对
DEFAULT
和MATERIALIZED
表达式是否缺少arrayJoin
的检查. 以前,arrayJoin
在插入数据时会导致错误. #3337 - 在
PREWHERE
子句中添加了对缺少arrayJoin
的检查. 以前, 这会导致在执行查询时出现诸如Size ...不匹配
或未知压缩方法
之类的消息. #3357 - 修复了在用相应的 IN 表达式替换来自相等评估的 AND 链的优化后在极少数情况下可能发生的段错误. liuyimin-bytedance
- 对
clickhouse-benchmark
的小修正: 以前, 客户端信息没有发送到服务器; 现在在关闭和限制迭代次数时更准确地计算执行的查询数. #3351 #3352
向后不兼容的更新:
- 删除了
allow_experimental_decimal_type
选项.Decimal
数据类型可用于默认使用. #3329
ClickHouse 版本 18.12
ClickHouse 版本 18.12.17, 2018-09-16
新特征:
- 为
clickhouse
源实现了invalidate_query
(指定查询以检查是否需要更新外部字典的能力). #3126 - 添加了使用
UInt*
、Int*
和DateTime
数据类型 (连同Date
类型) 作为定义范围边界的range_hashed
外部字典键的功能. 现在可以使用NULL
来指定一个开放范围. Vasily Nemkov Decimal
类型现在支持var*
和stddev*
聚合函数. #3129Decimal
类型现在支持数学函数(exp
、sin
等). #3129system.part_log
表现在有partition_id
列. #3089
Bug 修复:
Merge
现在可以在Distributed
表上正常工作. Winter Zhang- 修复了导致无法在
Ubuntu Precise
和旧版本上运行 ClickHouse 的不兼容性 (对glibc
版本的不必要依赖). 18.12.13 版本出现不兼容. #3130 - 修复了
enable_optimize_predicate_expression
设置中的错误. Winter Zhang - 修复了在 18.12.13 之前的版本上使用副本集群并同时在具有较新版本的服务器上创建表的新副本时出现的向后兼容性小问题 (显示在消息
无法克隆副本, 因为......更新为新的 ClickHouse 版本
, 这是合乎逻辑的, 但不应该发生). #3122
向后不兼容的更新:
enable_optimize_predicate_expression
选项默认启用 (相当乐观). 如果出现与搜索列名相关的查询分析错误, 请将enable_optimize_predicate_expression
设置为0. Winter Zhang
ClickHouse 版本 18.12.14, 2018-09-13
新特征:
- 添加了对
ALTER UPDATE
查询的支持. #3035 - 添加了
allow_ddl
选项, 用于限制用户对 DDL 查询的访问. #3104 - 为
MergeTree
引擎添加了min_merge_bytes_to_use_direct_io
选项,它允许您设置合并总大小的阈值(当超过阈值时,数据部分文件将使用O_DIRECT处理). #3117 system.merges
系统表现在包含partition_id
列. #3099
改进
Bug 修复:
- 添加了对插入时作为
Nested
类型字段元素的数组大小的检查. #3118 - 修复了使用
ODBC
源和hashed
存储更新外部词典的错误. 此错误发生在 18.12.13 版本中. - 修复了从具有
IN
条件的查询创建临时表时崩溃的问题. Winter Zhang - 修复了可以包含
NULL
元素的数组的聚合函数中的错误. Winter Zhang
ClickHouse 版本 18.12.13, 2018-09-10
新特征:
- 添加了
DECIMAL(digits, scale)
数据类型(Decimal32(scale)
、Decimal64(scale)
、Decimal128(scale)
). 要启用它, 请使用设置allow_experimental_decimal_type
. #2846 #2970 #3008 #3047 - 用于
GROUP BY
的新WITH ROLLUP
修饰符 (替代语法:GROUP BY ROLLUP(...)
). #2948 - 在使用 JOIN 的查询中,星号扩展为所有表中的列列表, 符合 SQL 标准. 您可以通过在用户配置级别将
asterisk_left_columns_only
设置为 1 来恢复旧行为. Winter Zhang - 添加了对带有表函数的 JOIN 的支持. Winter Zhang
- 通过在 clickhouse-client 中按 Tab 自动完成. Sergey Shcherbin
- clickhouse-client 中的 Ctrl+C 清除输入的查询. #2877
- 添加了
join_default_strictness
设置 (值:"
、'any'
、'all'
). 这允许您不为JOIN
指定ANY
或ALL
. #2982 - 与查询处理相关的服务器日志的每一行都显示了查询 ID. #2482
- 现在您可以在 clickhouse-client 中获取查询执行日志 (使用
send_logs_level
设置). 通过分布式查询处理, 日志从所有服务器级联. #2482 system.query_log
和system.processes
(SHOW PROCESSLIST
) 表现在包含有关运行查询时所有更改设置的信息(Settings
数据的嵌套结构). 添加了log_query_settings
设置. #2482system.query_log
和system.processes
表现在显示有关参与查询执行的线程数的信息 (请参阅thread_numbers
列). #2482- 添加了
ProfileEvents
计数器, 用于测量网络读写和磁盘读写所花费的时间、网络错误次数以及网络带宽受限时所花费的等待时间. #2482 - 添加了包含来自 rusage 的系统指标的
ProfileEvents
计数器 (您可以使用它们来获取有关用户空间和内核中 CPU 使用率、页面错误和上下文切换的信息), 以及 taskstats 指标 (使用这些来获取有关 I /O 等待时间, CPU 等待时间, 以及读取和记录的数据量, 有无页缓存). #2482 ProfileEvents
计数器适用于全局和每个查询, 以及每个查询执行线程, 它允许您按查询详细分析资源消耗. #2482- 添加了
system.query_thread_log
表, 其中包含有关每个查询执行线程的信息. 添加了log_query_threads
设置. #2482 system.metrics
和system.events
表现在有内置文档. #3016- 添加了
arrayEnumerateDense
函数. Amos Bird - 添加了
arrayCumSumNonNegative
和arrayDifference
函数. Aleksey Studnev - 添加了
retention
聚合函数. Sundy Li - 现在您可以使用加号运算符添加 (合并) 聚合函数的状态, 并将聚合函数的状态乘以非负常数. #3062 #3034
- MergeTree 系列中的表现在具有虚拟列
_partition_id
. #3089
实验功能:
- 添加了
LowCardinality(T)
数据类型. 此数据类型会自动创建值的本地字典, 并允许在不解压字典的情况下进行数据处理. #2830 - 添加了 JIT 编译函数的缓存和编译前使用次数的计数器. 要 JIT 编译表达式, 请启用
compile_expressions
设置. #2990 #3077
改进:
- 修复了有废弃副本时复制日志无限累积的问题. 为延迟较长的副本添加了有效的恢复模式.
- 当其中一个是字符串而其他是固定长度时,具有多个聚合字段的
GROUP BY
的性能得到改善. - 使用
PREWHERE
和在PREWHERE
中隐式传输表达式时提高了性能. - 改进了文本格式的解析性能 (
CSV
,TSV
). Amos Bird #2980 - 改进了读取二进制格式的字符串和数组的性能. Amos Bird
- 当单个服务器上有大量表时,提高性能并减少对
system.tables
和system.columns
的查询的内存消耗. #2953 - 修复了大量查询导致错误时的性能问题 (
_dl_addr
函数在perf top
中可见,但服务器没有使用太多CPU). #2938 - 条件被投射到视图中 (当启用
enable_optimize_predicate_expression
时). Winter Zhang - 对
UUID
数据类型功能的改进. #3074 #2985 - The-Alchemist 词典支持
UUID
数据类型. #2822 visitParamExtractRaw
函数可以正确处理嵌套结构. Winter Zhang- 启用
input_format_skip_unknown_fields
设置时, 会正确跳过JSONEachRow
格式的对象字段. BlahGeek - 对于带有条件的
CASE
表达式, 您现在可以省略ELSE
, 它等价于ELSE NULL
. #2920 - 现在可以在使用 ZooKeeper 时配置操作超时. urykhy
- 您可以将
LIMIT n, m
的偏移量指定为LIMIT n OFFSET m
. #2840 - 您可以使用
SELECT TOP n
语法作为LIMIT
的替代. #2840 - 增加了写入系统表的队列大小, 因此不会经常发生
SystemLog parameter queue is full
错误. windowFunnel
聚合函数现在支持满足多个条件的事件. Amos Bird- 重复列可用于
JOIN
的USING
子句中. #3006 - Pretty
格式现在对按宽度对齐的列有限制. 使用
output_format_pretty_max_column_pad_width` 设置. 如果一个值更宽, 它仍然会完整显示, 但表格中的其他单元格不会太宽. #3003 odbc
表函数现在允许您指定数据库/模式名称. Amos Bird- 添加了使用在
clickhouse-client
配置文件中指定的用户名的功能. Vladimir Kozbin ZooKeeperExceptions
计数器被分成三个计数器:ZooKeeperUserExceptions
、ZooKeeperHardwareExceptions
和ZooKeeperOtherExceptions
.ALTER DELETE
查询适用于物化视图.- 为
ReplicatedMergeTree
表定期运行清理线程时添加了随机化, 以避免在有大量ReplicatedMergeTree
表时出现周期性负载峰值. - 支持
ATTACH TABLE ... ON CLUSTER
查询. #3025
Bug 修复:
- 修复了
Dictionary
表的问题 (抛出Size of offsets does not match size of column
或Unknown compression method
异常). 这个bug出现在18.10.3版本. #2913 - 修复了合并
CollapsingMergeTree
表时, 如果其中一个数据部分为空 (如果所有数据都被删除,这些部分是在合并或ALTER DELETE
期间形成的), 并且使用vertical
算法进行合并. #3049 - 修复了在
DROP
或TRUNCATE
期间为Memory
表同时执行SELECT
的竞争条件, 这可能导致服务器崩溃. 这个bug出现在1.1.54388版本. #3038 - 修复了在返回
Session is expired
错误时插入Replicated
表时数据丢失的可能性 (数据丢失可以通过ReplicatedDataLoss
指标检测). 此错误发生在 1.1.54378 版本中. #2939 #2949 #2964 - 修复了
JOIN ... ON
期间的段错误. #3000 - 修复了当
WHERE
表达式完全由一个限定的列名组成时搜索列名的错误,例如WHERE table.column
. #2994 - 修复了如果从远程服务器请求包含带有子查询的 IN 表达式的单个列,则在执行分布式查询时发生的
Not found column
错误. #3087 - 修正了
UNION流中的块结构不匹配: 列数不同
错误, 如果一个分片是本地的, 而另一个不是, 分布式查询发生, 并优化移动到PREWHERE
被触发. #2226 #3037 #3055 #3065 #3073 #3090 #3093 - 修复了某些非凸多边形情况下的
pointInPolygon
函数. #2910 - 修复了将
nan
与整数进行比较时的错误结果. #3024 - 修复了在极少数情况下可能导致段错误的
zlib-ng
库中的错误. #2854 - 修复了在插入到具有
AggregateFunction
列的表时, 如果聚合函数的状态不简单 (单独分配内存) , 并且如果单个插入请求导致多个小块时的内存泄漏. #3084 - 修复了同时创建和删除同一个
Buffer
或MergeTree
表时的竞争条件. - 修复了比较由某些非平凡类型 (例如元组) 组成的元组时出现段错误的可能性. #2989
- 修复了运行某些
ON CLUSTER
查询时出现段错误的可能性. Winter Zhang - 修复了
arrayDistinct
函数中Nullable
数组元素的错误. #2845 #2937 enable_optimize_predicate_expression
选项现在可以正确支持带有SELECT *
的情况. Winter Zhang- 修复了重新初始化 ZooKeeper 会话时的段错误. #2917
- 修复了使用 ZooKeeper 时潜在的阻塞问题.
- 修复了在
SummingMergeTree
中添加嵌套数据结构的错误代码. - 为聚合函数的状态分配内存时, 正确地考虑了对齐, 这使得在实现聚合函数的状态时使用需要对齐的操作成为可能. chenxing-xc
安全修复:
- 安全使用 ODBC 数据源. 与 ODBC 驱动程序的交互使用单独的
clickhouse-odbc-bridge
过程. 第三方 ODBC 驱动程序中的错误不再导致服务器稳定性或漏洞问题. #2828 #2879 #2886 #2893 #2921 - 修复了
catBoostPool
表函数中文件路径的错误验证. #2894 - 系统表的内容 (
tables
、databases
、parts
、columns
、parts_columns
、merges
、mutations
、replicas
和replication_queue
) 根据用户配置进行过滤访问数据库(allow_databases
). Winter Zhang
向后不兼容的更新:
- 在使用 JOIN 的查询中, 星号扩展为所有表中的列列表, 符合 SQL 标准. 您可以通过在用户配置级别将
asterisk_left_columns_only
设置为 1 来恢复旧行为.
Build 更新:
- 大多数集成测试现在可以通过提交运行.
- 代码样式检查也可以通过提交运行.
- 在 CentOS7/Fedora 上构建时正确选择了
memcpy
实现. Etienne Champetier - When using clang to build, some warnings from
-Weverything
have been added, in addition to the regular-Wall-Wextra -Werror
. #2957 - 调试构建使用
jemalloc
调试选项. - 与 ZooKeeper 交互的库的接口被声明为抽象的. #2950
ClickHouse 版本 18.10
ClickHouse 版本 18.10.3, 2018-08-13
新特征:
- HTTPS 可用于复制. #2760
- 除了现有的
murmurHash2_32
之外, 还添加了函数murmurHash2_64
、murmurHash3_32
、murmurHash3_64
和murmurHash3_128
. #2791 - 支持 ClickHouse ODBC 驱动程序中的 Nullable 类型 (
ODBCDriver2
输出格式). #2834 - 支持键列中的
UUID
.
改进:
- 从配置文件中删除集群时,无需重新启动服务器即可删除集群. #2777
- 从配置文件中删除外部字典时,无需重新启动服务器即可删除它们. #2779
- 为
Kafka
表引擎添加了SETTINGS
支持. Alexander Marshalov UUID
数据类型的改进 (尚未完成). #2618- 支持在
SummingMergeTree
、CollapsingMergeTree
和VersionedCollapsingMergeTree
引擎中合并后的空部分. #2815 - 已完成突变的旧记录被删除 (
ALTER DELETE
). #2784 - 添加了
system.merge_tree_settings
表. Kirill Shvakov system.tables
表现在有依赖列:dependencies_database
和dependencies_table
. Winter Zhang- 添加了
max_partition_size_to_drop
配置选项. #2782 - 添加了
output_format_json_escape_forward_slashes
选项. Alexander Bocharov - 添加了
max_fetch_partition_retries_count
设置. #2831 - 添加了
prefer_localhost_replica
设置, 用于禁用本地副本的首选项并在没有进程间交互的情况下转到本地副本. #2832 - 在对空的
Float32
或Float64
集合进行聚合的情况下,quantileExact
聚合函数返回nan
. Sundy Li
Bug 修复:
- 删除了 ODBC 连接字符串参数的不必要转义, 这使得无法建立连接. 此错误发生在 18.6.0 版本中.
- 修复了处理复制队列中
REPLACE PARTITION
命令的逻辑. 如果同一个分区有两个REPLACE
命令, 不正确的逻辑可能会导致其中一个留在复制队列中而不会被执行. #2814 - 修复了所有数据部分为空时的合并错误 (如果所有数据都被删除, 则由合并或
ALTER DELETE
形成的部分). 这个bug出现在18.1.0版本. #2930 - 修复了并发
Set
或Join
的错误. Amos Bird - 修正了
UNION流中的块结构不匹配: 列数不同
错误, 如果一个SELECT
查询包含重复的列名, 在子查询UNION ALL
查询中发生的错误. Winter Zhang - 修复了连接 MySQL 服务器时发生异常时的内存泄漏.
- 修复了查询错误时不正确的 clickhouse-client 响应代码.
- 修复了包含 DISTINCT 的物化视图的错误行为. #2795
向后不兼容的更新:
- 删除了对分布式表的 CHECK TABLE 查询的支持.
Build 更新:
- 分配器已被替换: 现在使用
jemalloc
代替tcmalloc
. 在某些情况下, 这将速度提高到 20%. 但是, 有些查询速度降低了 20%. 部分场景内存消耗降低约10%, 稳定性提升. 在竞争激烈的负载下, 用户空间和系统中的 CPU 使用率仅略有增加. #2773 - 使用子模块中的 libressl. #1983 #2807
- 从子模块使用 unixodbc. #2789
- 使用子模块中的 mariadb-connector-c. #2785
- 将依赖于测试数据可用性的功能测试文件添加到存储库中 (暂时没有测试数据本身).
ClickHouse 版本 18.6
ClickHouse 版本 18.6.0, 2018-08-02
新特征:
- 添加了对 JOIN ON 语法的 ON 表达式的支持:
JOIN ON Expr([table.]column ...) = Expr([table.]column, ...) [AND Expr([table.]column, ...) = Expr([table.]column, ...) ...]
表达式必须是由 AND 运算符连接的等式链. 等式的每一边都可以是一个表的列上的任意表达式. 支持对右表使用完全限定的列名 (table.name
、database.table.name
、table_alias.name
、subquery_alias.name
). #2742 - 可以启用 HTTPS 进行复制. #2760
改进:
- 服务器将其版本的补丁组件传递给客户端. 关于补丁版本组件的数据在
system.processes
和query_log
中. #2646
ClickHouse 版本 18.5
ClickHouse 版本 18.5.1, 2018-07-31
新特征:
- 添加了哈希函数
murmurHash2_32
. #2756.
改进:
Bug 修复:
- 修复了启动副本时可能出现的错误 #2759.
ClickHouse 版本 18.4
ClickHouse 版本 18.4.0, 2018-07-28
新特征:
- 添加系统表:
formats
、data_type_families
、aggregate_function_combinators
、table_functions
、table_engines
、collations
#2721. - 添加了使用表函数而不是表作为
remote
或cluster table function
的参数的功能 #2708. - 支持复制协议中的
HTTP Basic
身份验证 #2727. has
函数现在允许在Enum
值数组中搜索数值 Maxim Khrisanfov.- 支持在从
Kafka
读取时添加任意消息分隔符 Amos Bird.
改进:
ALTER TABLE t DELETE WHERE
查询不会重写不受 WHERE 条件影响的数据部分 #2694.ReplicatedMergeTree
表的use_minimalistic_checksums_in_zookeeper
选项默认启用. 此设置是在 1.1.54378, 2018-04-16 版本中添加的. 不能再安装早于 1.1.54378 的版本.- 支持运行指定
ON CLUSTER
的KILL
和OPTIMIZE
查询 Winter Zhang.
Bug 修复:
- 修复了错误
Column ... is not under a aggregate function and not in GROUP BY
用于使用 IN 表达式进行聚合. 这个bug出现在18.1.0版本 (bbdd780b) - 修复了
windowFunnel aggregate function
中的一个错误 Winter Zhang. - 修复了
anyHeavy
聚合函数中的错误 (a2101df2) - 修复了使用
countArray()
聚合函数时服务器崩溃的问题.
向后不兼容的更新:
Kafka
引擎的参数已从Kafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_schema, kafka_num_consumers])
更改为Kafka(kafka_broker_list, kafka_topic_list, kafka_topic_list, kafka_fka_name_schema_fka_format, kafka_fka_name_schema_group_format[, kafka_schema, kafka_num_consumers])
如果您的表使用kafka_schema
或kafka_num_consumers
参数, 则必须手动编辑元数据文件path/metadata/database/table.sql
并添加具有''
值的kafka_row_delimiter
参数.
ClickHouse 版本 18.1
ClickHouse 版本 18.1.0, 2018-07-23
新特征:
- 支持对非复制 MergeTree 表的
ALTER TABLE t DELETE WHERE
查询 (#2634). - 支持
uniq*
聚合函数系列的任意类型 (#2010). - 支持比较运算符中的任意类型 (#2026).
users.xml
文件允许设置格式为10.0.0.1/255.255.255.0
的子网掩码. 这对于在中间为 0 的 IPv6 网络使用掩码是必要的 (#2637).- 添加了
arrayDistinct
函数 (#2670). - SummingMergeTree 引擎现在可以处理 AggregateFunction 类型的列 (Constantin S. Pan).
改进:
- 更改了发布版本的编号方案. 现在第一部分包含发布年份 (莫斯科时区, 公元2000年), 第二部分包含主要更改的编号(大多数版本增加), 第三部分是补丁版本. 除非在变更日志中另有说明.否则版本仍然向后兼容.
- 更快地将浮点数转换为字符串. (Amos Bird).
- 如果在插入期间由于解析错误而跳过了某些行 (这在启用
input_allow_errors_num
和input_allow_errors_ratio
设置的情况下是可能的), 跳过的行数现在会写入服务器日志(Leonardo Cecchi).
Bug 修复:
- 修复了临时表的 TRUNCATE 命令. (Amos Bird).
- 修复了 ZooKeeper 客户端库中读取响应时出现网络错误时发生的罕见死锁 (c315200).
- 修复了 CAST 到 Nullable 类型期间的错误(#1322).
- 修复了区间边界重合时
maxIntersection()
函数的错误结果 (Michael Furmur). - 修复了函数参数中 OR 表达式链的错误转换 (chenxing-xc).
- 修复了在另一个子查询中包含
IN(子查询)
表达式的查询的性能下降 (#2571). - 修复了使用非大写字母的
CAST
函数的分布式查询中不同版本服务器之间的不兼容问题 (fe8c4d6). - 添加了对外部 DBMS 的查询标识符的缺失引用 (#2635).
向后不兼容的更新:
- 将包含数字零的字符串转换为 DateTime 不起作用. 示例:
SELECT toDateTime('0')
. 这也是DateTime DEFAULT '0'
在表中不起作用的原因, 以及在字典中<null_value>0</null_value>
的原因. 解决方案: 用0000-00-00 00:00:00
替换0
.
ClickHouse 版本 1.1
ClickHouse 版本 1.1.54394, 2018-07-12
新特征:
- 添加了
histogram
聚合函数 (Mikhail Surin). - 现在可以使用
OPTIMIZE TABLE ... FINAL
而无需为ReplicatedMergeTree
指定分区 (Amos Bird).
Bug 修复:
- 修复了发送和下载复制数据时套接字读写超时 (一秒) 非常小的问题, 这使得如果网络或磁盘上有负载, 则无法下载较大的部分 (导致循环尝试 下载部分). 此错误发生在 1.1.54388 版本中.
- 修复了在表中插入重复数据块时在 ZooKeeper 中使用 chroot 时的问题.
has
函数现在可以正确处理具有 Nullable 元素的数组 (#2115).system.tables
表在分布式查询中使用时可以正常工作.metadata_modification_time
和engine_full
列现在是非虚拟的. 修复了仅从表中查询这些列时发生的错误.- 修复了插入空数据块后空
TinyLog
表的工作方式 (#2563). - 如果 ZooKeeper 中节点的值为 NULL, 则
system.zookeeper
表有效.
ClickHouse 版本 1.1.54390, 2018-07-06
新特征:
- 查询可以以
multipart/form-data
格式发送(在query
字段中), 如果外部数据也被发送用于查询处理 (Olga Hvostikova). - 添加了在以 CSV 格式读取数据时启用或禁用处理单引号或双引号的功能. 您可以在
format_csv_allow_single_quotes
和format_csv_allow_double_quotes
设置中进行配置 (Amos Bird). - 现在可以使用
OPTIMIZE TABLE ... FINAL
而不指定MergeTree
的非复制变体的分区 (Amos Bird).
改进:
- 当可以使用表索引时,通过使用 IN 运算符提高性能、减少内存消耗和正确的内存消耗跟踪 (#2584).
- 添加数据部分时删除了校验和的冗余检查. 这在有大量副本时很重要, 因为在这些情况下, 检查总数等于 N^2.
- 为
arrayEnumerateUniq
函数添加了对Array(Tuple(...))
参数的支持 (#2573). - 为
runningDifference
函数添加了Nullable
支持 (#2594). - 提高了表达式数量非常多时的查询分析性能 (#2572).
- 更快地选择要合并到
ReplicatedMergeTree
表中的数据部分. ZooKeeper 会话的更快恢复 (#2597). MergeTree
表的format_version.txt
文件如果丢失则重新创建, 如果在复制没有文件的目录结构后启动 ClickHouse, 这是有意义的 (Ciprian Hacman).
Bug 修复:
- 修复了使用 ZooKeeper 时无法在重新启动服务器之前恢复会话和表的只读状态的错误.
- 修复了使用 ZooKeeper 时可能导致会话中断时旧节点不会被删除的错误.
- 修复了 Float 参数的
quantileTDigest
函数中的错误 (这个错误是在 1.1.54388 版本中引入的) (Mikhail Surin). - 如果主键列位于相同大小的有符号和无符号整数之间的类型转换函数内, 则修复了 MergeTree 表的索引中的错误 (#2603).
- 如果使用了宏但它们不在配置文件中, 则修复了段错误 (#2570).
- 修复重新连接客户端时切换到默认数据库的问题 (#2583).
- 修复了禁用
use_index_for_in_with_subqueries
设置时发生的错误.
安全修复:
- 连接到 MySQL 时不再可能发送文件 (
LOAD DATA LOCAL INFILE
).
ClickHouse 版本 1.1.54388, 2018-06-28
新特征:
- 支持对复制表的
ALTER TABLE t DELETE WHERE
查询. 添加了system.mutations
表以跟踪此类查询的进度. - 支持对 *MergeTree 表的
ALTER TABLE t [REPLACE|ATTACH] PARTITION
查询. - 支持
TRUNCATE TABLE
查询 (Winter Zhang). - 几个新的复制表的
SYSTEM
查询 (RESTART REPLICAS
,SYNC REPLICA
,[STOP|START] [MERGES|FETCHES|SENDS REPLICATED|REPLICATION QUEUES]
). - 增加了使用 MySQL 引擎写表的能力和对应的表函数 (sundy-li).
- 添加了
url()
表函数和URL
表引擎 (Alexander Sapin). - 添加了
windowFunnel
聚合函数 (sundy-li). - 字符串的新
startsWith
和endsWith
函数 (Vadim Plakhtinsky). numbers()
表函数现在允许您指定偏移量 (Winter Zhang).clickhouse-client
的密码可以交互输入.- 服务器日志现在可以发送到系统日志 (Alexander Krasheninnikov).
- 支持使用共享库源登录词典 (Alexander Sapin).
- 支持自定义 CSV 分隔符 (Ivan Zhukov).
- 添加了
date_time_input_format
设置. 如果将此设置切换为best_effort
, 则会以多种格式读取 DateTime 值. - 添加了用于数据混淆的
clickhouse-obfuscator
实用程序. 使用示例: 发布性能测试中使用的数据.
实验功能:
- 添加了仅在需要的地方计算
and
参数的功能 (Anastasia Tsarkova). - 一些表达式现在可以 JIT 编译为本机代码 (pyos).
Bug 修复:
- 使用
DISTINCT
和ORDER BY
查询不再出现重复. - 使用
ARRAY JOIN
和arrayFilter
的查询不再返回不正确的结果. - 修复了从嵌套结构中读取数组列时的错误 (#2066).
- 修复了使用 HAVING 子句 (如
HAVING tuple IN (...)
) 分析查询时的错误. - 修复了使用递归别名分析查询时的错误.
- 修复了从 ReplacingMergeTree 读取时的错误,在 PREWHERE 中使用过滤所有行的条件 (#2525).
- 在 HTTP 界面中使用会话时未应用用户配置文件设置.
- 修复了如何从 clickhouse-local 中的命令行参数应用设置.
- ZooKeeper 客户端库现在使用从服务器收到的会话超时.
- 修复了 ZooKeeper 客户端库中客户端等待服务器响应时间超过超时时间的错误.
- 修复了分区键列条件查询的部分修剪 (#2342).
- 现在可以在
CLEAR COLUMN IN PARTITION
之后进行合并 (#2315). - 修复了 ODBC 表函数中的类型映射 (sundy-li).
- 已修复带和不带时区的
DateTime
的类型比较 (Alexander Bocharov). - 修复了
CAST
运算符的语法解析和格式设置. - 固定插入到分布式表引擎的物化视图中 (Babacar Diassé).
- 修复了将数据从
Kafka
引擎写入物化视图时的竞争条件 (Yangkuan Liu). - 修复了 remote() 表函数中的 SSRF.
- 修复了多行模式下
clickhouse-client
的退出行为 (#2510).
改进:
- 复制表中的后台任务现在在线程池中执行,而不是在单独的线程中执行 (Silviu Caragea).
- 提高LZ4压缩性能.
- 对具有大量 JOIN 和子查询的查询进行更快的分析.
- 当网络错误过多时,DNS 缓存现在会自动更新.
- 如果由于其中一个物化视图有太多的部件而无法插入表,则不会再插入表.
- 更正了事件计数器
Query
、SelectQuery
和InsertQuery
中的差异. - 如果元组类型匹配,则允许使用诸如
tuple IN (SELECT tuple)
之类的表达式. - 即使您尚未配置 ZooKeeper,具有复制表的服务器也可以启动.
- 在计算可用 CPU 内核数时,现在考虑了 cgroup 的限制 (Atri Sharma).
- 在 systemd 配置文件中为配置目录添加了 chown (Mikhail Shiryaev).
Build 更新:
- gcc8 编译器可用于构建.
- 添加了从子模块构建 llvm 的功能.
- ibrdkafka 库版本已更新至 v0.11.4.
- 添加了使用系统 libcpuid 库的功能. 库版本已更新至 0.4.0.
- 使用矢量类库修复了构建 (Babacar Diassé).
- Cmake 现在默认为 ninja 生成文件 (就像使用
-G Ninja
时一样). - 添加了使用 libtinfo 库代替 libtermcap 的功能 (Georgy Kondratiev).
- 修复了 Fedora Rawhide 中的头文件冲突 (#2520).
向后不兼容的更新:
- 删除了
Vertical
和Pretty*
格式的转义并删除了VerticalRaw
格式. - 如果在分布式查询中同时使用版本 1.1.54388(或更高版本)和旧版本的服务器,并且查询具有不带
AS
关键字的cast(x, 'Type')
表达式并且没有大写的cast
一词, 将抛出异常, 并显示类似Not found column cast(0, 'UInt8') in block
的消息. 解决方案: 更新整个集群上的服务器.
ClickHouse 版本 1.1.54385, 2018-06-01
Bug 修复:
- 修复了某些情况下导致 ZooKeeper 操作阻塞的错误.
ClickHouse 版本 1.1.54383, 2018-05-22
Bug 修复:
- 修复了一个表有很多副本时复制队列变慢的问题.
ClickHouse Rel版本ease 1.1.54381, 2018-05-14
Bug 修复:
- 修复了当 ClickHouse 与 ZooKeeper 服务器失去连接时 ZooKeeper 中的节点泄漏.
ClickHouse 版本 1.1.54380, 2018-04-21
新特征:
- 添加了表函数
file(path, format, structure)
. 从/dev/urandom
读取字节的示例:ln -s /dev/urandom /var/lib/clickhouse/user_files/random``clickhouse-client -q "SELECT * FROM file('random', ' RowBinary', 'd UInt8') LIMIT 10"
.
改进:
- 子查询可以包含在
()
括号中以提高查询的可读性. 例如:(SELECT 1) UNION ALL (SELECT 1)
. - 来自
system.processes
表的简单SELECT
查询不包括在max_concurrent_queries
限制中.
Bug 修复:
- 修复了从
物质化视图
中选择时IN
运算符的错误行为. - 修复了在
partition_key_column IN (...)
等表达式中按分区索引不正确的过滤. - 修复了如果在表上执行了
REANAME
,则无法在非领导副本上执行OPTIMIZE
查询. - 修复了在非领导副本上执行
OPTIMIZE
或ALTER
查询时的授权错误. - 修复了
KILL QUERY
的冻结问题. - 修复了 ZooKeeper 客户端库中的一个错误,如果在 ZooKeeper 配置中使用非空的
chroot
前缀,该错误会导致监视丢失、分布式 DDL 队列冻结以及复制队列变慢.
向后不兼容的更新:
- 删除了对像
(a, b) IN (SELECT (a, b))
这样的表达式的支持 (你可以使用等价的表达式(a, b) IN (SELECT a, b)
). 在以前的版本中, 这些表达式会导致未确定的WHERE
过滤或导致错误.
ClickHouse 版本 1.1.54378, 2018-04-16
新特征:
- 无需重新启动服务器即可更改日志级别.
- 添加了
SHOW CREATE DATABASE
查询. query_id
可以传递给clickhouse-client
(elBroom).- 新设置:
max_network_bandwidth_for_all_users
. - 为
MATERIALIZED VIEW
添加了对ALTER TABLE ... PARTITION ...
的支持. - 在系统表中添加了有关未压缩形式的数据部分大小的信息.
- 分布式表的服务器到服务器加密支持(
<remote_servers>
中的副本配置中的<secure>1</secure>
). ReplicatedMergeTree
系列的表级别配置以最小化 Zookeeper 中存储的数据量:use_minimalistic_checksums_in_zookeeper = 1
clickhouse-client
提示的配置. 默认情况下, 服务器名称现在会输出到提示中. 服务器的显示名称可以更改. 它还在X-ClickHouse-Display-Name
HTTP 标头中发送 (Kirill Shvakov).- 可以为
Kafka
引擎指定多个逗号分隔的topics
(Tobias Adamson) - 当查询被
KILL QUERY
或replace_running_query
停止时,客户端会收到Query was cancelled
异常而不是不完整的结果.
改进:
ALTER TABLE ... DROP/DETACH PARTITION
查询在复制队列的前面运行.SELECT ... FINAL
和OPTIMIZE ... FINAL
可以在表只有一个数据部分时使用.- 如果手动删除了
query_log
表,则会即时重新创建它 (Kirill Shvakov). lengthUTF8
函数运行速度更快 (zhang2014).- 当分片数量非常多时,提高了在
分布式
表 (insert_distributed_sync = 1
) 中同步插入的性能. - 服务器接受来自客户端的
send_timeout
和receive_timeout
设置,并在连接到客户端时应用它们 (它们以相反的顺序应用:服务器套接字的send_timeout
设置为从客户端接收到的receive_timeout
值, 反之亦然). - 用于异步插入
Distributed
表的更强大的崩溃恢复. countEqual
函数的返回类型从UInt32
更改为UInt64
(谢磊).
Bug 修复:
- 修复了表达式左侧为
Nullable
时IN
的错误. - 当某些元组组件在表索引中时,现在使用带有
IN
的元组时会返回正确的结果. max_execution_time
限制现在可以在分布式查询中正常工作.- 修复了计算
system.columns
表中复合列大小时的错误. - 修复了创建临时表
CREATE TEMPORARY TABLE IF NOT EXISTS
时的错误. - 修复了
StorageKafka
中的错误 (##2075) - 固定服务器因某些聚合函数的无效参数而崩溃.
- 修复了阻止
DETACH DATABASE
查询停止ReplicatedMergeTree
表的后台任务的错误. - 插入聚合物化视图时,不太可能发生
Too many parts
状态 (##2084). - 如果替换必须跟在同一级别的另一个替换之后,则更正了配置中替换的递归处理.
- 在创建使用带有
UNION ALL
的查询的VIEW
时更正了元数据文件中的语法. SummingMergeTree
现在可以正确地使用复合键对嵌套数据结构求和.- 修复了在为
ReplicatedMergeTree
表选择领导者时出现竞争条件的可能性.
Build 更新:
- 构建支持
ninja
而不是make
,并且默认使用ninja
来构建版本. - 重命名包:
clickhouse-common-static
中的clickhouse-server-base
;clickhouse-server
中的clickhouse-server-common
;clickhouse-common-static-dbg
中的clickhouse-common-dbg
. 要安装, 请使用clickhouse-server clickhouse-client
. 具有旧名称的包仍将加载到存储库中以实现向后兼容性.
向后不兼容的更新:
- 如果在左侧指定了数组, 则删除了 IN 表达式的特殊解释. 以前, 表达式
arr IN (set)
被解释为"at least onearr
元素属于set
". 要在新版本中获得相同的行为, 请编写arrayExists(x -> x IN (set), arr)
. - 禁用套接字选项
SO_REUSEPORT
的错误使用,该选项默认在 Poco 库中被错误启用. 请注意, 在 Linux 上,不再有任何理由同时指定地址::
和0.0.0.0
用于侦听 – 仅使用::
, 它允许侦听通过 IPv4 和 IPv6 的连接(默认情况下) 内核配置设置). 您还可以通过在配置中指定<listen_reuse_port>1</listen_reuse_port>
来恢复以前版本的行为.
ClickHouse 版本 1.1.54370, 2018-03-16
新特征:
- 添加了
system.macros
表和更改配置文件时宏的自动更新. - 添加了
SYSTEM RELOAD CONFIG
查询. - 新增
maxIntersections(left_col, right_col)
聚合函数, 返回最大同时相交区间数[left; 对]
.maxIntersectionsPosition(left, right)
函数返回 "maximum" 间隔的开始. (Michael Furmur).
改进:
- 在
Replicated
表中插入数据时, 对ZooKeeper
的请求较少(并且大多数用户级错误已从ZooKeeper
日志中消失). - 添加了为数据集创建别名的功能. 示例:
WITH (1, 2, 3) AS set SELECT number IN set FROM system.numbers LIMIT 10
.
Bug 修复:
- 修复了从
Distributed
表的合并表读取时的Illegal PREWHERE
错误. - 添加了允许您在仅支持 IPv4 的 Docker 容器中启动 clickhouse-server 的修复程序.
- 修复了从系统
system.parts_columns
表读取时的竞争条件. - 在同步插入到
Distributed
表期间删除了双缓冲,这可能会导致连接超时. - 修复了在开始
SELECT
查询之前导致等待不可用副本过长的错误. - 修复了
system.parts
表中不正确的日期. - 修复了如果在
ZooKeeper
集群的配置中chroot
不为空, 则无法在Replicated
表中插入数据的错误. - 修复了空
ORDER BY
表的垂直合并算法. - 恢复了在对远程表的查询中使用字典的能力, 即使这些字典不存在于请求者服务器上. 此功能在 1.1.54362 版中丢失.
- 当
IN
的右侧应该使用远程default.table
时, 恢复了诸如SELECT * FROM remote('server2', default.table) WHERE col IN (SELECT col2 FROM default.table)
之类的查询行为而不是本地的. 此行为在 1.1.54358 版本中被破坏. - 删除了
Not found column ... in block
的无关错误级日志记录.
ClickHouse 版本 1.1.54362, 2018-03-11
新特征:
- 带
GROUP BY
的空集 (例如SELECT count(*) FROM table WHERE 0
) 的聚合现在返回一个结果, 其中一行带有聚合函数的空值, 符合 SQL 标准. 要恢复旧行为 (返回空结果), 请将empty_result_for_aggregation_by_empty_set
设置为 1. - 为
UNION ALL
添加了类型转换.UNION ALL
中的SELECT
位置允许不同的别名, 符合SQL标准. LIMIT BY
子句支持任意表达式. 以前, 只能使用由SELECT
产生的列.- 当将
IN
应用于主键列中的表达式元组时, 将使用MergeTree
表的索引. 示例:WHERE (UserID, EventDate) IN ((123, '2000-01-01'), ...)
(Anastasiya Tsarkova). - 添加了用于在集群之间复制和重新分片数据的
clickhouse-copier
工具(测试版). - 加了一致性哈希函数:
yandexConsistentHash
、jumpConsistentHash
、sumburConsistentHash
. 它们可以用作分片键, 以减少后续重新分片期间的网络流量. - 添加函数:
arrayAny
,arrayAll
,hasAny
,hasAll
,arrayIntersect
,arrayResize
. - 添加了
arrayCumSum
函数 (Javi Santana). - 添加了
parseDateTimeBestEffort
、parseDateTimeBestEffortOrZero
和parseDateTimeBestEffortOrNull
函数以从包含各种可能格式的文本的字符串中读取 DateTime. - 更新期间可以从外部字典中部分重新加载数据 (仅加载指定字段的值大于先前下载的记录) (Arsen Hakobyan).
- 添加了
cluster
表功能. 示例:cluster(cluster_name, db, table)
。remote
表函数可以接受集群名称作为第一个参数, 如果它被指定为标识符. remote
和cluster
表函数可用于INSERT
查询.- 将
create_table_query
和engine_full
虚拟列添加到system.tables
表.metadata_modification_time
列是虚拟的. - 将
data_path
和metadata_path
列添加到system.tables
和system.databases
表, 并将path
列添加到system.parts
和system.parts_columns
表. - 在
system.part_log
表中添加了有关合并的附加信息. system.query_log
表可以使用任意分区键 (Kirill Shvakov).SHOW TABLES
查询现在也显示临时表. 添加临时表和is_temporary
列到system.tables
(zhang2014).- 添加了
DROP TEMPORARY TABLE
和EXISTS TEMPORARY TABLE
查询 (zhang2014). - 支持临时表的
SHOW CREATE TABLE
(zhang2014). - 为内部进程使用的设置添加了
system_profile
配置参数. - 支持加载
object_id
作为MongoDB
字典中的属性 (Pavel Litvinenko). - 使用
MongoDB
源加载外部字典的数据时, 将null
作为默认值读取 (Pavel Litvinenko). - 从没有单引号的 Unix 时间戳中读取
Values
格式的DateTime
值. - 在某些副本缺少请求的表的情况下,
remote
表函数支持故障转移. - 当您运行
clickhouse-server
时,可以在命令行中覆盖配置设置. 示例:clickhouse-server -- --logger.level=information
. - 从
FixedString
参数实现了empty
函数: 如果字符串完全由空字节组成, 该函数返回 1 (zhang2014). - 添加了
listen_try
配置参数, 用于在不退出的情况下至少侦听一个侦听地址, 如果某些地址无法侦听 (对于禁用对 IPv4 或 IPv6 支持的系统很有用). - 添加了
VersionedCollapsingMergeTree
表引擎. - 支持
library
字典源的行和任意数字类型. MergeTree
表可以在没有主键的情况下使用 (你需要指定ORDER BY tuple()
).- 如果参数不是
NULL
, 则Nullable
类型可以CAST
到非Nullable
类型. - 可以为
VIEW
执行RENAME TABLE
. - 添加了
throwIf
函数. - 添加了
odbc_default_field_size
选项, 它允许您扩展从 ODBC 源加载的值的最大大小 (默认为 1024). system.processes
表和SHOW PROCESSLIST
现在有is_cancelled
和peak_memory_usage
列.
改进:
- 结果的限制和配额不再应用于
INSERT SELECT
查询或SELECT
子查询的中间数据. - 在服务器启动时检查
Replicated
表的状态时, 更少的force_restore_data
错误触发器. - 添加了
allow_distributed_ddl
选项. MergeTree
表键的表达式中不允许使用不确定性函数.- 从
config.d
目录替换的文件按字母顺序加载. - 在将空数组作为元素之一的常量多维数组的情况下, 改进了
arrayElement
函数的性能. 示例:[[1], []][x]
. - 当使用具有非常大的替换 (例如, 非常大的 IP 网络列表) 的配置文件时, 服务器现在启动速度更快.
- 运行查询时, 表值函数运行一次. 以前,
remote
和mysql
表值函数执行相同的查询两次以从远程服务器检索表结构. - 使用了
MkDocs
文档生成器. - 当您尝试删除其他列的
DEFAULT
/MATERIALIZED
表达式所依赖的表列时, 抛出异常 (zhang2014). - 添加了将文本格式中的空行解析为
Float
数据类型的数字 0 的功能. 此功能以前可用, 但在版本 1.1.54342 中丢失. Enum
值可用于min
、max
、sum
和其他一些函数. 在这些情况下, 它使用相应的数值. 此功能以前可用, 但在 1.1.54337 版本中丢失.- 添加了
max_expanded_ast_elements
以限制递归扩展别名后 AST 的大小.
Bug 修复:
- 修复了错误地从子查询中删除不必要的列, 或未从包含
UNION ALL
的子查询中删除的情况. - 修复了
ReplaceMergeTree
表的合并错误. - 修复了
Distributed
表中的同步插入 (insert_distributed_sync = 1
). - 修复了子查询中重复列的
FULL
和RIGHT JOIN
的某些用途的段错误. - 修复了
replace_running_query
和KILL QUERY
的某些用途的段错误. - 修复了
system.dictionaries
表中source
和last_exception
列的顺序. - 修复了
DROP DATABASE
查询未删除带有元数据的文件时的错误. - 修复了
Dictionary
数据库的DROP DATABASE
查询. - 修复了基数大于 1 亿项的
uniqHLL12
和uniqCombined
函数的低精度问题 (Alex Bocharov). - 修复了在需要同时计算 INSERT 查询中的默认显式表达式时隐式默认值的计算 (zhang2014).
- 修复了对
MergeTree
表的查询无法完成的罕见情况 (chenxing-xc). - 修复了在所有分片都是本地的情况下对
Distributed
表运行CHECK
查询时发生的崩溃 (chenxing.xc). - 修复了使用正则表达式的函数的轻微性能回归.
- 修复了从复杂表达式创建多维数组时的性能回归.
- 修复了可能导致额外的
FORMAT
部分出现在带有元数据的.sql
文件中的错误. - 修复了一个错误,该错误导致在尝试删除查看明确指定的表的
MATERIALIZED VIEW
时应用max_table_size_to_drop
限制. - 修复了与旧客户端不兼容的问题 (旧客户端有时会使用
DateTime('timezone')
类型发送数据, 他们不理解). - 修复了当这些列的条件移至
PREWHERE
时读取使用ALTER
添加但对于旧分区为空的结构的Nested
列元素时的错误. - 修复了在查询到
Merge
表时通过虚拟_table
列过滤表时的错误. - 修复了在
Distributed
表中使用ALIAS
列时的错误. - 修复了一个错误, 该错误使动态编译无法用于带有来自
quantile
系列的聚合函数的查询. - 修复了查询执行管道中的争用条件, 这种情况在使用具有大量表的
Merge
表以及使用GLOBAL
子查询时在非常罕见的情况下发生. - 修复了在使用来自多个参数的聚合函数时将不同大小的数组传递给
arrayReduce
函数时发生的崩溃. - 禁止在
MATERIALIZED VIEW
中使用带有UNION ALL
的查询. - 修复了服务器启动时
part_log
系统表初始化过程中的错误 (默认情况下,part_log
是禁用的).
向后不兼容的更新:
- 删除了
distributed_ddl_allow_replicated_alter
选项. 默认情况下启用此行为. - 删除了
strict_insert_defaults
设置. 如果您正在使用此功能, 请写信至clickhouse-feedback@yandex-team.com
. - 移除了
UnsortedMergeTree
引擎.
ClickHouse 版本 1.1.54343, 2018-02-05
- 添加了在分布式 DDL 查询和分布式表构造函数中定义集群名称的宏支持:
CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table')
. - 现在像
SELECT ... FROM table WHERE expr IN (subquery)
这样的查询是使用table
索引处理的. - 在插入到复制表时改进了重复处理, 因此它们不再减慢复制队列的执行速度.
ClickHouse 版本 1.1.54342, 2018-01-22
此版本包含先前版本 1.1.54337 的错误修复:
- 修复了 1.1.54337 中的回归: 如果默认用户具有只读访问权限, 则服务器拒绝启动并显示消息
Cannot create database in readonly mode
. - 修复了 1.1.54337 中的一个回归: 在具有 systemd 的系统上, 无论配置如何, 日志始终写入 syslog; 监视器脚本仍然使用 init.d.
- 修复了 1.1.54337 中的回归: Docker 镜像中的默认配置错误.
- 修复了 Graphite MergeTree 的非确定性行为 (您可以在日志消息中看到它
合并后的数据与另一个副本上的数据不是字节相同
). - 修复了对复制表进行 OPTIMIZE 查询后可能导致合并不一致的错误 (您可能会在日志消息中看到它
Part ... intersects the previous part
). - 当目标表中存在 MATERIALIZED 列时, 缓冲区表现在可以正常工作 (by zhang2014).
- 修复了 NULL 实现中的一个错误.
ClickHouse 版本 1.1.54337, 2018-01-18
新特征:
- 添加了对表中多维数组和元组 (
Tuple
数据类型) 的存储的支持. - 支持用于
DESCRIBE
和INSERT
查询的表函数. 在DESCRIBE
中添加了对子查询的支持. 示例:DESC TABLE remote('host', default.hits)
;DESC 表(选择 1)
;插入表功能远程('host',default.hits)
. 除了INSERT INTO
, 还支持INSERT INTO TABLE
. - 改进了对时区的支持.
DateTime
数据类型可以使用用于解析和格式化文本格式的时区进行注释. 示例:DateTime('Europe/Moscow')
. 当在函数中为 DateTime 参数指定时区时, 返回类型将跟踪时区, 并且值将按预期显示. - 添加了函数
toTimeZone
、timeDiff
、toQuarter
、toRelativeQuarterNum
.toRelativeHour
/Minute
/Second
函数可以将Date
类型的值作为参数.now
函数名区分大小写. - 添加了
toStartOfFifteenMinutes
函数 (Kirill Shvakov). - 添加了用于格式化查询的
clickhouse format
工具. - 添加了
format_schema_path
配置参数 (Marek Vavruşa). 它用于以Cap'n Proto
格式指定模式. 架构文件只能位于指定目录中. - 添加了对配置替换 (
incl
和conf.d
) 的支持, 用于配置外部词典和模型 (Pavel Yakunin). - 添加了一个包含
system.settings
表文档的列 (Kirill Shvakov). - 添加了
system.parts_columns
表, 其中包含有关MergeTree
表的每个数据部分中的列大小的信息. - 添加了
system.models
表, 其中包含有关已加载的CatBoost
机器学习模型的信息. - 增加了
mysql
和odbc
表功能以及相应的MySQL
和ODBC
表引擎, 用于访问远程数据库. 此功能处于测试阶段. - 添加了为
groupArray
聚合函数传递AggregateFunction
类型参数的可能性 (这样你就可以创建一些聚合函数的状态数组). - 删除了对聚合函数组合器的各种组合的限制. 例如, 您可以使用
avgForEachIf
和avgIfForEach
聚合函数, 它们具有不同的行为. -ForEach
聚合函数组合器针对多参数聚合函数的情况进行了扩展.- 添加了对
Nullable
参数的聚合函数的支持, 即使在函数返回非Nullable
结果的情况下 (由 Silviu Caragea 添加). 示例:groupArray
、groupUniqArray
、topK
. - 为
clickhouse-client
添加了max_client_network_bandwidth
(Kirill Shvakov). - 允许具有
readonly = 2
设置的用户使用 TEMPORARY 表 (CREATE, DROP, INSERT…) (Kirill Shvakov). - 添加了对
Kafka
引擎使用多个消费者的支持.Kafka
的扩展配置选项 (Marek Vavruša). - 添加了
intExp3
和intExp4
函数. - 添加了
sumKahan
聚合函数. - 添加到 * Number* OrNull 函数, 其中 * Number* 是数字类型.
- 添加了对
INSERT SELECT
查询的WITH
子句的支持 (author: zhang2014). - 添加设置:
http_connection_timeout
、http_send_timeout
、http_receive_timeout
. 特别是, 这些设置用于下载数据部分以进行复制. 如果网络过载, 更改这些设置可以实现更快的故障转移. - 为类型为
Null
的表添加了对ALTER
的支持 (Anastasiya Tsarkova). reinterpretAsString
函数针对所有连续存储在内存中的数据类型进行了扩展.- 为
clickhouse-local
工具添加了--silent
选项. 它禁止在 stderr 中打印查询执行信息. - 添加了对从文本中读取
Date
类型值的支持, 该格式使用一位数而不是两位数指定月份和/或月份中的某天 (Amos Bird).
性能优化:
- 改进了来自字符串参数的聚合函数
min
、max
、any
、anyLast
、anyHeavy
、argMin
、argMax
的性能. - 改进了函数
isInfinite
、isFinite
、isNaN
、roundToExp2
的性能. - 改进了以文本格式解析和格式化
Date
和DateTime
类型值的性能. - 提高解析浮点数的性能和精度.
- 在左右部分具有不包含在
USING
中的名称相同的列的情况下, 降低了JOIN
的内存使用量. - 通过降低计算稳定性, 改进了聚合函数
varSamp
、varPop
、stddevSamp
、stddevPop
、covarSamp
、covarPop
、corr
的性能. 旧函数可在名称varSampStable
、varPopStable
、stddevSampStable
、stddevPopStable
、covarSampStable
、covarPopStable
、corrStable
下使用.
Bug 修复:
- 在运行
DROP
或DETACH PARTITION
查询后修复了重复数据删除. 在以前的版本中, 删除分区并再次插入相同的数据不起作用, 因为插入的块被认为是重复的. - 修复了一个错误, 该错误可能导致对带有
POPULATE
的CREATE MATERIALIZED VIEW
查询的WHERE
子句的错误解释. - 修复了在
zookeeper_servers
配置中使用root_path
参数的错误. - 修复了将
Date
参数传递给toStartOfDay
的意外结果. - 修复了
addMonths
和subtractMonths
函数以及INTERVAL n MONTH
在结果为上一年的情况下的算术. - 为
DISTINCT
、JOIN
和uniq
聚合函数和外部词典 (Evgeniy Ivanov) 添加了对UUID
数据类型的缺失支持. 对UUID
的支持仍然不完整. - 在行总和为零的情况下修复了
SummingMergeTree
行为. - 对
Kafka
引擎的各种修复 (Marek Vavruša). - 修复了
Join
表引擎的错误行为 (Amos Bird). - 修复了 FreeBSD 和 OS X 下不正确的分配器行为.
extractAll
函数现在支持空匹配.- 修复了阻止使用
libressl
而不是openssl
的错误. - 修复了来自临时表的
CREATE TABLE AS SELECT
查询. - 修复了更新复制队列的非原子性. 这可能会导致副本不同步, 直到服务器重新启动.
- 修复了
gcd
、lcm
和modulo
(%
运算符) 中可能出现的溢出 (Maks Skorokhod). -preprocessed
文件现在在更改umask
后创建 (umask
可以在配置中更改).- 修复了使用自定义分区键时部件背景检查 (
MergeTreePartChecker
) 的错误. - 修复了文本格式元组 (
Tuple
数据类型的值) 的解析. - 改进了有关传递给
multiIf
、array
和一些其他函数的不兼容类型的错误消息. - 重新设计了对
Nullable
类型的支持. 修复了可能导致服务器崩溃的错误. 修复了几乎所有与NULL
支持相关的其他错误: INSERT SELECT 中的类型转换不正确、HAVING 和 PREWHERE 中对 Nullable 的支持不足、join_use_nulls
模式、可空类型作为OR
运算符的参数等. - 修复了与数据类型的内部语义相关的各种错误. 示例: 在
SummingMergeTree
中对Enum
类型字段进行不必要的求和;Pretty
格式的Enum
类型的对齐等. - 更严格地检查允许的复合列组合.
- 修复了为
FixedString
数据类型指定一个非常大的参数时的溢出问题. - 修复了一般情况下
topK
聚合函数中的错误. - 使用
-Array
组合器在聚合函数的n元变体的参数中添加了对数组大小相等性的缺失检查. - 修复了
clickhouse-client
的--pager
中的错误 (author: ks1322). - 修复了
exp10
函数的精度. - 修复了
visitParamExtract
函数的行为, 以便更好地遵守文档. - 修复了指定错误数据类型时崩溃的问题.
- 修复了所有列都是常量的情况下
DISTINCT
的行为. - 修复了在使用带有复杂常量表达式的
tupleElement
函数作为元组元素索引的情况下的查询格式. - 修复了
range_hashed
字典的Dictionary
表中的错误. - 修复了导致
FULL
和RIGHT JOIN
结果中行数过多的错误 (Amos Bird). - 修复了在配置重新加载期间在
config.d
目录中创建和删除临时文件时服务器崩溃的问题. - 修复了
SYSTEM DROP DNS CACHE
查询: 缓存已刷新但集群节点的地址未更新. - 修复了对视图下的表执行
DETACH TABLE
后MATERIALIZED VIEW
的行为 (Marek Vavruša).
Build 改进:
pbuilder
工具用于构建. 构建过程几乎完全独立于构建宿主环境.- 单个构建用于不同的操作系统版本. 软件包和二进制文件已与各种 Linux 系统兼容.
- 添加了
clickhouse-test
包. 它可用于运行功能测试. - 源 tarball 现在可以发布到存储库. 它可用于在不使用 GitHub 的情况下重现构建.
- 添加了与 Travis CI 的有限集成. 由于 Travis 中构建时间的限制, 仅测试调试构建并运行有限的测试子集.
- 在默认版本中添加了对
Cap'n'Proto
的支持. - 将文档来源的格式从
Restricted Text
更改为Markdown
. - 添加了对
systemd
(Vladimir Smirnov) 的支持. 由于与某些操作系统映像不兼容, 它默认被禁用, 可以手动启用. - 对于动态代码生成,
clang
和lld
被嵌入到clickhouse
二进制文件中. 它们也可以作为clickhouse clang
和clickhouse lld
调用. - 从代码中删除了 GNU 扩展的使用. 启用了
-Wextra
选项。 当使用clang
构建时, 默认是libc++
而不是libstdc++
. - 提取了
clickhouse_parsers
和clickhouse_common_io
库以加速各种工具的构建.
向后不兼容的更新:
- 包含
Nullable
列的Log
类型表中标记的格式以向后不兼容的方式进行了更改. 如果你有这些表, 你应该在启动新的服务器版本之前将它们转换为TinyLog
类型. 为此, 请在metadata
目录中相应的.sql
文件中将ENGINE = Log
替换为ENGINE = TinyLog
. 如果你的表没有Nullable
列或者你的表的类型不是Log
, 那么你不需要做任何事情. - 删除了
experimental_allow_extended_storage_definition_syntax
设置. 现在默认启用此功能. runningIncome
函数被重命名为runningDifferenceStartingWithFirstvalue
以避免混淆.- 当在没有表的 FROM 之后直接指定 ARRAY JOIN 时, 删除了
FROM ARRAY JOIN arr
语法 (Amos Bird). - 删除了仅用于演示目的的
BlockTabSeparated
格式. - 更改了聚合函数
varSamp
、varPop
、stddevSamp
、stddevPop
、covarSamp
、covarPop
、corr
的状态格式. 如果您已将这些聚合函数的状态存储在表中 (使用AggregateFunction
数据类型或具有相应状态的物化视图), 请写信至 clickhouse-feedback@yandex-team.com. - 在以前的服务器版本中, 有一个未公开的功能: 如果聚合函数依赖于参数, 您仍然可以在 AggregateFunction 数据类型中不带参数地指定它. 示例:
AggregateFunction(quantiles, UInt64)
而不是AggregateFunction(quantiles(0.5, 0.9), UInt64)
. 此功能已丢失. 虽然它没有记录, 但我们计划在未来的版本中再次支持它. - 枚举数据类型不能用于最小/最大聚合函数. 此能力将在下一个版本中恢复.
升级时请注意:
- 在集群上进行滚动更新时, 当一些副本运行旧版本的 ClickHouse 和一些运行新版本时, 复制会暂时停止, 并且日志中出现消息
unknown parameter 'shard'
. 更新集群的所有副本后, 复制将继续. - 如果在集群服务器上运行不同版本的 ClickHouse, 使用以下函数的分布式查询可能会得到不正确的结果:
varSamp
、varPop
、stddevSamp
、stddevPop
、covarSamp
、covarPop
,corr
. 您应该更新所有集群节点.