index
碌莽禄release拢.0755-88888888
ClickHouse版本v20.3.4.10,2020-03-20
错误修复
- 此版本还包含20.1.8.41的所有错误修复
- 修复丢失
rows_before_limit_at_least
用于通过http进行查询(使用处理器管道)。 这修复 #9730. #9757 (尼古拉*科切托夫)
ClickHouse释放v20.3.3.6,2020-03-17
错误修复
- 此版本还包含20.1.7.38的所有错误修复
- 修复复制中的错误,如果用户在以前的版本上执行了突变,则不允许复制工作。 这修复 #9645. #9652 (阿利沙平). 它使版本20.3再次向后兼容。
- 添加设置
use_compact_format_in_distributed_parts_names
它允许写文件INSERT
查询到Distributed
表格格式更紧凑。 这修复 #9647. #9653 (阿利沙平). 它使版本20.3再次向后兼容。
ClickHouse版本v20.3.2.1,2020-03-12
向后不兼容的更改
- 修正了这个问题
file name too long
当发送数据Distributed
大量副本的表。 修复了服务器日志中显示副本凭据的问题。 磁盘上的目录名格式 已更改为[shard{shard_index}[_replica{replica_index}]]
. #8911 (米哈伊尔*科罗托夫)升级到新版本后,您将无法在没有人工干预的情况下降级,因为旧的服务器版本无法识别新的目录格式。 如果要降级,则必须手动将相应的目录重命名为旧格式。 仅当您使用了异步时,此更改才相关INSERT
s到Distributed
桌子 在版本20.3.3中,我们将介绍一个设置,让您逐渐启用新格式。 - 更改了mutation命令的复制日志条目的格式。 在安装新版本之前,您必须等待旧的突变处理。
- 实现简单的内存分析器,将堆栈跟踪转储到
system.trace_log
超过软分配限制的每N个字节 #8765 (伊万) #9472 (阿列克谢-米洛维多夫)列system.trace_log
从改名timer_type
到trace_type
. 这将需要改变第三方性能分析和flamegraph处理工具。 - 在任何地方使用操作系统线程id,而不是内部线程编号。 这修复 #7477 老
clickhouse-client
无法接收从服务器发送的日志,当设置send_logs_level
已启用,因为结构化日志消息的名称和类型已更改。 另一方面,不同的服务器版本可以相互发送不同类型的日志。 当你不使用send_logs_level
设置,你不应该关心。 #8954 (阿列克谢-米洛维多夫) - 删除
indexHint
功能 #9542 (阿列克谢-米洛维多夫) - 删除
findClusterIndex
,findClusterValue
功能。 这修复 #8641. 如果您正在使用这些功能,请发送电子邮件至clickhouse-feedback@yandex-team.com
#9543 (阿列克谢-米洛维多夫) - 现在不允许创建列或添加列
SELECT
子查询作为默认表达式。 #9481 (阿利沙平) - 需要联接中的子查询的别名。 #9274 (Artem Zuikov)
- 改进
ALTER MODIFY/ADD
查询逻辑。 现在你不能ADD
不带类型的列,MODIFY
默认表达式不改变列的类型和MODIFY
type不会丢失默认表达式值。 修复 #8669. #9227 (阿利沙平) - 要求重新启动服务器以应用日志记录配置中的更改。 这是一种临时解决方法,可以避免服务器将日志记录到已删除的日志文件中的错误(请参阅 #8696). #8707 (Alexander Kuzmenkov)
- 设置
experimental_use_processors
默认情况下启用。 此设置允许使用新的查询管道。 这是内部重构,我们期望没有明显的变化。 如果您将看到任何问题,请将其设置为返回零。 #8768 (阿列克谢-米洛维多夫)
新功能
- 添加
Avro
和AvroConfluent
输入/输出格式 #8571 (安德鲁Onyshchuk) #8957 (安德鲁Onyshchuk) #8717 (阿列克谢-米洛维多夫) - 过期密钥的多线程和非阻塞更新
cache
字典(可选的权限读取旧的)。 #8303 (尼基塔*米哈伊洛夫) - 添加查询
ALTER ... MATERIALIZE TTL
. 它运行突变,强制通过TTL删除过期的数据,并重新计算所有部分有关ttl的元信息。 #8775 (安东*波波夫) - 如果需要,从HashJoin切换到MergeJoin(在磁盘上 #9082 (Artem Zuikov)
- 已添加
MOVE PARTITION
命令ALTER TABLE
#4729 #6168 (纪尧姆*塔瑟里) - 动态地从配置文件重新加载存储配置。 #8594 (Vladimir Chebotarev)
- 允许更改
storage_policy
为了不那么富有的人。 #8107 (Vladimir Chebotarev) - 增加了对s3存储和表功能的globs/通配符的支持。 #8851 (Vladimir Chebotarev)
- 执行
bitAnd
,bitOr
,bitXor
,bitNot
为FixedString(N)
数据类型。 #9091 (纪尧姆*塔瑟里) - 添加功能
bitCount
. 这修复 #8702. #8708 (阿列克谢-米洛维多夫) #8749 (ikopylov) - 添加
generateRandom
表函数生成具有给定模式的随机行。 允许用数据填充任意测试表。 #8994 (Ilya Yatsishin) JSONEachRowFormat
:当对象包含在顶层数组中时,支持特殊情况。 #8860 (克鲁格洛夫*帕维尔)- 现在可以创建一个列
DEFAULT
取决于默认列的表达式ALIAS
表达。 #9489 (阿利沙平) - 允许指定
--limit
超过源数据大小clickhouse-obfuscator
. 数据将以不同的随机种子重复。 #9155 (阿列克谢-米洛维多夫) - 已添加
groupArraySample
功能(类似于groupArray
)与reservior采样算法。 #8286 (阿莫斯鸟) - 现在,您可以监视更新队列的大小
cache
/complex_key_cache
通过系统指标字典。 #9413 (尼基塔*米哈伊洛夫) - 允许使用CRLF作为CSV输出格式的行分隔符与设置
output_format_csv_crlf_end_of_line
设置为1 #8934 #8935 #8963 (米哈伊尔*科罗托夫) - 实现的更多功能 H3 API:
h3GetBaseCell
,h3HexAreaM2
,h3IndexesAreNeighbors
,h3ToChildren
,h3ToString
和stringToH3
#8938 (Nico Mandery) - 引入新设置:
max_parser_depth
控制最大堆栈大小并允许大型复杂查询。 这修复 #6681 和 #7668. #8647 (马克西姆*斯米尔诺夫) - 添加设置
force_optimize_skip_unused_shards
如果无法跳过未使用的分片,则设置为抛出 #8805 (Azat Khuzhin) - 允许配置多个磁盘/卷用于存储数据发送
Distributed
发动机 #8756 (Azat Khuzhin) - 支持存储策略 (
<tmp_policy>
)用于存储临时数据。 #8750 (Azat Khuzhin) - 已添加
X-ClickHouse-Exception-Code
如果在发送数据之前引发异常,则设置的HTTP头。 这实现了 #4971. #8786 (米哈伊尔*科罗托夫) - 添加功能
ifNotFinite
. 这只是一个句法糖:ifNotFinite(x, y) = isFinite(x) ? x : y
. #8710 (阿列克谢-米洛维多夫) - 已添加
last_successful_update_time
列中system.dictionaries
表 #9394 (尼基塔*米哈伊洛夫) - 添加
blockSerializedSize
功能(磁盘大小不压缩) #8952 (Azat Khuzhin) - 添加功能
moduloOrZero
#9358 (hcz) - 添加系统表
system.zeros
和system.zeros_mt
以及故事功能zeros()
和zeros_mt()
. 表(和表函数)包含具有名称的单列zero
和类型UInt8
. 此列包含零。 为了测试目的,需要它作为生成许多行的最快方法。 这修复 #6604 #9593 (尼古拉*科切托夫)
实验特点
- 添加新的紧凑格式的部件
MergeTree
-家庭表中的所有列都存储在一个文件中。 它有助于提高小型和频繁插入的性能。 旧的格式(每列一个文件)现在被称为wide。 数据存储格式由设置控制min_bytes_for_wide_part
和min_rows_for_wide_part
. #8290 (安东*波波夫) - 支持S3存储
Log
,TinyLog
和StripeLog
桌子 #8862 (帕维尔*科瓦连科)
错误修复
- 修正了日志消息中不一致的空格。 #9322 (阿列克谢-米洛维多夫)
- 修复在创建表时将未命名元组数组展平为嵌套结构的错误。 #8866 (achulkov2)
- 修复了以下问题 “Too many open files” 如果有太多的文件匹配glob模式可能会发生错误
File
表或file
表功能。 现在文件懒洋洋地打开。 这修复 #8857 #8861 (阿列克谢-米洛维多夫) - 删除临时表现在只删除临时表。 #8907 (维塔利*巴拉诺夫)
- 当我们关闭服务器或分离/附加表时删除过时的分区。 #8602 (纪尧姆*塔瑟里)
- 默认磁盘如何计算可用空间
data
子目录。 修复了可用空间量计算不正确的问题,如果data
目录被安装到一个单独的设备(罕见的情况)。 这修复 #7441 #9257 (米哈伊尔*科罗托夫) - 允许逗号(交叉)与IN()内部连接。 #9251 (Artem Zuikov)
- 如果在WHERE部分中有[NOT]LIKE运算符,则允许将CROSS重写为INNER JOIN。 #9229 (Artem Zuikov)
- 修复后可能不正确的结果
GROUP BY
启用设置distributed_aggregation_memory_efficient
. 修复 #9134. #9289 (尼古拉*科切托夫) - 找到的键在缓存字典的指标中被计为错过。 #9411 (尼基塔*米哈伊洛夫)
- 修复引入的复制协议不兼容 #8598. #9412 (阿利沙平)
- 在固定的竞争条件
queue_task_handle
在启动ReplicatedMergeTree
桌子 #9552 (阿列克谢-米洛维多夫) - 令牌
NOT
没有工作SHOW TABLES NOT LIKE
查询 #8727 #8940 (阿列克谢-米洛维多夫) - 添加范围检查功能
h3EdgeLengthM
. 如果没有这个检查,缓冲区溢出是可能的。 #8945 (阿列克谢-米洛维多夫) - 修复了多个参数(超过10)的三元逻辑运算批量计算中的错误。 #8718 (亚历山大*卡扎科夫)
- 修复PREWHERE优化的错误,这可能导致段错误或
Inconsistent number of columns got from MergeTreeRangeReader
例外。 #9024 (安东*波波夫) - 修复意外
Timeout exceeded while reading from socket
异常,在实际超时之前以及启用查询探查器时,在安全连接上随机发生。 还添加connect_timeout_with_failover_secure_ms
设置(默认100ms),这是类似于connect_timeout_with_failover_ms
,但用于安全连接(因为SSL握手比普通TCP连接慢) #9026 (tavplubix) - 修复突变最终确定的错误,当突变可能处于以下状态时
parts_to_do=0
和is_done=0
. #9022 (阿利沙平) - 使用新的任何连接逻辑
partial_merge_join
设置。 有可能使ANY|ALL|SEMI LEFT
和ALL INNER
加入与partial_merge_join=1
现在 #8932 (Artem Zuikov) - Shard现在将从发起者获得的设置夹到shard的constaints,而不是抛出异常。 此修补程序允许将查询发送到具有另一个约束的分片。 #9447 (维塔利*巴拉诺夫)
- 修正了内存管理问题
MergeTreeReadPool
. #8791 (Vladimir Chebotarev) - 修复
toDecimal*OrNull()
使用字符串调用时的函数系列e
. 修复 #8312 #8764 (Artem Zuikov) - 请确保
FORMAT Null
不向客户端发送数据。 #8767 (Alexander Kuzmenkov) - 修复时间戳中的错误
LiveViewBlockInputStream
不会更新。LIVE VIEW
是一个实验特征。 #8644 (vxider) #8625 (vxider) - 固定
ALTER MODIFY TTL
不允许删除旧ttl表达式的错误行为。 #8422 (Vladimir Chebotarev) - 修复了MergeTreeIndexSet中的UBSan报告。 这修复 #9250 #9365 (阿列克谢-米洛维多夫)
- 固定的行为
match
和extract
当干草堆有零字节的函数。 当干草堆不变时,这种行为是错误的。 这修复 #9160 #9163 (阿列克谢-米洛维多夫) #9345 (阿列克谢-米洛维多 夫) - 避免从apache Avro第三方库中的析构函数抛出。 #9066 (安德鲁Onyshchuk)
- 不要提交从轮询的批次
Kafka
部分,因为它可能会导致数据漏洞。 #8876 (filimonov) - 修复
joinGet
使用可为空的返回类型。 https://github.com/ClickHouse/ClickHouse/issues/8919 #9014 (阿莫斯鸟) - 修复压缩时的数据不兼容
T64
编解ec #9016 (Artem Zuikov)修复数据类型idT64
在受影响的版本中导致错误(de)压缩的压缩编解ec。 #9033 (Artem Zuikov) - 添加设置
enable_early_constant_folding
并禁用它在某些情况下,导致错误。 #9010 (Artem Zuikov) - 使用VIEW修复下推谓词优化器并启用测试 #9011 (张冬)
- 修复段错误
Merge
表,从读取时可能发生File
储存 #9387 (tavplubix) - 添加了对存储策略的检查
ATTACH PARTITION FROM
,REPLACE PARTITION
,MOVE TO TABLE
. 否则,它可以使部分数据重新启动后无法访问,并阻止ClickHouse启动。 #9383 (Vladimir Chebotarev) - 修复改变,如果有TTL设置表。 #8800 (安东*波波夫)
- 修复在以下情况下可能发生的竞争条件
SYSTEM RELOAD ALL DICTIONARIES
在某些字典被修改/添加/删除时执行。 #8801 (维塔利*巴拉诺夫) - 在以前的版本
Memory
数据库引擎使用空数据路径,因此在以下位置创建表path
directory (e.g./var/lib/clickhouse/
), not in data directory of database (e.g./var/lib/clickhouse/db_name
). #8753 (tavplubix) - 修复了关于缺少默认磁盘或策略的错误日志消息。 #9530 (Vladimir Chebotarev)
- 修复数组类型的bloom_filter索引的not(has())。 #9407 (achimbab)
- 允许表中的第一列
Log
引擎是别名 #9231 (伊万) - 从读取时修复范围的顺序
MergeTree
表中的一个线程。 它可能会导致例外MergeTreeRangeReader
或错误的查询结果。 #9050 (安东*波波夫) - 赂眉露>>
reinterpretAsFixedString
返回FixedString
而不是String
. #9052 (安德鲁Onyshchuk) - 避免极少数情况下,当用户可以得到错误的错误消息 (
Success
而不是详细的错误描述)。 #9457 (阿列克谢-米洛维多夫) - 使用时不要崩溃
Template
使用空行模板格式化。 #8785 (Alexander Kuzmenkov) - 系统表的元数据文件可能在错误的位置创建 #8653 (tavplubix)修复 #8581.
- 修复缓存字典中exception_ptr上的数据竞赛 #8303. #9379 (尼基塔*米哈伊洛夫)
- 不要为查询引发异常
ATTACH TABLE IF NOT EXISTS
. 以前它是抛出,如果表已经存在,尽管IF NOT EXISTS
条款 #8967 (安东*波波夫) - 修复了异常消息中丢失的关闭paren。 #8811 (阿列克谢-米洛维多夫)
- 避免消息
Possible deadlock avoided
在clickhouse客户端在交互模式下启动。 #9455 (阿列克 谢-米洛维多夫) - 修复了base64编码值末尾填充格式错误的问题。 更新base64库。 这修复 #9491,关闭 #9492 #9500 (阿列克谢-米洛维多夫)
- 防止丢失数据
Kafka
在极少数情况下,在读取后缀之后但在提交之前发生异常。 修复 #9378 #9507 (filimonov) - 在固定的异常
DROP TABLE IF EXISTS
#8663 (尼基塔*瓦西列夫) - 修复当用户尝试崩溃
ALTER MODIFY SETTING
对于老格式化MergeTree
表引擎家族. #9435 (阿利沙平) - 支持在JSON相关函数中不适合Int64的UInt64号码。 更新SIMDJSON掌握。 这修复 #9209 #9344 (阿列克谢-米洛维多夫)
- 当使用非严格单调函数索引时,固定执行反转谓词。 #9223 (亚历山大*卡扎科夫)
- 不要试图折叠
IN
常量在GROUP BY
#8868 (阿莫斯鸟) - 修复bug
ALTER DELETE
突变导致索引损坏。 这修复 #9019 和 #8982. 另外修复极其罕见的竞争条件ReplicatedMergeTree
ALTER
查询。 #9048 (阿利沙平) - 当设置
compile_expressions
被启用,你可以得到unexpected column
在LLVMExecutableFunction
当我们使用Nullable
类型 #8910 (纪尧姆*塔瑟里) - 多个修复
Kafka
引擎:1)修复在消费者组重新平衡期间出现的重复项。 2)修复罕见 ‘holes’ 当数据从一个轮询的几个分区轮询并部分提交时出现(现在我们总是处理/提交整个轮询的消息块)。 3)通过块大小修复刷新(在此之前 ,只有超时刷新才能正常工作)。 4)更好的订阅程序(与分配反馈)。 5)使测试工作得更快(默认时间间隔和超时)。 由于数据之前没有被块大小刷新(根据文档),pr可能会导致默认设置的性能下降(由于更频繁和更小的刷新不太理想)。 如果您在更改后遇到性能问题-请增加kafka_max_block_size
在表中的更大的值(例如CREATE TABLE ...Engine=Kafka ... SETTINGS ... kafka_max_block_size=524288
). 修复 #7259 #8917 (filimonov) - 修复
Parameter out of bound
在PREWHERE优化之后的某些查询中出现异常。 #8914 (Baudouin Giard) - 修正了函数参数混合常量的情况
arrayZip
. #8705 (阿列克谢-米洛维多夫) - 执行时
CREATE
查询,在存储引擎参数中折叠常量表达式。 将空数据库名称替换为当前数据库。 修复 #6508, #3492 #9262 (tavplubix) - 现在不可能创建或添加具有简单循环别名的列,如
a DEFAULT b, b DEFAULT a
. #9603 (阿利沙平) - 修正了双重移动可能会损坏原始部分的错误。 这是相关的,如果你使用
ALTER TABLE MOVE
#8680 (Vladimir Chebotarev) - 允许
interval
用于正确解析的标识符,而无需反引号。 当一个查询不能被执行,即使固定的问题interval
标识符用反引号或双引号括起来。 这修复 #9124. #9142 (阿列克谢-米洛维多夫) - 修正了模糊测试和不正确的行为
bitTestAll
/bitTestAny
功能。 #9143 (阿列克谢-米洛维多夫) - 修复可能的崩溃/错误的行数
LIMIT n WITH TIES
当有很多行等于第n行时。 #9464 (tavplubix) - 使用enabled编写的部件修复突变
insert_quorum
. #9463 (阿利沙平) - 修复数据竞赛破坏
Poco::HTTPServer
. 当服务器启动并立即关闭时,可能会发生这种情况。 #9468 (安东*波波夫) - 修复运行时显示误导性错误消息的错误
SHOW CREATE TABLE a_table_that_does_not_exist
. #8899 (achulkov2) - 固定
Parameters are out of bound
例外在一些罕见的情况下,当我们在一个常数SELECT
条款时,我们有一个ORDER BY
和一个LIMIT
条款 #8892 (纪尧姆*塔瑟里) - 修复突变定稿,当已经完成突变可以有状态
is_done=0
. #9217 (阿利沙平) - 防止执行
ALTER ADD INDEX
对于旧语法的MergeTree表,因为它不起作用。 #8822 (米哈伊尔*科罗托夫) - 在服务器启动时不要访问表,这
LIVE VIEW
取决 于,所以服务器将能够启动。 也删除LIVE VIEW
分离时的依赖关系LIVE VIEW
.LIVE VIEW
是一个实验特征。 #8824 (tavplubix) - 修复可能的段错误
MergeTreeRangeReader
,同时执行PREWHERE
. #9106 (安东*波波夫) - 修复与列Ttl可能不匹配的校验和。 #9451 (安东*波波夫)
- 修正了一个错误,当部分没有被移动的情况下,只有一个卷的TTL规则在后台。 #8672 (Vladimir Chebotarev)
- 修正了这个问题
Method createColumn() is not implemented for data type Set
. 这修复 #7799. #8674 (阿列克谢-米洛维多夫) - 现在我们将尝试更频繁地完成突变。 #9427 (阿利沙平)