ClickHouse/docs/zh/whats-new/changelog/2018.md
2022-03-12 00:36:03 +01:00

106 KiB
Raw Blame History

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

Build 改进:

  • 修复了在 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 的函数: base64Encode, base64Decode, tryBase64Decode. Alexander 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_mode. Amos Bird
  • 加了 joinGet 函数, 允许您像使用字典一样使用 Join 类型的表. Amos Bird
  • partition_keysorting_keyprimary_keysampling_key 列添加到 system.tables 表中, 以提供有关表键的信息. #3609
  • system.columns 表添加了 is_in_partition_keyis_in_sorting_keyis_in_primary_keyis_in_sampling_key 列. #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
  • 修复了 PREWHERE 中的 FINAL 错误, 用于 VersionedCollapsingMergeTree . 7167bfd7
  • 现在您可以使用 KILL QUERY 取消尚未启动的查询, 因为它们正在等待表被锁定. #3517
  • 如果时钟在午夜后移, 则更正了日期和时间计算(这发生在伊朗, 1981 年至 1983 年发生在莫斯科). 以前, 这导致时间比必要的提前一天重置, 并且还导致文本格式的日期和时间格式不正确. #3819
  • 修复了某些情况下 VIEW 和省略数据库的子查询的错误. Winter Zhang
  • 修复了由于未锁定内部 MATERIALIZED VIEW 而同时从 MATERIALIZED VIEW 中读取并删除 MATERIALIZED VIEW 时的竞争条件. #3404 #3694
  • 修复了错误Lock handler cannot be nullptr. #3689
  • 修复了启用 compile_expressions 选项时的查询处理(默认情况下启用). 不再展开像 now 函数这样的非确定性常量表达式. #3457
  • 修复了在 toDecimal32/64/128 函数中指定非常量比例参数时崩溃的问题s.
  • 修复了尝试将包含 Values 格式的 NULL 元素的数组插入没有 NullableArray 类型的列时的错误(如果 input_format_values_interpret_expressions = 1). #3487 #3503
  • 如果 ZooKeeper 不可用, 则修复了在 DDLWorker 中连续错误记录的问题. 8f50c620
  • 修复了来自 DateDateTime 类型参数的 quantile* 函数的返回类型. #3580
  • 修复了 WITH 子句 如果它指定一个没有表达式的简单别名. #3570
  • 修复了启用 enable_optimize_predicate_expression 时使用命名子查询和限定列名的查询的处理. Winter Zhang
  • 修复了使用物化视图时 尝试附加到 nullptr 线程组 的错误. Marek 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 选项默认设置为 ALL 以实现兼容性. 120e2cbe
  • 对于无效或复杂的正则表达式,从 re2 库中删除了对 stderr 的日志记录. #3723
  • Kafka 表引擎添加: 在开始从 Kafka 读取之前检查订阅; 表的 kafka_max_block_size 设置. Marek Vavruša
  • cityHash64farmHash64metroHash64sipHash64halfMD5murmurHash2_32murmurHash2_64murmurHash3_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 选项以在指定时间间隔内不活动后启用保持活动数据包. #3441
  • 如果system.parts 表包含单列, 则删除了不必要的对分区键值的引用. #3652
  • 模函数适用于 DateDateTime 数据类型. #3385
  • 添加了POWERLNLCASEUCASEREPLACELOCATESUBSTRMID 函数的同义词. #3774 #3763 Some function names are case-insensitive for compatibility with the SQL standard. Added syntactic sugar SUBSTRING(expr FROM start FOR length) for compatibility with SQL. #3804
  • 添加了对与 clickhouse-server 可执行代码对应的 mlock 内存页面的功能,以防止其被强制内存不足. 默认情况下禁用此功能. #3553
  • O_DIRECT 读取时提高了性能(启用了min_bytes_to_use_direct_io 选项). #3405
  • 改进了用于常量键参数和非常量默认参数的 dictGet...OrDefault 函数的性能. Amos Bird
  • firstSignificantSubdomain 函数现在可以处理域 govmiledu. Igor Hatarist Improved performance. #3628
  • 能够通过在 /etc/default/clickhouse 中定义 CLICKHOUSE_PROGRAM_ENV 使用 SYS-V init.d 脚本来指定用于启动 clickhouse-server 的自定义环境变量. Pavlo Bashynskyi
  • clickhouse-server 初始化脚本的正确返回码. #3516
  • system.metrics 表现在有 VersionInteger 指标, system.build_options 添加了行 VERSION_INTEGER, 其中包含 ClickHouse 版本的数字形式, 例如 18016000. #3644
  • 删除了将 Date 类型与数字进行比较的功能,以避免诸如 date = 2018-12-17 之类的潜在错误, 其中错误地省略了日期周围的引号. #3687
  • 修复了像 rowNumberInAllBlocks 这样的有状态函数的行为。 由于在查询分析期间启动,他们以前输出的结果大一个数字. Amos Bird
  • 如果无法删除 force_restore_data 文件, 则会显示错误消息. Amos Bird

Build 改进:

  • 更新了 jemalloc 库, 修复了潜在的内存泄漏. Amos Bird
  • 默认情况下启用使用 jemalloc 进行分析以便调试构建. 2cc82f5c
  • 添加了仅在系统上安装了 Docker 时运行集成测试的能力. #3650
  • 在 SELECT 查询中添加了模糊表达式测试. #3442
  • 添加了针对提交的压力测试, 它以并行和随机顺序执行功能测试以检测更多竞争条件. #3438
  • 改进了在 Docker 镜像中启动 clickhouse-server 的方法. Elghazal Ahmed
  • 对于 Docker 映像, 添加了对使用 /docker-entrypoint-initdb.d 目录中的文件初始化数据库的支持. Konstantin Lebedev
  • 修复了 ARM 上的构建. #3709

向后不兼容的更新:

  • 删除了将 Date 类型与数字进行比较的能力. 而不是 toDate('2018-12-18') = 17883, 你必须使用显式类型转换 = toDate(17883). #3687

ClickHouse 版本 18.14

ClickHouse 版本 18.14.19, 2018-12-19

Bug 修复:

  • 修复了导致使用 ODBC 源更新字典出现问题的错误. #3825, #3829
  • 执行 DDL ON CLUSTER 查询时正确指定数据库. #3460
  • 修复了超出 max_temporary_non_const_columns 限制时的段错误. #3788

Build 改进:

  • 修复了 ARM 上的构建.

ClickHouse 版本 18.14.18, 2018-12-04

Bug 修复:

  • 修复了 dictGet... 函数对于 range 类型的字典的错误,如果其中一个参数是常量而另一个不是. #3751
  • 修复了导致消息 netlink: '...': attribute type 1 has an invalid length 打印在 Linux 内核日志中的错误, 这种错误只发生在足够新的 Linux 内核版本上. #3749
  • 修复了函数 emptyFixedString 类型参数的段错误. Daniel, Dao Quang Minh
  • 修复了在使用大值 max_query_size 设置时过多的内存分配(一次性预分配了 max_query_size 字节的内存块). #3720

Build 更新:

  • 使用 OS 包中版本 7 的 LLVM/Clang 库修复构建 (这些库用于运行时查询编译). #3582

ClickHouse 版本 18.14.17, 2018-11-30

Bug 修复:

  • 修复了 ODBC 桥进程未随主服务器进程终止的情况. #3642
  • 修复了同步插入到Distributed 表中的问题, 其中的列列表与远程表的列列表不同. #3673
  • 修复了在删除 MergeTree 表时可能导致崩溃的罕见竞争条件. #3643
  • 修复了查询线程创建失败并出现 资源暂时不可用 错误时的查询死锁. #3643
  • 修复了当使用 CREATE AS table 语法并且在 AS table 之前指定 ENGINE 子句时对 ENGINE 子句的解析 (错误导致忽略指定的引擎). #3692

ClickHouse 版本 18.14.15, 2018-11-21

Bug 修复:

  • 反序列化 Array(String) 类型的列时高估了内存块的大小, 导致 Memory limit exceeded 错误. 该问题出现在版本 18.12.13. #3589

ClickHouse 版本 18.14.14, 2018-11-20

Bug 修复:

  • 修复了集群配置为安全时的 ON CLUSTER 查询 (标志 <secure> ). #3599

Build Changes:

  • 修复的问题(来自系统的 llvm-7, macos). #3582

ClickHouse 版本 18.14.13, 2018-11-08

Bug 修复:

  • 修复了 MergingSorted 流中的块结构不匹配 错误. #3162
  • 修复了 ON CLUSTER 查询, 以防在集群配置中打开安全连接 (<secure> 标志). #3465
  • 修复了使用 SAMPLEPREWHERE 和 alias 列的查询中的错误. #3543
  • 修复了启用 min_bytes_to_use_direct_io 设置时罕见的 unknown compression method 错误. 3544

性能改进:

  • 修复了在 AMD EPYC 处理器上执行时使用 UInt16 或 Date 类型列的 GROUP BY 查询的性能回归. Igor Lapko
  • 修复了处理长字符串的查询的性能回归. #3530

Build 改进:

ClickHouse 版本 18.14.12, 2018-11-02

Bug 修复:

  • 修复了加入两个未命名子查询时崩溃的问题. #3505
  • 修复了在查询外部数据库时生成不正确的查询 (带有空的 WHERE 子句). hotid
  • 修复了在 ODBC 字典中使用错误超时值的问题. Marek Vavruša

ClickHouse 版本 18.14.11, 2018-10-29

Bug 修复:

  • 修复了错误 Block structure mismatch in UNION stream: different number of columns. #2156
  • 修复了在包含嵌套结构内的数组的表中合并数据时出现的错误. #3397
  • 修复了如果禁用 merge_tree_uniform_read_distribution 设置 (默认启用) 时查询结果不正确的问题. #3429
  • 修复了以本机格式插入分布式表的错误. #3411

ClickHouse 版本 18.14.10, 2018-10-23

  • compile_expressions 设置 (表达式的 JIT 编译) 默认是禁用的. #3410
  • enable_optimize_predicate_expression 设置默认是禁用的.

ClickHouse 版本 18.14.9, 2018-10-16

新特征:

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

实验特征:

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

改进:

  • 使用 ORDER BYLIMIT 显着减少了查询的内存消耗. 查看 max_bytes_before_remerge_sort 设置. #3205
  • 如果没有JOIN (LEFTINNER...), 则假定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 ...现在正在创建或附加. #3101
  • 当从 MySQL 或 ODBC 表查询时, 带有常量右半部分的 LIKE 和 IN 表达式被传递到远程服务器. #3182
  • 从 MySQL 和 ODBC 表查询时, 与 WHERE 子句中的常量表达式的比较将传递到远程服务器. 以前,只通过与常量的比较. #3182
  • 正确计算终端中 Pretty 格式的行宽,包括带有象形文字的字符串. Amos Bird.
  • 可以为 ALTER UPDATE 查询指定 ON CLUSTER.
  • 提高了读取 JSONEachRow 格式数据的性能. #3332
  • 为兼容性添加了LENGTHCHARACTER_LENGTH 函数的同义词. CONCAT 函数不再区分大小写. #3306
  • 添加了DateTime 类型的TIMESTAMP 同义词. #3390
  • 服务器日志中始终为 query_id 保留空间, 即使日志行与查询无关. 这使得使用第三方工具解析服务器文本日志变得更容易.
  • 当查询超过整数 GB 的下一个级别时, 会记录查询的内存消耗. #3205
  • 为使用 Native 协议的客户端库错误发送的列数少于服务器预期的 INSERT 查询的情况添加了兼容模式. 这种情况在使用 clickhouse-cpp 库时是可能的. 之前这种场景导致服务器崩溃. #3171
  • clickhouse-copier 中用户定义的WHERE 表达式中, 您现在可以使用partition_key 别名(用于按源表分区进行额外过滤). 如果分区方案在复制过程中发生变化, 但只是轻微变化, 这将很有用. #3166
  • Kafka 引擎的工作流已移至后台线程池, 以便在高负载时自动降低数据读取速度. Marek Vavruša.
  • 支持以 Cap'n'Proto format 读取结构的 TupleNested 值,例如 struct. Marek Vavruša
  • firstSignificantSubdomain 函数的顶级域列表现在包括域 biz. decaseal
  • 在外部字典的配置中, null_value 被解释为默认数据类型的值. #3330
  • 支持 DecimalintDivintDivOrZero 函数. b48402e8
  • 支持DateDateTimeUUIDDecimal类型作为sumMap聚合函数的键. #3281
  • 支持外部字典中的 Decimal 数据类型. #3324
  • 支持 SummingMergeTree 表中的 Decimal 数据类型. #3348
  • if 中添加了针对 UUID 的专业化. #3366
  • MergeTree 表 读取时减少了 openclose 系统调用的数量. #3283
  • TRUNCATE TABLE 查询可以在任何副本上执行 (查询被传递给领导副本). Kirill Shvakov

Bug 修复:

  • 修复了range_hashed 词典的Dictionary 表问题。 此错误发生在 18.12.17 版本中. #1702
  • 修复了加载range_hashed 字典时的错误 (消息Unsupported type Nullable (...)). 此错误发生在 18.12.17 版本中. #3362
  • 修复了pointInPolygon函数中由于大量顶点彼此靠近的多边形计算不准确而导致的错误. #3331 #3341
  • 如果合并数据部分后, 结果部分的校验和与另一个副本中相同合并的结果不同, 则删除合并的结果并从另一个副本下载数据部分(这是正确的行为). 但是下载数据部分后, 由于该部分已经存在的错误, 无法将其添加到工作集中(因为数据部分在合并后有一些延迟被删除). 这导致循环尝试下载相同的数据. #3194
  • 修复了查询总内存消耗的错误计算 (由于计算错误,max_memory_usage_for_all_queries 设置工作不正确,MemoryTracking 指标的值不正确). 此错误发生在 18.12.13 版本中. Marek Vavruša
  • 修复了 CREATE TABLE ... ON CLUSTER ... AS SELECT ... 的功能.此错误发生在 18.12.13 版本. #3247
  • 修复了如果 JOIN 仅在远程服务器上执行, 则在启动查询的服务器上为 JOIN 准备不必要的数据结构. #3340
  • 修复了 Kafka 引擎中的错误:开始读取数据时出现异常后死锁, 完成后锁定. Marek Vavruša.
  • 对于 Kafka 表, 未传递可选的 schema 参数 (Cap'n'Proto 格式的模式). Vojtech Splichal
  • 如果 ZooKeeper 服务器的集合具有接受连接但随后立即关闭它而不是响应握手的服务器, 则 ClickHouse 选择连接另一台服务器. 以前, 这会产生错误 无法读取所有数据. 读取的字节数0.预期的字节数4. 并且服务器无法启动. 8218cf3a
  • 如果 ZooKeeper 服务器的集合包含 DNS 查询返回错误的服务器, 这些服务器将被忽略. 17b8e209
  • VALUES 格式插入数据时, 修复了 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
  • 修复了使用 PREWHEREMerge 表如何在 Distributed 表之上工作. #3165
  • ALTER UPDATE` 查询中的错误修复.
  • 修复了 18.12 版本中出现的 odbc 表函数中的错误. #3197
  • 修复了使用 StateArray 组合器的聚合函数的操作. #3188
  • 修复了将 Decimal 值除以零时的崩溃. 69dd6609
  • 修复了使用 Decimal 和整数参数的操作类型的输出. #3224
  • 修复了在 Decimal128 上的 GROUP BY 期间的段错误. 3359ba06
  • log_query_threads 设置 (关于查询执行的每个线程的日志信息) 现在只有在 log_queries 选项 (关于查询的日志信息) 设置为 1 时才生效. 由于log_query_threads 选项默认启用, 即使查询日志被禁用, 有关线程的信息也会被记录. #3241
  • 修复了分位数聚合函数分布式操作的错误 (错误信息Not found column quantile...). 292a8855
  • 修复了同时在 18.12.17 版本服务器和旧服务器的集群上工作时的兼容性问题. 对于具有固定长度和非固定长度的 GROUP BY 键的分布式查询, 如果有大量数据要聚合, 则返回的数据并不总是完全聚合 (两个不同的行包含相同的聚合键). #3254
  • 如果查询仅包含测试中声明的部分替换,则修复了对 clickhouse-performance-test 中替换的处理. #3263
  • 修复了将 FINALPREWHERE 结合使用时的错误. #3298
  • 修复了在 ALTER 期间添加的列上使用 PREWHERE 时的错误. #3298
  • 添加了对DEFAULTMATERIALIZED 表达式是否缺少arrayJoin 的检查. 以前, arrayJoin 在插入数据时会导致错误. #3337
  • PREWHERE 子句中添加了对缺少arrayJoin 的检查. 以前, 这会导致在执行查询时出现诸如 Size ...不匹配未知压缩方法 之类的消息. #3357
  • 修复了在用相应的 IN 表达式替换来自相等评估的 AND 链的优化后在极少数情况下可能发生的段错误. liuyimin-bytedance
  • clickhouse-benchmark 的小修正: 以前, 客户端信息没有发送到服务器; 现在在关闭和限制迭代次数时更准确地计算执行的查询数. #3351 #3352

向后不兼容的更新:

  • 删除了 allow_experimental_decimal_type 选项. Decimal 数据类型可用于默认使用. #3329

ClickHouse 版本 18.12

ClickHouse 版本 18.12.17, 2018-09-16

新特征:

  • clickhouse 源实现了 invalidate_query (指定查询以检查是否需要更新外部字典的能力). #3126
  • 添加了使用UInt*Int*DateTime 数据类型 (连同Date 类型) 作为定义范围边界的range_hashed 外部字典键的功能. 现在可以使用 NULL 来指定一个开放范围. Vasily Nemkov
  • Decimal 类型现在支持 var*stddev* 聚合函数. #3129
  • Decimal 类型现在支持数学函数(expsin 等). #3129
  • system.part_log 表现在有 partition_id 列. #3089

Bug 修复:

  • Merge 现在可以在 Distributed 表上正常工作. Winter Zhang
  • 修复了导致无法在 Ubuntu Precise 和旧版本上运行 ClickHouse 的不兼容性 (对 glibc 版本的不必要依赖). 18.12.13 版本出现不兼容. #3130
  • 修复了 enable_optimize_predicate_expression 设置中的错误. Winter Zhang
  • 修复了在 18.12.13 之前的版本上使用副本集群并同时在具有较新版本的服务器上创建表的新副本时出现的向后兼容性小问题 (显示在消息 无法克隆副本, 因为......更新为新的 ClickHouse 版本, 这是合乎逻辑的, 但不应该发生). #3122

向后不兼容的更新:

  • enable_optimize_predicate_expression 选项默认启用 (相当乐观). 如果出现与搜索列名相关的查询分析错误, 请将 enable_optimize_predicate_expression 设置为0. Winter Zhang

ClickHouse 版本 18.12.14, 2018-09-13

新特征:

  • 添加了对 ALTER UPDATE 查询的支持. #3035
  • 添加了 allow_ddl 选项, 用于限制用户对 DDL 查询的访问. #3104
  • MergeTree引擎添加了min_merge_bytes_to_use_direct_io选项它允许您设置合并总大小的阈值当超过阈值时数据部分文件将使用O_DIRECT处理). #3117
  • system.merges 系统表现在包含 partition_id 列. #3099

改进

  • 如果数据部分在变异期间保持不变,则副本不会下载它. #3103
  • 使用 clickhouse-client 时,设置名称可自动完成. #3106

Bug 修复:

  • 添加了对插入时作为Nested 类型字段元素的数组大小的检查. #3118
  • 修复了使用 ODBC 源和 hashed 存储更新外部词典的错误. 此错误发生在 18.12.13 版本中.
  • 修复了从具有 IN 条件的查询创建临时表时崩溃的问题. Winter Zhang
  • 修复了可以包含 NULL 元素的数组的聚合函数中的错误. Winter Zhang

ClickHouse 版本 18.12.13, 2018-09-10

新特征:

  • 添加了DECIMAL(digits, scale)数据类型(Decimal32(scale)Decimal64(scale)Decimal128(scale)). 要启用它, 请使用设置 allow_experimental_decimal_type. #2846 #2970 #3008 #3047
  • 用于GROUP BY 的新WITH ROLLUP 修饰符 (替代语法:GROUP BY ROLLUP(...)). #2948
  • 在使用 JOIN 的查询中,星号扩展为所有表中的列列表, 符合 SQL 标准. 您可以通过在用户配置级别将 asterisk_left_columns_only 设置为 1 来恢复旧行为. Winter Zhang
  • 添加了对带有表函数的 JOIN 的支持. Winter Zhang
  • 通过在 clickhouse-client 中按 Tab 自动完成. Sergey Shcherbin
  • clickhouse-client 中的 Ctrl+C 清除输入的查询. #2877
  • 添加了join_default_strictness 设置 (值:"'any''all'). 这允许您不为JOIN 指定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
  • 添加了包含来自 rusage 的系统指标的 ProfileEvents 计数器 (您可以使用它们来获取有关用户空间和内核中 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
  • 条件被投射到视图中 (当启用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

Bug 修复:

  • 修复了 Dictionary 表的问题 (抛出 Size of offsets does not match size of columnUnknown compression method 异常). 这个bug出现在18.10.3版本. #2913
  • 修复了合并 CollapsingMergeTree 表时, 如果其中一个数据部分为空 (如果所有数据都被删除,这些部分是在合并或ALTER DELETE期间形成的), 并且使用 vertical 算法进行合并. #3049
  • 修复了在 DROPTRUNCATE 期间为 Memory 表同时执行 SELECT 的竞争条件, 这可能导致服务器崩溃. 这个bug出现在1.1.54388版本. #3038
  • 修复了在返回 Session is expired 错误时插入 Replicated 表时数据丢失的可能性 (数据丢失可以通过 ReplicatedDataLoss 指标检测). 此错误发生在 1.1.54378 版本中. #2939 #2949 #2964
  • 修复了JOIN ... ON 期间的段错误. #3000
  • 修复了当WHERE表达式完全由一个限定的列名组成时搜索列名的错误,例如WHERE table.column. #2994
  • 修复了如果从远程服务器请求包含带有子查询的 IN 表达式的单个列,则在执行分布式查询时发生的 Not found column 错误. #3087
  • 修正了 UNION流中的块结构不匹配: 列数不同 错误, 如果一个分片是本地的, 而另一个不是, 分布式查询发生, 并优化移动到 PREWHERE 被触发. #2226 #3037 #3055 #3065 #3073 #3090 #3093
  • 修复了某些非凸多边形情况下的 pointInPolygon 函数. #2910
  • 修复了将 nan 与整数进行比较时的错误结果. #3024
  • 修复了在极少数情况下可能导致段错误的 zlib-ng 库中的错误. #2854
  • 修复了在插入到具有 AggregateFunction 列的表时, 如果聚合函数的状态不简单 (单独分配内存) , 并且如果单个插入请求导致多个小块时的内存泄漏. #3084
  • 修复了同时创建和删除同一个 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 来恢复旧行为.

Build 更新:

  • 大多数集成测试现在可以通过提交运行.
  • 代码样式检查也可以通过提交运行.
  • 在 CentOS7/Fedora 上构建时正确选择了 memcpy 实现. Etienne Champetier
  • When using clang to build, some warnings from -Weverything have been added, in addition to the regular -Wall-Wextra -Werror. #2957
  • 调试构建使用 jemalloc 调试选项.
  • 与 ZooKeeper 交互的库的接口被声明为抽象的. #2950

ClickHouse 版本 18.10

ClickHouse 版本 18.10.3, 2018-08-13

新特征:

  • HTTPS 可用于复制. #2760
  • 除了现有的 murmurHash2_32 之外, 还添加了函数 murmurHash2_64murmurHash3_32murmurHash3_64murmurHash3_128. #2791
  • 支持 ClickHouse ODBC 驱动程序中的 Nullable 类型 (ODBCDriver2 输出格式). #2834
  • 支持键列中的 UUID.

改进:

  • 从配置文件中删除集群时,无需重新启动服务器即可删除集群. #2777
  • 从配置文件中删除外部字典时,无需重新启动服务器即可删除它们. #2779
  • Kafka 表引擎添加了 SETTINGS 支持. Alexander Marshalov
  • UUID 数据类型的改进 (尚未完成). #2618
  • 支持在 SummingMergeTreeCollapsingMergeTreeVersionedCollapsingMergeTree 引擎中合并后的空部分. #2815
  • 已完成突变的旧记录被删除 (ALTER DELETE). #2784
  • 添加了 system.merge_tree_settings 表. Kirill Shvakov
  • system.tables 表现在有依赖列: dependencies_databasedependencies_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
  • 在对空的 Float32Float64 集合进行聚合的情况下, quantileExact 聚合函数返回 nan . Sundy Li

Bug 修复:

  • 删除了 ODBC 连接字符串参数的不必要转义, 这使得无法建立连接. 此错误发生在 18.6.0 版本中.
  • 修复了处理复制队列中 REPLACE PARTITION 命令的逻辑. 如果同一个分区有两个 REPLACE 命令, 不正确的逻辑可能会导致其中一个留在复制队列中而不会被执行. #2814
  • 修复了所有数据部分为空时的合并错误 (如果所有数据都被删除, 则由合并或 ALTER DELETE 形成的部分). 这个bug出现在18.1.0版本. #2930
  • 修复了并发 SetJoin 的错误. Amos Bird
  • 修正了 UNION流中的块结构不匹配: 列数不同 错误, 如果一个 SELECT 查询包含重复的列名, 在子查询 UNION ALL 查询中发生的错误. Winter Zhang
  • 修复了连接 MySQL 服务器时发生异常时的内存泄漏.
  • 修复了查询错误时不正确的 clickhouse-client 响应代码.
  • 修复了包含 DISTINCT 的物化视图的错误行为. #2795

向后不兼容的更新:

  • 删除了对分布式表的 CHECK TABLE 查询的支持.

Build 更新:

  • 分配器已被替换: 现在使用 jemalloc 代替 tcmalloc. 在某些情况下, 这将速度提高到 20%. 但是, 有些查询速度降低了 20%. 部分场景内存消耗降低约10%, 稳定性提升. 在竞争激烈的负载下, 用户空间和系统中的 CPU 使用率仅略有增加. #2773
  • 使用子模块中的 libressl. #1983 #2807
  • 从子模块使用 unixodbc. #2789
  • 使用子模块中的 mariadb-connector-c. #2785
  • 将依赖于测试数据可用性的功能测试文件添加到存储库中 (暂时没有测试数据本身).

ClickHouse 版本 18.6

ClickHouse 版本 18.6.0, 2018-08-02

新特征:

  • 添加了对 JOIN ON 语法的 ON 表达式的支持: JOIN ON Expr([table.]column ...) = Expr([table.]column, ...) [AND Expr([table.]column, ...) = Expr([table.]column, ...) ...] 表达式必须是由 AND 运算符连接的等式链. 等式的每一边都可以是一个表的列上的任意表达式. 支持对右表使用完全限定的列名 (table.namedatabase.table.nametable_alias.namesubquery_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.

Bug 修复:

  • 修复了启动副本时可能出现的错误 #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.

Bug 修复:

  • 修复了错误 Column ... is not under a aggregate function and not in GROUP BY 用于使用 IN 表达式进行聚合. 这个bug出现在18.1.0版本 (bbdd780b)
  • 修复了 windowFunnel aggregate function 中的一个错误 Winter Zhang.
  • 修复了 anyHeavy 聚合函数中的错误 (a2101df2)
  • 修复了使用 countArray() 聚合函数时服务器崩溃的问题.

向后不兼容的更新:

  • Kafka 引擎的参数已从 Kafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_schema, kafka_num_consumers]) 更改为 Kafka(kafka_broker_list, kafka_topic_list, kafka_topic_list, kafka_fka_name_schema_fka_format, kafka_fka_name_schema_group_format[, kafka_schema, kafka_num_consumers]) 如果您的表使用kafka_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 的子网掩码. 这对于在中间为 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(子查询) 表达式的查询的性能下降 (#2571).
  • 修复了使用非大写字母的 CAST 函数的分布式查询中不同版本服务器之间的不兼容问题 (fe8c4d6).
  • 添加了对外部 DBMS 的查询标识符的缺失引用 (#2635).

向后不兼容的更新:

  • 将包含数字零的字符串转换为 DateTime 不起作用. 示例: SELECT toDateTime('0'). 这也是 DateTime DEFAULT '0' 在表中不起作用的原因, 以及在字典中 <null_value>0</null_value> 的原因. 解决方案: 用0000-00-00 00:00:00替换0.

ClickHouse 版本 1.1

ClickHouse 版本 1.1.54394, 2018-07-12

新特征:

  • 添加了 histogram 聚合函数 (Mikhail Surin).
  • 现在可以使用 OPTIMIZE TABLE ... FINAL 而无需为 ReplicatedMergeTree 指定分区 (Amos Bird).

Bug 修复:

  • 修复了发送和下载复制数据时套接字读写超时 (一秒) 非常小的问题, 这使得如果网络或磁盘上有负载, 则无法下载较大的部分 (导致循环尝试 下载部分). 此错误发生在 1.1.54388 版本中.
  • 修复了在表中插入重复数据块时在 ZooKeeper 中使用 chroot 时的问题.
  • has 函数现在可以正确处理具有 Nullable 元素的数组 (#2115).
  • system.tables 表在分布式查询中使用时可以正常工作. metadata_modification_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).
  • 如果使用了宏但它们不在配置文件中, 则修复了段错误 (#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).
  • 字符串的新 startsWithendsWith 函数 (Vadim Plakhtinsky).
  • numbers() 表函数现在允许您指定偏移量 (Winter Zhang).
  • clickhouse-client 的密码可以交互输入.
  • 服务器日志现在可以发送到系统日志 (Alexander Krasheninnikov).
  • 支持使用共享库源登录词典 (Alexander Sapin).
  • 支持自定义 CSV 分隔符 (Ivan Zhukov).
  • 添加了 date_time_input_format 设置. 如果将此设置切换为 best_effort, 则会以多种格式读取 DateTime 值.
  • 添加了用于数据混淆的 clickhouse-obfuscator 实用程序. 使用示例: 发布性能测试中使用的数据.

实验功能:

  • 添加了仅在需要的地方计算 and 参数的功能 (Anastasia Tsarkova).
  • 一些表达式现在可以 JIT 编译为本机代码 (pyos).

Bug 修复:

  • 使用 DISTINCTORDER BY 查询不再出现重复.
  • 使用ARRAY JOINarrayFilter 的查询不再返回不正确的结果.
  • 修复了从嵌套结构中读取数组列时的错误 (#2066).
  • 修复了使用 HAVING 子句 (如 HAVING tuple IN (...)) 分析查询时的错误.
  • 修复了使用递归别名分析查询时的错误.
  • 修复了从 ReplacingMergeTree 读取时的错误,在 PREWHERE 中使用过滤所有行的条件 (#2525).
  • 在 HTTP 界面中使用会话时未应用用户配置文件设置.
  • 修复了如何从 clickhouse-local 中的命令行参数应用设置.
  • ZooKeeper 客户端库现在使用从服务器收到的会话超时.
  • 修复了 ZooKeeper 客户端库中客户端等待服务器响应时间超过超时时间的错误.
  • 修复了分区键列条件查询的部分修剪 (#2342).
  • 现在可以在 CLEAR COLUMN IN PARTITION 之后进行合并 (#2315).
  • 修复了 ODBC 表函数中的类型映射 (sundy-li).
  • 已修复带和不带时区的 DateTime 的类型比较 (Alexander Bocharov).
  • 修复了 CAST 运算符的语法解析和格式设置.
  • 固定插入到分布式表引擎的物化视图中 (Babacar Diassé).
  • 修复了将数据从 Kafka 引擎写入物化视图时的竞争条件 (Yangkuan Liu).
  • 修复了 remote() 表函数中的 SSRF.
  • 修复了多行模式下 clickhouse-client 的退出行为 (#2510).

改进:

  • 复制表中的后台任务现在在线程池中执行,而不是在单独的线程中执行 (Silviu Caragea).
  • 提高LZ4压缩性能.
  • 对具有大量 JOIN 和子查询的查询进行更快的分析.
  • 当网络错误过多时DNS 缓存现在会自动更新.
  • 如果由于其中一个物化视图有太多的部件而无法插入表,则不会再插入表.
  • 更正了事件计数器 QuerySelectQueryInsertQuery 中的差异.
  • 如果元组类型匹配,则允许使用诸如 tuple IN (SELECT tuple) 之类的表达式.
  • 即使您尚未配置 ZooKeeper具有复制表的服务器也可以启动.
  • 在计算可用 CPU 内核数时,现在考虑了 cgroup 的限制 (Atri Sharma).
  • 在 systemd 配置文件中为配置目录添加了 chown (Mikhail Shiryaev).

Build 更新:

  • gcc8 编译器可用于构建.
  • 添加了从子模块构建 llvm 的功能.
  • ibrdkafka 库版本已更新至 v0.11.4.
  • 添加了使用系统 libcpuid 库的功能. 库版本已更新至 0.4.0.
  • 使用矢量类库修复了构建 (Babacar Diassé).
  • Cmake 现在默认为 ninja 生成文件 (就像使用 -G Ninja 时一样).
  • 添加了使用 libtinfo 库代替 libtermcap 的功能 (Georgy Kondratiev).
  • 修复了 Fedora Rawhide 中的头文件冲突 (#2520).

向后不兼容的更新:

  • 删除了 VerticalPretty* 格式的转义并删除了 VerticalRaw 格式.
  • 如果在分布式查询中同时使用版本 1.1.54388(或更高版本)和旧版本的服务器,并且查询具有不带 AS 关键字的 cast(x, 'Type') 表达式并且没有大写的 cast 一词, 将抛出异常, 并显示类似 Not found column cast(0, 'UInt8') in block 的消息. 解决方案: 更新整个集群上的服务器.

ClickHouse 版本 1.1.54385, 2018-06-01

Bug 修复:

  • 修复了某些情况下导致 ZooKeeper 操作阻塞的错误.

ClickHouse 版本 1.1.54383, 2018-05-22

Bug 修复:

  • 修复了一个表有很多副本时复制队列变慢的问题.

ClickHouse Rel版本ease 1.1.54381, 2018-05-14

Bug 修复:

  • 修复了当 ClickHouse 与 ZooKeeper 服务器失去连接时 ZooKeeper 中的节点泄漏.

ClickHouse 版本 1.1.54380, 2018-04-21

新特征:

  • 添加了表函数 file(path, format, structure). 从 /dev/urandom 读取字节的示例: ln -s /dev/urandom /var/lib/clickhouse/user_files/random``clickhouse-client -q "SELECT * FROM file('random', ' RowBinary', 'd UInt8') LIMIT 10".

改进:

  • 子查询可以包含在 () 括号中以提高查询的可读性. 例如: (SELECT 1) UNION ALL (SELECT 1).
  • 来自 system.processes 表的简单 SELECT 查询不包括在 max_concurrent_queries 限制中.

Bug 修复:

  • 修复了从 物质化视图 中选择时 IN 运算符的错误行为.
  • 修复了在 partition_key_column IN (...) 等表达式中按分区索引不正确的过滤.
  • 修复了如果在表上执行了 REANAME,则无法在非领导副本上执行 OPTIMIZE 查询.
  • 修复了在非领导副本上执行 OPTIMIZEALTER 查询时的授权错误.
  • 修复了 KILL QUERY 的冻结问题.
  • 修复了 ZooKeeper 客户端库中的一个错误,如果在 ZooKeeper 配置中使用非空的 chroot 前缀,该错误会导致监视丢失、分布式 DDL 队列冻结以及复制队列变慢.

向后不兼容的更新:

  • 删除了对像 (a, b) IN (SELECT (a, b)) 这样的表达式的支持 (你可以使用等价的表达式 (a, b) IN (SELECT a, b)). 在以前的版本中, 这些表达式会导致未确定的 WHERE 过滤或导致错误.

ClickHouse 版本 1.1.54378, 2018-04-16

新特征:

  • 无需重新启动服务器即可更改日志级别.
  • 添加了 SHOW CREATE DATABASE 查询.
  • query_id 可以传递给 clickhouse-client (elBroom).
  • 新设置:max_network_bandwidth_for_all_users.
  • MATERIALIZED VIEW 添加了对 ALTER TABLE ... PARTITION ... 的支持.
  • 在系统表中添加了有关未压缩形式的数据部分大小的信息.
  • 分布式表的服务器到服务器加密支持( <remote_servers> 中的副本配置中的 <secure>1</secure>).
  • ReplicatedMergeTree 系列的表级别配置以最小化 Zookeeper 中存储的数据量: use_minimalistic_checksums_in_zookeeper = 1
  • clickhouse-client 提示的配置. 默认情况下, 服务器名称现在会输出到提示中. 服务器的显示名称可以更改. 它还在 X-ClickHouse-Display-Name HTTP 标头中发送 (Kirill Shvakov).
  • 可以为 Kafka 引擎指定多个逗号分隔的 topics (Tobias Adamson)
  • 当查询被 KILL QUERYreplace_running_query 停止时,客户端会收到 Query was cancelled 异常而不是不完整的结果.

改进:

  • ALTER TABLE ... DROP/DETACH PARTITION 查询在复制队列的前面运行.
  • SELECT ... FINALOPTIMIZE ... FINAL 可以在表只有一个数据部分时使用.
  • 如果手动删除了 query_log 表,则会即时重新创建它 (Kirill Shvakov).
  • lengthUTF8 函数运行速度更快 (zhang2014).
  • 当分片数量非常多时,提高了在 分布式 表 (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 表选择领导者时出现竞争条件的可能性.

Build 更新:

  • 构建支持 ninja 而不是 make,并且默认使用 ninja 来构建版本.
  • 重命名包:clickhouse-common-static中的clickhouse-server-base; clickhouse-server 中的 clickhouse-server-common; clickhouse-common-static-dbg 中的 clickhouse-common-dbg. 要安装, 请使用 clickhouse-server clickhouse-client . 具有旧名称的包仍将加载到存储库中以实现向后兼容性.

向后不兼容的更新:

  • 如果在左侧指定了数组, 则删除了 IN 表达式的特殊解释. 以前, 表达式 arr IN (set) 被解释为"at least one 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; 对]. maxIntersectionsPosition(left, right) 函数返回 "maximum" 间隔的开始. (Michael Furmur).

改进:

  • Replicated 表中插入数据时, 对 ZooKeeper 的请求较少(并且大多数用户级错误已从 ZooKeeper 日志中消失).
  • 添加了为数据集创建别名的功能. 示例: WITH (1, 2, 3) AS set SELECT number IN set FROM system.numbers LIMIT 10.

Bug 修复:

  • 修复了从 Distributed 表的合并表读取时的 Illegal PREWHERE 错误.
  • 添加了允许您在仅支持 IPv4 的 Docker 容器中启动 clickhouse-server 的修复程序.
  • 修复了从系统 system.parts_columns 表读取时的竞争条件.
  • 在同步插入到 Distributed 表期间删除了双缓冲,这可能会导致连接超时.
  • 修复了在开始 SELECT 查询之前导致等待不可用副本过长的错误.
  • 修复了 system.parts 表中不正确的日期.
  • 修复了如果在 ZooKeeper 集群的配置中 chroot 不为空, 则无法在 Replicated 表中插入数据的错误.
  • 修复了空 ORDER BY 表的垂直合并算法.
  • 恢复了在对远程表的查询中使用字典的能力, 即使这些字典不存在于请求者服务器上. 此功能在 1.1.54362 版中丢失.
  • IN 的右侧应该使用远程 default.table 时, 恢复了诸如 SELECT * FROM remote('server2', default.table) WHERE col IN (SELECT col2 FROM default.table) 之类的查询行为而不是本地的. 此行为在 1.1.54358 版本中被破坏.
  • 删除了 Not found column ... in block 的无关错误级日志记录.

ClickHouse 版本 1.1.54362, 2018-03-11

新特征:

  • GROUP BY 的空集 (例如 SELECT count(*) FROM table WHERE 0) 的聚合现在返回一个结果, 其中一行带有聚合函数的空值, 符合 SQL 标准. 要恢复旧行为 (返回空结果), 请将 empty_result_for_aggregation_by_empty_set 设置为 1.
  • UNION ALL 添加了类型转换. UNION ALL 中的 SELECT 位置允许不同的别名, 符合SQL标准.
  • LIMIT BY 子句支持任意表达式. 以前, 只能使用由SELECT产生的列.
  • 当将 IN 应用于主键列中的表达式元组时, 将使用 MergeTree 表的索引. 示例: WHERE (UserID, EventDate) IN ((123, '2000-01-01'), ...) (Anastasiya Tsarkova).
  • 添加了用于在集群之间复制和重新分片数据的 clickhouse-copier 工具(测试版).
  • 加了一致性哈希函数: yandexConsistentHashjumpConsistentHashsumburConsistentHash. 它们可以用作分片键, 以减少后续重新分片期间的网络流量.
  • 添加函数: arrayAny, arrayAll, hasAny, hasAll, arrayIntersect, arrayResize.
  • 添加了 arrayCumSum 函数 (Javi Santana).
  • 添加了 parseDateTimeBestEffortparseDateTimeBestEffortOrZeroparseDateTimeBestEffortOrNull 函数以从包含各种可能格式的文本的字符串中读取 DateTime.
  • 更新期间可以从外部字典中部分重新加载数据 (仅加载指定字段的值大于先前下载的记录) (Arsen Hakobyan).
  • 添加了 cluster 表功能. 示例: cluster(cluster_name, db, table)remote 表函数可以接受集群名称作为第一个参数, 如果它被指定为标识符.
  • remotecluster 表函数可用于 INSERT 查询.
  • create_table_queryengine_full 虚拟列添加到 system.tables表. metadata_modification_time 列是虚拟的.
  • data_pathmetadata_path 列添加到 system.tablessystem.databases 表, 并将 path 列添加到 system.partssystem.parts_columns 表.
  • system.part_log 表中添加了有关合并的附加信息.
  • system.query_log 表可以使用任意分区键 (Kirill Shvakov).
  • SHOW TABLES 查询现在也显示临时表. 添加临时表和 is_temporary 列到 system.tables (zhang2014).
  • 添加了DROP TEMPORARY TABLEEXISTS TEMPORARY TABLE查询 (zhang2014).
  • 支持临时表的 SHOW CREATE TABLE (zhang2014).
  • 为内部进程使用的设置添加了system_profile配置参数.
  • 支持加载 object_id 作为 MongoDB 字典中的属性 (Pavel Litvinenko).
  • 使用 MongoDB 源加载外部字典的数据时, 将 null 作为默认值读取 (Pavel Litvinenko).
  • 从没有单引号的 Unix 时间戳中读取 Values 格式的 DateTime 值.
  • 在某些副本缺少请求的表的情况下, remote 表函数支持故障转移.
  • 当您运行 clickhouse-server 时,可以在命令行中覆盖配置设置. 示例: clickhouse-server -- --logger.level=information.
  • FixedString 参数实现了 empty 函数: 如果字符串完全由空字节组成, 该函数返回 1 (zhang2014).
  • 添加了listen_try配置参数, 用于在不退出的情况下至少侦听一个侦听地址, 如果某些地址无法侦听 (对于禁用对 IPv4 或 IPv6 支持的系统很有用).
  • 添加了 VersionedCollapsingMergeTree 表引擎.
  • 支持library 字典源的行和任意数字类型.
  • MergeTree 表可以在没有主键的情况下使用 (你需要指定 ORDER BY tuple()).
  • 如果参数不是 NULL , 则 Nullable 类型可以 CAST 到非 Nullable 类型.
  • 可以为 VIEW 执行 RENAME TABLE .
  • 添加了 throwIf 函数.
  • 添加了 odbc_default_field_size 选项, 它允许您扩展从 ODBC 源加载的值的最大大小 (默认为 1024).
  • system.processes 表和 SHOW PROCESSLIST 现在有 is_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 的子查询中删除的情况.
  • 修复了 ReplaceMergeTree 表的合并错误.
  • 修复了 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 设置. 如果您正在使用此功能, 请写信至 clickhouse-feedback@yandex-team.com.
  • 移除了 UnsortedMergeTree 引擎.

ClickHouse 版本 1.1.54343, 2018-02-05

  • 添加了在分布式 DDL 查询和分布式表构造函数中定义集群名称的宏支持: CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table').
  • 现在像 SELECT ... FROM table WHERE expr IN (subquery) 这样的查询是使用 table 索引处理的.
  • 在插入到复制表时改进了重复处理, 因此它们不再减慢复制队列的执行速度.

ClickHouse 版本 1.1.54342, 2018-01-22

此版本包含先前版本 1.1.54337 的错误修复:

  • 修复了 1.1.54337 中的回归: 如果默认用户具有只读访问权限, 则服务器拒绝启动并显示消息 Cannot create database in readonly mode.
  • 修复了 1.1.54337 中的一个回归: 在具有 systemd 的系统上, 无论配置如何, 日志始终写入 syslog; 监视器脚本仍然使用 init.d.
  • 修复了 1.1.54337 中的回归: Docker 镜像中的默认配置错误.
  • 修复了 Graphite MergeTree 的非确定性行为 (您可以在日志消息中看到它 合并后的数据与另一个副本上的数据不是字节相同 ).
  • 修复了对复制表进行 OPTIMIZE 查询后可能导致合并不一致的错误 (您可能会在日志消息中看到它 Part ... intersects the previous part ).
  • 当目标表中存在 MATERIALIZED 列时, 缓冲区表现在可以正常工作 (by zhang2014).
  • 修复了 NULL 实现中的一个错误.

ClickHouse 版本 1.1.54337, 2018-01-18

新特征:

  • 添加了对表中多维数组和元组 (Tuple 数据类型) 的存储的支持.
  • 支持用于 DESCRIBEINSERT 查询的表函数. 在 DESCRIBE 中添加了对子查询的支持. 示例:DESC TABLE remote('host', default.hits); DESC 表(选择 1; 插入表功能远程('host'default.hits. 除了 INSERT INTO , 还支持 INSERT INTO TABLE.
  • 改进了对时区的支持. DateTime 数据类型可以使用用于解析和格式化文本格式的时区进行注释. 示例: DateTime('Asia/Istanbul'). 当在函数中为 DateTime 参数指定时区时, 返回类型将跟踪时区, 并且值将按预期显示.
  • 添加了函数toTimeZonetimeDifftoQuartertoRelativeQuarterNum. toRelativeHour/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 表引擎, 用于访问远程数据库. 此功能处于测试阶段.
  • 添加了为 groupArray 聚合函数传递 AggregateFunction 类型参数的可能性 (这样你就可以创建一些聚合函数的状态数组).
  • 删除了对聚合函数组合器的各种组合的限制. 例如, 您可以使用 avgForEachIfavgIfForEach 聚合函数, 它们具有不同的行为.
  • -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 聚合函数.
  • 添加到 * Number* OrNull 函数, 其中 * Number* 是数字类型.
  • 添加了对 INSERT SELECT 查询的 WITH 子句的支持 (author: 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 聚合函数和外部词典 (Evgeniy Ivanov) 添加了对 UUID 数据类型的缺失支持. 对 UUID 的支持仍然不完整.
  • 在行总和为零的情况下修复了 SummingMergeTree 行为.
  • Kafka 引擎的各种修复 (Marek Vavruša).
  • 修复了 Join 表引擎的错误行为 (Amos Bird).
  • 修复了 FreeBSD 和 OS X 下不正确的分配器行为.
  • extractAll 函数现在支持空匹配.
  • 修复了阻止使用 libressl 而不是 openssl 的错误.
  • 修复了来自临时表的 CREATE TABLE AS SELECT 查询.
  • 修复了更新复制队列的非原子性. 这可能会导致副本不同步, 直到服务器重新启动.
  • 修复了 gcdlcmmodulo (% 运算符) 中可能出现的溢出 (Maks Skorokhod).
  • -preprocessed 文件现在在更改 umask 后创建 (umask 可以在配置中更改).
  • 修复了使用自定义分区键时部件背景检查 (MergeTreePartChecker) 的错误.
  • 修复了文本格式元组 ( Tuple 数据类型的值) 的解析.
  • 改进了有关传递给 multiIfarray 和一些其他函数的不兼容类型的错误消息.
  • 重新设计了对 Nullable 类型的支持. 修复了可能导致服务器崩溃的错误. 修复了几乎所有与 NULL 支持相关的其他错误: INSERT SELECT 中的类型转换不正确、HAVING 和 PREWHERE 中对 Nullable 的支持不足、join_use_nulls 模式、可空类型作为 OR 运算符的参数等.
  • 修复了与数据类型的内部语义相关的各种错误. 示例: 在 SummingMergeTree 中对 Enum 类型字段进行不必要的求和; Pretty 格式的 Enum 类型的对齐等.
  • 更严格地检查允许的复合列组合.
  • 修复了为 FixedString 数据类型指定一个非常大的参数时的溢出问题.
  • 修复了一般情况下 topK 聚合函数中的错误.
  • 使用 -Array 组合器在聚合函数的n元变体的参数中添加了对数组大小相等性的缺失检查.
  • 修复了 clickhouse-client--pager 中的错误 (author: ks1322).
  • 修复了 exp10 函数的精度.
  • 修复了visitParamExtract 函数的行为, 以便更好地遵守文档.
  • 修复了指定错误数据类型时崩溃的问题.
  • 修复了所有列都是常量的情况下 DISTINCT 的行为.
  • 修复了在使用带有复杂常量表达式的 tupleElement 函数作为元组元素索引的情况下的查询格式.
  • 修复了 range_hashed 字典的 Dictionary 表中的错误.
  • 修复了导致 FULLRIGHT JOIN 结果中行数过多的错误 (Amos Bird).
  • 修复了在配置重新加载期间在 config.d 目录中创建和删除临时文件时服务器崩溃的问题.
  • 修复了 SYSTEM DROP DNS CACHE 查询: 缓存已刷新但集群节点的地址未更新.
  • 修复了对视图下的表执行 DETACH TABLEMATERIALIZED VIEW 的行为 (Marek Vavruša).

Build 改进:

  • 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 数据类型或具有相应状态的物化视图), 请写信至 clickhouse-feedback@yandex-team.com.
  • 在以前的服务器版本中, 有一个未公开的功能: 如果聚合函数依赖于参数, 您仍然可以在 AggregateFunction 数据类型中不带参数地指定它. 示例: AggregateFunction(quantiles, UInt64) 而不是 AggregateFunction(quantiles(0.5, 0.9), UInt64) . 此功能已丢失. 虽然它没有记录, 但我们计划在未来的版本中再次支持它.
  • 枚举数据类型不能用于最小/最大聚合函数. 此能力将在下一个版本中恢复.

升级时请注意:

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

Changelog for 2017