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

2018 年更新日志

ClickHouse 版本 18.16

ClickHouse 版本 18.16.1, 2018-12-21

Bug 修复:

  • 修复了导致使用 ODBC 源更新字典时出现问题的错误。#3825, #3829
  • 聚合函数的 JIT 编译现在可以与 LowCardinality 列一起使用。#3838

改进:

  • 添加了 low_cardinality_allow_in_native_format 设置(默认启用)。禁用后,LowCardinality 列将在 SELECT 查询中转换为普通列,并且 INSERT 查询将需要普通列。#3879

构建改进:

  • 修复了 macOS 和 ARM 上的构建问题。

ClickHouse 版本 18.16.0, 2018-12-14

新功能:

  • 当以半结构化输入格式(JSONEachRowTSKV)加载数据时,将为缺少的字段评估 DEFAULT 表达式。该功能通过 insert_sample_with_metadata 设置启用。#3555
  • ALTER TABLE 查询现在具有 MODIFY ORDER BY 操作,用于在添加或删除表列时更改排序键。这对于 MergeTree 系列中的表非常有用,这些表在合并时会根据此排序键执行其他任务,例如 SummingMergeTreeAggregatingMergeTree 等。#3581 #3755
  • 对于 MergeTree 系列中的表,现在您可以指定不同的排序键(ORDER BY)和索引(PRIMARY KEY)。排序键可以比索引更长。#3581
  • 添加了 hdfs 表函数和 HDFS 表引擎,用于将数据导入和导出到 HDFS。chenxing-xc
  • 添加了用于处理 base64 的函数:base64Encodebase64DecodetryBase64DecodeAlexander Krasheninnikov
  • 现在,您可以使用参数来配置 uniqCombined 聚合函数的精度(选择 HyperLogLog 单元的数量)。#3406
  • 添加了 system.contributors 表,其中包含在 ClickHouse 中进行提交的所有人员的姓名。#3452
  • 添加了省略 ALTER TABLE ... FREEZE 查询的分区的功能,以便一次备份所有分区。#3514
  • 添加了 dictGetdictGetOrDefault 函数,这些函数不需要指定返回值类型。类型从字典描述中自动确定。Amos Bird
  • 现在,您可以在表描述中为列指定注释,并使用 ALTER 更改它。#3377
  • 支持读取具有简单键的 Join 类型表。Amos Bird
  • 现在,您可以在创建 Join 类型表时指定选项 join_use_nullsmax_rows_in_joinmax_bytes_in_joinjoin_overflow_modeAmos Bird
  • 添加了 joinGet 函数,该函数允许您像字典一样使用 Join 类型表。Amos Bird
  • partition_keysorting_keyprimary_keysampling_key 列添加到 system.tables 表中,以便提供有关表键的信息。#3609
  • is_in_partition_keyis_in_sorting_keyis_in_primary_keyis_in_sampling_key 列添加到 system.columns 表中。#3609
  • min_timemax_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 查询的向后兼容性。对 JOINLowCardinality 支持。提高在单个流中工作时的性能。#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
  • 修复了 VersionedCollapsingMergeTreePREWHEREFINAL 的错误。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 格式插入到没有 NullableArray 类型列中时发生的错误(如果 input_format_values_interpret_expressions = 1)。#3487 #3503
  • 修复了如果 ZooKeeper 不可用,DDLWorker 中的持续错误日志记录。8f50c620
  • 修复了来自 DateDateTime 类型参数的 quantile* 函数的返回类型。#3580
  • 修复了 WITH 子句(如果它指定没有表达式的简单别名)。#3570
  • 修复了启用 enable_optimize_predicate_expression 时,具有命名子查询和限定列名的查询处理。Winter Zhang
  • 修复了使用物化视图时发生的错误 Attempt to attach to nullptr thread groupMarek Vavruša
  • 修复了将某些不正确的参数传递给 arrayReverse 函数时发生的崩溃。73e3a7b6
  • 修复了 extractURLParameter 函数中的缓冲区溢出。提高了性能。添加了对包含零字节的字符串的正确处理。141e9799
  • 修复了 lowerUTF8upperUTF8 函数中的缓冲区溢出。删除了对 FixedString 类型参数执行这些函数的功能。#3662
  • 修复了删除 MergeTree 表时发生的罕见竞争条件。#3680
  • 修复了从 Buffer 表读取数据并同时对目标表执行 ALTERDROP 时发生的竞争条件。#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 选项默认设置为 ALL120e2cbe
  • 删除了来自 re2 库的无效或复杂正则表达式的 stderr 日志记录。#3723
  • Kafka 表引擎添加了:开始从 Kafka 读取之前检查订阅;表的 kafka_max_block_size 设置。Marek Vavruša
  • cityHash64, farmHash64, metroHash64, sipHash64, halfMD5, murmurHash2_32, murmurHash2_64, murmurHash3_32murmurHash3_64 函数现在适用于任何数量的参数以及元组形式的参数。#3451 #3519
  • arrayReverse 函数现在适用于任何类型的数组。73e3a7b6
  • 添加了一个可选参数:timeSlots 函数的时隙大小。Kirill Shvakov
  • 对于 FULLRIGHT JOINmax_block_size 设置用于来自右表的非连接数据流。Amos Bird
  • clickhouse-benchmarkclickhouse-performance-test 中添加了 --secure 命令行参数以启用 TLS。#3688 #3690
  • Buffer 类型表的结构与目标表的结构不匹配时进行类型转换。Vitaly Baranov
  • 添加了 tcp_keep_alive_timeout 选项,以在指定时间间隔不活动后启用 keep-alive 数据包。#3441
  • 如果 system.parts 表中的分区键仅由单列组成,则删除了对分区键值的不必要引用。#3652
  • 模函数适用于 DateDateTime 数据类型。#3385
  • POWER, LN, LCASE, UCASE, REPLACE, LOCATE, SUBSTRMID 函数添加了同义词。#3774 #3763 一些函数名称不区分大小写,以与 SQL 标准兼容。为与 SQL 兼容,添加了语法糖 SUBSTRING(expr FROM start FOR length)#3804
  • 添加了 mlockclickhouse-server 可执行代码对应的内存页面的功能,以防止其被强制移出内存。此功能默认禁用。#3553
  • 提高了从 O_DIRECT 读取时的性能(启用了 min_bytes_to_use_direct_io 选项)。#3405
  • 改进了 dictGet...OrDefault 函数对于常量键参数和非常量默认参数的性能。Amos Bird
  • firstSignificantSubdomain 函数现在处理域 gov, mileduIgor 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
  • 修复了使用 SAMPLEPREWHERE 和别名列的查询中的错误。#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 编译)默认禁用。#3410
  • enable_optimize_predicate_expression 设置默认禁用。

ClickHouse Release 18.14.9, 2018-10-16

新功能:

  • GROUP BYWITH CUBE 修饰符(也提供替代语法 GROUP BY CUBE(...))。#3172
  • 添加了 formatDateTime 函数。Alexandr Krasheninnikov
  • 添加了 JDBC 表引擎和 jdbc 表函数(需要安装 clickhouse-jdbc-bridge)。Alexandr Krasheninnikov
  • 添加了用于处理 ISO 周数的函数:toISOWeek, toISOYear, toStartOfISOYeartoDayOfYear#3146
  • 现在您可以为 MySQLODBC 表使用 Nullable 列。#3362
  • 嵌套数据结构可以在 JSONEachRow 格式中作为嵌套对象读取。添加了 input_format_import_nested_json 设置。Veloman Yunkan
  • 当插入数据时,并行处理可用于许多 MATERIALIZED VIEWMarek Vavruša 参见 parallel_view_processing 设置。
  • 添加了 SYSTEM FLUSH LOGS 查询(强制将日志刷新到系统表,如 query_log)。#3321
  • 现在,您可以在声明 Replicated 表时使用预定义的 databasetable 宏。#3251
  • 添加了读取工程计数法 (表示十的幂) 的 Decimal 类型值的功能。#3153

实验性功能:

  • 优化了 LowCardinality 数据类型的 GROUP BY 子句。#3138
  • 优化了 LowCardinality 数据类型的表达式计算。#3200

改进:

  • 显著减少了带有 ORDER BYLIMIT 的查询的内存消耗。参见 max_bytes_before_remerge_sort 设置。#3205
  • 在缺少 JOIN (LEFT, INNER, …) 的情况下,假定为 INNER JOIN#3147
  • 限定星号在带有 JOIN 的查询中可以正确工作。Winter Zhang
  • ODBC 表引擎正确选择了在远程数据库的 SQL 方言中引用标识符的方法。Alexandr Krasheninnikov
  • compile_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 EXISTSDROP 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
  • 为了兼容性,添加了 LENGTHCHARACTER_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 格式中读取 TupleNested 结构(如 struct)的值。Marek Vavruša
  • firstSignificantSubdomain 函数的顶级域名列表现在包括域名 bizdecaseal
  • 在外部字典的配置中,null_value 被解释为默认数据类型的值。#3330
  • 支持 DecimalintDivintDivOrZero 函数。b48402e8
  • 支持 DateDateTimeUUIDDecimal 类型作为 sumMap 聚合函数的键。#3281
  • 支持外部字典中的 Decimal 数据类型。#3324
  • 支持 SummingMergeTree 表中的 Decimal 数据类型。#3348
  • if 中的 UUID 添加了特殊化。#3366
  • 减少了从 MergeTree table 读取数据时 openclose 系统调用的数量。#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 格式插入数据时,DateDateTime 之间的类型转换问题(如果 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
  • 修复了将 FINALPREWHERE 一起使用时出现的错误。#3298
  • 修复了在 ALTER 期间添加的列上使用 PREWHERE 时出现的错误。#3298
  • DEFAULTMATERIALIZED 表达式添加了对缺少 arrayJoin 的检查。以前,arrayJoin 在插入数据时会导致错误。#3337
  • PREWHERE 子句中添加了对缺少 arrayJoin 的检查。以前,在执行查询时,这会导致诸如 Size ... does not matchUnknown 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* 聚合函数。#3129
  • Decimal 类型现在支持数学函数(expsin 等)。#3129
  • system.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

改进

  • 如果数据 part 在 mutation 期间保持不变,则副本不会下载它。#3103
  • 在使用 clickhouse-client 时,设置名称可以使用自动完成功能。#3106

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 指定 ANYALL#2982
  • 与查询处理相关的服务器日志的每一行都显示查询 ID。 #2482
  • 现在您可以在 clickhouse-client 中获取查询执行日志(使用 send_logs_level 设置)。使用分布式查询处理时,日志从所有服务器级联。 #2482
  • system.query_logsystem.processes (SHOW PROCESSLIST) 表现在具有有关运行查询时所有已更改设置的信息(Settings 数据的嵌套结构)。添加了 log_query_settings 设置。 #2482
  • system.query_logsystem.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.metricssystem.events 表现在具有内置文档。 #3016
  • 添加了 arrayEnumerateDense 函数。 Amos Bird
  • 添加了 arrayCumSumNonNegativearrayDifference 函数。 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.tablessystem.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
  • 重复的列可以在 JOINUSING 子句中使用。 #3006
  • Pretty 格式现在对按宽度对齐列有限制。 使用 output_format_pretty_max_column_pad_width 设置。 如果值更宽,它仍然会完整显示,但表中的其他单元格不会太宽。 #3003
  • odbc 表函数现在允许您指定数据库/架构名称。 Amos Bird
  • 添加了使用在 clickhouse-client 配置文件中指定的用户名的功能。 Vladimir Kozbin
  • ZooKeeperExceptions 计数器已拆分为三个计数器:ZooKeeperUserExceptionsZooKeeperHardwareExceptionsZooKeeperOtherExceptions
  • ALTER DELETE 查询适用于物化视图。
  • 在为 ReplicatedMergeTree 表定期运行清理线程时添加了随机化,以避免当存在大量 ReplicatedMergeTree 表时出现周期性负载峰值。
  • 支持 ATTACH TABLE ... ON CLUSTER 查询。 #3025

错误修复:

  • 修复了 Dictionary 表的问题(抛出 Size of offsets does not match size of columnUnknown compression method 异常)。此错误出现在 18.10.3 版本中。 #2913
  • 修复了当合并 CollapsingMergeTree 表时,如果其中一个数据部分为空(这些部分在合并或 ALTER DELETE 期间形成,如果所有数据都被删除),并且合并使用了 vertical 算法的错误。 #3049
  • 修复了在对 Memory 表进行 DROPTRUNCATE 操作时,如果同时进行 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
  • 修复了同时创建和删除相同的 BufferMergeTree 表时的竞争条件。
  • 修复了在比较由某些非平凡类型(例如元组)组成的元组时可能发生的段错误。 #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
  • 系统表(tablesdatabasespartscolumnsparts_columnsmergesmutationsreplicasreplication_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_64murmurHash3_32murmurHash3_64murmurHash3_128#2791
  • ClickHouse ODBC 驱动程序 (ODBCDriver2 输出格式) 中支持 Nullable 类型。 #2834
  • 键列中支持 UUID

改进:

  • 当从配置文件中删除集群时,可以删除集群而无需重启服务器。 #2777
  • 当从配置文件中删除外部字典时,可以删除外部字典而无需重启服务器。 #2779
  • Kafka 表引擎添加了 SETTINGS 支持。 Alexander Marshalov
  • 改进了 UUID 数据类型(尚未完成)。 #2618
  • 支持 SummingMergeTreeCollapsingMergeTreeVersionedCollapsingMergeTree 引擎中合并后的空部分。 #2815
  • 已完成的 mutation 的旧记录被删除 (ALTER DELETE)。 #2784
  • 添加了 system.merge_tree_settings 表。 Kirill Shvakov
  • system.tables 表现在具有依赖关系列:dependencies_databasedependencies_tableWinter 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 聚合函数在空 Float32Float64 集合上进行聚合时返回 nanSundy Li

错误修复:

  • 删除了 ODBC 连接字符串参数的不必要转义,这使得无法建立连接。此错误发生在 18.6.0 版本中。
  • 修复了复制队列中处理 REPLACE PARTITION 命令的逻辑。如果有两个针对同一分区的 REPLACE 命令,则不正确的逻辑可能导致其中一个命令保留在复制队列中并且未执行。 #2814
  • 修复了当所有数据部分都为空时(由合并或 ALTER DELETE 形成的部分,如果所有数据都被删除)的合并错误。此错误出现在 18.1.0 版本中。 #2930
  • 修复了并发 SetJoin 的错误。 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.processesquery_log 中。 #2646

ClickHouse 18.5 版本

ClickHouse 18.5.1 版本,2018-07-31

新功能:

  • 添加了哈希函数 murmurHash2_32 #2756

改进:

  • 现在您可以使用 from_env #2741 属性从环境变量设置配置文件中的值。
  • 添加了 coalesceifNullnullIf 函数 的不区分大小写版本 #2752

错误修复:

  • 修复了启动副本时可能出现的错误 #2759

ClickHouse 18.4 版本

ClickHouse 18.4.0 版本,2018-07-28

新功能:

  • 添加了系统表:formatsdata_type_familiesaggregate_function_combinatorstable_functionstable_enginescollations #2721
  • 添加了使用表函数代替表作为 remotecluster 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 CLUSTERKILLOPTIMIZE 查询 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_schemakafka_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_numinput_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_timeengine_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_quotesformat_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 REPLICASSYNC REPLICA[STOP|START] [MERGES|FETCHES|SENDS REPLICATED|REPLICATION QUEUES])。
  • 添加了使用 MySQL 引擎和相应的表函数写入表的能力 (sundy-li)。
  • 添加了 url() 表函数和 URL 表引擎 (Alexander Sapin)。
  • 添加了 windowFunnel 聚合函数 (sundy-li)。
  • 新的 startsWithendsWith 字符串函数 (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 修复:

  • 对于带有 DISTINCTORDER BY 的查询,不再出现重复项。
  • 带有 ARRAY JOINarrayFilter 的查询不再返回不正确的结果。
  • 修复了从 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 缓存现在会自动更新。
  • 如果由于物化视图的部分过多而无法插入到其中一个物化视图中,则不再发生表插入。
  • 更正了事件计数器 QuerySelectQueryInsertQuery 中的差异。
  • 如果元组类型匹配,则允许诸如 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)。

向后不兼容的更改:

  • 删除了 VerticalPretty* 格式中的转义,并删除了 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 查询。
  • 修复了在非领导副本上执行 OPTIMIZEALTER 查询时的授权错误。
  • 修复了 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 QUERYreplace_running_query 停止时,客户端会收到 Query was canceled 异常,而不是不完整的结果。

改进:

  • ALTER TABLE ... DROP/DETACH PARTITION 查询在复制队列的前面运行。
  • 即使表只有一个数据部分,也可以使用 SELECT ... FINALOPTIMIZE ... FINAL
  • 如果手动删除了 query_log 表,则会动态重新创建该表 (Kirill Shvakov)。
  • lengthUTF8 函数运行得更快 (zhang2014)。
  • 当分片数量非常多时,改进了 Distributed 表中同步插入的性能 (insert_distributed_sync = 1)。
  • 服务器接受来自客户端的 send_timeoutreceive_timeout 设置,并在连接到客户端时应用它们(它们以相反的顺序应用:服务器套接字的 send_timeout 设置为从客户端接收的 receive_timeout 值,反之亦然)。
  • 更强大的崩溃恢复,用于异步插入到 Distributed 表中。
  • countEqual 函数的返回类型从 UInt32 更改为 UInt64 (谢磊)。

Bug 修复:

  • 修复了当表达式的左侧为 NullableIN 的错误。
  • 当使用带有 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-baseclickhouse-common-staticclickhouse-server-commonclickhouse-serverclickhouse-common-dbgclickhouse-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)。
  • 添加了一致性哈希函数:yandexConsistentHashjumpConsistentHashsumburConsistentHash。它们可以用作分片键,以减少后续重新分片期间的网络流量。
  • 添加了函数:arrayAnyarrayAllhasAnyhasAllarrayIntersectarrayResize
  • 添加了 arrayCumSum 函数 (Javi Santana)。
  • 添加了 parseDateTimeBestEffortparseDateTimeBestEffortOrZeroparseDateTimeBestEffortOrNull 函数,以从包含各种可能格式文本的字符串中读取 DateTime。
  • 可以在更新期间从外部字典部分重新加载数据(仅加载指定字段的值大于上次下载的记录)(Arsen Hakobyan)。
  • 添加了 cluster 表函数。示例:cluster(cluster_name, db, table)。如果将集群名称指定为标识符,则 remote 表函数可以接受集群名称作为第一个参数。
  • remotecluster 表函数可以在 INSERT 查询中使用。
  • system.tables 表添加了 create_table_queryengine_full 虚拟列。metadata_modification_time 列是虚拟的。
  • system.tablessystem.databases 表添加了 data_pathmetadata_path 列,并为 system.partssystem.parts_columns 表添加了 path 列。
  • system.part_log 表中添加了有关合并的附加信息。
  • 任意分区键可以用于 system.query_log 表 (Kirill Shvakov)。
  • SHOW TABLES 查询现在也显示临时表。为 system.tables 添加了临时表和 is_temporary 列 (zhang2014)。
  • 添加了 DROP TEMPORARY TABLEEXISTS 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_cancelledpeak_memory_usage 列。

改进:

  • 结果的限制和配额不再应用于 INSERT SELECT 查询或 SELECT 子查询的中间数据。
  • 当服务器启动时检查 Replicated 表的状态时,减少了 force_restore_data 的错误触发。
  • 添加了 allow_distributed_ddl 选项。
  • 不允许在 MergeTree 表键的表达式中使用非确定性函数。
  • 来自 config.d 目录的替换文件按字母顺序加载。
  • 改进了 arrayElement 函数在常量多维数组的情况下,其中一个元素为空数组时的性能。示例:[[1], []][x]
  • 现在,当使用包含非常大的替换项(例如,非常大的 IP 网络列表)的配置文件时,服务器启动速度更快。
  • 运行查询时,表值函数只运行一次。以前,remotemysql 表值函数会执行两次相同的查询,以从远程服务器检索表结构。
  • 使用了 MkDocs 文档生成器。
  • 当您尝试删除表列时,如果其他列的 DEFAULT/MATERIALIZED 表达式依赖于该列,则会抛出异常 (zhang2014)。
  • 添加了在文本格式中将空行解析为 Float 数据类型的数字 0 的功能。此功能以前可用,但在 1.1.54342 版本中丢失。
  • Enum 值可以在 minmaxsum 和其他一些函数中使用。在这些情况下,它使用相应的数值。此功能以前可用,但在 1.1.54337 版本中丢失。
  • 添加了 max_expanded_ast_elements 以限制递归扩展别名后 AST 的大小。

Bug 修复:

  • 修复了错误地从子查询中删除不必要的列,或未从包含 UNION ALL 的子查询中删除列的情况。
  • 修复了 ReplacingMergeTree 表的合并中的错误。
  • 修复了 Distributed 表中的同步插入 (insert_distributed_sync = 1)。
  • 修复了在子查询中使用重复列的 FULLRIGHT JOIN 的某些情况下的段错误。
  • 修复了 replace_running_queryKILL QUERY 的某些用法中的段错误。
  • 修复了 system.dictionaries 表中 sourcelast_exception 列的顺序。
  • 修复了 DROP DATABASE 查询未删除元数据文件的问题。
  • 修复了 Dictionary 数据库的 DROP DATABASE 查询。
  • 修复了对于超过 1 亿项基数的 uniqHLL12uniqCombined 函数的低精度问题 (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 数据类型)的支持。
  • 支持 DESCRIBEINSERT 查询的表函数。为 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 参数的函数中指定时区时,返回类型将跟踪时区,并且值将按预期显示。
  • 添加了函数 toTimeZonetimeDifftoQuartertoRelativeQuarterNumtoRelativeHour/Minute/Second 函数可以将 Date 类型的值作为参数。now 函数名称区分大小写。
  • 添加了 toStartOfFifteenMinutes 函数 (Kirill Shvakov)。
  • 添加了用于格式化查询的 clickhouse format 工具。
  • 添加了 format_schema_path 配置参数 (Marek Vavruša)。它用于在 Cap'n Proto 格式中指定架构。架构文件只能位于指定的目录中。
  • 为外部字典和模型的配置添加了配置替换(inclconf.d)的支持 (Pavel Yakunin)。
  • system.settings 表添加了带有文档的列 (Kirill Shvakov)。
  • 添加了 system.parts_columns 表,其中包含有关 MergeTree 表的每个数据部分中的列大小的信息。
  • 添加了 system.models 表,其中包含有关已加载的 CatBoost 机器学习模型的信息。
  • 添加了 mysqlodbc 表函数以及相应的 MySQLODBC 表引擎,用于访问远程数据库。此功能处于 beta 阶段。
  • groupArray 聚合函数添加了传递 AggregateFunction 类型参数的可能性(因此您可以创建一些聚合函数状态的数组)。
  • 取消了对各种聚合函数组合器的组合的限制。例如,您可以使用 avgForEachIf 以及 avgIfForEach 聚合函数,它们具有不同的行为。
  • -ForEach 聚合函数组合器针对多参数聚合函数的情况进行了扩展。
  • 即使函数返回非 Nullable 结果,也为 Nullable 参数的聚合函数添加了支持(在 Silviu Caragea 的贡献下添加)。示例:groupArraygroupUniqArraytopK
  • clickhouse-client 添加了 max_client_network_bandwidth (Kirill Shvakov)。
  • readonly = 2 设置的用户允许使用 TEMPORARY 表(CREATE、DROP、INSERT…)(Kirill Shvakov)。
  • 添加了对 Kafka 引擎使用多个消费者的支持。扩展了 Kafka 的配置选项 (Marek Vavruša)。
  • 添加了 intExp3intExp4 函数。
  • 添加了 sumKahan 聚合函数。
  • 添加了 to * Number* OrNull 函数,其中 * Number* 是数字类型。
  • INSERT SELECT 查询添加了对 WITH 子句的支持(作者:zhang2014)。
  • 添加了设置:http_connection_timeouthttp_send_timeouthttp_receive_timeout。特别是,这些设置用于下载复制的数据部分。更改这些设置可以在网络过载时实现更快的故障转移。
  • Null 类型的表添加了对 ALTER 的支持 (Anastasiya Tsarkova)。
  • reinterpretAsString 函数已扩展到内存中连续存储的所有数据类型。
  • clickhouse-local 工具添加了 --silent 选项。它禁止在 stderr 中打印查询执行信息。
  • 添加了对以文本格式读取 Date 类型的值的支持,在该格式中,月份和/或月份中的日期使用一位数字而不是两位数字指定 (Amos Bird)。

性能优化:

  • 改进了聚合函数 minmaxanyanyLastanyHeavyargMinargMax 从字符串参数的性能。
  • 改进了函数 isInfiniteisFiniteisNaNroundToExp2 的性能。
  • 改进了文本格式中 DateDateTime 类型值的解析和格式化性能。
  • 提高了浮点数解析的性能和精度。
  • 在左部分和右部分具有名称相同但不包含在 USING 中的列的情况下,降低了 JOIN 的内存使用量。
  • 通过降低计算稳定性,改进了聚合函数 varSampvarPopstddevSampstddevPopcovarSampcovarPopcorr 的性能。旧函数以名称 varSampStablevarPopStablestddevSampStablestddevPopStablecovarSampStablecovarPopStablecorrStable 提供。

Bug 修复:

  • 修复了运行 DROPDETACH PARTITION 查询后的数据去重。在以前的版本中,删除分区并再次插入相同的数据不起作用,因为插入的块被认为是重复项。
  • 修复了可能导致对带有 POPULATECREATE MATERIALIZED VIEW 查询的 WHERE 子句的错误解释的错误。
  • 修复了在 zookeeper_servers 配置中使用 root_path 参数的错误。
  • 修复了将 Date 参数传递给 toStartOfDay 的意外结果。
  • 修复了 addMonthssubtractMonths 函数以及 INTERVAL n MONTH 的算术运算,以应对结果为上一年的情况。
  • DISTINCTJOINuniq 聚合函数以及外部字典添加了对 UUID 数据类型的缺失支持 (Evgeniy Ivanov)。对 UUID 的支持仍然不完整。
  • 修复了行总和为零时 SummingMergeTree 的行为。
  • 各种 Kafka 引擎的修复 (Marek Vavruša)。
  • 修复了 Join 表引擎的不正确行为 (Amos Bird)。
  • 修复了 FreeBSD 和 OS X 下不正确的分配器行为。
  • extractAll 函数现在支持空匹配。
  • 修复了阻止使用 libressl 而不是 openssl 的错误。
  • 修复了从临时表进行的 CREATE TABLE AS SELECT 查询。
  • 修复了更新复制队列的非原子性。这可能导致副本在服务器重新启动之前不同步。
  • 修复了 gcdlcmmodulo (% 运算符) 中可能的溢出 (Maks Skorokhod)。
  • 现在在更改 umask 后创建 -preprocessed 文件 (umask 可以在配置中更改)。
  • 修复了在使用自定义分区键时,部件的后台检查 (MergeTreePartChecker) 中的错误。
  • 修复了文本格式中元组(Tuple 数据类型的值)的解析。
  • 改进了关于传递给 multiIfarray 和其他一些函数的不兼容类型的错误消息。
  • 重新设计了对 Nullable 类型的支持。修复了可能导致服务器崩溃的错误。修复了几乎所有其他与 NULL 支持相关的错误:INSERT SELECT 中不正确的类型转换、HAVING 和 PREWHERE 中对 Nullable 的支持不足、join_use_nulls 模式、Nullable 类型作为 OR 运算符的参数等。
  • 修复了与数据类型的内部语义相关的各种错误。示例:SummingMergeTreeEnum 类型字段的不必要求和;Pretty 格式中 Enum 类型的对齐等。
  • 对复合列的允许组合进行了更严格的检查。
  • 修复了为 FixedString 数据类型指定非常大参数时的溢出。
  • 修复了通用情况下 topK 聚合函数中的错误。
  • 为具有 -Array 组合器的 n 元聚合函数的参数添加了缺少的数组大小相等性检查。
  • 修复了 clickhouse-client--pager 中的错误(作者:ks1322)。
  • 修复了 exp10 函数的精度。
  • 修复了 visitParamExtract 函数的行为,以更好地符合文档。
  • 修复了指定了不正确的数据类型时发生的崩溃。
  • 修复了所有列都是常量时 DISTINCT 的行为。
  • 修复了在使用 tupleElement 函数时,如果元组元素索引是复杂的常量表达式,则查询格式化错误的问题。
  • 修复了 range_hashed 字典的 Dictionary 表中的错误。
  • 修复了导致 FULLRIGHT JOIN 结果中出现过多行的错误 (Amos Bird)。
  • 修复了在配置重新加载期间在 config.d 目录中创建和删除临时文件时发生的服务器崩溃。
  • 修复了 SYSTEM DROP DNS CACHE 查询:缓存已刷新,但集群节点的地址未更新。
  • 修复了对视图下的表执行 DETACH TABLEMATERIALIZED VIEW 的行为 (Marek Vavruša)。

构建改进:

  • pbuilder 工具用于构建。构建过程几乎完全独立于构建主机环境。
  • 单个构建用于不同的操作系统版本。软件包和二进制文件已与各种 Linux 系统兼容。
  • 添加了 clickhouse-test 软件包。它可以用于运行功能测试。
  • 现在可以将源 tarball 发布到存储库。它可以用于在不使用 GitHub 的情况下重现构建。
  • 添加了与 Travis CI 的有限集成。由于 Travis 中构建时间的限制,仅测试调试版本,并且仅运行有限的测试子集。
  • 在默认构建中添加了对 Cap'n'Proto 的支持。
  • 将文档源的格式从 Restricted Text 更改为 Markdown
  • 添加了对 systemd 的支持 (Vladimir Smirnov)。由于与某些操作系统镜像不兼容,默认情况下禁用它,并且可以手动启用。
  • 对于动态代码生成,clanglld 嵌入到 clickhouse 二进制文件中。它们也可以作为 clickhouse clangclickhouse lld 调用。
  • 从代码中删除了 GNU 扩展的用法。启用了 -Wextra 选项。使用 clang 构建时,默认使用 libc++ 而不是 libstdc++
  • 提取了 clickhouse_parsersclickhouse_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 格式。
  • 更改了聚合函数 varSampvarPopstddevSampstddevPopcovarSampcovarPopcorr 的状态格式。如果您已将这些聚合函数的状态存储在表中(使用 AggregateFunction 数据类型或具有相应状态的物化视图),请写信至 [email protected]
  • 在以前的服务器版本中,有一个未记录的功能:如果聚合函数依赖于参数,您仍然可以在 AggregateFunction 数据类型中不带参数地指定它。示例:AggregateFunction(quantiles, UInt64) 而不是 AggregateFunction(quantiles(0.5, 0.9), UInt64)。此功能丢失了。尽管它是未记录的,但我们计划在以后的版本中再次支持它。
  • Enum 数据类型不能在 min/max 聚合函数中使用。此功能将在下一个版本中返回。

升级时请注意:

  • 在集群上进行滚动更新时,当某些副本运行旧版本的 ClickHouse,而另一些副本运行新版本时,复制会暂时停止,并且日志中会出现消息 unknown parameter 'shard'。在集群的所有副本都更新后,复制将继续。
  • 如果集群服务器上运行着不同版本的 ClickHouse,则使用以下函数的分布式查询可能会产生不正确的结果:varSampvarPopstddevSampstddevPopcovarSampcovarPopcorr。您应该更新所有集群节点。

2017 年变更日志