2018 年更新日志
ClickHouse 版本 18.16
ClickHouse 版本 18.16.1, 2018-12-21
Bug 修复:
改进:
- 添加了
low_cardinality_allow_in_native_format
设置(默认启用)。禁用后,LowCardinality 列将在 SELECT 查询中转换为普通列,并且 INSERT 查询将需要普通列。#3879
构建改进:
- 修复了 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 - 将
is_in_partition_key
,is_in_sorting_key
,is_in_primary_key
和is_in_sampling_key
列添加到system.columns
表中。#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
- 修复了
VersionedCollapsingMergeTree
的PREWHERE
与FINAL
的错误。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
函数中指定非恒定比例参数时发生的崩溃。 - 修复了尝试将具有
NULL
元素的数组以Values
格式插入到没有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 - 修复了使用物化视图时发生的错误
Attempt to attach to nullptr thread group
。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
选项,以在指定时间间隔不活动后启用 keep-alive 数据包。#3441 - 如果
system.parts
表中的分区键仅由单列组成,则删除了对分区键值的不必要引用。#3652 - 模函数适用于
Date
和DateTime
数据类型。#3385 - 为
POWER
,LN
,LCASE
,UCASE
,REPLACE
,LOCATE
,SUBSTR
和MID
函数添加了同义词。#3774 #3763 一些函数名称不区分大小写,以与 SQL 标准兼容。为与 SQL 兼容,添加了语法糖SUBSTRING(expr FROM start FOR length)
。#3804 - 添加了
mlock
与clickhouse-server
可执行代码对应的内存页面的功能,以防止其被强制移出内存。此功能默认禁用。#3553 - 提高了从
O_DIRECT
读取时的性能(启用了min_bytes_to_use_direct_io
选项)。#3405 - 改进了
dictGet...OrDefault
函数对于常量键参数和非常量默认参数的性能。Amos Bird firstSignificantSubdomain
函数现在处理域gov
,mil
和edu
。Igor Hatarist 提高了性能。#3628- 能够使用
SYS-V init.d
脚本通过在/etc/default/clickhouse
中定义CLICKHOUSE_PROGRAM_ENV
来为启动clickhouse-server
指定自定义环境变量。Pavlo Bashynskyi - clickhouse-server init 脚本的正确返回代码。#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
构建改进:
- 更新了
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(17883)
而不是toDate('2018-12-18') = 17883
。#3687
ClickHouse 版本 18.14
ClickHouse 版本 18.14.19, 2018-12-19
Bug 修复:
- 修复了导致使用 ODBC 源更新字典时出现问题的错误。#3825, #3829
- 执行
ON CLUSTER
查询时,数据库已正确指定。#3460 - 修复了超过
max_temporary_non_const_columns
限制时发生的段错误。#3788
构建改进:
- 修复了 ARM 上的构建问题。
ClickHouse Release 18.14.18, 2018-12-04
Bug 修复:
- 修复了当
range
类型字典的dictGet...
函数中,如果一个参数是常量而另一个不是常量时出现的错误。#3751 - 修复了在 Linux 内核日志中打印消息
netlink: '...': attribute type 1 has an invalid length
的错误,该错误仅在足够新的 Linux 内核版本上发生。#3749 - 修复了
FixedString
类型的参数在empty
函数中发生的段错误。Daniel, Dao Quang Minh - 修复了当使用
max_query_size
设置的较大值时,过度内存分配的问题(一次预分配了max_query_size
字节的内存块)。#3720
构建变更:
- 修复了使用来自操作系统软件包的 LLVM/Clang 版本 7 库进行构建的问题(这些库用于运行时查询编译)。#3582
ClickHouse Release 18.14.17, 2018-11-30
Bug 修复:
- 修复了 ODBC bridge 进程未随主服务器进程终止的情况。#3642
- 修复了同步插入到
Distributed
表中,且列列表与远程表的列列表不同的问题。#3673 - 修复了在删除 MergeTree 表时可能导致崩溃的罕见竞争条件。#3643
- 修复了当查询线程创建失败并出现
Resource temporarily unavailable
错误时的查询死锁。#3643 - 修复了当使用
CREATE AS table
语法且ENGINE
子句在AS table
之前指定时,ENGINE
子句的解析问题(该错误导致忽略指定的引擎)。#3692
ClickHouse Release 18.14.15, 2018-11-21
Bug 修复:
- 反序列化
Array(String)
类型的列时,内存块的大小被高估,导致 “Memory limit exceeded” 错误。此问题出现在 18.12.13 版本中。#3589
ClickHouse Release 18.14.14, 2018-11-20
Bug 修复:
- 修复了配置为安全集群 (
<secure>
标志) 时的ON CLUSTER
查询。#3599
构建变更:
- 修复了问题 (系统中的 llvm-7, macos) #3582
ClickHouse Release 18.14.13, 2018-11-08
Bug 修复:
- 修复了
Block structure mismatch in MergingSorted stream
错误。#3162 - 修复了在集群配置中启用安全连接 (
<secure>
标志) 时,ON CLUSTER
查询的问题。#3465 - 修复了使用
SAMPLE
、PREWHERE
和别名列的查询中的错误。#3543 - 修复了启用
min_bytes_to_use_direct_io
设置时,罕见的unknown compression method
错误。3544
性能改进:
- 修复了在 AMD EPYC 处理器上执行时,对 UInt16 或 Date 类型的列进行
GROUP BY
查询的性能回归问题。Igor Lapko - 修复了处理长字符串的查询的性能回归问题。#3530
构建改进:
ClickHouse Release 18.14.12, 2018-11-02
Bug 修复:
- 修复了连接两个未命名子查询时发生的崩溃。#3505
- 修复了查询外部数据库时生成不正确查询(带有空的
WHERE
子句)的问题。hotid - 修复了 ODBC 字典中使用不正确的超时值的问题。Marek Vavruša
ClickHouse Release 18.14.11, 2018-10-29
Bug 修复:
- 修复了 LIMIT 查询中
Block structure mismatch in UNION stream: different number of columns
错误。#2156 - 修复了在包含嵌套结构内部数组的表中合并数据时发生的错误。#3397
- 修复了如果禁用
merge_tree_uniform_read_distribution
设置(默认启用)时,查询结果不正确的问题。#3429 - 修复了以 Native 格式插入到 Distributed 表时发生的错误。#3411
ClickHouse Release 18.14.10, 2018-10-23
compile_expressions
设置(表达式的 JIT 编译)默认禁用。#3410enable_optimize_predicate_expression
设置默认禁用。
ClickHouse Release 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
。Marek Vavruša 参见parallel_view_processing
设置。 - 添加了
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 ... is creating or attaching right now
。#3101 - 当从 MySQL 或 ODBC 表查询时,带有常量右半部分的 LIKE 和 IN 表达式会传递到远程服务器。#3182
- 当从 MySQL 和 ODBC 表查询时,WHERE 子句中与常量表达式的比较会传递到远程服务器。以前,仅传递与常量的比较。#3182
- 正确计算终端中
Pretty
格式的行宽,包括带有象形文字的字符串。Amos Bird。 ON CLUSTER
可以为ALTER UPDATE
查询指定。- 提高了在
JSONEachRow
格式中读取数据的性能。#3332 - 为了兼容性,添加了
LENGTH
和CHARACTER_LENGTH
函数的同义词。CONCAT
函数不再区分大小写。#3306 - 为
DateTime
类型添加了TIMESTAMP
同义词。#3390 - 服务器日志中始终为 query_id 保留空间,即使日志行与查询无关。这使得使用第三方工具更容易解析服务器文本日志。
- 当查询的内存消耗超过整数千兆字节的下一个级别时,会记录内存消耗。#3205
- 添加了兼容模式,以应对使用 Native 协议的客户端库错误地发送了比服务器对 INSERT 查询期望的列数更少的情况。当使用 clickhouse-cpp 库时,可能会发生这种情况。以前,这种情况会导致服务器崩溃。#3171
- 在
clickhouse-copier
的用户定义的 WHERE 表达式中,您现在可以使用partition_key
别名(用于按源表分区进行额外过滤)。如果分区方案在复制期间发生更改,但仅略有更改,则此功能很有用。#3166 Kafka
引擎的工作流程已移至后台线程池,以便在高负载下自动降低数据读取速度。Marek Vavruša。- 支持在
Cap'n'Proto 格式
中读取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 table
读取数据时open
和close
系统调用的数量。#3283 - 可以在任何副本上执行
TRUNCATE TABLE
查询(该查询将传递给 leader 副本)。Kirill Shvakov
Bug 修复:
- 修复了
range_hashed
字典的Dictionary
表的问题。此错误发生在 18.12.17 版本中。#1702 - 修复了加载
range_hashed
字典时出现的错误(消息Unsupported type Nullable (...)
)。此错误发生在 18.12.17 版本中。#3362 - 修复了由于对彼此靠近的大量顶点的多边形进行不精确计算的累积,导致
pointInPolygon
函数中出现的错误。#3331 #3341 - 如果在合并数据 parts 后,生成的 part 的校验和与另一个副本中相同合并的结果不同,则删除合并结果,并从另一个副本下载数据 part(这是正确的行为)。但是在下载数据 part 后,由于 part 已存在(因为数据 part 在合并后延迟一段时间才被删除),因此无法将其添加到工作集中。这导致循环尝试下载相同的数据。#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
引擎中的 bug:启动读取数据后出现异常时的死锁,以及完成时的锁。Marek Vavruša。 - 对于
Kafka
表,可选的schema
参数未传递(Cap'n'Proto
格式的 schema)。Vojtech Splichal - 如果 ZooKeeper 服务器的 ensemble 具有接受连接但随后立即关闭连接而不是响应握手的服务器,则 ClickHouse 会选择连接另一台服务器。以前,这会产生错误
Cannot read all data. Bytes read: 0. Bytes expected: 4.
并且服务器无法启动。8218cf3a - 如果 ZooKeeper 服务器的 ensemble 包含 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
查询中的 Bug 修复。- 修复了 18.12 版本中出现的
odbc
表函数中的 bug。#3197 - 修复了带有
StateArray
组合器的聚合函数的操作。#3188 - 修复了将
Decimal
值除以零时发生的崩溃。69dd6609 - 修复了使用
Decimal
和整数参数的操作的类型输出。#3224 - 修复了在
Decimal128
上进行GROUP BY
期间发生的段错误。3359ba06 - 只有当
log_queries
选项(记录有关查询的信息)设置为 1 时,log_query_threads
设置(记录有关查询执行的每个线程的信息)才会生效。由于log_query_threads
选项默认启用,因此即使禁用查询日志记录,以前也会记录有关线程的信息。#3241 - 修复了 quantiles 聚合函数的分布式操作中的错误(错误消息
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 ... does not match
或Unknown compression method
之类的消息。#3357 - 修复了在极少数情况下,在优化将等式评估中的 AND 链替换为相应的 IN 表达式之后可能发生的段错误。liuyimin-bytedance
- 对
clickhouse-benchmark
的小修正:以前,客户端信息未发送到服务器;现在,在关闭时以及限制迭代次数时,查询执行次数的计算更加准确。#3351 #3352
向后不兼容的变更:
- 删除了
allow_experimental_decimal_type
选项。Decimal
数据类型可供默认使用。#3329
ClickHouse Release 18.12
ClickHouse Release 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- 修复了不兼容性(不必要的依赖于
glibc
版本),这使得无法在Ubuntu Precise
和更旧版本上运行 ClickHouse。不兼容性出现在 18.12.13 版本中。#3130 - 修复了
enable_optimize_predicate_expression
设置中的错误。Winter Zhang - 修复了与向后兼容性有关的一个小问题,该问题在处理版本早于 18.12.13 的副本集群,并同时在新版本服务器上创建表的新副本时出现(显示在消息
Can not clone replica, because the ... updated to new ClickHouse version
中,这是合乎逻辑的,但不应该发生)。#3122
向后不兼容的变更:
enable_optimize_predicate_expression
选项默认启用(这相当乐观)。如果发生与搜索列名相关的查询分析错误,请将enable_optimize_predicate_expression
设置为 0。Winter Zhang
ClickHouse Release 18.12.14, 2018-09-13
新功能:
- 添加了对
ALTER UPDATE
查询的支持。#3035 - 添加了
allow_ddl
选项,该选项限制用户对 DDL 查询的访问权限。#3104 - 为
MergeTree
引擎添加了min_merge_bytes_to_use_direct_io
选项,该选项允许您为合并的总大小设置阈值(当高于阈值时,将使用 O_DIRECT 处理数据 part 文件)。#3117 system.merges
系统表现在包含partition_id
列。#3099
改进
Bug 修复:
- 在插入时,添加了对作为
Nested
类型字段元素的数组大小的检查。#3118 - 修复了使用
ODBC
源和hashed
存储更新外部字典时发生的错误。此错误发生在 18.12.13 版本中。 - 修复了从带有
IN
条件的查询创建临时表时发生的崩溃。Winter Zhang - 修复了可以包含
NULL
元素的数组的聚合函数中的错误。Winter Zhang
ClickHouse Release 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 - 添加了
ProfileEvents
计数器,其中包含来自 rusage 的系统指标(您可以使用它们来获取有关用户空间和内核中的 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 - 条件被强制转换为 View(当
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
设置。 如果值更宽,它仍然会完整显示,但表中的其他单元格不会太宽。 #3003odbc
表函数现在允许您指定数据库/架构名称。 Amos Bird- 添加了使用在
clickhouse-client
配置文件中指定的用户名的功能。 Vladimir Kozbin ZooKeeperExceptions
计数器已拆分为三个计数器:ZooKeeperUserExceptions
、ZooKeeperHardwareExceptions
和ZooKeeperOtherExceptions
。ALTER DELETE
查询适用于物化视图。- 在为
ReplicatedMergeTree
表定期运行清理线程时添加了随机化,以避免当存在大量ReplicatedMergeTree
表时出现周期性负载峰值。 - 支持
ATTACH TABLE ... ON CLUSTER
查询。 #3025
错误修复:
- 修复了
Dictionary
表的问题(抛出Size of offsets does not match size of column
或Unknown compression method
异常)。此错误出现在 18.10.3 版本中。 #2913 - 修复了当合并
CollapsingMergeTree
表时,如果其中一个数据部分为空(这些部分在合并或ALTER DELETE
期间形成,如果所有数据都被删除),并且合并使用了vertical
算法的错误。 #3049 - 修复了在对
Memory
表进行DROP
或TRUNCATE
操作时,如果同时进行SELECT
操作,可能导致服务器崩溃的竞争条件。此错误出现在 1.1.54388 版本中。 #3038 - 修复了在
Replicated
表中插入数据时,如果返回Session is expired
错误,可能导致数据丢失的可能性(数据丢失可以通过ReplicatedDataLoss
指标检测到)。此错误发生在 1.1.54378 版本中。 #2939 #2949 #2964 - 修复了
JOIN ... ON
期间的段错误。 #3000 - 修复了当
WHERE
表达式完全由限定列名组成时(例如WHERE table.column
)搜索列名称时出错的问题。 #2994 - 修复了当从远程服务器请求由带有子查询的 IN 表达式组成的单个列时,执行分布式查询时发生的“找不到列”错误。 #3087
- 修复了
UNION
流中的Block structure mismatch in UNION stream: different number of columns
错误,该错误在分布式查询中发生,如果其中一个分片是本地的,而另一个不是,并且触发了移动到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 来恢复旧的行为。
构建更改:
- 现在可以通过 commit 运行大多数集成测试。
- 代码样式检查也可以通过 commit 运行。
- 在 CentOS7/Fedora 上构建时,
memcpy
实现被正确选择。 Etienne Champetier - 当使用 clang 构建时,除了常规的
-Wall-Wextra -Werror
之外,还添加了一些来自-Weverything
的警告。 #2957 - 调试构建使用
jemalloc
debug 选项。 - 用于与 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 驱动程序 (
ODBCDriver2
输出格式) 中支持 Nullable 类型。 #2834 - 键列中支持
UUID
。
改进:
- 当从配置文件中删除集群时,可以删除集群而无需重启服务器。 #2777
- 当从配置文件中删除外部字典时,可以删除外部字典而无需重启服务器。 #2779
- 为
Kafka
表引擎添加了SETTINGS
支持。 Alexander Marshalov - 改进了
UUID
数据类型(尚未完成)。 #2618 - 支持
SummingMergeTree
、CollapsingMergeTree
和VersionedCollapsingMergeTree
引擎中合并后的空部分。 #2815 - 已完成的 mutation 的旧记录被删除 (
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 quantileExact
聚合函数在空Float32
或Float64
集合上进行聚合时返回nan
。 Sundy Li
错误修复:
- 删除了 ODBC 连接字符串参数的不必要转义,这使得无法建立连接。此错误发生在 18.6.0 版本中。
- 修复了复制队列中处理
REPLACE PARTITION
命令的逻辑。如果有两个针对同一分区的REPLACE
命令,则不正确的逻辑可能导致其中一个命令保留在复制队列中并且未执行。 #2814 - 修复了当所有数据部分都为空时(由合并或
ALTER DELETE
形成的部分,如果所有数据都被删除)的合并错误。此错误出现在 18.1.0 版本中。 #2930 - 修复了并发
Set
或Join
的错误。 Amos Bird - 修复了
UNION
流中的Block structure mismatch in UNION stream: different number of columns
错误,该错误在子查询内的UNION ALL
查询中发生,如果其中一个SELECT
查询包含重复的列名。 Winter Zhang - 修复了连接到 MySQL 服务器时发生异常时的内存泄漏。
- 修复了查询错误时 clickhouse-client 的不正确响应代码。
- 修复了包含 DISTINCT 的物化视图的不正确行为。 #2795
向后不兼容的更改
- 删除了对分布式表的 CHECK TABLE 查询的支持。
构建更改:
- 分配器已被替换:现在使用
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。
改进:
错误修复:
- 修复了启动副本时可能出现的错误 #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。
错误修复:
- 修复了使用 IN 表达式进行聚合时出现的错误
Column ... is not under an aggregate function and not in GROUP BY
。此错误出现在 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_group_name, kafka_format[, kafka_row_delimiter, 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
格式设置子网掩码。这对于在中间有零的 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 (subquery)
表达式的查询的性能下降问题 (#2571)。 - 修复了在使用不区分大小写的
CAST
函数的分布式查询中,不同版本的服务器之间的不兼容性问题 (fe8c4d6)。 - 为外部 DBMS 的查询添加了缺失的标识符引号 (#2635)。
向后不兼容的更改:
- 将包含数字零的字符串转换为 DateTime 不起作用。示例:
SELECT toDateTime('0')
。这也是DateTime DEFAULT '0'
在表中不起作用以及字典中的<null_value>0</null_value>
不起作用的原因。解决方案:将0
替换为0000-00-00 00:00:00
。
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)。
- 修复了如果使用了
macros
但它们不在配置文件中时发生的段错误 (#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
的密码。 - 服务器日志现在可以发送到 syslog (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
的查询不再返回不正确的结果。 - 修复了从 Nested 结构读取数组列时的错误 (#2066)。
- 修复了分析带有类似
HAVING tuple IN (...)
的 HAVING 子句的查询时的错误。 - 修复了分析带有递归别名的查询时的错误。
- 修复了从 ReplacingMergeTree 读取数据时,PREWHERE 中的条件过滤掉所有行时的错误 (#2525)。
- 在使用 HTTP 接口中的会话时,未应用用户配置文件设置。
- 修复了如何在 clickhouse-local 中应用来自命令行参数的设置。
- ZooKeeper 客户端库现在使用从服务器接收的会话超时。
- 修复了 ZooKeeper 客户端库中的一个错误,即客户端等待服务器响应的时间超过了超时时间。
- 修复了在分区键列上具有条件的查询的部分修剪 (#2342)。
- 在
CLEAR COLUMN IN PARTITION
之后,合并现在是可能的 (#2315)。 - ODBC 表函数中的类型映射已修复 (sundy-li)。
- 对于具有和不具有时区的
DateTime
,类型比较已修复 (Alexander Bocharov)。 - 修复了
CAST
运算符的语法分析和格式化。 - 修复了插入到 Distributed 表引擎的物化视图中的问题 (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)。
构建更改:
- gcc8 编译器可以用于构建。
- 添加了从子模块构建 llvm 的能力。
- librdkafka 库的版本已更新到 v0.11.4。
- 添加了使用系统 libcpuid 库的能力。库版本已更新到 0.4.0。
- 修复了使用 vectorclass 库的构建 (Babacar Diassé)。
- Cmake 现在默认情况下为 ninja 生成文件(就像使用
-G Ninja
时一样)。 - 添加了使用 libtinfo 库而不是 libtermcap 的能力 (Georgy Kondratiev)。
- 修复了 Fedora Rawhide 中的头文件冲突 (#2520)。
向后不兼容的更改:
- 删除了
Vertical
和Pretty*
格式中的转义,并删除了VerticalRaw
格式。 - 如果在分布式查询中同时使用版本 1.1.54388(或更高版本)的服务器和旧版本的服务器,并且查询具有不带
AS
关键字且不区分大小写的cast(x, 'Type')
表达式,则会抛出异常,并显示类似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 版本 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 修复:
- 修复了从
MATERIALIZED VIEW
中选择时IN
运算符的不正确行为。 - 修复了在类似
partition_key_column IN (...)
的表达式中按分区索引进行的不正确过滤。 - 修复了如果在表上执行了
REANAME
,则无法在非领导副本上执行OPTIMIZE
查询。 - 修复了在非领导副本上执行
OPTIMIZE
或ALTER
查询时的授权错误。 - 修复了
KILL QUERY
的冻结。 - 修复了 ZooKeeper 客户端库中的一个错误,该错误导致监视丢失、分布式 DDL 队列冻结以及复制队列减速(如果在 ZooKeeper 配置中使用了非空的
chroot
前缀)。
向后不兼容的更改:
- 删除了对类似
(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 ...
的支持。 - 在系统表中添加了有关未压缩形式的数据部分大小的信息。
- 分布式表的服务器到服务器加密支持 (
<secure>1</secure>
在<remote_servers>
中的副本配置中)。 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 canceled
异常,而不是不完整的结果。
改进:
ALTER TABLE ... DROP/DETACH PARTITION
查询在复制队列的前面运行。- 即使表只有一个数据部分,也可以使用
SELECT ... FINAL
和OPTIMIZE ... FINAL
。 - 如果手动删除了
query_log
表,则会动态重新创建该表 (Kirill Shvakov)。 lengthUTF8
函数运行得更快 (zhang2014)。- 当分片数量非常多时,改进了
Distributed
表中同步插入的性能 (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
表选择领导者时可能发生的竞争条件。
构建更改:
- 构建支持
ninja
而不是make
,并且默认使用ninja
进行构建发布。 - 重命名了软件包:
clickhouse-server-base
为clickhouse-common-static
;clickhouse-server-common
为clickhouse-server
;clickhouse-common-dbg
为clickhouse-common-static-dbg
。要安装,请使用clickhouse-server clickhouse-client
。具有旧名称的软件包仍将在存储库中加载,以实现向后兼容性。
向后不兼容的更改:
- 如果左侧指定了数组,则删除了对 IN 表达式的特殊解释。以前,表达式
arr IN (set)
被解释为 “至少一个arr
元素属于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; right]
的最大数量。maxIntersectionsPosition(left, right)
函数返回 “最大” 间隔的开始位置。 (Michael Furmur)。
改进:
- 在
Replicated
表中插入数据时,对ZooKeeper
的请求较少(并且大多数用户级错误已从ZooKeeper
日志中消失)。 - 添加了为数据集创建别名的能力。示例:
WITH (1, 2, 3) AS set SELECT number IN set FROM system.numbers LIMIT 10
。
Bug 修复:
- 修复了从
Distributed
表的 Merge 表读取数据时的Illegal PREWHERE
错误。 - 添加了允许您在仅 IPv4 的 Docker 容器中启动 clickhouse-server 的修复程序。
- 修复了从系统
system.parts_columns tables.
读取时的竞争条件。 - 删除了在同步插入到
Distributed
表期间的双重缓冲,这可能导致连接超时。 - 修复了一个错误,该错误导致在开始
SELECT
查询之前过度等待不可用的副本。 - 修复了
system.parts
表中的不正确日期。 - 修复了一个错误,该错误使得在
ZooKeeper
集群的配置中chroot
为非空时,无法在Replicated
表中插入数据。 - 修复了空
ORDER BY
表的垂直合并算法。 - 恢复了在远程表的查询中使用字典的能力,即使这些字典在请求服务器上不存在也是如此。此功能在 1.1.54362 版本中丢失。
- 恢复了诸如
SELECT * FROM remote('server2', default.table) WHERE col IN (SELECT col2 FROM default.table)
之类的查询的行为,当IN
的右侧应使用远程default.table
而不是本地表时。此行为在 1.1.54358 版本中被破坏。 - 删除了
Not found column ... in block
的无关的错误级别日志记录。
ClickHouse 版本 1.1.54362,2018-03-11
新功能:
- 对于空集(例如
SELECT count(*) FROM table WHERE 0
)的无GROUP BY
聚合,现在返回一个结果,其中一行包含聚合函数的 null 值,这符合 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
工具,用于在集群之间复制和重新分片数据 (beta)。 - 添加了一致性哈希函数:
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
查询中使用。- 为
system.tables
表添加了create_table_query
和engine_full
虚拟列。metadata_modification_time
列是虚拟的。 - 为
system.tables
和system.databases
表添加了data_path
和metadata_path
列,并为system.parts
和system.parts_columns
表添加了path
列。 - 在
system.part_log
表中添加了有关合并的附加信息。 - 任意分区键可以用于
system.query_log
表 (Kirill Shvakov)。 SHOW TABLES
查询现在也显示临时表。为system.tables
添加了临时表和is_temporary
列 (zhang2014)。- 添加了
DROP TEMPORARY TABLE
和EXISTS TEMPORARY TABLE
查询 (zhang2014)。 - 支持临时表的
SHOW CREATE TABLE
(zhang2014)。 - 为内部进程使用的设置添加了
system_profile
配置参数。 - 支持在
MongoDB
字典中加载object_id
作为属性 (Pavel Litvinenko)。 - 读取
null
作为使用MongoDB
源的外部字典加载数据时的默认值 (Pavel Litvinenko)。 - 从不带单引号的 Unix 时间戳中读取
Values
格式的DateTime
值。 - 在
remote
表函数中支持故障转移,以应对某些副本缺少请求表的情况。 - 当您运行
clickhouse-server
时,可以在命令行中覆盖配置设置。示例:clickhouse-server -- --logger.level=information
。 - 从
FixedString
参数实现了empty
函数:如果字符串完全由 null 字节组成,则该函数返回 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
的子查询中删除列的情况。 - 修复了
ReplacingMergeTree
表的合并中的错误。 - 修复了
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
设置。如果您正在使用此功能,请写信至 [email protected]。 - 删除了
UnsortedMergeTree
引擎。
ClickHouse 发布版本 1.1.54343,2018-02-05
- 添加了宏支持,用于在分布式 DDL 查询和 Distributed 表的构造函数中定义集群名称:
CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table')
。 - 现在,像
SELECT ... FROM table WHERE expr IN (subquery)
这样的查询将使用table
索引进行处理。 - 改进了插入到 Replicated 表时对重复项的处理,因此它们不再减慢复制队列的执行速度。
ClickHouse 发布版本 1.1.54342,2018-01-22
此版本包含对先前版本 1.1.54337 的错误修复
- 修复了 1.1.54337 中的回归问题:如果默认用户具有只读访问权限,则服务器拒绝启动并显示消息
Cannot create database in readonly mode
。 - 修复了 1.1.54337 中的回归问题:在具有 systemd 的系统上,日志始终写入 syslog,而与配置无关;watchdog 脚本仍然使用 init.d。
- 修复了 1.1.54337 中的回归问题:Docker 镜像中的错误默认配置。
- 修复了 GraphiteMergeTree 的非确定性行为(您可以在日志消息
Data after merge is not byte-identical to the data on another replicas
中看到它)。 - 修复了一个错误,该错误可能导致对 Replicated 表执行 OPTIMIZE 查询后合并不一致(您可能会在日志消息
Part ... intersects the previous part
中看到它)。 - 当目标表中存在 MATERIALIZED 列时,Buffer 表现在可以正常工作(由 zhang2014 提供)。
- 修复了 NULL 实现中的错误。
ClickHouse 发布版本 1.1.54337,2018-01-18
新功能:
- 添加了在表中存储多维数组和元组(
Tuple
数据类型)的支持。 - 支持
DESCRIBE
和INSERT
查询的表函数。为DESCRIBE
添加了子查询支持。示例:DESC TABLE remote('host', default.hits)
;DESC TABLE (SELECT 1)
;INSERT INTO TABLE FUNCTION remote('host', default.hits)
。除了INSERT INTO
之外,还支持INSERT INTO TABLE
。 - 改进了对时区的支持。可以使用时区注释
DateTime
数据类型,该时区用于文本格式的解析和格式化。示例:DateTime('Asia/Istanbul')
。当在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
表引擎,用于访问远程数据库。此功能处于 beta 阶段。 - 为
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
聚合函数。 - 添加了 to * Number* OrNull 函数,其中 * Number* 是数字类型。
- 为
INSERT SELECT
查询添加了对WITH
子句的支持(作者: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
聚合函数以及外部字典添加了对UUID
数据类型的缺失支持 (Evgeniy Ivanov)。对UUID
的支持仍然不完整。 - 修复了行总和为零时
SummingMergeTree
的行为。 - 各种
Kafka
引擎的修复 (Marek Vavruša)。 - 修复了
Join
表引擎的不正确行为 (Amos Bird)。 - 修复了 FreeBSD 和 OS X 下不正确的分配器行为。
extractAll
函数现在支持空匹配。- 修复了阻止使用
libressl
而不是openssl
的错误。 - 修复了从临时表进行的
CREATE TABLE AS SELECT
查询。 - 修复了更新复制队列的非原子性。这可能导致副本在服务器重新启动之前不同步。
- 修复了
gcd
、lcm
和modulo
(%
运算符) 中可能的溢出 (Maks Skorokhod)。 - 现在在更改
umask
后创建-preprocessed
文件 (umask
可以在配置中更改)。 - 修复了在使用自定义分区键时,部件的后台检查 (
MergeTreePartChecker
) 中的错误。 - 修复了文本格式中元组(
Tuple
数据类型的值)的解析。 - 改进了关于传递给
multiIf
、array
和其他一些函数的不兼容类型的错误消息。 - 重新设计了对
Nullable
类型的支持。修复了可能导致服务器崩溃的错误。修复了几乎所有其他与NULL
支持相关的错误:INSERT SELECT 中不正确的类型转换、HAVING 和 PREWHERE 中对 Nullable 的支持不足、join_use_nulls
模式、Nullable 类型作为OR
运算符的参数等。 - 修复了与数据类型的内部语义相关的各种错误。示例:
SummingMergeTree
中Enum
类型字段的不必要求和;Pretty
格式中Enum
类型的对齐等。 - 对复合列的允许组合进行了更严格的检查。
- 修复了为
FixedString
数据类型指定非常大参数时的溢出。 - 修复了通用情况下
topK
聚合函数中的错误。 - 为具有
-Array
组合器的 n 元聚合函数的参数添加了缺少的数组大小相等性检查。 - 修复了
clickhouse-client
的--pager
中的错误(作者: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)。
构建改进:
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
数据类型或具有相应状态的物化视图),请写信至 [email protected]。 - 在以前的服务器版本中,有一个未记录的功能:如果聚合函数依赖于参数,您仍然可以在 AggregateFunction 数据类型中不带参数地指定它。示例:
AggregateFunction(quantiles, UInt64)
而不是AggregateFunction(quantiles(0.5, 0.9), UInt64)
。此功能丢失了。尽管它是未记录的,但我们计划在以后的版本中再次支持它。 - Enum 数据类型不能在 min/max 聚合函数中使用。此功能将在下一个版本中返回。
升级时请注意:
- 在集群上进行滚动更新时,当某些副本运行旧版本的 ClickHouse,而另一些副本运行新版本时,复制会暂时停止,并且日志中会出现消息
unknown parameter 'shard'
。在集群的所有副本都更新后,复制将继续。 - 如果集群服务器上运行着不同版本的 ClickHouse,则使用以下函数的分布式查询可能会产生不正确的结果:
varSamp
、varPop
、stddevSamp
、stddevPop
、covarSamp
、covarPop
、corr
。您应该更新所有集群节点。