メインコンテンツへスキップ
メインコンテンツへスキップ

2020年変更履歴

ClickHouseリリース 20.12

ClickHouseリリース v20.12.5.14-stable, 2020-12-28

バグ修正

  • マージ時の AIO を使用した書き込みを無効化しました。これは、マージ中に主キー列のデータが極めてまれに破損する可能性があるためです。#18481 (alesapin)。
  • Nullable(String) 型の引数で toType(...) 関数(toDatetoUInt32 など)を実行した際に発生する value is too short エラーを修正しました。これらの関数は、例外をスローする代わりに、パースエラー時には NULL を返すようになりました。#7673 を修正しました。#18445 (tavplubix)。
  • ワイドパーツからコンパクトパーツへのマージを制限しました。縦方向マージの場合、結果パーツが壊れる原因となっていました。#18381 (Anton Popov)。
  • テーブル system.settings_profile_elements へのデータの投入処理を修正しました。この PR により #18231 が修正されました。#18379 (Vitaly Baranov)。
  • 2 レベル集計を使用している際に、Distinct コンビネータ付きの集約関数で発生する可能性があったクラッシュを修正しました。#17682 を修正しました。#18365 (Anton Popov)。
  • クエリ MODIFY COLUMN ... REMOVE TTL が実際には列の TTL を削除しない不具合を修正しました。#18130 (alesapin)。

ビルド/テスト/パッケージングの改善

  • タイムゾーン情報を 2020e に更新しました。#18531 (alesapin)。

ClickHouseリリース v20.12.4.5-stable, 2020-12-24

バグ修正

  • デュアル IPv4/IPv6 スタック構成のマシンにおいて、サーバーから clickhouse-odbc-bridge プロセスに到達できない問題を修正しました。また、ODBC 辞書の更新が不正なクエリで実行される、もしくはクラッシュを引き起こす問題を修正しました。おそらく #14489 がクローズされます。 #18278 (Denis Glazachev).
  • Enum 型と Int 型間のキー比較の問題を修正しました。これにより #17989 が解決されます。 #18214 (Amos Bird).
  • MaterializeMySQL データベースエンジンで一意キー変換時にクラッシュする問題を修正しました。これにより #18186 および #16372 が解決されます。 #18211 (Winter Zhang).
  • S3 URL の解析処理で発生していた std::out_of_range: basic_string を修正しました。 #18059 (Vladimir Chebotarev).
  • 一部のテーブルが MySQL から ClickHouse に同期されない問題を修正しました。この問題は、MaterializeMySQL が MySQL のプレフィックスインデックスの変換をサポートしていなかったことが原因でした。これにより #15187 および #17912 が解決されます。 #17944 (Winter Zhang).
  • クエリに ARRAY JOIN が含まれている場合に、クエリ最適化によって誤った結果が生成される問題を修正しました。 #17887 (sundyli).
  • topK 集約関数で発生し得るセグメンテーションフォルトを修正しました。これにより #17404 がクローズされます。 #17845 (Maksim Kita).
  • サーバーがデーモンモードで動作している場合に system.stack_trace テーブルが空になる問題を修正しました。 #17630 (Amos Bird).

ClickHouse リリース v20.12.3.3-stable, 2020-12-13

後方互換性のない変更

  • デフォルトで use_compact_format_in_distributed_parts_names を有効化しました(詳細はドキュメントを参照してください)。 #16728 (Azat Khuzhin).
  • File エンジンを使用するテーブルを作成する際に、ファイルフォーマットに関連するユーザー設定(例: format_csv_delimiter)を SETTINGS 句で指定できるようにし、すべての INSERTSELECT でこれらの設定が使用されるようにしました。現在のユーザーセッションで変更されたファイルフォーマット設定、または DML クエリ自身の SETTINGS 句で指定された設定は、もはやそのクエリには影響しません。 #16591 (Alexander Kuzmenkov).

新機能

  • *.xz 圧縮/解凍のサポートを追加しました。これにより、file() 関数で *.xz を使用できるようになります。これにより #8828 がクローズされました。#16578Abi Palagashvili)。
  • クエリ ALTER TABLE ... DROP|DETACH PART 'part_name' を導入しました。#15511nvartolomei)。
  • 新しい ALTER UPDATE/DELETE IN PARTITION 構文を追加しました。#13403Vladimir Chebotarev)。
  • JSON 入出力フォーマットを使用する際に、名前付きタプルを JSON オブジェクトとしてフォーマットできるようにしました。output_format_json_named_tuples_as_objects 設定で制御され、デフォルトでは無効です。#17175Alexander Kuzmenkov)。
  • TSV および CSV フォーマットで、デフォルトで enum 値をその ID として入力できるようにしました。#16834Kruglov Pavel)。
  • Nullable、LowCardinality、Array、Tuple について、ネストした型が String の場合に COLLATE をサポートしました。また、ColumnString.cpp 内の照合に関連するコードをリファクタリングしました。#16273Kruglov Pavel)。
  • 新しい tcpPort 関数は、このサーバーが待ち受けている TCP ポートを返します。#17134Ivan)。
  • 新しい数学関数を追加しました: acosh, asinh, atan2, atanh, cosh, hypot, log1p, sinh#16636Konstantin Malanchev)。
  • 異なるレプリカ間でマージを分散できるようにしました。execute_merges_on_single_replica_time_threshold MergeTree 設定を導入しました。#16424filimonov)。
  • SQL 標準との互換性のために aggregate_functions_null_for_empty 設定を追加しました。このオプションはクエリ内のすべての集約関数を書き換え、末尾に -OrNull サフィックスを追加します。10273 を実装しています。#16123flynn)。
  • DateTime、DateTime64 のパース処理を更新し、文字列の Date リテラル形式を受け付けるようにしました。#16040Maksim Kita)。
  • clickhouse-client--history_file パラメータを使用して、履歴ファイルへのパスを変更できるようにしました。#15960Maksim Kita)。

バグ修正

  • ごくまれなケースでサーバーが接続を受け付けなくなる問題を修正しました。 #17542 (Amos Bird).
  • Windows Subsystem for Linux 上で動作する ClickHouse の Atomic データベースで RENAME クエリを実行した際に発生していた Function not implemented エラーを修正しました。#17661 を解決。#17664tavplubix)。
  • in_memory_parts_enable_wal が無効になっている場合は、WAL からパーツを復元しないように変更しました。 #17802 (detailyang)。
  • MergeTreeWriterSettings の max_compress_block_sizemin_compress_block_size で初期化されていたという誤りを修正。 #17833 (flynn)。
  • 削除対象テーブルの最大サイズに関する例外メッセージが誤って表示されていました。 #17764 (alexey-milovidov).
  • Distributed テーブルへの挿入時に空き領域が不足している場合に発生する可能性があったセグメンテーションフォルトを修正しました。 #17737 (tavplubix).
  • ClickHouse が MySQL サーバーへの接続を再開できない問題を修正しました。 #17681 (Alexander Kazakov).
  • pool_size が 1 より大きい場合のレースコンディションが原因で、ON CLUSTER クエリの実行時にクラスタが circular(cross)replicated かどうかが誤って判定されてしまう可能性がありました。これは修正されています。 #17640 (tavplubix).
  • MergeTree テーブルで発生した例外 fmt::v7::format_error をバックグラウンドでログ出力できるようになりました。これにより #17613 が修正されました。#17615alexey-milovidov)。
  • マルチラインクエリで対話モードの clickhouse-client を使用した場合、シングルラインコメントが誤ってクエリ全体の末尾まで適用されていました。この変更により #13654 が修正されました。 #17565alexey-milovidov)。
  • 対応するミューテーションが別のレプリカ上で kill されていた場合に ALTER クエリがハングする問題を修正。 #16953 を修正。 #17499alesapin)。
  • ClickHouse によって mark キャッシュサイズが小さく見積もられてしまう問題を修正しました。これは、多数の小さいファイルに marks が含まれている場合に発生することがあります。 #17496 (alesapin)。
  • 設定 optimize_redundant_functions_in_order_by 有効時の ORDER BY の動作を修正。 #17471 (Anton Popov).
  • 誤った最適化が原因で DISTINCT の後に発生する可能性があった重複を修正。 #17294 を修正。 #17296li chengxiang)。 #17439Nikolai Kochetov)。
  • LowCardinality 型を含む JOIN テーブルからの読み取り時に発生するクラッシュを修正しました。#17228 を解決。#17397Nikolai Kochetov)。
  • toInt256(inf) のスタックオーバーフローを修正。Int256 は実験的な機能です。#17235 をクローズ。#17257flynn)。
  • LIMIT を含む分散クエリで記録されることがある Unexpected packet Data received from client エラーを修正。 #17254 (Azat Khuzhin)。
  • サブクエリに const カラムが含まれている場合に set インデックスが正しく無効化されない問題を修正しました。これにより #17246 を修正しました。#17249Amos Bird)。
  • インデックス比較に用いられる型が異なる場合に誤ったインデックス解析が行われる可能性があった問題を修正しました。これにより #17122 が修正されます。#17145Amos Bird)。
  • クラッシュを引き起こしていた ColumnConst の比較処理を修正しました。これにより、#17088 の問題が解決しました。#17135Amos Bird)。
  • MaterializeMySQL(実験的機能)に対して複数の修正を行いました。 #16923 を修正しました。 #15883 を修正しました。 MySQL の binlog_checksum を変更した場合に発生する MaterializeMySQL の SYNC 失敗の問題を修正しました。 #17091Winter Zhang)。
  • 非リーダーの ReplicatedMergeTree テーブルに対する ON CLUSTER クエリが無期限にハングする可能性のあるバグを修正。 #17089 (alesapin).
  • some_tableAS table_function() として作成されている場合に、CREATE TABLE ... AS some_table クエリでクラッシュが発生する問題を修正しました。 #16944 を解決。 #17072 (tavplubix).
  • 関数 fuzzBits の未完成な実装によるバグ。関連 issue: #16980#17051hexiaoting)。
  • CFA レジスタが RAX の場合に LLVM の libunwind が誤動作する問題を修正しました。これは LLVM の libunwind におけるバグです。このバグに対するワークアラウンドは既に実装済みです。#17046alexey-milovidov)。
  • LIMIT を含むクエリなど、実行中にキャンセルされる可能性があるリモートクエリで、不要なネットワークエラーが発生しないようにしました。 #17006 (Azat Khuzhin).
  • OFFSET 句のみを含むクエリに対して、デフォルトでは無効になっている optimize_distributed_group_by_sharding_key 設定を修正しました。 #16996 (Azat Khuzhin)。
  • JOIN を伴う Distributed テーブル上の Merge テーブルの不具合を修正。 #16993 (Azat Khuzhin).
  • double から大きな整数型(128、256 ビット)へキャストする際に誤った結果が返される問題を修正しました。大きな整数型のサポートは実験的機能です。 #16986 (Mike).
  • ALTER TABLE ... MODIFY COLUMN ... NewType の実行後、ALTER がまだ完了していない状態で、変更中のカラムに対して WHERE 句を含む SELECT が実行されるとサーバーがクラッシュする可能性があった問題を修正。 #16968 (Amos Bird).
  • clickhouse-git-import で blame 情報が正しく計算されていませんでした。#16959alexey-milovidov)。
  • 単調関数を用いた ORDER BY の最適化を修正しました。Issue #16107 を修正。#16956Anton Popov)。
  • optimize_aggregators_of_group_by_keys 設定が有効な場合における GROUP BY と JOIN の最適化を修正。 #12604 を修正。 #16951 (Anton Popov)。
  • ORDER BY を含むクエリで発生しうる Illegal type of argument エラーを修正しました。#16580 を解決。#16928Nikolai Kochetov)。
  • InterpreterShowAccessQuery 内の不自然なコードを修正。#16866 (tavplubix)
  • 関数 timeSeriesGroupSum 使用時に ClickHouse サーバーがクラッシュするのを防止します。この関数は新しい ClickHouse のリリース以降では削除されています。 #16865 (filimonov)。
  • クエリプロファイラがオンで、いくつかの関数に対して非同期アンワインドテーブルが(おそらく)壊れている glibc バージョンを使用する OS 上に ClickHouse がインストールされている場合に発生する、まれなサイレントクラッシュを修正しました。これにより #15301 および #13098 が修正されます。#16846alexey-milovidov)。
  • 引数なしで any を使用したときにクラッシュする問題を修正しました。#16803 対応。cc @azat。#16826Amos Bird)。
  • ディスクにテーブルメタデータを書き込む際にメモリを確保できない場合、破損したメタデータファイルが書き込まれてしまうことがあります。 #16772 (alexey-milovidov)。
  • パーティション述語を伴う単純なクエリ最適化を修正。 #16767 (Azat Khuzhin).
  • transform_null_in 設定が有効な場合に、複数列やタプルに対する IN 演算子の動作を修正。 #15310 を修正。 #16722Anton Popov)。
  • MySQL プロトコル経由の INSERT クエリに対して、影響を受けた行数を返すようにしました。以前の ClickHouse では常に 0 が返されていましたが、これを修正しました(#16605)。#16715Winter Zhang)。
  • 'if' サフィックス付きの集約関数を使用している場合に発生するリモートクエリの失敗を修正。Fixes #16574 Fixes #16231 #16610 (Winter Zhang).
  • 最適化された trivial count クエリおよび system.tables における select_sequential_consistency に起因する一貫しない動作を修正。 #16309 (Hao Chen)。

改善

  • TTL、mutation、または collapsing merge アルゴリズムにより間引かれた結果、空になったパーツを削除します。 #16895 (Anton Popov).
  • Distributed テーブルにおける非同期送信時のディレクトリ名のコンパクト形式を有効化: use_compact_format_in_distributed_parts_names はデフォルトで 1 に設定されています。 #16788 (Azat Khuzhin).
  • S3 にデータが書き込まれていない場合はマルチパートアップロードを中止する。#16840 (Pavel Kovalenko)。
  • エラー発生時に format_avro_schema_registry_url の IP アドレスを再解決するようにしました。 #16985 (filimonov).
  • system.distribution_queue 内の data_path に含まれるパスワードをマスクする。 #16727 (Azat Khuzhin).
  • 存在しないカラムを column transformer で置き換えようとした場合にエラーをスローするようにしました。 #16183 (hexiaoting).
  • すべてのスレッドが同時に動作するのに十分なメモリを確保できない場合は、並列パースをオフにします。また、誰かが非常に巨大な行(> min_chunk_bytes_for_parallel_parsing)を挿入しようとしたときに、「Memory limit exceeded」といった例外が発生する可能性があります。これは、パース対象の各チャンクが(1 行以上からなる)独立した文字列集合である必要があるためです。 #16721 (Nikita Mikhaylov).
  • インストールスクリプトは、常に設定フォルダー内にサブディレクトリを作成するようにしました。これはカスタム設定を用いた Docker ビルドにのみ関係します。 #16936 (filimonov)。
  • JSONEachRow、JSONCompactEachRow、および RegexpRow 入力フォーマットにおけるエラーメッセージの文法を修正。 #17205 (nico piderman).
  • SOURCE(CLICKHOUSE(...)) のデフォルトの host および port パラメータを現在のインスタンスにし、デフォルトの user の値を 'default' にしました。 #16997 (vdimir).
  • ATTACH/DETACH TABLE <DICTIONARY> を実行した際に、よりわかりやすいエラーメッセージを出力するようにしました。この PR 以前は、detach table <dict> は動作するものの、メモリ上のメタデータが不正な形式になっていました。 #16885 (Amos Bird)。
  • cutToFirstSignificantSubdomainWithWWW() を追加しました。 #16845 (Azat Khuzhin).
  • 誤った設定が指定された場合(metric_log.collect_interval_milliseconds が欠落している)、サーバーが起動を拒否して例外メッセージを出力するようになりました。 #16815 (Ivan).
  • 分散 DDL の設定が存在しない場合に出力される例外メッセージを改善しました。これにより #5075 が修正されました。#16769Nikita Mikhaylov)。
  • ユーザビリティの向上: CREATE TABLE クエリ内で CODEC 式の位置が誤っている場合に表示される構文エラーメッセージで、より適切な提案が行われるようにしました。これにより #12493 が修正されました。 #16768alexey-milovidov)。
  • Distributed エンジンの起動時に、非同期 INSERT 用の空ディレクトリを削除するようにしました。 #16729 (Azat Khuzhin).
  • nginx サーバーをプロキシとして介して S3 を利用するための回避策です。現在の Nginx は http://domain.com?delete のようなパスが空の URL を受け付けませんが、標準の aws-sdk-cpp はこの形式の URL を生成します。このコミットでは修正を加えた aws-sdk-cpp バージョンを使用し、このような場合に http://domain.com/?delete のようにパスとして「/」を含む URL を生成するようにしています。 #16709 (ianton-ru)。
  • 同じサイズの整数型および浮動小数点数型に対して reinterpretAs* 関数が動作するようにしました。 16640 を実装。 #16657flynn)。
  • これで、サーバーを再起動することなく、config.xml 内の <auxiliary_zookeepers> 設定を変更して再読み込みできるようになりました。#16627 (Amos Bird)。
  • リモートリソースへの HTTPS 接続で SNI をサポートしました。これにより、SNI を必須とする Cloudflare サーバーへの接続が可能になります。この変更によって #10055 が修正されました。#16252alexey-milovidov)。
  • SNI を必要とする clickhouse-server のセキュアなエンドポイントへの接続を可能にしました。これは、clickhouse-server が TLS プロキシの背後でホストされている場合に利用できます。 #16938 (filimonov)。
  • マテリアライズドビューのループが作成された場合に発生する可能性のあるスタックオーバーフローを修正しました。これにより #15732 がクローズされました。 #16048 (alexey-milovidov)。
  • MergeTree テーブルエンジンファミリー向けのバックグラウンドタスク処理の実装を簡素化しました。ユーザーから見える変更はありません。 #15983 (alesapin).
  • MaterializeMySQL(実験的機能)の改善。MySQL の同期ユーザーに誤った権限が設定されている場合に、必要な同期権限を示す例外をスローするようにしました。 #15977 (TCeason).
  • indexOf() が BloomFilter を使用するようになりました。 #14977 (achimbab).

パフォーマンスの改善

  • Floyd-Rivest アルゴリズムを使用します。ClickHouse における部分ソートのユースケースではこれが最適とされています。ベンチマークは https://github.com/danlark1/miniselect およびこちら にあります。#16825Danila Kutenin)。
  • ReplicatedMergeTree エンジンファミリーは、レプリケーションのフェッチ処理専用のスレッドプールを使用するようになりました。プールのサイズは設定 background_fetches_pool_size によって制限され、サーバーの再起動により調整できます。デフォルト値は 3 であり、最大並列フェッチ数が 3 であることを意味します(これにより 10G ネットワークを十分に活用できます)。#520 を修正。#16390alesapin)。
  • quantileTDigest の状態が制御不能に増大する問題を修正しました。#16680hrissan)。
  • EXPLAINVIEW サブクエリの説明を追加しました。VIEW に対する limit push down 最適化を制限しました。Distributed のローカルレプリカをクエリプランに追加しました。#14936Nikolai Kochetov)。
  • ORDER BY に式があり、かつ max_threads > 0 の場合の optimize_read_in_order / optimize_aggregation_in_order を修正しました。#16637Azat Khuzhin)。
  • 非常に多数の MergeTree テーブルに対する Merge テーブルからの読み取りパフォーマンスを修正しました。#7748 を修正。#16988Anton Popov)。
  • 完全一致によるパーティションのプルーニングを安全に行えるようになりました。有用なケースとして、テーブルが intHash64(x) % 100 でパーティション分割されていて、クエリ条件が x ではなく、そのまま intHash64(x) % 100 に対して記述されている場合があります。#16253Amos Bird)。

実験的機能

  • EmbeddedRocksDB テーブルエンジンを追加しました(辞書(dictionary)に使用できます)。#15073sundyli)。

ビルド/テスト/パッケージングの改善

  • イメージビルドに関するテストカバレッジを改善。 #17233 (alesapin).
  • 埋め込みタイムゾーンデータをバージョン 2020d に更新(あわせて cctz を最新版の master に更新)。 #17204 (filimonov).
  • Poco における UBSan レポートを修正。これにより #12719 がクローズ。 #16765 (alexey-milovidov).
  • サードパーティライブラリを UBSan でインストゥルメントしないように変更。 #16764 (alexey-milovidov).
  • キャッシュディクショナリにおける UBSan レポートを修正。これにより #12641 がクローズ。 #16763 (alexey-milovidov).
  • 無限大の浮動小数点数を整数に変換しようとした際の UBSan レポートを修正。これにより #14190 がクローズ。 #16677 (alexey-milovidov).

ClickHouse リリース 20.11

ClickHouse リリース v20.11.7.16-stable, 2021-03-02

改良

  • clickhouse-server イメージ内の clickhouse ユーザーおよびグループの uid/gid を固定値(101)に明示的に設定しました。 #19096 (filimonov)。

バグ修正

  • BloomFilter インデックスのクラッシュを修正。#19757 を解決。#19884Maksim Kita)。
  • system.text_log が有効になっている場合にデッドロックが発生する可能性がありました。これにより #19874 が修正されました。 #19875alexey-milovidov)。
  • 以前のバージョンでは、関数 arrayEnumerateUniq に対する想定外の引数により、クラッシュや無限ループが発生する可能性がありました。これにより #19787 が解決されました。#19788alexey-milovidov)。
  • 算術型と文字列型の厳密な比較を行う際に発生していたスタックオーバーフローを修正しました。 #19773 (tavplubix).
  • bitmapAndnot 関数で発生していたセグメンテーションフォルトを修正しました。 #19668 を解決します。 #19713 (Maksim Kita)。
  • 一部の big integers を扱う関数では、セグメンテーションフォルトが発生する場合があります。big integers は実験的な機能です。これにより #19667 がクローズされました。#19672alexey-milovidov)。
  • LowCardinality 引数に対する neighbor 関数の誤った結果を修正。 #10333 に対応。 #19617Nikolai Kochetov)。
  • 切断後に Connection 内の CompressedWriteBuffer で発生していた use-after-free 問題を修正。 #19599 (Azat Khuzhin).
  • DROP/DETACH TABLE table ON CLUSTER cluster SYNC クエリがハングする可能性があった問題を修正しました。 #19568 を修正。 #19572 (tavplubix)。
  • CREATE DICTIONARY クエリの id 式を修正。 #19571 (Maksim Kita)。
  • merge_tree_min_rows_for_concurrent_read/merge_tree_min_bytes_for_concurrent_read を 0/UINT64_MAX に設定した場合に発生する SIGSEGV を修正。 #19528 (Azat Khuzhin).
  • addMonth 関数が特定の方法で細工された引数とともに呼び出された場合、(メモリ読み取り時の)バッファオーバーフローが発生する可能性がありました。これにより #19441 を修正しました。また、#19413 も修正しました。 #19472alexey-milovidov)。
  • いずれかのファイルで空のデータブロックが見つかった場合、その分散バッチを破損しているものとしてマークするように変更しました。 #19449 (Azat Khuzhin).
  • Uber H3 ライブラリで発生し得るバッファオーバーフローの問題を修正しました。詳しくは https://github.com/uber/h3/issues/392 を参照してください。これにより #19219 がクローズされました。 #19383 (alexey-milovidov).
  • system.partsstate カラムを修正しました(順序が不正なため、このカラムをクエリした際に LOGICAL_ERROR が発生していた問題)。 #19346 (Azat Khuzhin).
  • エラー Cannot convert column now64() because it is constant but values of constants are different in source and result を修正。 #7156 の続き。 #19316Nikolai Kochetov)。
  • ALTER および DROP クエリの同時実行時に、ReplicatedMergeTree テーブルの処理がハングする可能性がある不具合を修正しました。 #19237 (alesapin).
  • ORC フォーマットのファイルを無限に読み続けてしまう問題を修正しました(#10580 で導入された不具合)。#19095 を修正します。#19134Nikolai Kochetov)。
  • 起動時に、ClickHouse が LowCardinality(Nullable(...)) から圧縮コーデックを読み取れず、例外 Attempt to read after EOF を送出していたバグを修正しました。 #18340 を修正しました。 #19101alesapin)。
  • Template または CustomSeparated フォーマットを使用して HTTP インターフェイス経由でデータを挿入する際に発生していた There is no checkpoint エラーを修正しました。#19021 を解決。#19072tavplubix)。
  • 古い構文で作成された MergeTree テーブルに対する MODIFY TTL クエリを制限するようにしました。以前はクエリ自体は成功していましたが、実際には何の効果もありませんでした。#19064Anton Popov)。
  • Enum 型の引数に対して groupUniqArray が正しい型を返すようにしました。これにより #17875 が解決されました。#19019alexey-milovidov)。
  • 関数 ignoreLowCardinality 引数と共に使用した場合に発生する可能性のあった Expected single dictionary argument for function エラーを修正しました。#14275 を修正。#19016Nikolai Kochetov)。
  • TinyLog エンジンを使用するテーブルへの LowCardinality 列の挿入に関する不具合を修正しました。関連する #18629 を解決。#19010Nikolai Kochetov)。
  • optimize_move_functions_out_of_any を無効化しました。この最適化は常に正しく動作するとは限らないためです。これにより #18051 がクローズされます。これにより #18973 がクローズされます。 #18981alexey-milovidov)による変更です。
  • シャットダウン時にごくまれに発生していたデッドロックを修正。 #18977 (tavplubix).
  • 一部のエスケープされたテキスト(ALTER ... UPDATE e = CAST('foo', 'Enum8(\'foo\' = 1') のような)を含むミューテーションが誤ってシリアライズされるバグを修正しました。#18878 を解決。#18944alesapin)。
  • Attach partition で mutation がリセットされるようにしました。 #18804. #18935 (fastio).
  • clickhouse-local のシャットダウン時に発生しうるハングアップを修正しました。これにより #18891 を解決します。 #18893 (alexey-milovidov).
  • 単項関数と Nullable 型に対応した If コンビネータを修正。 #18806 (Azat Khuzhin).
  • network_compression_method 設定がグローバルにデフォルト以外の値に設定されている場合、非同期分散 INSERT 文がサーバーによって拒否されることがあります。これにより #18741 が修正されます。 #18776 (alexey-milovidov)。
  • Nullable(String) から Nullable(Decimal(P, S))NULLCAST しようとした際に発生する Attempt to read after eof エラーを修正しました。Nullable(String) の文字列から Decimal をパースできない場合、関数 CASTNULL を返すようになりました。#7690 を修正しました。#18718Winter Zhang)。
  • 引数の数が一致しない Logger の問題を修正。 #18717 (sundyli)。
  • FixedString データ型のサポートを追加しました。MySQL から ClickHouse へデータをレプリケートする際に、例外「Code: 50, e.displayText() = DB::Exception: Unsupported type FixedString(1)」が発生していました。このパッチはバグ #18450 を修正します。また、#6556 も修正します。#18553awesomeleo)。
  • RIGHT または FULL JOIN を使用するサブクエリの後に ORDER BY を使用した際に発生する可能性のある Pipeline stuck エラーを修正。 #18550 (Nikolai Kochetov).
  • 対応するミューテーションを kill した後に ALTER クエリがハングする可能性のあるバグを修正。thread fuzzer によって検出された。#18518 (alesapin).
  • マージ時の AIO を使った書き込みを無効化しました。マージ中に主キー列のデータがごくまれではあるものの破損する可能性があるためです。 #18481 (alesapin).
  • 結果を事前に計算できない場合には、解析段階でサブクエリに対する定数畳み込みを無効化しました。 #18446 (Azat Khuzhin).
  • Nullable(String) 型の引数に対して toType(...) 関数(toDatetoUInt32 など)を実行した際に発生していた value is too short エラーを修正しました。これらの関数は、パースエラー時に例外をスローするのではなく NULL を返すようになりました。 #7673 を修正。 #18445tavplubix)。
  • ワイドパーツからコンパクトパーツへのマージを制限しました。垂直マージの場合、壊れた結果パーツが生成されてしまう問題がありました。 #18381 (Anton Popov).
  • テーブル system.settings_profile_elements へのデータ投入処理を修正。この PR は #18231 を修正します。#18379Vitaly Baranov)。
  • 定数引数を持つバイナリ関数に対するインデックス解析を修正し、誤ったクエリ結果が返される不具合を修正しました。これにより #18364 が解決されました。#18373Amos Bird)。
  • 二段階集約を使用している場合に、Distinct コンビネータを用いた集約関数で発生する可能性のあるクラッシュを修正。#17682 を修正。#18365Anton Popov)。
  • table から少なくとも 1 列を選択できる場合、SELECT count() FROM table を実行できるようになりました。この PR で #10639 が修正されました。 #18233Vitaly Baranov)。
  • SELECT JOIN は、結合される各テーブルに対する SELECT 権限を必要とするようになりました。この PR で #17654 を修正しました。 #18232 (Vitaly Baranov).
  • MergeTree* からの読み取り時に、read backoff(ログ内に <Debug> MergeTreeReadPool: Will lower number of threads というメッセージが出力される状況)が発生した場合に、クエリ結果が不完全になる可能性がある問題を修正。#16423 で導入された不具合であり、#18137 を修正するもの。#18216Nikolai Kochetov)。
  • クエリ MODIFY COLUMN ... REMOVE TTL が実際にはカラムの TTL を削除しない不具合を修正。#18130alesapin)。
  • 述語オプティマイザにおける非決定的関数の扱いを修正しました。これにより #17244 が解決されます。 #17273 (Winter Zhang)。
  • MOVE または REPLACE PARTITION の後、存在しないパーツを待ち続けて Mutation がハングすることがあり、まれなケースでは DETACHDROP PARTITION の後にも発生する可能性がありました。この問題は修正されています。 #15537 (tavplubix).

ビルド/テスト/パッケージングの改善

ClickHouse リリース v20.11.6.6-stable, 2020-12-24

バグ修正

  • IPv4/IPv6 stack のデュアルスタック構成を持つマシン上で、サーバーから clickhouse-odbc-bridge プロセスに接続できない問題を修正し、さらに不正な形式のクエリを使用して ODBC ディクショナリの更新が行われる場合やクラッシュを引き起こす場合の問題を修正しました。これにより #14489 が解決された可能性があります。 #18278 (Denis Glazachev)。
  • Enum 型と Int 型間のキー比較を修正しました。これにより #17989 が修正されました。#18214Amos Bird)。
  • MaterializeMySQL データベースエンジンにおける一意キー変換時のクラッシュを修正しました。これにより #18186#16372#18211 が修正されます(Winter Zhang)。
  • S3 URL の解析で発生していた std::out_of_range: basic_string を修正しました。 #18059 (Vladimir Chebotarev).
  • MaterializeMySQL で MySQL のプレフィックスインデックスの変換がサポートされていなかったため、一部のテーブルが MySQL から ClickHouse に同期されない問題を修正しました。これにより、#15187#17912#17944 の問題が解決されました(Winter Zhang)。
  • ARRAY JOIN を含むクエリで、クエリ最適化により誤った結果が生成される問題を修正しました。 #17887 (sundyli).
  • topK 集約関数で発生する可能性があったセグメンテーションフォルトを修正。これにより #17404 がクローズされます。 #17845Maksim Kita)。
  • in_memory_parts_enable_wal が無効な場合は、WAL からパーツを復元しません。 #17802 (detailyang).
  • ClickHouse が MySQL サーバーへの再接続に失敗する問題を修正しました。 #17681 (Alexander Kazakov).
  • パーティション述語使用時における optimize_trivial_count_query の不整合な動作を修正しました。 #17644 (Azat Khuzhin).
  • サーバーがデーモンモードで動作している場合に system.stack_trace テーブルが空になっていた問題を修正しました。 #17630 (Amos Bird)。
  • MergeTree テーブルのバックグラウンドで、例外 fmt::v7::format_error がログに記録され得る不具合を修正しました。これにより #17613 が修正されました。 #17615 (alexey-milovidov)。
  • clickhouse-client を対話モードで複数行クエリとともに使用した際に、単一行コメントが誤ってクエリ全体に適用されてしまう不具合を修正しました。これにより #13654 が解決されました。 #17565 (alexey-milovidov)。
  • 極めてまれなケースでサーバーが接続を受け付けなくなることがある問題を修正しました。 #17542 (alexey-milovidov).
  • 対応するミューテーションが別のレプリカ上で kill された場合に ALTER クエリがハングする問題を修正しました。この変更により #16953 が修正されました。 #17499 (alesapin)。
  • ClickHouse によって mark キャッシュのサイズが過小評価されていたバグを修正しました。これは、多数の小さな mark を含むファイルが存在する場合に発生することがあります。 #17496 (alesapin).
  • optimize_redundant_functions_in_order_by 設定を有効化している場合の ORDER BY を修正しました。 #17471 (Anton Popov).
  • 誤った最適化により DISTINCT の後に重複が発生する可能性があった問題を修正しました。これにより #17294 が修正されました。 #17296li chengxiang)。 #17439Nikolai Kochetov)。
  • LowCardinality 型を含む JOIN テーブルからの読み取り時に発生していたクラッシュを修正しました。これにより #17228 が解決されました。#17397Nikolai Kochetov)。
  • サブクエリ内に const カラムが存在する場合に fixed set インデックスが無効化される問題を修正しました。これにより #17246 が解決されています。 #17249 (Amos Bird).
  • インデックス比較に用いられる型が異なる場合に、誤ったインデックス解析が行われる可能性があった問題を修正しました。これにより #17122 が解決されました。 #17145Amos Bird)。
  • クラッシュの原因となっていた ColumnConst の比較処理を修正しました。これにより #17088 が解決されました。 #17135 (Amos Bird).
  • リーダーでない ReplicatedMergeTree テーブルに対する ON CLUSTER クエリが無期限にハングする可能性のあった不具合を修正しました。 #17089 (alesapin).
  • fuzzBits 関数で fuzzer によって見つかったバグを修正しました。これにより #16980 が解決されます。 #17051 (hexiaoting)。
  • LIMIT を含むクエリなど、実行中にキャンセルされる可能性があるリモートクエリで、不要なネットワークエラーが発生しないようにしました。 #17006 (Azat Khuzhin).
  • double 型からのキャスト時に、128 および 256 ビットの整数型で誤った結果になる問題を修正しました。 #16986 (Mike).
  • エラー発生時には format_avro_schema_registry_url の IP アドレスを再解決するようにしました。 #16985 (filimonov).
  • ALTER TABLE ... MODIFY COLUMN ... NewType の実行中に、その変更対象列に WHERE 句を含む SELECT が実行され、ALTER がまだ完了していない場合にサーバーがクラッシュする可能性があった問題を修正しました。 #16968 (Amos Bird).
  • clickhouse-git-import において blame 情報が正しく算出されていませんでした。 #16959 (alexey-milovidov)。
  • 単調関数を用いた ORDER BY の最適化を修正しました。#16107 を解決。#16956Anton Popov)。
  • optimize_aggregators_of_group_by_keys 設定を有効にした状態での GROUP BY と JOIN の最適化を修正しました。これにより #12604 が修正されました。 #16951 (Anton Popov).
  • インストールスクリプトは常に、設定ディレクトリ内にサブディレクトリを作成する必要があります。これはカスタム設定を用いた Docker ビルドにのみ該当します。#16936 (filimonov).
  • ORDER BY を含むクエリで発生する可能性のあった Illegal type of argument エラーを修正しました。これにより #16580 が解決されました。#16928Nikolai Kochetov)。
  • WriteBufferFromS3 にデータが一切書き込まれなかった場合、マルチパートアップロードを中止するようにしました。 #16840 (Pavel Kovalenko).
  • 引数なしで any を使用した際に発生していたクラッシュを修正しました。これにより #16803 を解決しました。 #16826 (Amos Bird)。
  • MySQL プロトコル経由の INSERT クエリに対して、影響を受けた行数を返すべきところで ClickHouse が常に 0 を返していた問題を修正しました。これにより #16605 が解決されます。 #16715 (Winter Zhang)。
  • TDigest が制御不能に肥大化する問題を修正しました。 #16680 (hrissan).
  • Aggregate 関数で if サフィックスを使用した場合にリモートクエリが失敗する問題を修正しました。これにより #16574 #16231 #16610 が修正されました(Winter Zhang)。
  • select_sequential_consistency により最適化された自明な COUNT クエリおよび system.tables において発生していた挙動の不整合を修正しました。 #16309 (Hao Chen)。
  • ColumnTransformer が存在しないカラムを置き換えようとした場合にエラーをスローするようにしました。 #16183 (hexiaoting).

ClickHouse リリース v20.11.3.3-stable, 2020-11-13

バグ修正

  • query profiler が有効で、かつ一部の関数に対して(おそらく)壊れた非同期アンワインドテーブルを持つ glibc バージョンの OS 上に ClickHouse がインストールされている場合に、まれに発生する予告なくクラッシュする問題を修正しました。これにより #15301 が修正されます。あわせて #13098 も修正されます。 #16846alexey-milovidov)。

ClickHouse リリース v20.11.2.1, 2020-11-11

後方互換性のない変更

  • distributed_ddl 設定セクションで、ある profile が指定されていた場合、そのプロファイルがサーバー起動時に default プロファイルの設定を上書きしてしまう可能性がありました。これは修正されており、現在では分散 DDL クエリの設定がグローバルなサーバー設定に影響しないようになっています。 #16635tavplubix)。
  • キー(ソートキー、プライマリキー、パーティションキーなど)で、比較不能なデータ型(AggregateFunction など)の使用を禁止しました。 #16601alesapin)。
  • ANALYZEAST クエリを削除し、enable_debug_queries 設定は非推奨にしました。これは、フル機能版の EXPLAIN クエリの一部となったためです。 #16536Ivan)。
  • 集約関数 boundingRatiorankCorrretentiontimeSeriesGroupSumtimeSeriesGroupRateSumwindowFunnel が誤って大文字小文字を区別しない扱いになっていました。設計どおり、これらの名前は大文字小文字を区別するように変更しました。SQL 標準で定義されている関数、他の DBMS との互換性のために作成された関数、あるいはそれらと類似した関数のみが大文字小文字非依存であるべきです。 #16407alexey-milovidov)。
  • rankCorr 関数がデータ不足の場合に nan を返すようにしました #16124#16135hexiaoting)。
  • バージョン 20.5 より古いバージョンからアップグレードする際に、ローリングアップデートを実行し、クラスタ内に 20.5 以上と 20.5 未満の両方のバージョンが存在する状態で、古いバージョンの ClickHouse ノードを再起動すると、新しいバージョンが存在する状況で古いバージョンが起動することになり、Part ... intersects previous part エラーを引き起こす場合があります。このエラーを防ぐには、まずクラスタ内のすべてのノードに新しい clickhouse-server パッケージをインストールしてから再起動を行ってください(つまり、clickhouse-server を再起動する際には、新しいバージョンで起動するようにします)。

新機能

  • ローカルに存在しないユーザーに対するユーザーディレクトリとして LDAP のサポートを追加しました。 #12736 (Denis Glazachev).
  • 現在実行中のバックグラウンドフェッチを表示する system.replicated_fetches テーブルを追加しました。 #16428 (alesapin).
  • 設定 date_time_output_format を追加しました。#15845Maksim Kita)。
  • ClickHouse に簡易的な Web UI を追加しました。 #16158 (alexey-milovidov)。
  • 長さデリミタなしで単一の protobuf メッセージを一度に読み書きできるようにしました。 #15199 (filimonov).
  • OpenTelemetry の初期サポートを追加しました。ClickHouse は現在、Native および HTTP プロトコル経由で OpenTelemetry の traceparent ヘッダーを受け取り、場合によってはそれらを下流に渡します。実行されたクエリのトレーススパンは、system.opentelemetry_span_log テーブルに保存されます。 #14195 (Alexander Kuzmenkov)。
  • CREATE TABLE クエリのカラムリスト内で主キーを指定できるようにしました。他の SQL 方言との互換性を保つために必要です。 #15823 (Maksim Kita).
  • ORDER BY 句を含む SELECT クエリで OFFSET offset_row_count {ROW | ROWS} FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES} を実装しました。これは LIMIT を指定するための SQL 標準の方法です。 #15855 (hexiaoting)。
  • errorCodeToName 関数 - エラーコードに対応する名前を返します(query_log などを分析する際に有用です)。system.errors テーブル - エラーが何回発生したかを表示します(system_events_show_zero_values の設定に従います)。#16438 (Azat Khuzhin)。
  • untuple 関数を追加しました。これは、名前付きタプルを展開することで SELECT 句に新しいカラムを導入できる特殊な関数です。 #16242 (Nikolai Kochetov, Amos Bird).
  • これにより、クエリパラメータとして識別子を指定できるようになりました。これらのパラメータはテーブルオブジェクトやカラムとして利用できます。 #16594 (Amos Bird)。
  • MergeTree BloomFilter インデックスで big integer 型(UInt256、Int128、Int256)および UUID データ型のサポートを追加しました。big integer 型は実験的な機能です。 #16642 (Maksim Kita).
  • farmFingerprint64 関数(非暗号学的な文字列ハッシュ)を追加しました。 #16570 (Jacob Hayes)。
  • log_queries_min_query_duration_ms を追加しました。この設定値で指定した時間よりも遅いクエリのみが query_log / query_thread_log に記録されます(つまり、MySQL の slow_query_log のようなものです)。 #16529 (Azat Khuzhin).
  • Alpine をベースとした Docker イメージを作成できるようにしました。Ubuntu 20.04 のあらかじめコンパイルされたバイナリと glibc コンポーネントを使用します。 #16479 (filimonov).
  • toUUIDOrNulltoUUIDOrZero キャスト関数を追加しました。 #16337 (Maksim Kita).
  • max_concurrent_queries_for_all_users 設定を追加しました。利用例については #6636 を参照してください。#16154nvartolomei)。
  • clickhouse-client に新しいオプション print_query_id を追加しました。これにより、クライアントが生成した現在のクエリ ID を用いて任意の文字列を組み立てることができます。また、clickhouse-client でクエリ ID をデフォルトで出力するようにしました。 #15809 (Amos Bird).
  • tidlogTrace 関数を追加。これにより #9434 がクローズされます。#15803flynn)。
  • 時間差を人間が読みやすい形式の文字列に整形する関数 formatReadableTimeDelta を追加 ... #15497 (Filipe Caixeta).
  • マルチディスク構成におけるボリューム用に disable_merges オプションを追加しました。 #13956 (Vladimir Chebotarev).

実験的機能

  • 新しい関数 encrypt, aes_encrypt_mysql, decrypt, aes_decrypt_mysql が追加されました。これらの関数は動作が遅いため、実験的な機能として扱われています。#11844 (Vasily Nemkov)。

バグ修正

  • system.distribution_queuedata_path に含まれるパスワードをマスクするよう変更しました。 #16727 (Azat Khuzhin).
  • transform_null_in 設定が有効になっている場合に、複数のカラムやタプルに対する IN 演算子の動作を修正。#15310 を修正。#16722Anton Popov)。
  • クエリ対象のテーブルにサンプリングが定義されていない場合、設定 max_parallel_replicas が正しく動作していませんでした。この変更により #5733 が修正されました。 #16675 (alexey-milovidov).
  • max_threads > 0 かつ ORDER BY 句に式が含まれる場合の optimize_read_in_order/optimize_aggregation_in_order の不具合を修正。 #16637 (Azat Khuzhin).
  • DEFAULT 式の計算において、(実際に発生する可能性はきわめて低いものの)名前の衝突が起こりうる問題がありました。これにより #9359 が修正されました。 #16612 (alexey-milovidov)。
  • query_thread_log.query_duration_ms の単位を修正しました。 #16563 (Azat Khuzhin).
  • MySQL マスター -> MySQL スレーブ -> ClickHouse MaterializeMySQL エンジンという構成で使用する際の不具合を修正しました。MaterializeMySQL は実験的な機能です。#16504 (TCeason)。
  • Decimal を引数に取るよう特別に作られた round 関数の呼び出しが、整数のゼロ除算を引き起こしていました。これにより #13338 が修正されました。 #16451 (alexey-milovidov)。
  • Distributed テーブル向けの DROP TABLE を修正(INSERT とのレースコンディションを解消)。 #16409 (Azat Khuzhin).
  • レプリケーションキュー内の非常に大きなエントリの処理を修正しました。非常に大きなエントリは、テーブル構造が極端に大きい場合(1 MB近い場合)に ALTER クエリで発生することがあります。これにより、#16307 の問題が修正されています。#16332alexey-milovidov)。
  • フィルタリング用のセットが作成されていなかったために戻りデータの一部がドロップされる可能性があった不整合な動作を修正しました。 #16308 (Nikita Mikhaylov).
  • sharding_key における dictGet を修正(および、関数コンテキストが永続的に保持される同様の箇所)。 #16205 (Azat Khuzhin).
  • OPTIMIZE コマンドを実行しようとした際に clickhouse-local で例外が送出される問題を修正しました。#16076 を修正。#16192filimonov)。
  • #15780 の回帰バグを修正しました。例えば indexOf([1, 2, 3], toLowCardinality(1)) は現在は禁止されていますが、本来は許可されるべきです。#16038Mike)。
  • MySQL データベースに関するバグを修正しました。データベースエンジンとして使用されている MySQL サーバーがダウンしている場合、本来は不要であるにもかかわらず、停止しているサーバーからテーブルを取得しようとして一部のクエリが Exception を発生させていました。たとえば、クエリ SELECT ... FROM system.parts は MergeTree テーブルだけを対象に動作すべきであり、MySQL データベースには一切アクセスすべきではありません。 #16032 (Kruglov Pavel).
  • ALTER MODIFY COLUMN ... DEFAULT ... で列の型と互換性のない DEFAULT 値を指定した場合、例外がスローされるようになりました。 #15854 を修正。 #15858alesapin)。
  • IPv4CIDRToRange/IPv6CIDRToRange 関数が const IP 列値を受け取れるように修正しました。 #15856 (vladimir-golovchenko).

改善点

  • INTERVAL '1 hour'INTERVAL 1 HOUR と同等として扱い、Postgres などとの互換性を保つようにしました。これにより #15637 が修正されました。#15978flynn)。
  • CSV、TSV、JSON の各入力フォーマットで、列挙型の値を数値 ID でパースできるようにしました。 #15685 (vivarum)。
  • JBOD アーキテクチャおよび MergeTree ストレージ向けの、より良い読み取りタスクスケジューリング。読み取りスレッド数の下限として機能する新しい設定項目 read_backoff_min_concurrency が追加されました。 #16423 (Amos Bird)。
  • Avro フォーマットに不足していた LowCardinality のサポートを追加。 #16521 (Mike).
  • S3 を nginx サーバーをプロキシとして利用するためのワークアラウンド。現在の nginx は http://domain.com?delete のようなパスが空の URL を受け付けませんが、無改造の aws-sdk-cpp はこの形式の URL を生成します。このコミットではパッチ適用済みの aws-sdk-cpp を使用し、このようなケースではパスに "/" を付与した http://domain.com/?delete のような URL を生成するようにしています。 #16814 (ianton-ru)。
  • 入力データのパースエラーに対する診断を改善し、Cannot read all data エラー発生時に行番号を表示するようにしました。#16644 (alexey-milovidov).
  • minMapmaxMap の挙動をより期待どおりのものにしました。結果から 0 の値をスキップしなくなります。#16087 を修正しました。#16631Ildus Kurbangaliev)。
  • ZooKeeper 設定の実行時更新を改善しました。 #16630 (sundyli).
  • SETTINGS 句は可能な限り早い段階で適用します。これにより、クエリ内でより多くの設定を変更できるようになります。これによって #3178 が解決されました。#16619alexey-milovidov)。
  • event_time_microseconds フィールドは、従来の UInt64 ではなく、Decimal64 で保存されるようになりました。 #16617 (Nikita Mikhaylov)。
  • パラメータ化された関数を APPLY カラムトランスフォーマーで使用できるようになりました。 #16589 (Amos Bird).
  • Atomic データベースにおいて、削除済みテーブルのデータをクリーンアップするバックグラウンドタスクのスケジューリングを改善しました。テーブルに実際のデータディレクトリが存在しない場合、Atomic データベースはテーブルのデータディレクトリへの壊れたシンボリックリンクを作成しません。#16584 (tavplubix)。
  • WITH 句 (CTE) 内のサブクエリは、その名前を使って同じ WITH 句内の先行するサブクエリを参照できるようになりました。 #16575 (Amos Bird).
  • system.query_thread_log に current_database を追加。 #16558 (Azat Khuzhin).
  • 現在のインスタンスで既にコミット済み、または古くなったパーツを detached ディレクトリに取り込めるようにしました。これは、別のクラスタからテーブルを移行し、N 対 1 のシャードマッピングを行う場合に有用です。また、現在の fetchPartition 実装との一貫性も保たれます。 #16538 (Amos Bird).
  • RabbitMQ 向けに複数の改善を行いました:#16263 に関するバグを修正し、イベントループの存続期間を短縮するとともに、より効率的なキュー設定を追加しました。#16426Kseniia Sumarokova)。
  • quantileDeterministic 関数のデバッグアサーションを修正しました。以前のバージョンでは、ネットワーク経由で転送されるデータ量が最大で 2 倍になる可能性がありましたが、バグが存在していたわけではありません。この変更により #15683 が解決されます。 #16410alexey-milovidov)。
  • TablesToDropQueueSize メトリクスを追加しました。これは、バックグラウンドでのデータ削除を待っている削除対象テーブルの数に等しい値です。 #16364 (tavplubix)。
  • クライアントが接続を切断した場合の診断情報が改善されました。以前のバージョンでは、Attempt to read after EOFBroken pipe といった例外がサーバー側にログ出力されていました。新しいバージョンでは、代わりに情報メッセージとして Client has dropped the connection, cancel the query. が出力されます。#16329 (alexey-milovidov).
  • Set/Join テーブルエンジン向けに、total_rows/total_bytes(system.tables 由来)のサポートを追加しました。 #16306 (Azat Khuzhin).
  • 現在は、MergeTree テーブルエンジンファミリーでは ORDER BY なしで PRIMARY KEY を指定できるようになりました。 #15591 をクローズしました。 #16284alesapin)。
  • システムに tmp フォルダーが存在しない場合(chroot 環境や設定ミスなど)、clickhouse-local は現在のディレクトリ内に一時的なサブフォルダーを作成します。#16280 (filimonov)。
  • named tuple などのネストされたデータ型をサブタイプとしてサポートする機能を追加しました。#15587 を修正。#16262Ivan)。
  • DROP DATABASE に対する database_atomic_wait_for_drop_and_detach_synchronously / NO DELAY / SYNC のサポート。 #16127 (Azat Khuzhin).
  • allow_nondeterministic_optimize_skip_unused_shards 設定を追加(シャーディングキーにおいて rand()dictGet() のような非決定的関数を許可するため)。#16105Azat Khuzhin)。
  • HTTP 経由のクエリに対する memory_profiler_stepmax_untracked_memory を修正しました(テストを含む)。これらの値を XML 設定でグローバルに調整しても効果がない問題も修正しました。これらの設定はそもそも適用されず、デフォルト値(4MB)のみが使用されていたためです。HTTP クエリの最もルートとなる ThreadStatus の query_id を修正しました(query_id 読み取り後に QueryScope を初期化することで対応)。#16101Azat Khuzhin)。
  • クラスタ設定の <internal_replication> オプションに関係なく、ALTER ... ON CLUSTER クエリを実行できるようになりました。 #16075 (alesapin)。
  • suggestions の読み込みにより終了時に clickhouse-client がクラッシュする可能性がある、まれな問題を修正しました。これにより #16035 が修正されました。 #16047 (alexey-milovidov)。
  • 複合キーを持つ Redis ディクショナリに対して cache レイアウトのサポートを追加しました。 #15985 (Anton Popov).
  • 誤設定(connections_with_failover_max_tries を 0 に設定した場合)で発生するクエリのハング(無限ループ)の問題を修正。 #15876 (Azat Khuzhin).
  • 一部のログメッセージのレベルを information から debug に変更し、すべてのクエリで information メッセージが表示されないようにしました。これにより #5293 が解決しました。 #15816 (alexey-milovidov)。
  • 誤解を招きかねない結果を避けるために、MemoryTrackingInBackground* メトリクスを削除しました。これにより #15684 が修正されました。#15813alexey-milovidov)。
  • zookeeper-dump-tree ツールに再接続処理を追加。 #15711 (alexey-milovidov).
  • CREATE TABLE table AS table_function(...) クエリで列リストを明示的に指定できるようにしました。#9249#14214 を修正しました。 #14295 (tavplubix).

パフォーマンスの改善

  • SELECT FINAL においてパーティションをまたいだパートのマージを行わないようにしました。#15938 (Kruglov Pavel).
  • -OrNull および -OrDefault 集約関数のパフォーマンスを改善しました。#16661 (alexey-milovidov).
  • quantileMerge のパフォーマンスを改善しました。以前のバージョンでは極端に遅くなっていました。これにより #1463 が解決されます。#16643 (alexey-milovidov).
  • 論理関数のパフォーマンスを少し改善しました。#16347 (alexey-milovidov).
  • MergeTree テーブルエンジンにおけるマージ割り当てのパフォーマンスを改善しました。ユーザーからは見えない変更です。#16191 (alesapin).
  • ハッシュテーブルを事前確保することで、hashed/sparse_hashed 辞書のロードを高速化しました。#15454 (Azat Khuzhin).
  • これまで単純だった count の最適化が、やや複雑なものになりました。パーティション式と完全に一致する述語も最適化できるようになりました。また、max_parallel_replicas > 1 のときに誤った count を返していた #11092 も修正されます。#15074 (Amos Bird).

ビルド/テスト/パッケージングの改善

  • ステートレステスト向けの flaky チェックを追加しました。これにより、マージ前の段階で潜在的に flaky な機能テストを事前に検出できます。 #16238 (alesapin).
  • アマルガメーションではなく、croaring に対して適切なバージョンを使用するようにしました。 #16285 (sundyli).
  • ya.make ビルドシステム (Arcadia) 向けのビルドファイル生成を改善しました。 #16700 (alexey-milovidov).
  • MaterializeMySQL データベースエンジン向けに MySQL BinLog ファイルチェックツールを追加しました。MaterializeMySQL は実験的な機能です。 #16223 (Winter Zhang).
  • 実行可能でないファイルに対する実行ビットをチェックするようにしました。Windows から誤って実行属性付きでコミットしてしまうことがよくあります。 #15843 (alexey-milovidov).
  • ヘッダーファイル内の #pragma once をチェックするようにしました。 #15818 (alexey-milovidov).
  • libhdfs3 内の不正なコードスタイル &vector[idx] を修正しました。これにより libcxx のデバッグビルドが通るようになります。あわせて https://github.com/ClickHouse-Extras/libhdfs3/pull/8 も参照してください。 #15815 (Amos Bird).
  • Mac OS 上の、ある雑多なサンプルツールのビルドを修正しました。なお、CI では Mac OS 上でサンプルはビルドしておらず (ClickHouse バイナリのみをビルドしています)、そのためほぼ確実にまた壊れます。この変更は #15804 を修正します。 #15808 (alexey-milovidov).
  • Sys/V init スクリプトを簡素化しました。 #14135 (alexey-milovidov).
  • db_generatorboost::program_options を追加し、ユーザビリティを向上させました。これにより #15940 が解決されました。 #15973 (Nikita Mikhaylov).

ClickHouse リリース 20.10

ClickHouse リリース v20.10.7.4-stable, 2020-12-24

バグ修正

  • IPv4/IPv6 デュアルスタック環境のマシンにおいて、サーバーから clickhouse-odbc-bridge プロセスに到達できない問題を修正し、さらに、不正なクエリで ODBC 辞書の更新が行われた場合や、その結果クラッシュが発生する場合の問題を修正しました。これにより、おそらく #14489 がクローズされます。 #18278 (Denis Glazachev)。
  • Enum 型と Int 型間のキー比較を修正しました。これにより #17989 が修正されました。#18214 (Amos Bird)。
  • MaterializeMySQL データベースエンジンにおける一意キー変換時のクラッシュを修正しました。これにより #18186#16372#18211 が修正されました(Winter Zhang)。
  • S3 URL の解析処理で発生していた std::out_of_range: basic_string を修正しました。 #18059 (Vladimir Chebotarev).
  • MySQL から ClickHouse への同期時に、一部のテーブルが同期されていなかった問題を修正しました。この問題は、MaterializeMySQL で MySQL のプレフィックスインデックスの変換がサポートされていなかったことが原因でした。この修正により、#15187#17912#17944 が解決されました(Winter Zhang)。
  • topK 集約関数で起こりうるセグメンテーションフォルトを修正しました。これにより #17404 が解決されました。#17845 (Maksim Kita).
  • in_memory_parts_enable_wal が無効になっている場合、WAL からパーツを復元しないようにしました。 #17802 (detailyang)。
  • ClickHouse が MySQL サーバーへの接続再開に失敗する問題を修正しました。 #17681 (Alexander Kazakov).
  • サーバーをデーモンモードで実行しているときに system.stack_trace テーブルが空になる問題を修正。 #17630 (Amos Bird).
  • clickhouse-client を対話モードで複数行クエリとともに使用した際、単一行コメントが誤ってクエリの末尾まで適用されてしまう問題を修正しました。これにより #13654 が解決されました。 #17565 (alexey-milovidov)。
  • ごくまれなケースでサーバーが接続を受け付けなくなる問題を修正しました。 #17542 (alexey-milovidov).
  • 別のレプリカ上で対応する mutation が kill された場合に ALTER クエリがハングする問題を修正しました。これにより #16953 が修正されました。 #17499 (alesapin)。
  • ClickHouse が mark キャッシュのサイズを過小評価していたバグを修正しました。これは、多数の小さな mark を含むファイルが存在する場合に発生する可能性があります。 #17496 (alesapin)。
  • optimize_redundant_functions_in_order_by 設定有効時の ORDER BY の動作を修正しました。 #17471 (Anton Popov)。
  • 誤った最適化により DISTINCT の後に発生する可能性があった重複行を修正しました。#17294 を修正。#17296li chengxiang)。#17439Nikolai Kochetov)。
  • LowCardinality 型を含む JOIN テーブルからの読み取り時に発生していたクラッシュを修正しました。これにより #17228 が解決されます。 #17397 (Nikolai Kochetov)。
  • サブクエリ内に const 列が存在する場合の固定セットインデックスの無効化処理の問題を修正しました。これにより #17246 が解消されます。 #17249 (Amos Bird)。
  • クラッシュを引き起こしていた ColumnConst の比較を修正しました。これにより #17088 が解決しました。 #17135 (Amos Bird)。
  • 非リーダーの ReplicatedMergeTreeTables に対する ON CLUSTER クエリが無期限にハングする可能性のあったバグを修正しました。 #17089 (alesapin)。
  • fuzzBits 関数で fuzzer によって検出されたバグを修正しました。これにより #16980 が解決されます。 #17051 (hexiaoting).
  • LIMIT を含むクエリなど、実行中にキャンセルされる可能性があるリモートクエリに対して、不要なネットワークエラーの発生を回避しました。 #17006 (Azat Khuzhin).
  • double からキャストした際に、128 ビットおよび 256 ビットの大きな整数で誤った結果が返される問題を修正しました。 #16986 (Mike).
  • エラー発生時に format_avro_schema_registry_url の IP アドレスを再解決するようにしました。 #16985 (filimonov).
  • ALTER TABLE ... MODIFY COLUMN ... NewType の実行後、ALTER がまだ完了していない状態で、変更中のカラムに対して WHERE 句を含む SELECT が実行された場合にサーバーがクラッシュする可能性のある問題を修正しました。 #16968 (Amos Bird)。
  • clickhouse-git-import で blame 情報が正しく計算されていませんでした。#16959 (alexey-milovidov)。
  • 単調な関数に対する ORDER BY の最適化を修正しました。これにより #16107 が解決されました。 #16956 (Anton Popov).
  • optimize_aggregators_of_group_by_keys 設定を有効にした状態での GROUP BYJOIN の最適化を修正しました。これにより #12604 が修正されました。 #16951 (Anton Popov).
  • インストールスクリプトは常に設定ディレクトリ内にサブディレクトリを作成する必要があります。これはカスタム設定を使用した Docker ビルドにのみ関係します。 #16936 (filimonov)。
  • ORDER BY を含むクエリで発生する可能性のある Illegal type of argument エラーを修正しました。この修正により #16580 が解決されました。 #16928Nikolai Kochetov)。
  • WriteBufferFromS3 にデータが書き込まれなかった場合、マルチパートアップロードを中止するよう変更しました。 #16840 (Pavel Kovalenko).
  • 引数なしで any を使用した際に発生していたクラッシュを修正しました。これにより、#16803 が解決しました。#16826Amos Bird)。
  • MySQL プロトコル経由の INSERT クエリに対し、影響を受けた行数ではなく常に 0 を返していた ClickHouse の動作を修正しました。これにより #16605 が修正されました。#16715Winter Zhang)。
  • TDigest のサイズが制御不能に増大する問題を修正しました。 #16680 (hrissan)。
  • 集約関数でサフィックス if を使用した際に発生していたリモートクエリの失敗を修正しました。これにより #16574#16231#16610 が修正されました(Winter Zhang)。

ClickHouse リリース v20.10.4.1-stable, 2020-11-13

バグ修正

  • クエリプロファイラが有効で、かつ一部の関数に対して非同期アンワインドテーブルが(おそらく)壊れている glibc バージョンの OS 上に ClickHouse がインストールされている場合に発生する、まれなサイレントクラッシュを修正しました。これにより #15301 が修正されます。また #13098 も修正されます。 #16846alexey-milovidov)。
  • 複数の列およびタプルに対する IN 演算子と、transform_null_in 設定が有効な場合の動作を修正しました。 #15310 を修正します。 #16722Anton Popov)。
  • max_threads>0 かつ ORDER BY に式を含む場合の optimize_read_in_order / optimize_aggregation_in_order の問題を修正しました。 #16637Azat Khuzhin)。
  • 入力から AVRO をパースする際に、型から LowCardinality を取り除くようにしました。 #16188 を修正します。 #16521Mike)。
  • MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine という構成で、MySQL Slave で slave_parallel_worker が有効な場合に、GTID セットを適切に縮小することでメタデータの急激な増加を修正しました。これにより #15951 が修正されます。 #16504TCeason)。
  • Distributed テーブルに対する DROP TABLE(INSERT と競合する可能性がある場合)の問題を修正しました。 #16409Azat Khuzhin)。
  • レプリケーションキュー内の非常に大きなエントリの処理を修正しました。非常に大きなエントリは、テーブル構造が極端に大きい(約 1 MB)場合の ALTER クエリで発生する可能性があります。これにより #16307 が修正されます。 #16332alexey-milovidov)。
  • MySQL データベースに関するバグを修正しました。データベースエンジンとして使用している MySQL サーバーがダウンしているとき、一部のクエリが、不要であるにもかかわらず無効なサーバーからテーブルを取得しようとして例外をスローしていました。たとえば、クエリ SELECT ... FROM system.parts は MergeTree テーブルだけを対象とし、MySQL データベースには一切触れるべきではありません。 #16032Kruglov Pavel)。

改良

  • S3 を nginx サーバーをプロキシとして使用する場合のワークアラウンドを追加しました。Nginx は現在、http://domain.com?delete のようにパスが空の URL を受け付けませんが、標準の aws-sdk-cpp はこの形式の URL を生成します。このコミットではパッチ適用済みの aws-sdk-cpp バージョンを使用し、このようなケースでは http://domain.com/?delete のように、パスとして "/" を持つ URL を生成します。 #16813ianton-ru)。

ClickHouse リリース v20.10.3.30, 2020-10-28

後方互換性のない変更

  • multiple_joins_rewriter_version を廃止し、最初のバージョンの joins rewriter を削除しました。#15472 (Artem Zuikov)。
  • format_regexp_escaping_rule 設定(Regexp フォーマットに関連)のデフォルト値を Raw(サブパターン全体を 1 つの値として読み取ることを意味します)に変更し、ユーザーが期待する挙動により近づけました。#15426 (alexey-milovidov)。
  • SQL で入れ子の複数行コメント /* comment /* comment */ */ のサポートを追加しました。これは SQL 標準に準拠しています。#14655 (alexey-milovidov)。
  • MergeTree の設定(max_replicated_merges_with_ttl_in_queue および max_number_of_merges_with_ttl_in_pool)を追加し、バックグラウンドプールおよびレプリケーションキューにおける TTL 付きマージの数を制御できるようにしました。この変更により、削除用 TTL を使用している場合に限り、古いバージョンとの互換性が失われます。それ以外の場合、レプリケーションの互換性は保たれます。すべてのシャードレプリカを一度にアップデートするか、すべてのレプリカのアップデートが完了するまで SYSTEM STOP TTL MERGES を実行することで、非互換性の問題を回避できます。レプリケーションキューに非互換なエントリが入った場合は、まず SYSTEM STOP TTL MERGES を実行し、その後、非互換な TTL マージが割り当てられたパーティションに対して ALTER TABLE ... DETACH PARTITION ... を実行してください。そのパーティションは単一のレプリカで再度アタッチします。#14490 (alesapin)。
  • 20.5 より古いバージョンからアップグレードする際にローリングアップデートを実施しており、かつクラスタ内に 20.5 以上のバージョンと 20.5 未満のバージョンが混在している場合、新しいバージョンが存在する状態で古いバージョンの ClickHouse ノードを再起動して古いバージョンが起動すると、Part ... intersects previous part エラーが発生する可能性があります。このエラーを防ぐには、まずクラスタ内のすべてのノードに新しい clickhouse-server パッケージをインストールし、その後で再起動を行ってください(つまり、clickhouse-server を再起動したときに、新しいバージョンで起動するようにします)。

新機能

  • バックグラウンドでのデータ再圧縮。MergeTree テーブルエンジンファミリーで TTL ... RECOMPRESS codec_name を指定できるようにしました。 #14494 (alesapin).
  • 並列クォーラム挿入を追加しました。これにより #15601 が解決されました。 #15601 (Latysheva Alexandra)。
  • データの永続性をさらに強固に保証するための追加設定。レプリケーションを行わない構成で有用。 #11948 (Anton Popov).
  • 重複したブロックが、ローカルには存在しない(レプリカからまだフェッチされていない)レプリカに書き込まれた場合でも、それを無視せずローカルにも書き込み、レプリケーションが正常に成功した場合と同じ効果が得られるようにします。 #11684 (alexey-milovidov).
  • 現在、クエリコンテキスト内で名前付きサブクエリを導入するために WITH <identifier> AS (subquery) ... をサポートしました。これにより #2416 および #4967 がクローズされました。#14771Amos Bird)。
  • enable_global_with_statement 設定を導入しました。この設定により、最初の SELECT の WITH 句が同じレベルの他の SELECT クエリへ伝播し、さらに WITH 句内のエイリアスをサブクエリから参照可能になります。 #15451 (Amos Bird)。
  • クラスタ間クエリ実行のセキュリティを強化(initial_user を現在のクエリユーザーとして扱うように変更)。 #13156 (Azat Khuzhin). #15551 (Azat Khuzhin).
  • カラムプロパティおよびテーブルの TTL を削除できるようにしました。ALTER TABLE MODIFY COLUMN col_name REMOVE what_to_removeALTER TABLE REMOVE TTL というクエリを追加しました。どちらの操作も軽量で、メタデータレベルで実行されます。 #14742 (alesapin).
  • フォーマット RawBLOB を追加しました。これは、エスケープや区切り文字を一切使用せずに単一の値を入出力するためのものです。これにより #15349 が解決されました。 #15364 (alexey-milovidov)。
  • ビッグエンディアンのバイト列を UUID に変換できる reinterpretAsUUID 関数を追加しました。 #15480 (Alexander Kuzmenkov).
  • force_data_skipping_indices 設定を実装。 #15642 (Azat Khuzhin).
  • Pretty 形式で結果を行番号付きで出力するための設定 output_format_pretty_row_numbers を追加しました。これにより #15350 が解決されました。#15443flynn)。
  • クエリ難読化ツールを追加しました。これにより、より多くのクエリを共有してより良いテストを行えるようになります。これにより #15268 がクローズされました。#15321alexey-milovidov)。
  • テーブル関数 null('structure') を追加しました。 #14797 (vxider).
  • formatReadableQuantity 関数を追加しました。これは、大きな数値を人が読みやすい形式にするのに役立ちます。 #14725 (Artem Hnilov)。
  • 改行で区切られた複数行を受け取り、各行全体を 1 つの String フィールドとしてパースするフォーマット LineAsString を追加。#14703 (Nikita Mikhaylov), #13846 (hexiaoting).
  • 文字列配列としてデータを出力する JSONStrings フォーマットを追加しました。 #14333 (hcz).
  • Regexp フォーマットに「Raw」列フォーマットのサポートを追加しました。これにより、エスケープ規則を一切適用せずに、部分パターンをそのまま抽出できます。 #15363 (alexey-milovidov).
  • TSV 出力形式における NULL 表現を設定可能にしました。これは設定 output_format_tsv_null_representation によって制御され、デフォルトは \N です。これにより #9375 が解決されました。なお、この設定は出力形式にのみ影響し、TSV 入力形式でサポートされる NULL 表現は \N のみです。#14586Kruglov Pavel)。
  • MaterializeMySQL で Decimal データ型をサポート。MaterializeMySQL は実験的機能です。 #14535 (Winter Zhang).
  • 新機能を追加:SHOW DATABASES LIKE 'xxx'#14521hexiaoting)。
  • 任意の Git リポジトリをサンプルデータセットとして ClickHouse にインポートするためのスクリプトを追加しました。 #14471 (alexey-milovidov).
  • これからは、INSERT ステートメントで、カラムリスト内でカラムトランスフォーマーと組み合わせてアスタリスク(およびそのバリエーション)を使用できるようになりました。 #14453 (Amos Bird).
  • 分散クエリに対して、リーフノードで読み取る最大行数/バイト数を制限するための新しいクエリ複雑度制限設定 max_rows_to_read_leafmax_bytes_to_read_leaf を追加しました。制限はローカル読み取りにのみ適用され、ルートノードでの最終マージ処理は 除外 されます。 #14221 (Roman Khavronenko)。
  • 設定ファイルの <replicated_merge_tree> セクションで ReplicatedMergeTree* ストレージ用の設定をユーザーが指定できるようにしました。これは <merge_tree> セクションと同様に動作します。ReplicatedMergeTree* ストレージでは、<merge_tree><replicated_merge_tree> の両方のセクションで指定された設定が併せて適用されますが、<replicated_merge_tree> の設定の方が優先されます。system.replicated_merge_tree_settings テーブルを追加しました。#13573 (Amos Bird)。
  • mapPopulateSeries 関数を追加しました。 #13166 (Ildus Kurbangaliev).
  • MySQL の decimal 型(ClickHouse の Decimal として)およびサブ秒精度を持つ datetime 型(DateTime64 として)をサポートしました。 #11512 (Vasily Nemkov)。
  • event_time_microseconds フィールドを system.text_logsystem.trace_logsystem.query_log および system.query_thread_log テーブルに追加しました。 #14760 (Bharat Nallan)。
  • system.asynchronous_metric_log および system.metric_log テーブルに event_time_microseconds 列を追加。 #14514 (Bharat Nallan).
  • system.query_log および system.query_thread_log テーブルに query_start_time_microseconds フィールドを追加。 #14252 (Bharat Nallan)。

不具合修正

  • メモリが上限に関係なく過剰に確保されてしまうケースを修正しました。これにより #14560 がクローズされます。 #16206 (alexey-milovidov).
  • executable 辞書のソースがハングする問題を修正しました。以前のバージョンでは、いくつかのフォーマット(例:JSONEachRow)を使用した場合、子プロセスが何らかの出力を行うまでデータが子プロセスに供給されませんでした。この修正により #1697 および #2455 が解決します。#14525alexey-milovidov)。
  • 関数 dictGet 内で例外が発生した場合の二重解放を修正しました。これは、辞書のロード時にエラーが発生した場合に起こり得ました。 #16429 (Nikolai Kochetov).
  • GROUP BYTOTALS / ROLLUP / CUBE 修飾子と、GROUP BY キーに対する min / max 関数の組み合わせを修正。 #16393 を修正。 #16397Anton Popov)。
  • prefer_localhost_replica=0 および internal_replication を使用する非同期 Distributed INSERT を修正。 #16358 (Azat Khuzhin).
  • TwoLevelStringHashTable の実装において、メモリリークを引き起こす可能性のある深刻なバグを修正しました。 #16264 (Amos Bird).
  • lambda 内での誤った集約により特定のケースで発生するセグフォルトを修正。 #16082 (Anton Popov).
  • ReplicatedVersionedCollapsingMergeTree に対する ALTER MODIFY ... ORDER BY クエリがハングする問題を修正。これにより #15980 が解決されます。 #16011 (alesapin)。
  • MaterializeMySQL(実験的機能):照合順序名と文字セット名のパーサーを修正し、文字列型での length = 0 をサポートしました。 #16008 (Winter Zhang)。
  • 複雑なキーを持つディクショナリで direct レイアウトを使用できるようにしました。 #16007 (Anton Popov).
  • 一定期間アイドル状態になった後にレプリケーションエラーが発生した場合に、レプリカが 5~10 分間ハングする問題を防ぐようにしました。#15987 (filimonov).
  • Atomic データベースエンジンにおいて、MaterializedView への挿入またはそこからの選択を行っている最中に対象テーブルを同時に削除するとまれに発生していたセグメンテーションフォルトを修正しました。 #15984 (tavplubix).
  • 設定プロファイルの解析におけるあいまいさを修正しました。CREATE USER ... SETTINGS profile readonly は、readonly 制約付きの設定 profile を使用するのではなく、readonly という名前のプロファイルを使用しているものとして解釈されるようになりました。これにより #15628 が修正されました。#15982Vitaly Baranov)。
  • MaterializeMySQL(実験的機能): データベースの作成に失敗した際にクラッシュする問題を修正。 #15954 (Winter Zhang).
  • Atomic データベースエンジンにおいて、テーブルが並行してリネームされている場合に DROP TABLE IF EXISTSTable ... does not exist エラーで失敗する問題を修正しました。複数テーブルに対していくつかの DDL クエリ(DROP DATABASERENAME TABLE など)を並行実行した際にまれに発生するデッドロックを修正しました。DROP/DETACH TABLE を並行して実行しているときに DROP/DETACH DATABASETable ... does not exist で失敗する問題を修正しました。#15934 (tavplubix).
  • WHEREPREWHEREGLOBAL IN を含むクエリを Distributed テーブルに対して実行した場合に、結果が誤って空になってしまう問題を修正しました。#15792 の修正。#15933Nikolai Kochetov)。
  • #12513 を修正: クエリを再解析した際に、同じエイリアスを持つ差分式が発生する問題。 #15886 (Winter Zhang)。
  • RBAC 実装において、極めてまれに発生しうるデッドロックを修正。 #15875 (Vitaly Baranov)。
  • ALTER MODIFY COLUMN クエリの実行後に実行された SELECT ... ORDER BY DESC クエリで Block structure mismatch という例外が発生していた問題を修正しました。#15800 を修正します。#15852alesapin)。
  • MaterializeMySQL(実験的機能):select count() の不正確な結果を修正。#15767 (tavplubix)。
  • 仮想カラムのみを選択するクエリに関するいくつかのケースを修正しました。以前は Not found column _nothing in block という例外がスローされることがありました。これにより #12298 が修正されました。#15756Anton Popov)。
  • Atomic データベースで inner テーブルを持つマテリアライズドビューを DROP する処理を修正しました(MV の inner テーブルに対する再帰的な DROP TABLE によりワーカースレッドがハングし、その結果として後続のすべての DROP TABLE がハングする問題)。 #15743 (Azat Khuzhin).
  • 最初の試行で失敗した場合に、パーツを別のディスク/ボリュームへ移動できるようになりました。 #15723 (Pavel Kovalenko).
  • ARRAY JOIN を含む MV 向けクエリの場合に、MATERIALIZED VIEW への挿入時に発生することがある Cannot find column エラーを修正しました。 #15717 (Nikolai Kochetov).
  • max_replicated_logs_to_keep 設定のデフォルト値が低すぎた問題を修正しました。この問題により、レプリカが頻繁に失われる可能性がありました。クローン元として最新のレプリカを選択することで、失われたレプリカの復旧プロセスを改善しました。また、失われたレプリカから古いパーツを削除せず、代わりにデタッチするようにしました。 #15701 (tavplubix).
  • MySQL を利用する辞書およびテーブルで発生するまれなレースコンディションを修正。 #15686 (alesapin).
  • AMQP-CPP における無害なレースコンディションを修正。 #15667 (alesapin)。
  • Buffer テーブルから、宛先テーブルと構造が異なるテーブルを読み取る際に発生していたエラー Cannot add simple transform to empty Pipe を修正しました。この問題は、クエリに対して宛先テーブルが空の結果を返す場合に発生する可能性がありました。 #15529 を修正。 #15662Nikolai Kochetov)。
  • S3 を使用した MergeTree への挿入時のエラー処理を適切化。S3 上の MergeTree は実験的機能です。 #15657 (Pavel Kovalenko)。
  • S3 テーブル関数のバグを修正しました:URL から取得したリージョンが S3 クライアントの設定に反映されていませんでした。 #15646 (Vladimir Chebotarev)。
  • クエリプランの ReadFromStorage ステップにおけるリソースの解放順序を修正しました。まれにクラッシュを引き起こす可能性がありました。#15610 に関連している可能性があります。#15645Nikolai Kochetov)。
  • 読み取り専用テーブルのデタッチ時に ReadonlyReplica メトリクスを減算するようにしました。#15592 (sundyli).
  • VALUESLIMIT、または IN 演算子の右辺で JSON* 関数の結果を使用した場合に発生していた Element ... is not a constant expression エラーの問題を修正しました。#15589 (tavplubix).
  • 例外発生時にクエリがより速く終了するようになりました。例外が発生した場合には、リモートレプリカでの実行をキャンセルします。 #15578 (Azat Khuzhin).
  • エラーメッセージ Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call が発生しないようにします。これにより #15541 が修正されます。#15557alexey-milovidov)。
  • イニシエータにデータベースが存在しない場合に、IN を含むクエリおよび Distributed テーブルで発生する Database <db> does not exist. エラーを修正。 #15538 (Artem Zuikov).
  • Mutation が、MOVEREPLACE PARTITION の後、またはまれに DETACHDROP PARTITION の後に、存在しないパーツを待ち続けてハングすることがありました。この問題は修正されました。 #15537 (tavplubix).
  • LIKE で同じパターンを実行した後に、ILIKE 演算子が大文字小文字を区別しない動作をしなくなる不具合を修正。 #15536 (alesapin).
  • データに存在しない列を選択した際に、その列が同様にデータに存在しない他の列に依存している場合に発生する Missing columns エラーを修正。#15530 の不具合を修正。#15532alesapin)。
  • 単一のパラメータが ReplicatedMergeTree に渡された場合に、それを無視するのではなくエラーを発生させるようにしました。 #15516 (nvartolomei).
  • DDLWorker におけるイベントサブスクリプションのバグを修正しました。このバグにより、まれに ON CLUSTER でクエリがハングする可能性がありました。このバグは #13450 で導入されたものです。#15477alesapin)。
  • boundingRatio 集約関数の第 2 引数の型が不正な場合に、適切なエラーを返すようにしました。 #15407 (detailyang).
  • #15365 の修正: MySQL エンジン使用のデータベースを ATTACH すると、クエリコンテキストがないために例外がスローされる問題を修正。#15384Winter Zhang)。
  • SELECT クエリ内でカラムトランスフォーマーが複数回出現する場合の挙動を修正しました。 #15378 (Amos Bird)。
  • S3 ストレージでの圧縮を修正しました。 #15376 (Vladimir Chebotarev).
  • SELECT toStartOfDay(today()) のようなクエリが、time_zone 引数が空であるとエラーになって失敗するバグを修正。 #15319 (Bharat Nallan)。
  • MergeTree テーブルのリネーム処理とバックグラウンドでのクリーンアップ処理の間に発生するレースコンディションを修正。 #15304 (alesapin).
  • システムログが有効な状態でのサーバー起動時にまれに発生するレースコンディションを修正しました。 #15300 (alesapin).
  • MySQL エンジンを使用する同一テーブルへのサブクエリが多数含まれるクエリがハングする問題を修正しました。以前は、1 つのクエリ内で同じ MySQL テーブルへのサブクエリが 16 個を超えると、ハングしたままになっていました。 #15299 (Anton Popov).
  • QueryLog における MSan の報告を修正。memory_usage フィールドで未初期化メモリが使用されていました。#15258 (alexey-milovidov).
  • Merge テーブルに対する JOIN を含むクエリで、GROUP BY 句で発生する 'Unknown identifier' エラーを修正。 #15242 (Artem Zuikov).
  • LowCardinality 型で joinGet を使用した際にインスタンスがクラッシュする不具合を修正しました。これにより #15214 が解決されます。#15220Amos Bird)。
  • テーブルエンジン Buffer において、ALTER クエリ実行後に新しいスキーマのデータを Buffer に挿入できなくなるバグを修正しました。 #15117 を解決。 #15192alesapin)。
  • MySQL 列定義パケット内の Decimal フィールドのサイズを調整。 #15152 (maqroll).
  • join_algorithm='auto' における Data compressed with different methods エラーを修正。join_algorithm='partial_merge' の場合、左テーブルの結合キーの型として LowCardinality を保持するようにしました。 #15088 (Artem Zuikov).
  • jemalloc を更新し、アフィニティマスク付きの percpu_arena を修正しました。 #15035 (Azat Khuzhin). #14957 (Azat Khuzhin).
  • すでに String と FixedString の間ではパディング付き比較を使用しています(https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333)。この PR は同じロジックをフィールド比較にも適用し、FixedString を主キーとして使用する際の挙動を正しくします。これにより #14908 が解決されます。#15033Amos Bird)。
  • 関数 bar が意図的に細工された特定の引数で呼び出された場合、バッファオーバーフローが発生する可能性がありました。これにより #13926 が解決されました。 #15028alexey-milovidov)。
  • Mac OS 上の Docker 環境で clickhouse-server を実行している際に、Atomic データベースで DDL クエリを実行すると発生していた Cannot rename ... errno: 22, strerror: Invalid argument エラーを修正しました。 #15024 (tavplubix).
  • メモリ制限を超過し、HashJoin から MergeJoin に切り替える必要がある場合に、RIGHT または FULL JOIN で join_algorith='auto' が指定されているとクラッシュする問題を修正しました。 #15002 (Artem Zuikov).
  • これで、number_of_free_entries_in_pool_to_execute_mutationnumber_of_free_entries_in_pool_to_lower_max_size_of_merge の設定値を background_pool_size と同じ値に設定できるようになりました。 #14975 (alesapin)。
  • サブクエリに finalizeAggregation 関数が含まれている場合に述語プッシュダウンが正しく動作しない問題を修正。 #14847 を解決。 #14937filimonov)。
  • 論理コアごとの CPU 周波数を system.asynchronous_metrics に公開するようにしました。これにより #14923 が修正されました。#14924Alexander Kuzmenkov)。
  • MaterializeMySQL(実験的な機能):.metadata.tmp File exists エラーを修正。 #14898Winter Zhang)。
  • extractAllGroups 関数の一部の呼び出しで「Memory limit exceeded」エラーが発生する可能性があった問題を修正しました。これにより #13383 が解決されました。#14889alexey-milovidov)。
  • ファイルディスクリプタを使用した StorageFile への INSERT を試みた際に発生する SIGSEGV を修正。 #14887 (Azat Khuzhin).
  • cache 辞書で発生するセグメンテーションフォールトを修正しました #14837#14879Nikita Mikhaylov)。
  • MaterializeMySQL(実験的機能):MySQL の binlog イベントのパース処理において、MaterializeMySQL データベースエンジンで Attempt to read after eof および Packet payload is not fully read が発生していた原因のバグを修正しました。#14852 (Winter Zhang)。
  • SELECT クエリにおいて、参照しているカラムが DEFAULT 式を持ち、その式が、同様に DEFAULT を持つ別のカラムに依存しているが、そのカラムがクエリ内に含まれずディスク上にも存在しない場合に、まれに発生するエラーを修正しました。#14531 の一部を修正します。#14845alesapin)。
  • from_zk インクルードオプションを使用して設定ファイルを ZK から取得する必要がある場合に、サーバーが起動時に ZooKeeper との通信中にハングする可能性があった問題を修正しました。これにより #14814 が解決されました。#14843Alexander Kuzmenkov)。
  • 符号付き型に対する Int -> Int の縮小キャストにおける単調性の誤検出を修正しました。これにより、誤ったクエリ結果につながる可能性がありました。このバグは #14513 で明らかになりました。#14783Amos Bird)。
  • Replace 列トランスフォーマは、識別子をクローンした AST で置き換える必要があります。これにより #14695 が解決されます。#14734 (Amos Bird)。
  • ALTER ... MODIFY QUERY を実行した際、マテリアライズドビューのメタデータでデフォルトのデータベース名が欠落していた問題を修正しました。 #14664 (tavplubix).
  • ALTER UPDATE のミューテーションで、代入式に Nullable カラムがあり、定数値(UPDATE x = 42 のような)を設定した場合に、カラムに誤った値が入る、またはセグメンテーションフォルトが発生するバグを修正。#13634#14045 を修正。#14646alesapin)。
  • 結果列の Decimal スケールが誤っていたために、Decimal の乗算結果が不正になっていた問題を修正。 #14603 (Artem Zuikov).
  • NullableLowCardinality 型に対する関数 has を修正。 #14591 (Mike).
  • StorageReplicatedMergeTree エンジンの CreateQuery 実行中に発生した ZooKeeper の例外の後で、データディレクトリをクリーンアップするようにしました。 #14563 (Bharat Nallan).
  • 非常に大きなパラメータによるオーバーフローで発生する可能性があった、-Resample コンビネータ付き関数のまれなセグメンテーションフォルトを修正しました。 #14562 (Anton Popov).
  • Nullable(String) を Enum 型に変換する際のバグを修正しました。これは #12745 によって導入されたもので、この修正により #14435 が解決されます。 #14530 (Amos Bird)。
  • 誤っていた Nullable カラムのソート順を修正しました。これにより #14344 が解決されました。 #14495 (Nikita Mikhaylov)。
  • currentDatabase() 関数を ON CLUSTER DDL クエリで使用できない問題を修正。 #14211 (Winter Zhang)。
  • MaterializeMySQL(実験的な機能):MaterializeMySQL データベースエンジンで発生していた Packet payload is not fully read エラーを修正しました。 #14696BohuTANG)。

改善

  • 新しく作成されるデータベースでは、デフォルトで Atomic データベースエンジンが有効になります。 #15003 (tavplubix).
  • サブタイプを持つカラムに対して、DeltaT64 などの専用コーデックを指定できるようにしました。#12551 を実装し、#11397#4609 を修正しました。 #15089alesapin)。
  • ZooKeeper 設定の動的リロード。 #14678 (sundyli).
  • これにより、クラスタ設定の <internal_replication> の設定に関係なく、ALTER ... ON CLUSTER クエリを実行できるようになりました。 #16075 (alesapin).
  • joinGet が複数キーでのルックアップをサポートするようになりました。 #12418 に続く変更です。 #13015 (Amos Bird)。
  • Atomic データベースに対して NO DELAY または SYNC が指定されている場合、DROP/DETACH TABLE が実際に完了するまで待機するようになりました。 #15448 (tavplubix).
  • ALTER クエリを使用して、VersionedCollapsingMergeTree のバージョン列のデータ型を変更できるようになりました。 #15442 (alesapin)。
  • レプリケーテッドテーブル作成時の zookeeper_path において、{database}{table}{uuid} マクロを展開するようにしました。サーバー再起動後に zookeeper_path が不正になる可能性がある場合には、RENAME TABLE を許可しないようにしました。#6917 を修正。#15348tavplubix)。
  • 関数 now はタイムゾーンを指定する引数を受け取れるようになりました。これにより 15264 がクローズされました。 #15285 (flynn)。
  • /docker-entrypoint-initdb.d/ 内のすべてのスクリプトの実行が完了するまで、ClickHouse サーバーへの接続を許可しないようにしました。 #15244 (Aleksei Kozharin).
  • EXPLAIN PLAN クエリに optimize 設定を追加しました。有効な場合、クエリプランレベルの最適化が適用されます。デフォルトで有効になっています。 #15201 (Nikolai Kochetov).
  • CAST の引数の数が不正な場合に適切な例外メッセージを出力するようにしました。これにより #13992 が解決しました。 #15029alexey-milovidov)。
  • データパーツ挿入時に TTL move を無効化するオプションを追加。 #15000 (Pavel Kovalenko).
  • ミューテーションを実行する際にキー制約を無視します。このプルリクエストがない場合、force_index_by_date = 1 または force_primary_key = 1 のときにミューテーションを実行することはできません。#14973Amos Bird)。
  • ZooKeeper セッションの有効期限切れが原因で以前の DROP 試行が失敗していた場合でも、Replicated テーブルを DROP できるようにしました。これにより #11891 が修正されました。 #14926 (alexey-milovidov)。
  • 分散テーブルに対して SETTINGS を伴う SELECT を実行した際に、本来不要な設定制約違反が発生する問題を修正しました。 #14876 (Amos Bird).
  • load_balancing_first_offset というクエリ設定を追加し、最初のレプリカを明示的に指定できるようにしました。これは FIRST_OR_RANDOM ロードバランシング戦略と併用され、レプリカ間のワークロードを制御できます。 #14867 (Amos Bird)。
  • EXPLAIN の結果に SETJOIN のサブクエリを表示するようにしました。 #14856 (Nikolai Kochetov).
  • ストレージエンジン Distributed でマルチボリュームのストレージ構成を使用できるようにしました。 #14839 (Pavel Kovalenko).
  • 同じ timespec から query_start_timequery_start_time_microseconds を生成します。#14831Bharat Nallan)。
  • StorageJoinStorageSet の永続化を無効化する機能の追加。この機能は disable_set_and_join_persistency を設定することで制御されます。また、この PR は issue #6318 を解決しました。#14776 (vxider)。
  • これで、COLUMNS を使ってカラムのリストを包み、その後でカラムトランスフォーマーを適用できるようになりました。 #14775 (Amos Bird)。
  • マージ処理の調査を改善するため、system.merges テーブルに merge_algorithm を追加しました。 #14705 (Amos Bird).
  • ZooKeeper の exists watch が原因となる可能性のあるメモリリークを修正。#14693 (hustnn)。
  • 分散 DDL の並列実行を可能にしました。 #14684 (Azat Khuzhin).
  • QueryMemoryLimitExceeded イベントカウンターを追加しました。これにより #14589 がクローズされました。#14647fastio)。
  • クエリフォーマットの末尾にある空白をいくつか修正。 #14595 (Azat Khuzhin).
  • ClickHouse は partition exprkey expr を別のものとして扱います。partition expr は関連するカラムを含む minmax インデックスを構築するために使用され、一方 primary key expr は式として保存されます。ユーザーはしばしば、partition by i / 1000 のように、より粗い粒度でテーブルをパーティション化することがあります。しかし、二項演算子は単調ではなく、この PR ではその問題の修正を試みています。これは他のユースケースにも有益となる可能性があります。#14513Amos Bird)。
  • DiskS3 のアクセスチェックをスキップできるオプションを追加しました。s3 ディスクは実験的な機能です。#14497Pavel Kovalenko)。
  • 進行中の S3 リクエストがある場合に、サーバーのシャットダウン処理を高速化しました。 #14496 (Pavel Kovalenko)。
  • SYSTEM RELOAD CONFIG は再読み込みに失敗した場合、例外をスローし、以前の users.xml を引き続き使用するようになりました。バックグラウンドでの定期的な再読み込み処理も、再読み込みに失敗した場合には以前の users.xml をそのまま使用し続けます。 #14492 (Vitaly Baranov).
  • clickhouse-client のスクリプトモードにおいて、VALUES 形式でインラインデータを含む INSERT ステートメントに対し、改行に加えてセミコロンもデータ終端文字としてサポートしました。#12288 をクローズしました。 #13192Alexander Kuzmenkov)。
  • コンパクトパーツでカスタムコーデックをサポートしました。 #12183 (Anton Popov).

パフォーマンスの改善

  • 小さなパーツに対して、デフォルトでコンパクトパーツを有効にしました。これにより、頻繁な挿入処理をより効率的に(4〜100倍高速に)処理できるようになります。 #11913 (alexey-milovidov).
  • quantileTDigest のパフォーマンスを改善しました。これにより #2668 が修正されます。 #15542 (Kruglov Pavel).
  • AggregatingInOrderTransform/optimize_aggregation_in_order におけるメモリ使用量を大幅に削減しました。 #15543 (Azat Khuzhin).
  • 256ビット乗算を高速化しました。 #15418 (Artem Zuikov).
  • ワイド整数のベース型として (u)int64_t を使用することで、256ビット型のパフォーマンスを改善しました。従来のワイド整数はベース型として 8ビット型を使用していました。 #14859 (Artem Zuikov).
  • 垂直マージの一時データを保存する際に、一時ディスクを明示的に使用するようにしました。 #15639 (Grigory Pervakov).
  • ループ内で複数回の DeleteObject を呼び出す代わりに、1つの S3 DeleteObjects リクエストを使用するようにしました。機能上の変更は一切なく、integration/test_log_family_s3 など既存のテストでカバーされています。 #15238 (ianton-ru).
  • DateTime <op> DateTime が誤って遅い汎用実装を選択していた問題を修正しました。これにより #15153 が修正されます。 #15178 (Amos Bird).
  • FixedString 型の GROUP BY キーのパフォーマンスを改善しました。 #15034 (Amos Bird).
  • clickhouse-server を起動する際、コードセグメントのみを mlock するようにしました。以前のバージョンでは、デバッグ情報を含むすべてのマップ済み領域がメモリにロックされていました。デバッグ情報は通常別ファイルに分割されますが、そうでない場合、メモリ使用量が 2〜3 GiB 増加する原因になっていました。 #14929 (alexey-milovidov).
  • Link Time Optimization により、ClickHouse バイナリのサイズが小さくなりました。

ビルド/テスト/パッケージングの改善

  • 本番向け ClickHouse のビルドには、clang-11 を使用するようになりました。 #15239 (alesapin)。
  • 現在、CIでは clang-11 を使用して ClickHouse をビルドしています。#14846 (alesapin)。
  • バイナリビルド(Linux、Darwin、AArch64、FreeBSD)で使用するコンパイラを clang-11 に切り替えました。 #15622 (Ilya Yatsishin).
  • これですべてのテスト用イメージが llvm-symbolizer-11 を使用するようになりました。#15069 (alesapin)。
  • llvm-11 を使用してビルドできるようにしました。 #15366 (alexey-milovidov).
  • clang-tidy-10 から clang-tidy-11 に切り替えました。 #14922 (alexey-milovidov).
  • LLVM の experimental pass manager をデフォルトで使用するようにしました。#15608 (Danila Kutenin).
  • どの C++ 翻訳単位に対しても、ビルド時間を 10 分以内、メモリ使用量を 10 GB 以内に制限しました。これにより #14925 が修正されました。#15060alexey-milovidov)。
  • テスト実行とプロファイル実行を分離し、パフォーマンス テストをより安定し代表性の高いものにします。 #15027 (alexey-milovidov).
  • パフォーマンス テストの信頼性を高めるための変更です。madvise を用いてプロセスの実行可能メモリを動的に再マッピングし、Transparent Huge Pages を使用することで実現しています。これにより、パフォーマンス テストの不安定性の主な原因である iTLB ミスの回数を減らすことができます。 #14685 (alexey-milovidov)。
  • python3 へ変換。これにより #14886 をクローズします。#15007Azat Khuzhin)。
  • サーバーが応答しなかった場合は、機能テストを即座に失敗させるようにしました。これにより #15262 がクローズされました。 #15267 (alexey-milovidov)。
  • 設定ファイルなしで AArch64 版の clickhouse-server を実行できるようにしました。これにより #15174 への対応が容易になります。 #15266 (alexey-milovidov).
  • CI の Docker イメージを改善: ZooKeeper を廃止し、テスト用設定のインストールを単一のスクリプトに統一しました。 #15215 (alesapin)。
  • 高速テストスクリプトでの CMake オプションの引き渡しを修正しました。#14711 のエラーを解消しました。#15155 (alesapin)。
  • 1回のコマンド実行でハードウェアベンチマークを行うスクリプトを追加しました。 #15115 (alexey-milovidov).
  • 大きなテスト test_dictionaries_all_layouts_and_sources を、いくつかの小さなテストに分割しました。 #15110 (Nikita Mikhaylov)。
  • AVX-512 対応サーバー上での base64 に関する MSan レポートを修正しました。これにより #14006 が解決されます。#15030alexey-milovidov)。
  • すべての integration テスト用 *.py ファイルのコードを再フォーマットし、クリーンアップ。 #14864 (Bharat Nallan).
  • CI で見つかった MaterializeMySQL の空トランザクションに起因する不安定なテストケースを修正しました。 #14854 (Winter Zhang).
  • ビルドを少し高速化しました。#14808alexey-milovidov)。
  • 未使用のヘッダーを削除してビルドを少し高速化。 #14714 (alexey-milovidov).
  • OSX におけるビルド失敗を修正。 #14761 (Winter Zhang).
  • OS 上で ccache が見つかった場合、CMake でデフォルト有効化します。 #14575 (alesapin).
  • ClickHouse リポジトリで CI ビルドの設定を制御できるようにしました。 #14547 (alesapin).
  • CMake ファイルでは: - いくつかのオプション説明の一部を、該当オプションの直前にあるコメントへ移動。 - option のデフォルト値において、0 を OFF、1 を ON に置き換え。 - オプションにいくつかの説明とドキュメントへのリンクを追加。 - FUZZER オプションを置き換え(同じ機能を有効化する ENABLE_FUZZING オプションが別に存在するため)。 - ENABLE_TESTS があるため、ENABLE_GTEST_LIBRARY オプションを削除。PR の詳細な説明については次を参照: #14711 (Mike)。
  • バイナリを少し小さくしました(デバッグ版では約 50 MB の削減)。#14555Artem Zuikov)。
  • ConfigProcessor でファイルパスを連結する際に std::filesystem::path を使用します。 #14558 (Bharat Nallan).
  • 負の大きな整数値で呼び出された場合に bitShiftLeft() で発生するデバッグアサーションを修正しました。 #14697 (Artem Zuikov).

ClickHouse リリース 20.9

ClickHouse リリース v20.9.7.11-stable, 2020-12-07

パフォーマンスの改善

  • 非常に多数の MergeTree テーブルにまたがる Merge テーブルからの読み取りパフォーマンスを改善しました。#7748 を修正します。 #16988Anton Popov)。

バグ修正

  • in_memory_parts_enable_wal が無効になっている場合、WAL からパーツを復元しないようにしました。 #17802 (detailyang)
  • Distributed テーブルへの挿入時に十分な空き領域がない場合に発生していたセグメンテーションフォルトを修正しました。 #17737 (tavplubix).
  • ClickHouse が MySQL サーバーへの再接続に失敗する問題を修正しました。 #17681 (Alexander Kazakov).
  • Windows Subsystem for Linux 上で動作する ClickHouse の Atomic データベースで RENAME クエリを実行した際に発生していた Function not implemented エラーを修正しました。これにより #17661 が解決されています。 #17664tavplubix)。
  • clickhouse-client を対話モードで複数行クエリとともに使用した場合、1 行コメントが誤ってクエリの終わりまで適用されていました。これにより #13654 が修正されました。 #17565 (alexey-milovidov)。
  • 非常にまれな場合にサーバーが接続を受け付けなくなる可能性がある問題を修正しました。 #17542 (alexey-milovidov).
  • 別のレプリカで対応するミューテーションが kill された場合に ALTER クエリがハングしてしまう問題を修正しました。#16953 を修正。#17499alesapin)。
  • ClickHouse による mark キャッシュサイズの見積もりが過小になっていたバグを修正しました。これは、mark を含むごく小さいファイルが多数存在する場合に発生する可能性があります。#17496 (alesapin).
  • 設定 optimize_redundant_functions_in_order_by 有効時の ORDER BY を修正しました。 #17471 (Anton Popov).
  • 誤った最適化により DISTINCT の後に発生する可能性があった重複を修正。#17294 を解決。#17296li chengxiang)。#17439Nikolai Kochetov)。
  • LowCardinality 型のデータを JOIN テーブルから読み取る際に発生するクラッシュを修正。#17228 を修正。#17397Nikolai Kochetov)。
  • サブクエリに const カラムが存在する場合の set インデックス無効化の問題を修正しました。これにより #17246 が修正されました。 #17249 (Amos Bird).
  • クラッシュの原因となっていた ColumnConst の比較処理を修正しました。これにより #17088 が解決しました。#17135 (Amos Bird).
  • some_tableAS table_function() で作成されていた場合に CREATE TABLE ... AS some_table クエリで発生していたクラッシュを修正。 #16944 を修正。 #17072 (tavplubix)。
  • funciton fuzzBits 関数のバグ修正。関連 issue: #16980#17051hexiaoting)。
  • LIMIT を含むクエリなど、実行中にキャンセルされる可能性があるリモートクエリで、不要なネットワークエラーが発生しないようにしました。 #17006 (Azat Khuzhin).
  • TODO. #16866 (tavplubix).
  • MySQL プロトコル経由の INSERT クエリに対して、影響を受けた行数を返すようにしました。以前の ClickHouse は常に 0 を返していましたが、これを修正しました。これにより #16605 が解決されました。#16715Winter Zhang)。

ビルド/テスト/パッケージングの改善

  • 組み込みタイムゾーンデータをバージョン 2020d に更新(cctz も最新版の master に更新)。#17204filimonov)。

ClickHouse リリース v20.9.6.14-stable, 2020-11-20

改善

  • SNI を要求する clickhouse-server のセキュアエンドポイントに接続できるようにしました。これは clickhouse-server が TLS プロキシの背後でホストされている場合に有効です。#16938filimonov)。
  • 条件付き集約関数(例: avgIf, sumIf, maxIf)が対象の行が存在せず、引数が Nullable 型の場合に NULL を返すようにしました。#13964Winter Zhang)。

バグ修正

  • リーダーではない ReplicatedMergeTree テーブルに対する ON CLUSTER クエリが無期限にハングする可能性があるバグを修正しました。#17089alesapin)。
  • エラー発生時に format_avro_schema_registry_url の IP を再度名前解決するようにしました。#16985filimonov)。
  • SELECT が変更中のカラムに対する WHERE 句を持ち、ALTER TABLE ... MODIFY COLUMN ... NewType がまだ完了していない場合に、サーバーがクラッシュする可能性がある問題を修正しました。#16968Amos Bird)。
  • インストールスクリプトが必ず設定フォルダ内にサブディレクトリを作成するようにしました。これはカスタム設定を使った Docker ビルドにのみ関係します。#16936filimonov)。
  • ORDER BY を含むクエリで Illegal type of argument エラーが発生する可能性がある問題を修正しました。#16580 を修正します。#16928Nikolai Kochetov)。
  • WriteBufferFromS3 に一切データが書き込まれていない場合、マルチパートアップロードを中止するようにしました。#16840Pavel Kovalenko)。
  • 引数なしで any を使用した際にクラッシュする問題を修正しました。#16803 に対応しています。cc @azat。#16826Amos Bird)。
  • transform_null_in 設定が有効な状態で、複数カラムおよびタプルに対する IN 演算子が正しく動作しない問題を修正しました。#15310 を修正します。#16722Anton Popov)。
  • max_threads>0 かつ ORDER BY に式を含む場合の optimize_read_in_order / optimize_aggregation_in_order の問題を修正しました。#16637Azat Khuzhin)。
  • #16574 および #16231 を修正します。if サフィックス付きの集約関数を使用した際にリモートクエリが失敗する問題を修正しました。#16610Winter Zhang)。
  • 例外発生時にクエリがより速く終了するようになりました。例外が発生した場合、リモートレプリカ上での実行をキャンセルします。#15578Azat Khuzhin)。

ClickHouse リリース v20.9.5.5-stable, 2020-11-13

バグ修正

  • クエリプロファイラが有効で、かつ ClickHouse が一部の関数について非同期アンワインドテーブルが(おそらく)壊れている glibc バージョンの OS にインストールされている場合に発生しうる、まれなサイレントクラッシュを修正しました。これにより #15301 および #13098 が修正されます。 #16846alexey-milovidov)。
  • 入力から Avro をパースする際に、型から LowCardinality が削除されるようにしました。 #16188 を修正します。 #16521Mike)。
  • MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL エンジンの構成で、MySQL Slave 上で slave_parallel_worker が有効な場合に、GTID セットを適切に縮小することでメタデータの急激な増加を修正しました。これにより #15951 が修正されます。 #16504TCeason)。
  • Distributed テーブルに対する DROP TABLE(INSERT との競合条件あり)を修正しました。 #16409Azat Khuzhin)。
  • レプリケーションキュー内の非常に大きなエントリの処理を修正しました。非常に大きなエントリは、テーブル構造が極端に大きい(約 1 MB)場合に ALTER クエリ内で発生する可能性があります。これにより #16307 が修正されます。 #16332alexey-milovidov)。
  • フィルタリング用の集合が作成されなかったために返却データの一部がドロップされる可能性があった、一貫性のない動作を修正しました。 #16308Nikita Mikhaylov)。
  • MySQL データベースに関するバグを修正しました。データベースエンジンとして使用されている MySQL サーバーがダウンしているとき、一部のクエリが、本来不要であるにもかかわらず無効なサーバーからテーブルを取得しようとして例外をスローしていました。たとえば、SELECT ... FROM system.parts クエリは MergeTree テーブルのみを対象に動作すべきであり、MySQL データベースには一切アクセスすべきではありません。 #16032Kruglov Pavel)。

ClickHouse リリース v20.9.4.76-stable (2020-10-29)

バグ修正

  • 関数 dictGet で例外が発生した場合に二重解放が起きる問題を修正しました。これは、辞書の読み込み時にエラーが発生していた場合に起こり得ました。 #16429 (Nikolai Kochetov).
  • GROUP BYWITH TOTALS / ROLLUP / CUBE 修飾子やグループ化キーに対する min / max 関数を併用した場合の不具合を修正。#16393 を解決。#16397Anton Popov)。
  • prefer_localhost_replica=0 および internal_replication 使用時の非同期 Distributed INSERT を修正。 #16358 (Azat Khuzhin).
  • TwoLevelStringHashTable の実装において、メモリリークを引き起こす可能性がある、非常にひどいコード上の誤りを修正しました。このバグがこれほど長い間潜んでいたことに驚いています... #16264 (Amos Bird).
  • メモリが制限値に関係なく過剰に割り当てられる可能性があった問題を修正しました。これにより #14560 が解決されました。 #16206 (alexey-milovidov).
  • ReplicatedVersionedCollapsingMergeTree に対する ALTER MODIFY ... ORDER BY クエリがハングする問題を修正。これにより #15980 が修正されます。 #16011 (alesapin)。
  • collate 名および charset 名のパーサーを修正し、文字列型での length = 0 のサポートを追加。#16008 (Winter Zhang)。
  • 複雑なキーを持つ辞書で direct レイアウトを使用可能にしました。 #16007 (Anton Popov).
  • 一定期間非アクティブな状態が続いた後にレプリケーションエラーが発生した場合、レプリカが 5〜10 分間ハングしてしまう問題を防止しました。 #15987 (filimonov).
  • Atomic データベースエンジンで、MaterializedView への INSERT またはそこからの SELECT と、対象テーブルの DROP を同時に実行した場合にまれに発生していたセグメンテーションフォルトを修正。 #15984 (tavplubix).
  • 設定プロファイルのパースにおける曖昧さを修正しました。CREATE USER ... SETTINGS profile readonly は、readonly 制約付きの設定 profile を使用しているのではなく、readonly という名前のプロファイルを使用していると解釈されるようになりました。これにより、#15628 が修正されました。#15982Vitaly Baranov)。
  • データベースの作成に失敗した場合にクラッシュする問題を修正。 #15954 (Winter Zhang).
  • Atomic データベースエンジンで、テーブルが同時にリネームされている場合に DROP TABLE IF EXISTSTable ... does not exist エラーで失敗する問題を修正しました。複数のテーブルに対して特定の DDL クエリ(DROP DATABASERENAME TABLE など)を同時に実行した際にまれに発生するデッドロックを修正しました。同時に DROP/DETACH TABLE を実行している場合に DROP/DETACH DATABASETable ... does not exist で失敗する問題を修正しました。#15934 (tavplubix)。
  • WHEREPREWHEREGLOBAL IN を含むクエリで、Distributed テーブルからのクエリ結果が誤って空の結果になる問題を修正。 #15792 を解決。 #15933Nikolai Kochetov)。
  • RBAC で発生し得るデッドロックを修正。#15875 (Vitaly Baranov).
  • ALTER MODIFY COLUMN クエリ実行後に実行された SELECT ... ORDER BY DESC クエリで発生していた例外 Block structure mismatch の問題を修正しました。#15800 を修正。 #15852alesapin)。
  • MaterializeMySQL における select count() の不正確な結果を修正しました。 #15767 (tavplubix)。
  • 仮想カラムのみを選択するクエリの一部のケースを修正しました。以前は Not found column _nothing in block という例外がスローされることがありました。#12298 を修正。#15756Anton Popov)。
  • max_replicated_logs_to_keep 設定のデフォルト値が低すぎる問題を修正しました。この問題は、レプリカが頻繁に失われる原因となっていました。最も新しいレプリカをクローン元として選択することで、失われたレプリカの復旧プロセスを改善しました。また、失われたレプリカから古いパーツを削除せず、代わりにデタッチするようにしました。 #15701 (tavplubix)。
  • Buffer テーブルから読み込む際に、宛先テーブルとは異なる構造を持つ場合に発生していた Cannot add simple transform to empty Pipe エラーを修正しました。これは、クエリに対して宛先テーブルが空の結果を返した場合に発生する可能性がありました。#15529 を修正します。#15662Nikolai Kochetov)。
  • S3 テーブル関数におけるグロブパターンのバグを修正しました。URL から取得したリージョンが S3 クライアントの設定に反映されていませんでした。 #15646 (Vladimir Chebotarev).
  • 読み取り専用テーブルをデタッチする際に ReadonlyReplica メトリクスをデクリメントします。これにより #15598 が修正されました。 #15592 (sundyli).
  • 単一のパラメータのみが ReplicatedMergeTree に渡された場合は、これを無視せずにエラーをスローするようにしました。 #15516 (nvartolomei).

改善

  • クラスター設定における <internal_replication> の設定に関係なく、ALTER ... ON CLUSTER クエリを実行できるようになりました。 #16075 (alesapin).
  • テーブル作成時に、ReplicatedMergeTree の引数内にある {database}{table}{uuid} マクロが展開されるようになりました。 #16160 (tavplubix).

ClickHouse リリース v20.9.3.45-stable (2020-10-09)

バグ修正

  • MV のクエリに ARRAY JOIN が含まれている場合に、MATERIALIZED VIEW への挿入時に発生する可能性がある Cannot find column エラーを修正。 #15717 (Nikolai Kochetov).
  • AMQP-CPP のレースコンディションを修正。 #15667 (alesapin).
  • クエリプランの ReadFromStorage ステップにおけるリソースの破棄順序を修正しました。まれなケースでクラッシュが発生する可能性がありました。#15610 に関連している可能性があります。#15645Nikolai Kochetov)。
  • JSON* 関数の結果を VALUESLIMIT、または IN 演算子の右辺で使用した際に発生する Element ... is not a constant expression エラーを修正しました。 #15589 (tavplubix).
  • エラーメッセージ Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call が発生する可能性を防止します。これにより #15541 が修正されます。#15557alexey-milovidov)。
  • AggregatingInOrderTransform/optimize_aggregation_in_order でのメモリ使用量を大幅に削減。 #15543 (Azat Khuzhin).
  • MOVEREPLACE PARTITION の後に存在しないパーツを待ち続けて Mutation がハングすることがあり、まれなケースとしては DETACHDROP PARTITION の後にも発生する可能性がありました。これは修正されました。 #15537 (tavplubix).
  • LIKE で同じパターンを実行した後に、ILIKE 演算子が大文字小文字を区別しないはずの動作をしなくなるバグを修正。 #15536 (alesapin).
  • データに存在しない列を選択した際に、それが同様にデータに存在しない他の列に依存していると発生していた Missing columns エラーを修正しました。#15530 を修正。#15532alesapin)。
  • DDLWorker におけるイベントサブスクリプションの不具合を修正しました。この不具合により、まれに ON CLUSTER でクエリがハングすることがありました。#13450 で導入されたものです。#15477alesapin)。
  • boundingRatio 集約関数の第 2 引数の型が誤っている場合に、適切なエラーメッセージを返すようにしました。#15407 (detailyang).
  • SELECT toStartOfDay(today()) のようなクエリが、空の time_zone 引数に関するエラーで失敗していたバグを修正。#15319 (Bharat Nallan)。
  • MergeTree テーブルのリネームおよびバックグラウンドでのクリーンアップ時に発生するレースコンディションを修正。 #15304 (alesapin).
  • system.logs が有効な場合のサーバー起動時に、まれに発生するレースコンディションを修正しました。 #15300 (alesapin)
  • QueryLog の MSan レポートを修正。初期化されていないメモリが memory_usage フィールドに使用される可能性がありました。 #15258 (alexey-milovidov).
  • LowCardinality 型と共に joinGet を使用した際にインスタンスがクラッシュする不具合を修正しました。これにより #15214 が解決されました。 #15220 (Amos Bird)。
  • テーブルエンジン Buffer において、ALTER クエリ実行後に新しい構造(スキーマ)のデータを Buffer に挿入できなくなるバグを修正しました。 #15117 を修正。 #15192alesapin)。
  • MySQL の列定義パケット内の decimals フィールドのサイズを調整。 #15152 (maqroll)。
  • macOS 上の Docker で clickhouse-server を実行している場合に、Atomic データベースで DDL クエリを実行すると発生していた Cannot rename ... errno: 22, strerror: Invalid argument エラーを修正しました。 #15024 (tavplubix)。
  • サブクエリに finalizeAggregation 関数が含まれている場合に predicate push down が機能するように修正。#14847 を解決。 #14937filimonov)。
  • from_zk インクルードオプションを使用して設定ファイルを ZK から取得する必要がある場合に、ZooKeeper との通信中にサーバーが起動時にハングしてしまうことがある問題を修正しました。これにより #14814 が修正されます。#14843Alexander Kuzmenkov)。

改良

  • VersionedCollapsingMergeTree のバージョン列の型を ALTER クエリで変更できるようになりました。 #15442 (alesapin)

ClickHouse リリース v20.9.2.20, 2020-09-22

後方互換性のない変更

  • 20.5 より古いバージョンからアップグレードする際にローリングアップデートを実行し、クラスタに 20.5 以上と 20.5 未満のバージョンが混在している場合、古いバージョンの ClickHouse ノードを再起動すると、より新しいバージョンが存在する状態で古いバージョンが起動し、Part ... intersects previous part エラーが発生する可能性があります。このエラーを防ぐには、まずクラスタ内のすべてのノードに新しい clickhouse-server パッケージをインストールしてから再起動を行ってください(つまり、clickhouse-server を再起動するときには、新しいバージョンで起動するようにします)

新機能

  • カラムトランスフォーマー EXCEPTREPLACEAPPLY を追加しました。これらは選択したカラムのリスト(* または COLUMNS(...) の後)に適用できます。例えば、SELECT * EXCEPT(URL) REPLACE(number + 1 AS number) のように記述できます。別の例として、すべての文字列カラムの最大長を求めるために select * apply(length) apply(max) from wide_string_table と書くことができます。 #14233 (Amos Bird)
  • 順位相関係数を計算する集約関数 rankCorr を追加しました。 #11769 (antikvist) #14411 (Nikita Mikhaylov)
  • サブクエリをテーブルオブジェクトに変換するテーブル関数 view を追加しました。これによりクエリを受け渡しやすくなります。例えば、remote/cluster テーブル関数で使用することができます。 #12567 (Amos Bird)

バグ修正

  • ALTER UPDATE のミューテーションで、代入式に Nullable カラムと定数値(UPDATE x = 42 のようなもの)が含まれている場合に、カラムに誤った値が入ったりセグメンテーションフォルトが発生したりする不具合を修正しました。#13634#14045 を解決しています。#14646alesapin)。
  • 結果列の Decimal スケールが誤っていたために発生していた、Decimal 乗算結果の誤りを修正。 #14603 (Artem Zuikov).
  • Nullable カラムの誤ったソート順を修正しました。これにより、#14344 の問題が解決されています。 #14495 (Nikita Mikhaylov)。
  • インデックス解析時に、より短い長さの文字列と比較された場合の FixedString 型の主キーとの一貫性のない比較を修正しました。これにより #14908 が解決されました。 #15033Amos Bird)。
  • 単一のパーツのみを持つパーティションを含むテーブルで、マージの割り当てが誤って行われる不具合を修正しました。 #14444 (alesapin).
  • 関数 bar が細工された特定の引数で呼び出された場合、バッファオーバーフローが発生する可能性がありました。これにより #13926 が解決されました。 #15028 (alexey-milovidov)。
  • 論理コアごとの CPU 周波数を system.asynchronous_metrics で公開するようにしました。これにより #14923 を修正しました。 #14924Alexander Kuzmenkov)。
  • MaterializeMySQL データベースエンジン使用時に発生していた .metadata.tmp File exists エラーを修正しました。 #14898 (Winter Zhang).
  • extractAllGroups 関数の一部の呼び出しで「Memory limit exceeded」エラーが発生することがある不具合を修正しました。これにより #13383 の問題が解決されます。 #14889 (alexey-milovidov)。
  • StorageFile(fd) への INSERT 試行時に発生する SIGSEGV を修正。 #14887 (Azat Khuzhin).
  • SELECT クエリにおいて、対象カラムに DEFAULT 式が設定されており、その式が依存する別のカラムにも DEFAULT が設定されているものの、そのカラムが SELECT 句に含まれずディスク上にも存在しない場合に、まれに発生するエラーを修正しました。#14531 の一部を修正します。#14845alesapin)。
  • 符号付き型に対する縮小方向の Int -> Int キャストにおける単調性検出の誤りを修正しました。この不具合により、クエリ結果が誤ったものになる可能性がありました。このバグは #14513 で顕在化し、#14783Amos Bird)で修正されました。
  • ALTER ... MODIFY QUERY を実行する際に、マテリアライズドビューのメタデータにデフォルトのデータベース名が設定されない問題を修正しました。 #14664 (tavplubix).
  • LowCardinality 型および Nullable 型が関係する場合に、has 関数が誤った結果を返す可能性がある問題を修正。 #14591 (Mike)。
  • ReplicatedMergeTree エンジンを使用するテーブルに対する CREATE クエリ実行中に ZooKeeper 例外が発生した場合に、データディレクトリをクリーンアップするようにしました。 #14563 (Bharat Nallan)。
  • 非常に大きなパラメータによるオーバーフローが原因で発生する可能性があった、-Resample コンビネータ付き関数におけるまれなセグメンテーションフォルトを修正しました。 #14562 (Anton Popov).
  • topK 集約関数で配列サイズのオーバーフローをチェックするようにしました。このチェックがない場合、ユーザーが細工したパラメータを含むクエリを送信することでサーバーをクラッシュさせることができます。これにより #14452 がクローズされました。#14467alexey-milovidov)。
  • SysVinit の restart/start/stop/reload を、使用されている場合は systemd にプロキシするようにしました。 #14460 (Azat Khuzhin).
  • PipelineExecutor 自体で例外が発生した場合はクエリの実行を停止するようにしました。これにより、まれに発生する可能性のあるクエリのハングアップを防止できます。 #14334 #14402 (Nikolai Kochetov).
  • AS table_function として作成されたテーブルに対する ALTER クエリの実行時に発生するクラッシュを修正しました。#14212 を修正します。#14326alesapin)。
  • REFRESH コマンドを伴う ALTER LIVE VIEW クエリ実行時に発生する例外を修正しました。LIVE VIEW は実験的な機能です。 #14320 (Bharat Nallan)。
  • ネストしたインタープリタを使用するクエリに対して、EXPLAIN PIPELINE graph=1 用の QueryPlan のライフタイムを修正しました。 #14315 (Azat Khuzhin).
  • SSD キャッシュを使用する複合キー外部辞書でのタプルサイズの検査を改善しました。これにより #13981 が修正されました。#14313alexey-milovidov)。
  • ALIAS カラム型での CODEC の使用を禁止しました。#13911 を修正しました。#14263Bharat Nallan)。
  • グローバルレベル以外で実行された場合の GRANT ALL ステートメントの動作を修正。 #13987 (Vitaly Baranov).
  • lambda 内での arrayJoin() のキャプチャを修正しました(論理エラーを示すメッセージ付きの例外がスローされていた問題)。 #13792 (Azat Khuzhin).

実験的機能

  • 指定された SELECT クエリに基づいてランダムなデータベースを生成する db-generator ツールを追加しました。ユーザーからのバグレポートが不完全な場合でも、問題の再現を容易にします。 #14442 (Nikita Mikhaylov) #10973 (ZeDRoman)。

改良

  • Distributed ストレージでマルチボリュームストレージ構成を利用できるようにしました。 #14839 (Pavel Kovalenko)。
  • toStartOf* 系の関数で time_zone 引数を空にすることを禁止しました。 #14509 (Bharat Nallan)。
  • MySQL ハンドラが SET @@var = value のようなクエリに対して OK を返すようになりました。このステートメントは無視されます。これは、一部の MySQL ドライバがハンドシェイク後の初期設定として SET @@ クエリを送信するために必要です。https://github.com/ClickHouse/ClickHouse/issues/9336#issuecomment-686222422 #14469 (BohuTANG)。
  • 以前にマテリアライズされていなかった TTL が、マージの際に適用されるようになりました。 #14438 (alesapin)。
  • clickhouse-obfuscator が、#13163 で提案されていたとおり UUID 型をサポートするようになりました。 #14409 (dimarub2000)。
  • #11384 で提案されていた新しい設定 system_events_show_zero_values を追加しました。 #14404 (dimarub2000)。
  • MaterializeMySQL で主キーを暗黙的に NOT NULL に変換するようにしました(MySQL と同様)。#14114 を修正しました。 #14397 (Winter Zhang)。
  • Boost multiprecision のワイド整数(256 ビット)を、https://github.com/cerevra/int の実装に置き換えました。256 ビット整数は実験的機能です。 #14229 (Artem Zuikov)。
  • system.part_log 内のパーツに対して、default_compression_codec という名前のデフォルト圧縮コーデックを追加しました。 #14116 (alesapin)。
  • DateTime 型に精度引数を追加しました。これにより、DateTime64 の代わりに DateTime という名前を使用できます。 #13761 (Winter Zhang)。
  • Redis 外部ディクショナリ向けに requirepass 認証を追加しました。 #13688 (Ivan Torgashov)。
  • RabbitMQ エンジンを改良しました。接続およびチャネル障害のハンドリング、適切なコミットと挿入失敗時の処理、より良いエクスチェンジ、キューの永続化と再開機能、新しいキュー設定を追加しました。テストも修正しました。 #12761 (Kseniia Sumarokova)。
  • コンパクトパーツでカスタムコーデックをサポートしました。 #12183 (Anton Popov)。

パフォーマンスの改善

  • optimize_skip_unused_shards および optimize_distributed_group_by_sharding_key 有効時に、GROUP BY sharding_key を伴う分散クエリに対して LIMIT / LIMIT BY / ORDER BY を用いてクエリを最適化。 #10373 (Azat Khuzhin)。
  • 複数の JOIN および IN に対してセットを並列に作成。複数の異なる IN subquery 式を含むクエリのパフォーマンスがわずかに向上する可能性があります。 #14412 (Nikolai Kochetov)。
  • 各コンシューマーに対して独立したスレッドを提供することで Kafka エンジンのパフォーマンスを向上。ストリーミングエンジン(Kafka など)用に専用のスレッドプールを追加。 #13939 (fastio)。

ビルド/テスト/パッケージングの改善

  • Functions からデバッグ情報を削除してデバッグビルドのバイナリサイズを削減。これは、非常に古いリンカを使用している Yandex 内部の 1 つのプロジェクトにのみ必要です。 #14549 (alexey-milovidov)。
  • clang 11 でのビルドに向けた準備。 #14455 (alexey-milovidov)。
  • バックポートスクリプトのロジックを修正。以前のバージョンでは、色が 100% 赤の任意のラベルに対してトリガーされており、これは奇妙な動作でした。 #14433 (alexey-milovidov)。
  • 統合テストでデフォルトのベースコンフィグを使用。例えばすべての設定変更は、main_configsuser_configsdictionaries パラメーターによって明示的に指定されます。 #13647 (Ilya Yatsishin)。

ClickHouse リリース 20.8

ClickHouse リリース v20.8.12.2-lts, 2021-01-16

バグ修正

  • 単項関数および Nullable 型を伴う If コンビネータを修正しました。 #18806 (Azat Khuzhin).
  • wide パーツから compact パーツへのマージを制限しました。vertical マージの場合、結果パーツが破損する可能性がありました。 #18381 (Anton Popov).

ClickHouse リリース v20.8.11.17-lts, 2020-12-25

バグ修正

  • マージ中の AIO(非同期 I/O)を用いた書き込みを無効化しました。これは、マージ中にプライマリキー列のごくまれなデータ破損を引き起こす可能性があるためです。 #18481 (alesapin).
  • Nullable(String) 型の引数で toType(...) 関数(toDatetoUInt32 など)を実行した際に発生する value is too short エラーを修正しました。これらの関数は、例外をスローする代わりに、パースエラー時に NULL を返すようになりました。 #7673 を修正。 #18445 (tavplubix).
  • 2 段階集約を使用している際に、コンビネータ Distinct を用いた集約関数で発生しうるクラッシュを修正しました。 #17682 を修正。 #18365 (Anton Popov).

ClickHouse リリース v20.8.10.13-lts, 2020-12-24

バグ修正

  • logger.size パラメータに 2^32 より大きい数値を指定してサーバーログのローテーションを設定した場合、ログが正しくローテーションされていませんでした。 #17905 (Alexander Kuzmenkov).
  • MergeTreeWriterSettings における max_compress_block_sizemin_compress_block_size で誤って初期化していた問題を修正しました。 #17833 (flynn)。
  • ClickHouse が MySQL サーバーへの接続を再開できなくなる問題を修正しました。 #17681 (Alexander Kazakov).
  • 対応するミューテーションが別のレプリカ上で強制終了された場合に ALTER クエリがハングする問題を修正しました。これにより #16953 が解決されました。 #17499 (alesapin).
  • ClickHouse で mark キャッシュサイズが過小に見積もられてしまう不具合を修正しました。これは、多数の小さなファイルに marks が存在する場合に発生することがあります。 #17496 (alesapin)。
  • optimize_redundant_functions_in_order_by 設定有効時の ORDER BY の動作を修正しました。 #17471 (Anton Popov).
  • ColumnConst の比較でクラッシュが発生する問題を修正しました。これにより #17088 が修正されました。 #17135 (Amos Bird)。
  • ON CLUSTER クエリがリーダーではない ReplicatedMergeTree テーブルに対して無期限にハングする可能性があるバグを修正しました。 #17089 (alesapin).
  • LIMIT を含むクエリのように、実行中にキャンセルされる可能性があるリモートクエリで、不要なネットワークエラーが発生しないようにしました。 #17006 (Azat Khuzhin).
  • エラー発生時には format_avro_schema_registry_url の IP アドレスを再解決するようにしました。#16985filimonov)。
  • ALTER TABLE ... MODIFY COLUMN ... NewType の実行中に、SELECT が変更中のカラムに対する WHERE 句を持ち、ALTER がまだ完了していない場合にサーバーがクラッシュする可能性があった問題を修正しました。 #16968 (Amos Bird).
  • インストールスクリプトは常に設定フォルダー内にサブディレクトリを作成するようになりました。これはカスタム設定を用いた Docker ビルドの場合にのみ関係します。 #16936 (filimonov).
  • ORDER BY を含むクエリで Illegal type of argument エラーが発生する可能性があった問題を修正しました。#16580 を解決。#16928Nikolai Kochetov)。
  • WriteBufferFromS3 へのデータ書き込みがなかった場合、マルチパートアップロードを中止するようにしました。#16840 (Pavel Kovalenko).
  • 引数なしで any を使用した場合にクラッシュする問題を修正しました。これにより #16803 が解決されました。 #16826 (Amos Bird)。
  • 複数列およびタプルに対する IN 演算子が、transform_null_in 設定が有効な場合でも正しく動作するように修正しました。 #15310 を修正。 #16722Anton Popov)。
  • max_threads &gt; 0 かつ ORDER BY 句に式が含まれる場合における optimize_read_in_order/optimize_aggregation_in_order の不整合な挙動を修正しました。 #16637 (Azat Khuzhin).
  • クエリに ARRAY JOIN が含まれている場合に、クエリ最適化によって誤った結果が生成される問題を修正しました。 #17887 (sundyli).
  • 例外が発生した場合、クエリの終了がより速くなります。例外発生時には、リモートレプリカ上での実行をキャンセルします。 #15578 (Azat Khuzhin).

ClickHouse release v20.8.6.6-lts, 2020-11-13

バグ修正

  • クエリプロファイラが有効で、かつ一部の関数で非同期アンワインドテーブルが(おそらく)壊れている glibc バージョンの OS 上に ClickHouse がインストールされている場合に、まれに発生するサイレントクラッシュを修正しました。これにより #15301#13098 が解決されます。#16846alexey-milovidov)。
  • 入力から AVRO をパースする際に、型から LowCardinality を取り除くようにしました。#16188 を修正します。#16521Mike)。
  • MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine の構成で、MySQL Slave 側で slave_parallel_worker が有効な場合に、GTID セットを適切に縮小することでメタデータが急速に増大する問題を修正しました。これにより #15951 が解決されます。#16504TCeason)。
  • Distributed テーブルに対する DROP TABLE(INSERT との競合)を修正しました。#16409Azat Khuzhin)。
  • レプリケーションキュー内の非常に大きなエントリの処理を修正しました。非常に大きなエントリは、テーブル構造が極端に大きい(約 1 MB)場合の ALTER クエリで現れる可能性があります。これにより #16307 が解決されます。#16332alexey-milovidov)。
  • フィルタリング用の set が作成されなかったために、返されるデータの一部がドロップされてしまう可能性があった、一貫性のない動作を修正しました。#16308Nikita Mikhaylov)。
  • MySQL データベースに関するバグを修正しました。データベースエンジンとして使用している MySQL サーバーがダウンしているとき、一部のクエリが、不要であるにもかかわらず停止したサーバーからテーブルを取得しようとして例外を発生させていました。例えば、クエリ SELECT ... FROM system.parts は MergeTree テーブルのみに対して動作すべきであり、MySQL データベースには一切アクセスすべきではありません。#16032Kruglov Pavel)。

ClickHouse release v20.8.5.45-lts, 2020-10-29

バグ修正

  • 関数 dictGet 内で、例外発生時に二重解放が発生する不具合を修正しました。これは、辞書のロード時にエラーが発生した場合に起こり得ました。 #16429 (Nikolai Kochetov)。
  • group by で使用する totals/rollup/cube 修飾子および group by キーに対する min/max 関数に関する不具合を修正。#16393 を解決。#16397Anton Popov)。
  • prefer_localhost_replica=0 および internal_replication を使用している場合の非同期 Distributed INSERT を修正。 #16358 (Azat Khuzhin).
  • TwoLevelStringHashTable 実装の不具合が原因で、文字列キーを用いた GROUP BY 中に発生する可能性があったメモリリークを修正しました。 #16264 (Amos Bird).
  • メモリが上限に関係なく過剰に割り当てられてしまう場合の不具合を修正しました。これにより #14560 がクローズされました。 #16206 (alexey-milovidov).
  • ReplicatedVersionedCollapsingMergeTree に対する ALTER MODIFY ... ORDER BY クエリがハングする問題を修正しました。これにより #15980 が解決しました。 #16011 (alesapin)。
  • 照合順序名と文字セット名のパーサーを修正し、文字列型における length = 0 をサポートしました。 #16008 (Winter Zhang).
  • 複雑なキーを持つ辞書で direct レイアウトを使用できるようになりました。 #16007 (Anton Popov).
  • 一定期間非アクティブだった後にレプリケーションエラーが発生した際に、レプリカが5〜10分間ハングするのを防止。#15987 (filimonov).
  • Atomic データベースエンジンにおいて、MaterializedView への挿入または MaterializedView からの SELECT 実行中に、ターゲットテーブルを同時に DROP した場合にまれに発生するセグメンテーションフォルトを修正。 #15984 (tavplubix).
  • 設定プロファイルの構文解析におけるあいまいさを修正しました。CREATE USER ... SETTINGS profile readonly は、readonly 制約付きの設定 profile を使用するのではなく、readonly という名前のプロファイルを使用しているものとして解釈されるようになりました。これにより #15628 が修正されました。#15982 (Vitaly Baranov)。
  • データベース作成に失敗した際に発生するクラッシュを修正。 #15954 (Winter Zhang).
  • Atomic データベースエンジン使用時に、テーブルが同時にリネームされている場合に発生していた、DROP TABLE IF EXISTSTable ... does not exist エラーで失敗する問題を修正しました。複数テーブルに対する一部の DDL クエリ(DROP DATABASERENAME TABLE など)を同時実行した際に、まれに発生していたデッドロックを修正しました。同時に DROP/DETACH TABLE を実行している場合に、DROP/DETACH DATABASETable ... does not exist エラーで失敗する問題を修正しました。#15934 (tavplubix).
  • WHEREPREWHEREGLOBAL IN を含むクエリを Distributed テーブルに対して実行した場合に、誤って空の結果が返される問題を修正。#15792 を修正。#15933Nikolai Kochetov)。
  • RBAC におけるデッドロックが発生する可能性を修正。 #15875 (Vitaly Baranov).
  • ALTER MODIFY COLUMN クエリ実行後に実行された SELECT ... ORDER BY DESC クエリで発生していた Block structure mismatch 例外を修正しました。これにより #15800 が修正されています。#15852alesapin)。
  • 仮想カラムのみを選択する一部のクエリを修正しました。以前は Not found column _nothing in block という例外がスローされることがありました。#12298 を修正しました。#15756Anton Popov)。
  • MV 用クエリに ARRAY JOIN が含まれている場合に、MATERIALIZED VIEW への挿入時に発生することがある Cannot find column エラーを修正。 #15717 (Nikolai Kochetov).
  • max_replicated_logs_to_keep 設定のデフォルト値が低すぎる問題を修正しました。これにより、レプリカが頻繁に失われてしまう原因となっていました。最も新しい状態のレプリカをクローン元として選択することで、失われたレプリカの復旧プロセスを改善しました。また、失われたレプリカから古いパーツを削除せず、代わりに切り離すようにしました。 #15701 (tavplubix).
  • Buffer テーブルから読み込む際に、宛先テーブルと異なる構造を持っている場合に発生していたエラー Cannot add simple transform to empty Pipe を修正しました。これは、クエリに対して宛先テーブルが空の結果を返した場合に発生する可能性がありました。これにより #15529 が修正されています。 #15662Nikolai Kochetov)。
  • S3 テーブル関数における glob パターンのバグを修正しました。URL から取得した region が S3 クライアントの設定に適用されていませんでした。 #15646 (Vladimir Chebotarev).
  • 読み取り専用テーブルをデタッチする際に ReadonlyReplica メトリクスをデクリメントするようにしました。これにより #15598 が修正されました。 #15592 (sundyli)。
  • ReplicatedMergeTree に 1 つのパラメータが渡された場合に、それを無視するのではなくエラーをスローするようにしました。 #15516 (nvartolomei).

改良

  • クラスター構成での <internal_replication> の設定値に関係なく、ALTER ... ON CLUSTER クエリを実行できるようになりました。 #16075 (alesapin).
  • テーブル作成時に、ReplicatedMergeTree の引数内の {database}{table}{uuid} マクロが展開されるようになりました。 #16159 (tavplubix).

ClickHouse リリース v20.8.4.11-lts, 2020-10-09

バグ修正

  • クエリプランの ReadFromStorage ステップにおけるリソースの破棄順序を修正しました。まれなケースでクラッシュの原因となる可能性がありました。#15610 に関連している可能性があります。#15645Nikolai Kochetov)。
  • VALUES 句、LIMIT 句、または IN 演算子の右辺で JSON* 関数の結果を使用したときに発生していた Element ... is not a constant expression エラーを修正しました。 #15589 (tavplubix)。
  • エラーメッセージ Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call が発生する可能性を防ぎました。これにより #15541 が修正されます。 #15557alexey-milovidov)。
  • AggregatingInOrderTransform/optimize_aggregation_in_order でのメモリ使用量を大幅に削減しました。 #15543 (Azat Khuzhin).
  • MOVEREPLACE PARTITION の後に、存在しないパーツを待ち続けて Mutation がハングしてしまうことがあり、まれに DETACHDROP PARTITION の後にも発生する場合がありました。これは修正されました。 #15537 (tavplubix).
  • 同じパターンの LIKE を実行すると、ILIKE 演算子が大文字小文字を区別しない動作をしなくなってしまう不具合を修正。 #15536 (alesapin).
  • データに存在しない列を選択した際に、その列が同じくデータに存在しない他の列に依存している場合に発生していた Missing columns エラーを修正しました。#15530 を修正。#15532alesapin)。
  • DDLWorker におけるイベントサブスクリプションのバグを修正しました。このバグにより、まれに ON CLUSTER でクエリがハングする可能性がありました。 #13450 で導入された問題です。 #15477 (alesapin)。
  • boundingRatio 集約関数の第 2 引数の型が誤っている場合に、適切なエラーを報告するようにしました。#15407 (detailyang)。
  • MergeTree テーブルのリネームおよびバックグラウンドクリーンアップ中の競合状態を修正。 #15304 (alesapin).
  • system.logs が有効な場合にサーバー起動時にまれに発生するレースコンディションを修正。#15300 (alesapin)。
  • QueryLog における MSan のレポートを修正。フィールド memory_usage に未初期化メモリが使用される可能性がありました。 #15258 (alexey-milovidov).
  • LowCardinality 型で joinGet を使用した際に発生するインスタンスのクラッシュの問題を修正しました。これにより #15214 が修正されました。#15220Amos Bird)。
  • テーブルエンジン Buffer において、ALTER クエリの後に新しい構造のデータを Buffer に挿入できなくなる原因となっていたバグを修正しました。#15117 を修正。 #15192alesapin)。
  • MySQL のカラム定義パケット内の decimals フィールドのサイズを調整。 #15152 (maqroll).
  • すでに String と FixedString の間ではパディング付き比較を使用しています(https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333)。この PR は同じロジックをフィールドの比較にも適用し、FixedString をプライマリキーとして使用する際の扱いを正しくします。これにより #14908 が修正されます。#15033Amos Bird)。
  • 関数 bar が特別に細工された引数で呼び出された場合、バッファオーバーフローが発生する可能性がありました。これにより #13926 が解決されました。#15028alexey-milovidov)。
  • macOS 上の Docker で clickhouse-server を実行している際に、Atomic データベースで DDL クエリを実行すると発生していた Cannot rename ... errno: 22, strerror: Invalid argument エラーを修正しました。 #15024 (tavplubix).
  • これで、number_of_free_entries_in_pool_to_execute_mutation および number_of_free_entries_in_pool_to_lower_max_size_of_merge の設定値を background_pool_size と同じ値に設定できるようになりました。 #14975 (alesapin).
  • サブクエリに finalizeAggregation 関数が含まれている場合でも述語プッシュダウンが機能するように修正。 #14847 を修正。 #14937filimonov)。
  • 論理コアごとの CPU 周波数を system.asynchronous_metrics で公開するようにしました。これにより #14923 の問題を修正しました。#14924Alexander Kuzmenkov)。
  • MaterializeMySQL データベースエンジン使用時に発生していた .metadata.tmp File exists エラーを修正しました。 #14898 (Winter Zhang)。
  • サーバーが起動時に ZooKeeper との通信中にハングしてしまう可能性がある問題を修正しました。これは、from_zk インクルードオプションを使用して ZK から設定ファイルを取得する必要がある場合に発生していました。これにより、#14814 が修正されました。#14843Alexander Kuzmenkov)。
  • 符号付き型に対する縮小 Int -> Int キャストの単調性検出の誤りを修正しました。この不具合により、クエリ結果が不正になる可能性がありました。このバグは #14513 で表面化しました。#14783Amos Bird)。
  • Nullable 列の誤ったソート順を修正しました。この変更により #14344 が解決されました。 #14495 (Nikita Mikhaylov)。

改良

  • VersionedCollapsingMergeTree のバージョン列の型を ALTER クエリで変更できるようになりました。#15442alesapin)。

ClickHouse リリース v20.8.3.18-stable, 2020-09-18

バグ修正

  • extractAllGroups 関数の一部の呼び出しで「Memory limit exceeded」エラーが発生することがある問題を修正しました。これにより #13383 が修正されます。#14889alexey-milovidov)。
  • StorageFile(fd) に対して INSERT を試みた際に発生する SIGSEGV を修正しました。#14887Azat Khuzhin)。
  • SELECT クエリにおいて、対象の列が、別の DEFAULT を持つ列に依存する DEFAULT 式を持っており、その列が SELECT クエリに含まれておらず、かつディスク上にも存在しない場合に発生する、まれなエラーを修正しました。#14531 を部分的に修正します。#14845alesapin)。
  • ALTER ... MODIFY QUERY を実行する際に、マテリアライズドビューのメタデータにデフォルトのデータベース名が含まれていなかった問題を修正しました。#14664tavplubix)。
  • ALTER UPDATE のミューテーションで、代入式に Nullable 列と定数値(UPDATE x = 42 など)が含まれる場合に、列に不正な値が入る、またはセグフォが発生するバグを修正しました。#13634#14045 を修正します。#14646alesapin)。
  • 結果列の Decimal のスケールが誤っていたために、Decimal の乗算結果が間違っていた問題を修正しました。#14603Artem Zuikov)。
  • lc->isNullable()ls->getDictionaryPtr()->isNullable() も正しい結果を返さないため、チェッカーを追加しました。#14591myrrc)。
  • StorageReplicatedMergeTree エンジンでの CreateQuery 実行中に ZooKeeper 例外が発生した場合に、データディレクトリをクリーンアップするようにしました。#14563Bharat Nallan)。
  • 非常に大きなパラメータによるオーバーフローの結果として発生しうる、combinator -Resample を持つ関数でのまれなセグフォを修正しました。#14562Anton Popov)。

改良

  • 進行中の S3 リクエストがある場合のサーバーシャットダウン処理を高速化しました。#14858Pavel Kovalenko)。
  • Storage Distributed でマルチボリュームストレージ構成を使用できるようにしました。#14839Pavel Kovalenko)。
  • 進行中の S3 リクエストがある場合のサーバーシャットダウン処理を高速化しました。#14496Pavel Kovalenko)。
  • コンパクトパーツでカスタムコーデックをサポートしました。#12183Anton Popov)。

ClickHouse リリース v20.8.2.3-stable, 2020-09-08

後方互換性のない変更

  • 現在、OPTIMIZE FINAL クエリは、TTL が作成される前に追加されたパーツについて TTL を再計算しません。これらを一度計算するには ALTER TABLE ... MATERIALIZE TTL を使用してください。その後は OPTIMIZE FINAL が TTL を正しく評価します。この動作はレプリケートされたテーブルではこれまで機能していませんでした。#14220 (alesapin).
  • parallel_distributed_insert_select 設定を拡張し、ローカルテーブルへの INSERT を実行するオプションを追加しました。この設定の型は Bool から UInt64 に変更されたため、false および true の値はサポートされなくなりました。サーバー設定にこれらの値が含まれている場合、サーバーは起動しません。それぞれ 0 および 1 に置き換えてください。#14060 (Azat Khuzhin).
  • ODBCDriver 入出力フォーマットのサポートを削除しました。これは、かつて ClickHouse ODBC ドライバーとの通信に使用されていた非推奨フォーマットであり、現在は ODBCDriver2 フォーマットによって完全に置き換えられています。#13629 を解決します。#13847 (hexiaoting).
  • 20.5 より古いバージョンからアップグレードする際にローリングアップデートを実行していて、クラスタ内に 20.5 以上のバージョンと 20.5 未満のバージョンが混在している場合、新しいバージョンが存在する状態で古いバージョンの ClickHouse ノードを再起動すると、Part ... intersects previous part エラーが発生する可能性があります。このエラーを防ぐには、まずクラスタ内のすべてのノードに新しい clickhouse-server パッケージをインストールしてから再起動を行ってください(つまり、clickhouse-server を再起動する際には、新しいバージョンで起動されるようにします)。

新機能

  • config.xml で指定された設定に対応するカラムに対して、Default 圧縮コーデックを指定できるようにしました。実装: #9074#14049 (alesapin)。
  • krb5 および cyrus-sasl ライブラリを用いて、Kafka での Kerberos 認証をサポートしました。 #12771 (Ilya Golshtein)。
  • リテラル、リテラルの並び、および複雑な別名をプレースホルダーに置き換える関数 normalizeQuery を追加しました。類似したクエリに対して同一の 64bit ハッシュ値を返す関数 normalizedQueryHash を追加しました。これによりクエリログの分析が容易になります。これにより #11271 がクローズされます。 #13816 (alexey-milovidov)。
  • time_zones テーブルを追加しました。 #13880 (Bharat Nallan)。
  • 指定された型に対するデフォルト値を返す関数 defaultValueOfTypeName を追加しました。 #13877 (hcz)。
  • 整数または Decimal 型カラム内の 10 進数の桁数を数える countDigits(x) 関数を追加しました。Decimal 型カラム内の値が、その(または指定された)精度を超えているかどうかをチェックする isDecimalOverflow(d, [p]) 関数を追加しました。 #14151 (Artem Zuikov)。
  • medianExactLow および medianExactHigh に対応する別名を持つ quantileExactLow および quantileExactHigh の実装を追加しました。 #13818 (Bharat Nallan)。
  • 日時値を指定した日付/時間の単位に切り詰める date_trunc 関数を追加しました。 #13888 (Vladimir Golovchenko)。
  • メイン設定に新しいオプションセクション <user_directories> を追加しました。 #13425 (Vitaly Baranov)。
  • テーブルのサンプル句を変更できる ALTER SAMPLE BY ステートメントを追加しました。 #13280 (Amos Bird)。
  • 関数 position がオプション引数 start_pos をサポートするようになりました。 #13237 (vdimir)。

バグ修正

  • インタラクティブモードのクライアントで、プログレスバーが表示中のデータを上書きしてしまう問題を修正。これにより、#12562#13369#13584、および #12964 が解決されます。#13691alexey-milovidov)。
  • 複数のカラムでソートする際に、LowCardinality 型カラムのソート順が誤っていた問題を修正しました。この修正は #13958 を解決します。#14223Nikita Mikhaylov)。
  • topK 集約関数において配列サイズのオーバーフローを検出するチェックを追加しました。このチェックがない場合、ユーザーが巧妙に調整したパラメータでクエリを送信し、サーバーがクラッシュする可能性があります。これにより #14452 が解決されました。 #14467 (alexey-milovidov)。
  • テーブルに単一パートのみを含むパーティションが存在する場合に、誤ったマージ割り当てが行われる可能性のあるバグを修正。 #14444 (alesapin).
  • PipelineExecutor 自体で例外が発生した場合にクエリ実行を停止します。これにより、まれに発生しうるクエリのハングアップを防ぐことができます。#14334 の継続対応です。#14402 #14334 (Nikolai Kochetov)。
  • AS table_function で作成されたテーブルに対する ALTER クエリで発生していたクラッシュを修正。#14212 を修正。#14326alesapin)。
  • REFRESH コマンドを使用した ALTER LIVE VIEW クエリの実行中に発生していた例外の問題を修正。Live View は実験的な機能です。 #14320 (Bharat Nallan).
  • ネストしたインタプリタを使用するクエリに対して、EXPLAIN PIPELINE graph=1 用の QueryPlan のライフタイムを修正。 #14315 (Azat Khuzhin).
  • 一部の外部ソースからスキーマを取得する際に発生していた clickhouse-odbc-bridge のセグメンテーションフォールトを修正しました。このPRは #13861 を解決します。#14267Vitaly Baranov)。
  • #12277 で導入されたマーク包含検索で発生するクラッシュを修正。#14225Amos Bird)。
  • 名前付きタプルを含むテーブルの作成を修正。これにより #13027 が解決されます。#14143alexey-milovidov)。
  • 最小の負の10進数値に対するフォーマット処理を修正しました。これにより #14111 が修正されました。#14119Alexander Kuzmenkov)。
  • 本来ゼロになってはならないのにゼロにされていた DistributedFilesToInsert メトリクスを修正。 #14095 (Azat Khuzhin).
  • const 2次元配列をポリゴンとして使用した場合の pointInPolygon を修正。 #14079 (Alexey Ilyukhov).
  • Poco::Exception: no space left on device の追加情報に含まれていた誤ったマウントポイントを修正しました。 #14050 (tavplubix).
  • グローバルレベル以外で実行された場合の GRANT ALL ステートメントの挙動を修正。 #13987 (Vitaly Baranov).
  • engine 付きの CREATE TABLE AS table function を拒否するようにパーサーを修正。 #13940 (hcz)。
  • optimize_duplicate_order_by_and_distinct 設定が有効な場合に、DISTINCT キーワードを使用する SELECT クエリおよび UNION ALL を含む副問い合わせで誤った結果が返される問題を修正しました。 #13925 (Artem Zuikov).
  • Distributed テーブルのリネーム時にデッドロックが発生する可能性のあった問題を修正しました。 #13922 (tavplubix).
  • 複数列でソートする際に FixedString 列で発生していた誤ったソート順を修正しました。 #13182 の不具合を解決。 #13887Nikolai Kochetov)。
  • topK/topKWeighted のマージ結果が、デフォルト以外のパラメータ使用時に精度不足になる可能性がある問題を修正。 #13817 (Azat Khuzhin).
  • NULL と比較したときに、型が SET の INDEX を持つ MergeTree テーブルからの読み取りが失敗する問題を修正しました。これにより #13686 が解決されます。 #13793 (Amos Bird).
  • lambda における arrayJoin のキャプチャを修正 (LOGICAL_ERROR)。 #13792 (Azat Khuzhin).
  • 関数 range にステップのオーバーフロー チェックを追加。#13790Azat Khuzhin)。
  • DROP DATABASECREATE TABLE を並行して実行した際に発生する Directory not empty エラーを修正しました。 #13756 (alexey-milovidov).
  • h3KRing 関数に範囲チェックを追加しました。これにより #13633 を修正しました。 #13752alexey-milovidov)。
  • DETACH とバックグラウンドマージの間のレースコンディションを修正しました。DETACH 後にパーツが復活してしまうことがありました。これは、問題自体は修正できていなかったものの、その問題を示すために、ごくまれなケースでのみ失敗するテストを導入した #8602 の続きです。 #13746 (alexey-milovidov)。
  • log_queries_min_type > QUERY_START の場合の Settings.Names/Values のログ出力を修正。 #13737 (Azat Khuzhin).
  • verbose=1 のときの /replicas_status エンドポイントのレスポンスのステータスコードを修正します。#13722 (javi santana).
  • ユーザーおよびグループのチェック時に clickhouse-server.init が出力する誤ったメッセージを修正。 #13711 (ylchou).
  • optimize_move_functions_out_of_any 設定時には any(arrayJoin()) -> arrayJoin() の最適化を行わないようにしました。 #13681 (Azat Khuzhin).
  • StorageMerge を使用した JOIN で set enable_optimize_predicate_expression=1 を設定した場合に発生するクラッシュを修正。 #13679 (Artem Zuikov).
  • The value of 'number_of_free_entries_in_pool_to_lower_max_size_of_merge' setting 設定の値に関するエラーメッセージ内の誤記を修正しました。 #13678 (alexey-milovidov).
  • 同時実行される ALTER ... REPLACE/MOVE PARTITION ... クエリによってデッドロックが発生する可能性がありましたが、修正されました。#13626 (tavplubix)。
  • ソースに値が存在するにもかかわらず、cache-dictionary が既定値を返してしまうことがある不具合を修正しました。 #13624 (Nikita Mikhaylov).
  • Compact parts におけるセカンダリインデックス破損の問題を修正。Compact parts は実験的な機能です。 #13538 (Anton Popov).
  • 単一レプリカで実行されなければならないクエリに対して、ON CLUSTER のタイムアウトが早期に発生してしまう問題を修正しました。#6704#7228#13361#11884 を修正します。#13450alesapin)。
  • 関数 netloc の誤ったコードを修正しました。これにより #13335 を解決しました。#13446alexey-milovidov)。
  • StorageMemory における潜在的なレースコンディションを修正。#13416Nikolai Kochetov)。
  • HTTP プロトコルの TSV/CSVWithNames フォーマットにおけるヘッダーの不足や過剰を修正しました。これにより #12504 が修正されました。 #13343 (Azat Khuzhin).
  • users.xml から行ポリシーをパースする際に、データベース名またはテーブル名にドットが含まれている場合でも正しく処理できるように修正しました。これにより #5779#12527 が修正されました。#13199Vitaly Baranov)。
  • 接続が一度切断された後でも redis ディクショナリへ正しくアクセスできるよう修正しました。これは cache および direct ディクショナリレイアウトで発生する可能性があります。 #13082 (Anton Popov).
  • ClickHouseDictionarySource を使用してリモートテーブルをクエリする際に行われていた誤った認可チェックを削除しました。 #12756 (sundyli)。
  • 一部のケースで共通部分式除去を行うため、副問い合わせを適切に区別できるようにしました。 #8333. #8367 (Amos Bird).

改良

  • ALIAS カラム型での CODEC の使用を禁止しました。 #13911 を修正しました。 #14263Bharat Nallan)。
  • 辞書の更新完了を待機する際は、ハードコードされた値ではなく、query_wait_timeout_milliseconds 設定で指定されたタイムアウトを使用するようにしました。 #14105 (Nikita Mikhaylov).
  • index_granularity_bytes の設定値が極端に小さいテーブルを誤って作成してしまうことを防ぐため、設定 min_index_granularity_bytes を追加。 #14139 (Bharat Nallan)。
  • 異なる ZooKeeper を使用するクラスターからパーティションを取得できるようになりました: ALTER TABLE table_name FETCH PARTITION partition_expr FROM 'zk-name:/path-in-zookeeper'。これは、新しいクラスターへデータを移行する際に便利です。 #14155 (Amos Bird)。
  • 非常に小さいブロックが大量に存在する場合に Memory テーブルのパフォーマンスがわずかに向上しました(そのような状況はあまり想定されません)。このアイデアの提案者: Mark Papadakis#14043 をクローズ。#14056alexey-milovidov)。
  • 条件付き集約関数(例えば avgIfsumIfmaxIf)は、一致する行がない場合に NULL を返し、引数として Nullable 型を使用するようになりました。 #13964 (Winter Zhang).
  • -Resample コンビネータの limit を 1M に引き上げました。 #13947 (Mikhail f. Shiryaev).
  • 異常に小さく不正な形式のメッセージが受信された際に、Kafka テーブルエンジンがメッセージの処理を停止してしまう原因となっていた AvroConfluent フォーマットのエラーを修正しました。 #13941 (Gervasio Varela).
  • 長いクエリに対して誤ったエラーが返される問題を修正しました。正しいクエリであっても、Max query size exceeded とは異なる構文エラーが返される場合がありました。 #13928 (Nikolai Kochetov).
  • TabSeparated フォーマットでの null 値に対するエラーメッセージを改善。 #13906 (jiang tao).
  • 配列要素の型が Float32/Float64 の場合、arrayCompact 関数は NaN をビット単位で比較するようになりました。以前のバージョンでは、配列要素の型が Float32/Float64 の場合は NaN 同士は常に等しくないと判定され、Nullable(Float64) のような、より複雑な型の場合は常に等しいと判定されていました。これにより #13857 が解決されました。 #13868alexey-milovidov)。
  • lgamma 関数内のデータレースを修正しました。このレースは tsan でのみ検出され、実際に副作用が発生することはありませんでした。 #13842 (Nikolai Kochetov).
  • 配列をフィールドとして操作する際にクエリが極端に遅くなるのを避けるため、代わりに例外をスローするようにしました。 #13753 (alexey-milovidov).
  • Redis の requirepass による認証を追加しました(Redis 辞書ソース用)。 #13688 (Ivan Torgashov).
  • MergeTree Write-Ahead-Log (WAL) のダンプツールを追加。WAL は実験的な機能です。 #13640 (BohuTANG)。
  • 以前のバージョンでは、lcm 関数は特定のパターンの引数で呼び出されると、デバッグビルドにおいてアサーション違反を起こす可能性がありました。これにより #13368 が修正されました。#13510alexey-milovidov)。
  • toDate/toDateTime 関数について、より多くの場合に単調性が成り立つようにしました。単調性の情報はインデックス解析に使用されます(より複雑なクエリでもインデックスを使用できるようになります)。入力引数の飽和処理をより自然な形にし、単調性をさらに向上させました。 #13497 (Amos Bird).
  • カスタム設定で複合識別子をサポート。カスタム設定は、ClickHouse コードベースと他のコードベースとの統合ポイントであり(ClickHouse 自体には特に利点はない)、#13496Vitaly Baranov)を参照。
  • DiskLocal から DiskS3 へパーツを並行して移動します。DiskS3 は実験的機能です。#13459 (Pavel Kovalenko)。
  • 混合粒度パーツをデフォルトで有効にしました。 #13449 (alesapin).
  • S3 リダイレクトにおけるリモートホストの適切な検証(セキュリティ関連)。 #13404 (Vladimir Chebotarev).
  • QueryTimeMicrosecondsSelectQueryTimeMicrosecondsInsertQueryTimeMicroseconds を system.events に追加しました。#13336ianton-ru)。
  • Decimal が極端に大きな負の指数を持つ場合に発生するデバッグアサーションを修正します。#13188 を解決します。#13228alexey-milovidov)。
  • DiskS3 向けにキャッシュ層を追加しました(ローカルディスク上に mark および index ファイルをキャッシュ)。DiskS3 は実験的な機能です。 #13076 (Pavel Kovalenko).
  • readline が履歴をファイルにダンプするように修正。 #13600 (Amos Bird)。
  • デフォルトで Atomic エンジンを使用する system データベースを作成(今後、すべてのデータベースで Atomic データベースエンジンをデフォルトにするための準備)。 #13680 (tavplubix).

パフォーマンスの改善

  • 非常に短いクエリに対する LowCardinality の処理をわずかに最適化しました。#14129 (Anton Popov).
  • 設定 max_insert_threads が指定されている場合に、テーブルエンジン NullMemoryDistributedBuffer での並列 INSERT を有効化しました。#14120 (alexey-milovidov).
  • パーツのスキャンで max_rows_to_read 制限を超過した場合に、即座に失敗するようにしました。この変更の目的は、max_rows_to_read がすでに超過していることが明らかな場合、選択されたすべてのパーツに対する範囲スキャンをスキップすることです。この変更は、多くのパーツを対象とするクエリではかなり顕著です。#13677 (Roman Khavronenko).
  • UInt8/UInt16 キーによる集約のパフォーマンスをわずかに改善しました。#13099 (alexey-milovidov).
  • Array(LowCardinality(T)) かつ右辺が定数である場合に、has()indexOf()countEqual() 関数を最適化しました。#12550 (myrrc).
  • 単純な INSERT SELECT クエリの実行時、max_threads を 1 または max_insert_threads に自動設定し、max_block_sizemin_insert_block_size_rows に設定するようにしました。#5907 に関連します。#12195 (flynn).

実験的機能

  • ClickHouse は MySQL レプリカとして動作できるようになりました。これは MaterializeMySQL データベースエンジンによって実装されています。#4006 を実装したものです。#10851 (Winter Zhang).
  • Int128Int256UInt256 型と、それらに関連する関数を追加しました。Decimal256(最大 76 桁の精度)によって Decimal を拡張しました。新しい型は設定 allow_experimental_bigint_types で有効化できます。この機能は現時点では非常に遅く、パフォーマンスも良くありません。実装は不完全です。この機能は使用しないでください。#13097 (Artem Zuikov).

ビルド/テスト/パッケージングの改善

  • clickhouse install スクリプトを追加しました。これは単一のバイナリしか手元にない場合に便利です。 #13528 (alexey-milovidov).
  • 設定ファイルなしで clickhouse バイナリを実行できるようにしました。 #13515 (alexey-milovidov).
  • codespell によるコード内のタイプミスチェックを有効にしました。#13513 #13511 (alexey-milovidov).
  • CI で .sh テストのリンターとして ShellCheck を有効にしました。これにより #13168 がクローズされました。#13530 #13529 (alexey-milovidov)。
  • 自動再構成を行うのではなく、設定時に失敗させるための CMake オプションを追加し、これをデフォルトで有効化しました。 #13687 (Konstantin).
  • 組み込み tzdata のバージョンを、system.build_optionsTZDATA_VERSION として参照できるようにした。 #13648 (filimonov).
  • ビルド時の system.time_zones テーブル生成処理を改善。#14209 をクローズ。#14215filimonov)。
  • パッケージリポジトリから入手可能な最新の tzdata を使用して ClickHouse をビルドするようにしました。 #13623 (alexey-milovidov).
  • skip_list.json で JavaScript 形式のコメントを書けるようになりました。 #14159 (alesapin).
  • コピー&ペーストされた GPL コードが含まれていないことを確認する。#13514alexey-milovidov)。
  • テスト用 Docker イメージの親イメージを test-base に変更しました。 #14167 (Ilya Yatsishin).
  • docker-compose クラスターの起動時にリトライロジックを追加し、COMPOSE_HTTP_TIMEOUT を延長。 #14112 (vzakaznikov).
  • ストレステストで system.text_log を有効化し、より多くのバグを検出できるようにしました。 #13855 (Nikita Mikhaylov).
  • Testflows の LDAP モジュール: openldap4 用に不足していた証明書と dhparam.pem を追加。#13780 (vzakaznikov).
  • ZooKeeper は CI インフラストラクチャ上の単体テストでは信頼性をもって動作できません。実際の ZooKeeper と対話させる単体テストを使うのは、最初から悪い考えです(単体テストは複雑な分散システムを検証することを目的としていません)。この目的にはすでにインテグレーションテストを使用しており、そのほうが適しています。 #13745 (alexey-milovidov).
  • スタイルチェック用の Docker イメージを追加しました。すべての Docker および docker-compose ファイルが docker ディレクトリ内に配置されていることを確認するスタイルチェックを追加しました。 #13724 (Ilya Yatsishin).
  • Mac OS 上での Cassandra ビルドを修正。 #13708 (Ilya Yatsishin).
  • 共有ビルドのリンクエラーを修正。 #13700 (Amos Bird).
  • RBAC と連携して動作することを確認するために、LDAP ユーザー認証スイートを更新。 #13656 (vzakaznikov).
  • contrib/aws から -DENABLE_CURL_CLIENT を削除しました。 #13628 (Vladimir Chebotarev).
  • ClickHouse ノードのヘルスチェックのタイムアウト時間を延長し、ヘルスチェックで不健全と判定されたコンテナが見つかった場合に docker-compose のログをダンプできるようにしました。 #13612 (vzakaznikov).
  • #10977 が無効な Issue であることを確認した。#13539Amos Bird)。
  • robot-clickhouse からの PR をスキップするようにしました。 #13489 (Nikita Mikhaylov).
  • Dockerfile を統合テストから docker/test ディレクトリへ移動しました。docker_compose ファイルは runner Docker コンテナ内で利用可能です。Docker イメージは統合テストではなく CI でビルドされます。#13448 (Ilya Yatsishin).

ClickHouse リリース 20.7

ClickHouse リリース v20.7.2.30-stable, 2020-08-31

後方互換性のない変更

  • 少なくとも 1 つの引数に浮動小数点数を取る関数 modulo(演算子 %)は、両方の引数を整数に変換せず、浮動小数点数に対して直接、除算の余りを計算するようになります。これにより、動作がほとんどの DBMS と互換になります。これは Date および DateTime 型にも適用されます。エイリアス mod を追加しました。これにより #7323 がクローズされました。 #12585alexey-milovidov)。
  • ゼロの Date/DateTime 値を 0000-00-00 および 0000-00-00 00:00:00 として特別に表示することを非推奨としました。 #12442alexey-milovidov)。
  • 関数 groupArrayMoving* は分散クエリで動作していませんでした。その結果は最大の型に昇格させずに計算されており、不適切なデータ型になっていました。関数 groupArrayMovingAvg は、avg 関数と一貫しない整数値を返していました。これにより #12568 が修正されました。 #12622alexey-milovidov)。
  • MergeTree の設定に対するサニティチェックを追加しました。設定が不正な場合、サーバーの起動やテーブルの作成を拒否し、ユーザーに対して詳細な説明を出力します。 #13153alexey-milovidov)。
  • ユーザーが background_pool_sizenumber_of_free_entries_in_pool_to_execute_mutation または number_of_free_entries_in_pool_to_lower_max_size_of_merge より小さい値に設定してしまうケースを防ぎます。これらの場合、ALTER 文が動作しないか、マージの最大サイズが過度に制限されてしまいます。その場合は、対処方法を説明する例外をスローします。これにより #10897 がクローズされました。 #12728alexey-milovidov)。
  • 20.5 より古いバージョンからアップグレードする際に、ローリングアップデートが実行され、クラスタ内に 20.5 以上と 20.5 未満の両方のバージョンが混在している場合、古いバージョンの ClickHouse ノードを再起動し、新しいバージョンが存在する状態で古いバージョンが起動されると、Part ... intersects previous part エラーが発生する可能性があります。このエラーを防ぐために、まずすべてのクラスタノードに新しい clickhouse-server パッケージをインストールし、その後で再起動を行ってください(つまり、clickhouse-server を再起動するときには、必ず新しいバージョンで起動されるようにします)。

新機能

  • 多数のポリゴン(世界地図など)からなる辞書の中で、座標からリージョンを検索する効率的な「リバースジオコーディング」ルックアップを提供するポリゴン辞書型を追加しました。CPU とメモリ使用量を低く抑えるために、再帰グリッドを用いて入念に最適化されたアルゴリズムを使用しています。 #9278 (achulkov2).
  • 事前設定されたユーザー向けの LDAP 認証(「Simple Bind」方式)のサポートを追加しました。 #11234 (Denis Glazachev).
  • 一部の ALTER TABLE ... PARTITION ... クエリ(現在は ATTACHFREEZE)において、対象となったパーツに関する情報を出力する設定 alter_partition_verbose_result を導入しました。 #8076 をクローズ。 #13017 (alesapin).
  • ベイズ AB テスト用の bayesAB 関数を追加しました。 #12327 (achimbab).
  • 致命的エラーのスタックトレースが収集される system.crash_log テーブルを追加しました。このテーブルは通常は空であることが想定されています。 #12316 (alexey-milovidov).
  • デフォルトのデータベースおよび出力フォーマットの設定に利用できる HTTP ヘッダー X-ClickHouse-DatabaseX-ClickHouse-Format を追加しました。 #12981 (hcz).
  • SimpleAggregateFunctionminMap および maxMap 関数のサポートを追加しました。 #12662 (Ildus Kurbangaliev).
  • ディスク上のデータを変更する ALTER クエリの実行を制限する設定 allow_non_metadata_alters を追加しました。デフォルトでは無効です。 #11547 をクローズ。 #12635 (alesapin).
  • 任意の式を、指定されたフォーマットで文字列に変換するための関数 formatRow を追加しました。SQL の出力を操作する際に有用で、columns 関数と組み合わせることで非常に柔軟に利用できます。 #12574 (Amos Bird).
  • MySQL との互換性のために FROM_UNIXTIME 関数を追加しました。12149 に関連。 #12484 (flynn).
  • allow_nullable_key テーブル設定が有効な場合、MergeTree テーブルにおいて Nullable 型をキーとして使用できるようにしました。 #5319 をクローズ。 #12433 (Amos Bird).
  • COS との統合を追加しました。 #12386 (fastio).
  • キーにマップされた値を加算/減算するための mapAdd および mapSubtract 関数を追加しました。 #11735 (Ildus Kurbangaliev).

バグ修正

  • 単一レプリカで実行する必要があるクエリにおいて発生していた、早すぎる ON CLUSTER タイムアウトを修正しました。#6704#7228#13361#11884 を修正します。#13450alesapin)。
  • #12277 で導入されたマーク包含検索で発生していたクラッシュを修正。#14225Amos Bird)。
  • キャッシュレイアウトを使用する外部ディクショナリにおけるレースコンディションを修正しました。サーバーがクラッシュする原因となっていました。 #12566 (alesapin).
  • インタラクティブモードのクライアントで、進行状況バーが表示中のデータを潰してしまう問題を修正します。これにより、#12562#13369#13584 および #12964 が修正されます。 #13691 (alexey-milovidov).
  • LowCardinality カラムに対して複数カラムの ORDER BY を使用した際に、ソート順が誤っていた問題を修正しました。これにより #13958 が解決されました。#14223Nikita Mikhaylov)。
  • cache-dictionary に対する query_wait_timeout_milliseconds 設定を誤って上書きしていたハードコードされたタイムアウトを削除しました。 #14105 (Nikita Mikhaylov).
  • Poco::Exception: no space left on device の追加情報内の誤ったマウントポイントを修正しました。 #14050 (tavplubix).
  • optimize_duplicate_order_by_and_distinct 設定有効時に、サブクエリ側にも DISTINCT を含む DISTINCT 付き SELECT クエリで誤ったクエリ最適化が行われていた問題を修正しました。 #13925 (Artem Zuikov).
  • Distributed テーブルのリネーム時にデッドロックが発生しうる不具合を修正しました。 #13922 (tavplubix).
  • ORDER BY で複数列を使用した場合に FixedString 列の並び順が誤っていた問題を修正。#13182 を解決。#13887Nikolai Kochetov)。
  • topK/topKWeighted 集約(非デフォルトのパラメータ使用時)の潜在的な精度低下を修正。 #13817 (Azat Khuzhin).
  • INDEXSET 型の MergeTree テーブルからの読み取り時に、NULL との比較で失敗する問題を修正しました。これにより #13686 が修正されました。 #13793Amos Bird)。
  • 関数 range() の step 引数のオーバーフローを修正。 #13790 (Azat Khuzhin).
  • DROP DATABASECREATE TABLE を並行して実行した際に発生する Directory not empty エラーを修正しました。 #13756 (alexey-milovidov).
  • h3KRing 関数に範囲チェックを追加しました。これにより #13633 が修正されます。#13752alexey-milovidov)。
  • DETACH とバックグラウンドマージとの間に存在していたレースコンディションを修正しました。DETACH 後にパーツが復活してしまう可能性がありました。これは #8602 の続きであり、そちらでは問題自体は解決されていませんでしたが、問題を実証するテストが導入されており、そのテストがごくまれなケースで失敗し始めていました。#13746alexey-milovidov)。
  • log_queries_min_typeQUERY_START より大きい場合のログの Settings.Names/Values を修正しました。 #13737 (Azat Khuzhin).
  • ユーザーとグループの確認時に clickhouse-server.init が出力する誤ったメッセージを修正。#13711 (ylchou)。
  • optimize_move_functions_out_of_any が有効な場合でも、any(arrayJoin())arrayJoin() に最適化しないようにしました。 #13681 (Azat Khuzhin).
  • 同時実行される ALTER ... REPLACE/MOVE PARTITION ... クエリで発生する可能性のあったデッドロックを修正しました。 #13626 (tavplubix).
  • cache-dictionary が、ソースに値が存在する場合でもデフォルト値を返してしまうことがあった問題を修正しました。 #13624 (Nikita Mikhaylov).
  • compact parts(実験的機能)におけるセカンダリインデックスの破損を修正。 #13538 (Anton Popov).
  • 関数 netloc 内の不正なコードを修正しました。これにより #13335 が解決されます。#13446alexey-milovidov)。
  • parseDateTimeBestEffort 関数に Unix timestamp を引数として渡した場合に発生していたエラーを修正しました。これにより #13362 を修正しました。#13441alexey-milovidov)。
  • NULL 要素を含むタプルの比較時に無効な戻り値型となっていた問題を修正。#12461 を解決。#13420Nikolai Kochetov)。
  • SET optimize_move_functions_out_of_any = 1any() 内のエイリアスの組み合わせにより aggregate function any(x) is found inside another aggregate function in query エラーを引き起こしていた誤った最適化を修正しました。 #13419 (Artem Zuikov).
  • StorageMemory 内の潜在的なレースコンディションを修正。 #13416 (Nikolai Kochetov).
  • クエリ結果がゼロ行の場合に、Arrow および Parquet フォーマットで出力が空になっていた問題を修正しました。これらのフォーマットでは空の出力は無効であるためです。 #13399 (hcz).
  • 定数列およびプライマリキーのプレフィックスを ORDER BY 句に含む SELECT クエリを修正。 #13396 (Anton Popov).
  • clickhouse-local 向けの PrettyCompactMonoBlock を修正し、PrettyCompactMonoBlock における extremes/totals の動作を修正。#7746 を解決。#13394Azat Khuzhin)。
  • system.text_log のデッドロックを修正しました。#12452alexey-milovidov)。これは #12339 の一部です。この修正により #12325 が解決しました。#13386Nikita Mikhaylov)。
  • File(TSVWithNames*) を修正(ヘッダーが複数回書き込まれていた)、clickhouse-local --format CSVWithNames* を修正(ヘッダーが出力されず、#12197 以降動作が壊れていた)、行数が 0 の場合の clickhouse-local --format CSVWithNames* を修正(ヘッダーが出力されない問題)。#13343Azat Khuzhin)。
  • 関数 groupArrayMovingSum が空の状態をデシリアライズする際に発生していたセグメンテーションフォルトを修正。#13339 を修正。#13341alesapin)。
  • JOIN ON セクション内の arrayJoin() 関数でエラーを発生させるようにしました。 #13330 (Artem Zuikov).
  • join_use_nulls=1 設定時の LEFT ASOF JOIN のクラッシュを修正しました。 #13291 (Artem Zuikov).
  • 遅延レプリカからのクエリの場合に発生する可能性がある Totals having transform was already added to pipeline エラーを修正。#13290 (Nikolai Kochetov)。
  • ユーザーが関数 h3ToChildren に細工された特定の引数を渡した場合、サーバーがクラッシュする可能性がありました。この修正により #13275 が解消されました。 #13277alexey-milovidov)。
  • NaN 値を含む Float 型に対して呼び出された uniqExacttopKsumDistinct および類似の集約関数における、潜在的なパフォーマンス低下とわずかに誤った結果を修正しました。これはデバッグビルドでのアサーションもトリガーしていました。この変更により #12491 が修正されました。 #13254alexey-milovidov)。
  • 主キーに単調関数を含む式があり、かつクエリに異なる型の定数との比較が含まれる場合の KeyCondition のアサーションを修正しました。これにより #12465 が解決されます。#13251alexey-milovidov)。
  • roundUpToPowerOfTwoOrZero() 関数で、MSB がセットされている数値については、その値をそのまま返すようにしました。これにより、配列サイズがオーバーフローした場合に起こりうる潜在的なエラーを防ぎます。 #13234 (Azat Khuzhin).
  • リテラルの NULL ではない nullable な constexpr を条件として使用した if 関数の不具合を修正しました。 #12463 に対応します。 #13226alexey-milovidov)。
  • 配列要素および配列の添字がともに Nullable の場合の arrayElement 関数の assert を修正しました。これにより #12172 が解決します。 #13224 (alexey-milovidov).
  • 定数引数を取る DateTime64 変換関数の不具合を修正。 #13205 (Azat Khuzhin).
  • users.xml から行ポリシーをパースする際、データベース名やテーブル名にドットが含まれている場合でも正しく処理できるよう修正しました。これにより #5779#12527 が修正されます。#13199Vitaly Baranov)。
  • 一度接続が切断されると redis ディクショナリにアクセスできなくなる問題を修正しました。これは cache および direct のディクショナリレイアウトで発生する可能性があります。 #13082 (Anton Popov).
  • 関数を使用したインデックス解析の誤りを修正しました。この不具合により、MergeTree テーブルからの読み取り時に一部のデータパーツがスキップされてしまう可能性がありました。#13060 を修正。#12406 を修正。#13081Anton Popov)。
  • クエリのスコープ内では決定的だが、クエリ間では決定的でない now(), now64(), randConstant() といった関数を使用するリモートクエリで発生する Cannot convert column because it is constant but values of constants are different in source and result エラーを修正。 #11327 を解決。 #13075Nikolai Kochetov)。
  • ORDER BY でタプルを使用し、小さい LIMIT を指定したクエリで発生する可能性があったクラッシュを修正しました。 #12623 を修正。 #13009Nikolai Kochetov)。
  • UNIONJOIN を含むクエリで発生する Block structure mismatch エラーを修正。#12602 に対応。#12989Nikolai Kochetov)。
  • 1 つの時間間隔内で、有効期限が複数のパーティションに影響する場合に正しく動作していなかった merge_with_ttl_timeout のロジックを修正しました(@excitoon による変更)。#12982Alexander Kazakov)。
  • DDL クエリから作成された range ハッシュ辞書で列が重複する問題を修正。これにより #10605 が解決されます。 #12857alesapin)。
  • ローカルレプリカからの SELECT に対するスレッド数の不要な制限を削除しました。 #12840 (Nikolai Kochetov).
  • ALTER DELETEALTER MODIFY COLUMN クエリが 1 つの mutation として同時に実行されたときに発生する、まれなバグを修正しました。このバグにより count.txt 内の行数が誤り、その結果としてパーツ内のデータも不正になる可能性がありました。また、ALTER RENAME COLUMNALTER ADD COLUMN が同時に実行された場合に発生する小さなバグも修正しました。 #12760 (alesapin).
  • clickhouse 辞書ソースを使用してリモートテーブルをクエリする際に誤った認証情報が使用されていた問題。 #12756 (sundyli).
  • CAST(Nullable(String), Enum()) を修正しました。 #12745 (Azat Khuzhin).
  • IN 句で関数として解釈される大きなタプルを使用した場合のパフォーマンスを修正しました。ユーザーが何らかのよくわからない理由で WHERE x IN (1, 2, ...) ではなく WHERE x IN tuple(1, 2, ...) と記述してしまうケースに対応しています。 #12700 (Anton Popov).
  • input_format_parallel_parsing のメモリトラッキングを修正(スレッドをグループに関連付けることにより)。 #12672 (Azat Khuzhin).
  • any(func(&lt;lambda&gt;)) の場合に誤った最適化 optimize_move_functions_out_of_any=1 が行われる問題を修正。 #12664 (Artem Zuikov).
  • const expression を使用する Bloom Filter インデックスの不具合を修正。#10572#12659Winter Zhang)。
  • ブローカーが利用できない場合などに発生する StorageKafka の SIGSEGV を修正しました。 #12658 (Azat Khuzhin).
  • 関数 ifArray(UUID) 引数のサポートを追加しました。これにより #11066 が修正されました。#12648alexey-milovidov)。
  • CREATE USER IF NOT EXISTS は、ユーザーが既に存在している場合に例外をスローしなくなりました。これにより、#12507 が修正されました。 #12646 (Vitaly Baranov)。
  • ALTER ... UPDATE 中に、予期しないケース(例: UInt64 カラムからの減算時)で例外 There is no supertype... がスローされることがありました。この問題により #7306 および #4165 が修正されました。#12633 (alexey-milovidov)。
  • 外部ソートを行うクエリで発生する可能性のある Pipeline stuck エラーを修正しました。 #12617 を解決。 #12618 (Nikolai Kochetov)。
  • OPTIMIZE DEDUPLICATE で発生するエラー Output of TreeExecutor is not sorted を修正。#11572 に対応。#12613Nikolai Kochetov)。
  • クエリ最適化の際に関数 any の結果につけたエイリアスが失われてしまう問題を修正しました。 #12593 (Anton Popov).
  • DROP TABLE 時に Distributed テーブルのデータ(非同期 INSERT のブロック)を削除するようにしました。 #12556 (Azat Khuzhin).
  • これにより、ファイル checksums.txt が存在しない場合に、ClickHouse はパーツのチェックサムを再計算するようになりました。#9827 以降、この挙動は壊れていました。#12545alesapin)。
  • enable_mixed_granularity_parts=1 のときに ALTER DELETE クエリ実行後、古いパーツが破損してしまう原因となっていたバグを修正。#12536 を修正。#12543alesapin)。
  • データが重複する原因となっていたライブビュー テーブルの競合状態を修正しました。LIVE VIEW は実験的な機能です。 #12519 (vzakaznikov).
  • AggregateFunction(avg, ...) の値のバイナリフォーマットにおける後方互換性を修正しました。これにより #12342 が解消されます。#12486alexey-milovidov)。
  • 辞書のキー式で結合している場合(t JOIN dict ON expr(dict.id) = t.id)に、辞書 JOIN でクラッシュが発生する問題を修正しました。このケースでは辞書 JOIN の最適化を無効化します。 #12458 (Artem Zuikov).
  • 非常に大きな LIMIT または OFFSET が指定された場合に発生していたオーバーフローの問題を修正します。これにより #10470 が修正されます。また #11372 も修正されます。 #12427alexey-milovidov)。
  • kafka: バッチの途中にエラーを含むメッセージが存在していた場合に SIGSEGV が発生する問題を修正。 #12302 (Azat Khuzhin).

改善

  • ZooKeeper に保持するログ量を抑えるようにしました。多数のサーバーやテーブル、INSERT がある環境でレプリカがオフラインになった場合でも、ZooKeeper ノード数が過度に増加しないようにします。 #13100 (alexey-milovidov).
  • ALTER または mutation の実行中にエラーが発生した場合、例外がクライアントに返されるようになりました。Closes #11329. #12666 (alesapin).
  • system.eventsQueryTimeMicrosecondsSelectQueryTimeMicrosecondsInsertQueryTimeMicroseconds を、system.metricsprocessesquery_log などと同様に追加しました。 #13028 (ianton-ru)。
  • SelectedRows および SelectedBytessystem.events に追加し、さらに system.metricsprocessesquery_log などにも追加しました。 #12638 (ianton-ru)。
  • current_database の情報を system.query_log に追加しました。 #12652 (Amos Bird)。
  • TabSeparatedRaw を入力フォーマットとして許可します。 #12009 (hcz).
  • joinGet が複数キーでの検索をサポートするようになりました。 #12418 (Amos Bird).
  • *Map 集約関数が NULL を含む Array 上でも動作するようにしました。 #13157 を修正しました。 #13225alexey-milovidov)。
  • タイムゾーン内で負の Unix タイムスタンプになってしまうような DateTime 値のパース時のオーバーフロー(例: モスクワ時間での 1970-01-01 00:00:00)を回避します。代わりに値を 0 にサチュレートします。これにより #3470 が修正されます。これにより #4172 が修正されます。 #12443alexey-milovidov)。
  • AvroConfluent: Kafka のトゥームストーンレコードをスキップ - 破損したレコードのスキップをサポート #13203 (Andrew Onyshchuk).
  • 長いクエリに対して誤ったエラーが返される問題を修正しました。正しいクエリであっても、Max query size exceeded 以外の構文エラーが発生する可能性がありました。 #13928 (Nikolai Kochetov).
  • lgamma 関数内のデータ競合を修正しました。この競合は tsan のみで検出され、実際には副作用は発生していませんでした。 #13842 (Nikolai Kochetov).
  • ATTACH/ALTER/CREATE QUOTA ステートメントにおける「Week」インターバルの書式を修正。 #13417 (vladimir-golovchenko).
  • コンパクトパーツの処理中に破損したパーツが検出された場合にも、報告されるようになりました。コンパクトパーツは実験的な機能です。 #13282 (Amos Bird)。
  • geohashesInBoxassert を修正し、#12554 を解決。 #13229alexey-milovidov)。
  • parseDateTimeBestEffort 内のアサートを修正します。これにより #12649 が解決されます。#13227alexey-milovidov)。
  • Processors/PipelineExecutor における軽微な最適化:必要がある場合にはループを抜けるようにした。 #13058 (Mark Papadakis).
  • TABLE キーワードなしの TRUNCATE TABLE 構文をサポートしました。 #12653 (Winter Zhang).
  • デフォルトで EXPLAIN クエリのフォーマットが上書きされてしまう問題を修正しました。これにより #12541 が解決しました。 #12541 (BohuTANG).
  • SEMI LEFT JOIN の代わりに LEFT SEMI JOIN を使用できるようにし、より標準的な方法で JOIN の種別とタイプを設定可能にしました。現時点ではどちらも正しい構文として扱われます。 #12520 (Artem Zuikov)。
  • multiple_joins_rewriter_version のデフォルト値を 2 に変更しました。これにより、カラム名を考慮できる新しい multiple joins rewriter が有効になります。 #12469 (Artem Zuikov)。
  • S3 ストレージへのリクエスト向けのメトリクスを複数追加。 #12464 (ianton-ru).
  • --secure 引数を指定した clickhouse-benchmark に対して、正しいデフォルトのセキュアポートを使用するようにしました。これにより #11044 が解決されました。#12440alexey-milovidov)。
  • LogTinyLogStripeLog エンジンにおける挿入エラーがロールバックされるようになりました。以前のバージョンでは、挿入エラーによってテーブルの状態が不整合になる可能性がありました(これはドキュメントどおりの動作で、これらのテーブルエンジンでは通常の挙動です)。この変更により #12402 が修正されました。#12426alexey-milovidov)。
  • Atomic データベースエンジン向けに RENAME DATABASE および RENAME DICTIONARY を実装しました - ReplicatedMergeTree 用の ZooKeeper パスで使用できる暗黙の {uuid} マクロを追加しました。これは CREATE ... ON CLUSTER ... クエリで動作します。利用するには show_table_uuid_in_table_create_query_if_not_niltrue に設定します。 - ReplicatedMergeTree エンジンの引数を省略可能にし、デフォルトで /clickhouse/tables/{uuid}/{shard}/ および {replica} が使用されるようにしました。Closes #12135. - 細かな修正。 - これらの変更により、Atomic データベースエンジンとの後方互換性が失われます。既存の Atomic データベースは新しい形式へ手動で変換する必要があります。Atomic データベースは実験的な機能です。 #12343 (tavplubix).
  • AWSAuthV4Signer を専用のロガーに分離し、ログメッセージから不要な AWSClient: AWSClient を削除しました。 #12320 (Vladimir Chebotarev).
  • ディスクアクセスストレージでの例外メッセージを改善。 #12625 (alesapin).
  • 無効な引数の数が指定された場合の関数 in による例外処理を改善。 #12529 (Anton Popov).
  • アダプティブ粒度に関するエラーメッセージを修正。 #12624 (alesapin).
  • FORMAT の後の SETTINGS のパースを修正。 #12480 (Azat Khuzhin).
  • MergeTree テーブルに ORDER BY または PARTITION BY が含まれていない場合に、すべてのカラムを CLEAR する ALTER を実行できてしまい、その結果 ALTER がハングすることがありました。この問題を修正しました #7941#12382alexey-milovidov)。
  • 他のクライアントセッションとの履歴の混在を防ぐため、各クエリ実行後に履歴ファイルから補完を再読み込みしないようにしました。 #13086 (Azat Khuzhin).

パフォーマンスの改善

  • 一部の処理でメモリ使用量を最大 2 倍削減しました。#12424 (alexey-milovidov).
  • 主キー範囲が完全一致するクエリに対して PK ルックアップを最適化しました。#12277 (Ivan Babrou).
  • LowCardinality を使用する非常に短いクエリをわずかに最適化しました。#14129 (Anton Popov).
  • UInt8/UInt16 キーによる集約のパフォーマンスをわずかに改善しました。#13091 および #13055 (alexey-milovidov).
  • クエリプラン(サブクエリ内)で LIMIT ステップのプッシュダウンを行いました。#13016 (Nikolai Kochetov).
  • #11564 で説明されているように、パーツに対してプライマリキーの並列ルックアップとインデックススキップ段階を実装しました。#12589 (Ivan Babrou).
  • set optimize_if_transform_strings_to_enum = 1 の場合、関数 "if" および "transform" の String 型引数を Enum に変換するようにしました。#12515 (Artem Zuikov).
  • set optimize_monotonous_functions_in_order_by=1 の場合、ORDER BY において単調関数をその引数に置き換えるようにしました。#12467 (Artem Zuikov).
  • set optimize_redundant_functions_in_order_by = 1 の場合、ORDER BY x, f(x)ORDER by x に書き換える ORDER BY の最適化を追加しました。#12404 (Artem Zuikov).
  • サブクエリに WITH 句が含まれる場合でも述語プッシュダウンを許可しました。これにより #12293 が修正されます。#12663 (Winter Zhang).
  • コンパクトパーツからの読み取り性能を改善しました。コンパクトパーツは実験的な機能です。#12492 (Anton Popov).
  • DiskS3 におけるストリーミング最適化を試験的に実装しました。DiskS3 は実験的な機能です。#12434 (Vladimir Chebotarev).

ビルド / テスト / パッケージングの改善

  • sh テストのリントには shellcheck を使用するようにしました。 #13200 #13207 (alexey-milovidov).
  • GitHub フックでプルリクエストにラベルを自動設定するスクリプトを追加。 #13183 (alesapin).
  • 再帰的なサブモジュールの一部を削除しました。詳しくは #13378 を参照してください。 #13379 (alexey-milovidov)。
  • すべてのサブモジュールが適切な URL から取得されることを保証します。 #13379 の続きです。これは #13378 を修正します。 #13397alexey-milovidov)。
  • クエリ内から参照できるユーザー定義設定のサポートを追加しました。これは、ClickHouse エンジンが別のシステムのコンポーネントとして使用される場合に必要となります。 #13013 (Vitaly Baranov).
  • TestFlows における INSERT 権限の RBAC 機能に対するテストを追加しました。SELECT のテスト対象となるテーブルを拡充しました。新しいテーブルエンジンのテストに合わせて、Requirements を追加しました。 #13340 (MyroTk)。
  • ストレステスト中のサーバー再起動時に発生するタイムアウトエラーを修正しました。 #13321 (alesapin).
  • Now fast test では、サーバーをリトライしながら待機するようになりました。 #13284 (alesapin).
  • Function materialize()(ClickHouse のテスト用関数)は、期待どおり NULL に対しても動作し、NULL を非定数カラムに変換します。 #13212 (alexey-milovidov).
  • AArch64 向けの libunwind のビルドを修正します。これにより #13204 が解決されます。#13208alexey-milovidov)。
  • テストの不安定さを抑えるため、zkutil gtest におけるリトライ回数をさらに増やしました。 #13165 (alexey-milovidov).
  • RBAC TestFlows に対する細かな修正。 #13152 (vzakaznikov).
  • 00960_live_view_watch_events_live.py テストを修正。 #13108vzakaznikov)。
  • ドキュメントのデプロイスクリプトにおけるキャッシュパージ処理を改善。 #13107 (alesapin).
  • いくつかの孤立したテストを gtest に書き換え、テストから不要なインクルードを削除しました。 #13073 (Nikita Mikhaylov).
  • SELECT 権限の RBAC 機能に関するテストを TestFlows に追加しました。 #13061 (Ritaank Tiwari).
  • fast test check で一部のテストを再実行しました。 #12992 (alesapin).
  • 「rdkafka」ライブラリの MSan エラーを修正しました。これにより #12990 がクローズされます。rdkafka をバージョン 1.5(master)に更新しました。#12991alexey-milovidov)。
  • AVX-512 を備えたサーバー上でテストを実行した場合に base64 で発生する UBSan レポートを修正しました。これにより #12318 が修正されます。作成者: @qoega。 #12441 (alexey-milovidov)。
  • HDFS ライブラリにおいて UBSan レポートで報告されていた問題を修正しました。これにより #12330 がクローズされます。#12453alexey-milovidov)。
  • 古いバージョンで作成したバックアップを新しいバージョンで復元できることを確認しました。これにより #8979 がクローズされました。#12959alesapin)。
  • 統合テスト内で helper_container イメージをビルドしないでください。CI 上で Docker コンテナをビルドし、統合テストでは事前ビルド済みの helper_container を使用してください。#12953 (Ilya Yatsishin)。
  • プライマリキー列に対する ALTER TABLE CLEAR COLUMN クエリのテストを追加。#12951alesapin)。
  • testflows テストのタイムアウト値を増やしました。 #12949 (vzakaznikov).
  • Mac OS X 環境でのテストビルドを修正しました。これにより #12767 がクローズされました。#12772alexey-milovidov)。
  • Connector-ODBC を mysql-connector-odbc-8.0.21 に更新しました。#12739 (Ilya Yatsishin).
  • TestFlows に RBAC 構文テストを追加しました。 #12642 (vzakaznikov).
  • TestKeeperのパフォーマンスを改善しました。これにより、Replicatedテーブルを多用するテストの実行が高速化されます。 #12505 (alexey-milovidov).
  • ストレステストの実行後にサーバーが正常に起動できることを確認するようにしました。これにより #12473 を修正しました。 #12496 (alesapin)。
  • fmtlib を master(7.0.1)に更新。 #12446 (alexey-milovidov)。
  • 高速なテスト用の Docker イメージを追加。#12294alesapin)。
  • 統合テスト用の設定パスを再構築。#12285Ilya Yatsishin)。
  • スタックフレームが大きくなり過ぎないように制御できるコンパイラオプションを追加しました。これにより、小さいスタックサイズのファイバー内でコードを実行しやすくなります。 #11524 (alexey-milovidov).
  • gitignore ファイルを更新。 #13447 (vladimir-golovchenko).

ClickHouse リリース 20.6

ClickHouse リリース v20.6.3.28-stable

後方互換性のない変更

  • 20.5 より古いバージョンからアップグレードする際に、ローリングアップデートを行っていて、クラスタ内に 20.5 以上と 20.5 未満の両方のバージョンが存在する場合、古いバージョンの ClickHouse ノードを再起動し、新しいバージョンが存在する状態で古いバージョンが起動されると、Part ... intersects previous part エラーが発生する可能性があります。このエラーを防ぐには、まずクラスタ内のすべてのノードに新しい clickhouse-server パッケージをインストールしてから再起動を行ってください(つまり、clickhouse-server を再起動する際には、新しいバージョンで起動されるようにします)。

新機能

  • EXPLAIN クエリの初期実装を追加しました。構文: EXPLAIN SELECT ...。これにより #1118 が修正されました。#11873Nikolai Kochetov)。
  • ストレージ RabbitMQ を追加しました。#11069Kseniia Sumarokova)。
  • PostgreSQL 互換の ILIKE 演算子を実装しました(#11710)。#12125Mike)。
  • SET join_algorithm = 'partial_merge' を用いた RIGHT および FULL JOIN をサポートしました。strictness は ALL のみ許可されます(ANY、SEMI、ANTI、ASOF はサポートされません)。#12118Artem Zuikov)。
  • 単一の値に基づいて集約を初期化するための関数 initializeAggregation を追加しました。#12109Guillaume Tassery)。
  • ALTER TABLE ... [ADD|MODIFY] COLUMN ... FIRST をサポートしました。#4006#12073Winter Zhang)。
  • 関数 parseDateTimeBestEffortUS を追加しました。#12028flynn)。
  • 出力フォーマットとして ORC をサポートしました(これまでは入力のみがサポートされていました)。#11662Kruglov Pavel)。

バグ修正

  • SET optimize_move_functions_out_of_any = 1any() 内のエイリアスを使用することで、aggregate function any(x) is found inside another aggregate function in query エラーを解消しました。 #13419 (Artem Zuikov).
  • clickhouse-local 用の PrettyCompactMonoBlock を修正しました。PrettyCompactMonoBlock 使用時の extremes/totals の処理を修正しました。これにより #7746 が解決されました。#13394Azat Khuzhin)。
  • 遅延レプリカからのクエリの場合に発生する可能性があった Totals having transform was already added to pipeline エラーを修正しました。 #13290 (Nikolai Kochetov).
  • ユーザーが関数 h3ToChildren に細工された特定の引数を渡した場合、サーバーがクラッシュする可能性がありました。これは #13275 を修正します。 #13277 (alexey-milovidov)。
  • NaN を含む Float 型に対して呼び出された uniqExacttopKsumDistinct などの集約関数における、潜在的な性能低下およびやや不正確な結果を修正しました。また、デバッグビルドで assert が発生していた問題も解消しました。これにより #12491 が修正されます。 #13254alexey-milovidov)。
  • リテラル NULL ではない nullable な constexpr を条件として使用する if 関数を修正。#12463 を解決。#13226alexey-milovidov)。
  • 配列要素が Nullable で、配列の添字も Nullable である場合の arrayElement 関数におけるアサートを修正しました。これにより #12172 の問題が解決されました。 #13224alexey-milovidov)。
  • 定数引数を使用する DateTime64 変換関数を修正しました。 #13205 (Azat Khuzhin).
  • 関数を使用した誤ったインデックスの解析を修正しました。これにより、MergeTree テーブルから読み取る際に誤ったパーツがプルーニングされてしまう可能性がありました。#13060 を修正。#12406 を修正。#13081Anton Popov)。
  • クエリのスコープ内では決定的だが、クエリ間では決定的ではない now(), now64(), randConstant() などの関数を使用するリモートクエリで発生していた、Cannot convert column because it is constant but values of constants are different in source and result エラーを修正しました。#11327 を修正。 #13075Nikolai Kochetov)。
  • ローカルレプリカからの SELECT クエリに対するスレッド数の不要な制限を修正しました。 #12840 (Nikolai Kochetov).
  • ALTER DELETEALTER MODIFY COLUMN クエリが 1 つの mutation として同時に実行された場合にまれに発生していたバグを修正しました。このバグにより count.txt 内の行数が不正になり、その結果、part 内のデータも不正になる可能性がありました。あわせて、ALTER RENAME COLUMNALTER ADD COLUMN を同時に実行した場合に発生する小さなバグも修正しました。 #12760 (alesapin).
  • CAST(Nullable(String), Enum()) を修正しました。 #12745 (Azat Khuzhin).
  • IN 句で関数として解釈される大きなタプルに関するパフォーマンス問題を修正しました。ユーザーが何らかのよくわからない理由から WHERE x IN (1, 2, ...) ではなく WHERE x IN tuple(1, 2, ...) と記述するケースです。 #12700 (Anton Popov).
  • input_format_parallel_parsing のメモリトラッキングを修正(スレッドをグループにアタッチすることで修正)。 #12672 (Azat Khuzhin).
  • 定数式での Bloom フィルターインデックスの不具合を修正しました。これにより #10572 が修正されました。#12659Winter Zhang)。
  • ブローカーが利用できない場合などに StorageKafka で発生していた SIGSEGV を修正しました。 #12658 (Azat Khuzhin).
  • 関数 if が引数としての Array(UUID) をサポートするようになりました。これにより、#11066 が解決されました。 #12648 (alexey-milovidov).
  • CREATE USER IF NOT EXISTS は、ユーザーが既に存在している場合でも例外をスローしなくなりました。これにより #12507 が修正されました。 #12646 (Vitaly Baranov).
  • ディスクアクセスストレージでの例外メッセージを改善。 #12625 (alesapin).
  • 関数 groupArrayMoving* は分散クエリに対して正しく動作していませんでした。その結果は誤ったデータ型(最大の型への型昇格なし)で計算されていました。関数 groupArrayMovingAvgavg 関数と一貫性のない整数値を返していました。これにより #12568 が修正されました。#12622alexey-milovidov)。
  • 関数 any でエイリアスを使用できなかった問題を修正しました。 #12593 (Anton Popov)。
  • キャッシュレイアウトを使用する外部辞書におけるレースコンディションを修正しました。この問題によりサーバーがクラッシュする可能性がありました。 #12566 (alesapin).
  • DROP TABLE 時に Distributed テーブルのデータ(非同期 INSERT のブロック)を削除する。 #12556 (Azat Khuzhin).
  • enable_mixed_granularity_parts=1 のときに ALTER DELETE クエリ実行後、既存のパーツが破損してしまう原因となっていたバグを修正しました。 #12536 を修正。 #12543alesapin)。
  • 関数 in の引数の数が不正な場合の例外メッセージを改善。 #12529 (Anton Popov).
  • データの重複を引き起こす可能性があったライブビュー テーブルでのレースコンディションを修正。 #12519 (vzakaznikov).
  • コンパクトパーツから読み込む際のパフォーマンス問題を修正しました。 #12492 (Anton Popov).
  • AggregateFunction(avg, ...) の値のバイナリフォーマットにおける後方互換性の問題を修正しました。これにより #12342 が解決されました。 #12486 (alexey-milovidov).
  • FORMAT の後に続く SETTINGS の解析を修正。 #12480 (Azat Khuzhin).
  • text_log が有効な場合に発生していたデッドロックを修正しました。 #12452 (alexey-milovidov).
  • 非常に大きな LIMIT または OFFSET が指定された場合に発生していたオーバーフローを修正しました。これにより、#10470 および #11372 が修正されます。#12427alexey-milovidov)。
  • StorageMerge 使用時に発生する可能性があったセグメンテーションフォルトを修正しました。これにより #12054 が解決されました。 #12401 (tavplubix).
  • #12098 を解決するために #11079 で導入された変更を元に戻しました。 #12397 (Mike)。
  • Bloom filter インデックスの引数に対する追加チェックを追加しました。これにより #11408 を修正しました。 #12388 (alexey-milovidov)。
  • インデックス付きテーブルの WHERE 句で負の定数または浮動小数点定数が使用された場合に例外が発生しないようにしました。これにより #11905 が修正されます。#12384alexey-milovidov)。
  • 依存している DEFAULT 式があっても、カラムを CLEAR できるようになりました。これにより #12333 が修正されました。#12378alexey-milovidov)。
  • -StateNullable 引数を持つ集計関数に対する TOTALS/ROLLUP/CUBE の挙動を修正しました。これにより #12163 が解決されます。 #12376 (alexey-milovidov)。
  • RENAME が許可されていない場合の ALTER RENAME COLUMN クエリに対するエラーメッセージと終了コードを修正しました。#12301 および #12303 を解決します。 #12335 (alesapin)。
  • ReplicatedMergeTreeQueue におけるごくまれに発生するレースコンディションを修正しました。 #12315 (alexey-milovidov).
  • 非固定長の型でコーデック Delta または DoubleDelta を使用した場合に、BAD_ARGUMENTS コードの例外ではなく LOGICAL_ERROR コードの例外が返されていました(LOGICAL_ERROR コードの例外が発生することはないようにしています)。この変更で #12110 が修正されました。 #12308alexey-milovidov)。
  • WITH FILL 修飾子における列の順序を正しく扱うように修正しました。以前は、ORDER BY 文で指定した列の順序が保持されていませんでした。 #12306 (Anton Popov).
  • 仮想カラム(Merge テーブルにおける _table など)によるフィルタリングや、system.tables からクエリする際にデータベース名でフィルタリングする場合のように、システムテーブルの「インデックス」カラムでデータをフィルタする式があり、その式が Nullable 型を返すときに発生する「bad cast」例外を回避します。これにより #12166 が修正されます。#12305alexey-milovidov)。
  • TTL 式が参照している列の名前を変更した後に TTL が正しく動作しない問題を修正しました。 #12304 (Anton Popov).
  • Kafka エンジンで、バッチの途中にエラーを含むメッセージがある場合に SIGSEGV が発生する問題を修正しました。 #12302 (Azat Khuzhin).
  • DNS キャッシュの更新中に、一部のスレッドが数秒間まれにハングする可能性があった問題を修正しました。 #12296 (tavplubix).
  • 設定名の誤字を修正しました。 #12292 (alexey-milovidov).
  • TrieDictionary の読み込みに失敗した場合にエラーを表示するようにしました。 #12290 (Vitaly Baranov).
  • 空配列に対する arrayFill 関数の動作に問題があり、クラッシュする可能性がありました。これにより #12263 が修正されました。#12279alexey-milovidov)。
  • LowCardinality 型に対して共通の型への変換を実装しました。これにより、LowCardinality 型の列とその他の列を持つテーブルに対して UNION ALL を実行できるようになります。これにより #8212 および #4342 が修正されます。#12275alexey-milovidov)。
  • S3 ストレージへのリクエストでリダイレクト回数の上限に達した際の挙動を修正しました。 #12256 (ianton-ru).
  • StorageFile で複数回連続して挿入を行う際に、一部の特殊な型でヘッダーが複数回書き込まれてしまう問題を修正しました。これにより #6155 が解決されました。#12197Nikita Mikhaylov)。
  • 0 または 1 以外の値を取る UInt8 型に対する論理関数を修正しました。 #12196 (Alexander Kazakov).
  • max_memory_usage* をプロセスの常駐メモリ量を上限として制限しました。 #12182 (Azat Khuzhin).
  • GROUP BY における単射関数の削除時の dictGet 引数チェックを修正。 #12179 (Azat Khuzhin).
  • SummingMergeTree エンジンがパーティションキーの列を合計する際の動作を修正しました。合計する列を明示的に定義した結果、それがパーティションキーの列と重複する場合には例外をスローするようにしました。これにより #7867 が修正されました。#12173Nikita Mikhaylov)。
  • ODBC 接続がスキーマをサポートしていない場合は、ディクショナリソースのテーブル名をスキーマ名とテーブル名に分割しないようにしました。 #12165 (Vitaly Baranov).
  • 条件が NULL と評価されるときにレコードが削除されてしまっていた ALTER DELETE の誤ったロジックを修正しました。これにより #9088 が修正されます。また、#12106 がクローズされます。#12153alexey-milovidov)。
  • エイリアスが存在する場合に、外部 DBMS(例: MySQL、ODBC)に送信するクエリの変換処理を修正しました。これにより #12032 が修正されました。 #12151 (alexey-milovidov).
  • 冗長な ORDER BY 最適化における誤ったコードを修正しました。このバグは #10067 で導入されました。#12148alexey-milovidov)。
  • 整数除算時に発生する可能性のあるオーバーフローを修正しました。これにより #12119 が解決されます。#12140alexey-milovidov)。
  • greatCircleDistancegeoDistance において無限ループが発生する可能性のあった問題を修正しました。これにより #12117 が解決されます。 #12137alexey-milovidov)。
  • 「pid」ファイルの扱いを適正化しました。以前のバージョンでは、サーバーが適切にシャットダウンされずに強制終了され、かつ以前に動作していたサーバーと同じ pid を持つ別のプロセスが存在する場合、サーバーが起動を拒否することがありました。また、別のサーバーが稼働中であっても、サーバーの起動に失敗した際に pid ファイルが削除されてしまうことがありました。これにより #3501 が修正されました。 #12133alexey-milovidov)。
  • ReplicatedVersionedCollapsingMergeTree テーブルに対して ZooKeeper 内のテーブルメタデータが誤った状態になる原因となっていたバグを修正しました。 #12093 を修正。 #12121alesapin)。
  • JOIN を含むマテリアライズドビュー、または system ログ(system.query_log、metric_log など)や engine=Buffer のベーステーブルを参照するサブクエリを含むマテリアライズドビューで、"There is no query" 例外が発生しないようにしました。 #12120 (filimonov).
  • ENGINE=Dictionary を使用するテーブルの、辞書に対する依存関係の扱いを修正しました。これにより #10994 および #10397 が解決されました。 #12116 (Vitaly Baranov).
  • Parquet フォーマットが、LowCardinality および LowCardinality(Nullable) 型で正しく動作するようになりました。#12086#8406 を修正しました。#12108Nikolai Kochetov)。
  • UNION を含む SELECT クエリにおいて、総スレッド数に対する制限値の誤りが原因だったパフォーマンス問題を修正しました。 #12030 を修正。 #12103 (Nikolai Kochetov).
  • -StateResample コンビネータで発生していたセグメンテーションフォルトを修正しました。 #12092 (Anton Popov).
  • SELECT クエリに対して system.quey_logresult_rows および result_bytes メトリクスが空になる問題を修正しました。 #11595 を解決。 #12089 (Nikolai Kochetov)。
  • VIEW からの SELECT に対してスレッド数を不必要に制限していた問題を修正しました。#11937 を修正します。#12085Nikolai Kochetov)。
  • DROP TABLE 実行時に StorageKafka で発生する SIGSEGV を修正しました。 #12075 (Azat Khuzhin).
  • PREWHERE に誤った型を使用した場合に発生する可能性があったクラッシュを修正しました。 #12053#12060 を修正しました。 #12060Nikolai Kochetov)。
  • Tuple(LowCardinality) 引数を持つ高階関数で発生していた Cannot capture column エラーを修正しました。これにより #9766 が解決されます。#12055Nikolai Kochetov)。
  • 制約が定数式かどうかをチェックするように修正しました。これにより #11360 が修正されました。#12042alexey-milovidov)。
  • 異なるサイズの FixedString 型の引数で関数 if を呼び出した際に、誤った結果が返されたりクラッシュする可能性がある問題を修正しました。これにより #11362 が修正されました。#12021alexey-milovidov)。

改良

  • JOIN の種類とタイプを、より標準的な方法で設定できるようにしました。SEMI LEFT JOIN の代わりに LEFT SEMI JOIN を使用できます。現時点ではどちらも正しい書き方として受け付けます。#12520 (Artem Zuikov).
  • Buffer エンジンに lifetime_rows/lifetime_bytes を追加しました。#12421 (Azat Khuzhin).
  • 「MySQL server has gone away」という固定メッセージの代わりに、詳細な例外メッセージをクライアントへ送信するようにしました。#12383 (BohuTANG).
  • グリッド境界線の表示に使用する文字セットを変更できるようにしました。利用可能な文字セットは UTF-8 と ASCII です。output_format_pretty_grid_charset を設定することでこの機能が有効になります。#12372 (Sabyanin Maxim).
  • MySQL の SELECT DATABASE() をサポートしました。#9336 また、MySQL 置換クエリの統合テストを追加しました。#12314 (BohuTANG).
  • MySQL クライアント/ドライバ向けに、長時間実行中のクエリをキャンセルするための KILL QUERY [connection_id] を追加しました。issue #12038#12152 (BohuTANG).
  • formatDateTime 関数で、%g(2 桁の ISO 年)および %G(4 桁の ISO 年)の置換をサポートしました。#12136 (vivarum).
  • system.diskstype カラムを追加しました。#12115 (ianton-ru).
  • REVOKE コマンドを改善しました。現在は、取り消す対象のアクセス権に対してのみ grant/admin オプションが必要になります。例えば、REVOKE ALL ON *.* FROM user1 を実行する場合、grant オプション付きで付与された完全なアクセス権を保持している必要はありません。REVOKE ALL FROM user1 コマンドを追加しました。これは user1 に付与されたすべてのロールを取り消します。#12083 (Vitaly Baranov).
  • load_balancing 用にレプリカ優先度を追加しました(ロードバランシングを手動で優先順位付けするため)。#11995 (Azat Khuzhin).
  • S3 メタデータ内のパスを相対パスに変更し、S3 ブロブをより簡単に扱えるようにしました。#11892 (Vladimir Chebotarev).

パフォーマンスの改良

  • ソートキーのプレフィックスを利用することで、ORDER BY および GROUP BY のパフォーマンスを改善しました(optimize_aggregation_in_order 設定で有効化、デフォルトでは無効)。#11696 (Anton Popov).
  • set optimize_injective_functions_inside_uniq=1 の場合に、uniq*() 内の単射関数を削除するようにしました。#12337 (Ruslan Kamalov).
  • リテラルを伴う IN 演算子に対してインデックスが使用されない、v19.3 頃に導入されたパフォーマンス退行を修正しました。この変更により #10574 が解決されます。#12062 (nvartolomei).
  • DiskS3 向けに単一パートアップロードを実装しました(実験的機能)。#12026 (Vladimir Chebotarev).

実験的機能

  • MergeTree ファミリーのテーブルに、データをメモリ上に保持する新しいパーツのインメモリ形式を追加しました。パーツは最初のマージ時に初めてディスクへ書き込まれます。行数またはバイト数が min_rows_for_compact_part および min_bytes_for_compact_part のしきい値を下回る場合、そのパーツはインメモリ形式で作成されます。さらに、オプション機能として Write-Ahead-Log のサポートがあり、デフォルトで有効で、in_memory_parts_enable_wal 設定によって制御されます。#10697 (Anton Popov).

ビルド/テスト/パッケージングの改善

  • clickhouse-client 向けに AST ベースのクエリファジングモードを実装しました。ファジングによって最近発見された issue の一覧についてはこのラベルを参照してください。ほとんどはこのツールで、いくつかは SQLancer と 00746_sql_fuzzy.pl によって発見されました。 #12111 (Alexander Kuzmenkov).
  • Testflows フレームワークに基づく新しい種類のテストを追加しました。 #12090 (vzakaznikov).
  • S3 HTTPS のインテグレーションテストを追加しました。 #12412 (Pavel Kovalenko).
  • サニタイザのトラップメッセージを別スレッドからログ出力するようにしました。これにより、thread sanitizer 実行時に発生しうるデッドロックを防止します。 #12313 (alexey-milovidov).
  • 機能テストおよびストレステストが、旧バージョンの clickhouse-test スクリプトでも実行可能になりました。 #12287 (alesapin).
  • ビルド中に orc で行われていた不要なファイル作成処理を削除しました。 #12258 (Nikita Mikhaylov).
  • 共通の docker compose ファイルをインテグレーション用 Docker コンテナに配置しました。 #12168 (Ilya Yatsishin).
  • CodeQL からの警告を修正しました。CodeQL は、既に使用している clang-tidy および PVS-Studio と併用する、別の静的解析ツールです。 #12138 (alexey-milovidov).
  • UNBUNDLED ビルド向けの軽微な CMake 修正を行いました。 #12131 (Matwey V. Kornilov).
  • いずれの Linux ディストリビューションにも依存しない最小構成の Docker イメージのサンプルを追加しました。 #12126 (alexey-milovidov).
  • clickhouse-server Docker イメージ内のシステムパッケージをアップグレードしました。 #12124 (Ivan Blinkov).
  • system.build_options テーブルに UNBUNDLED フラグを追加しました。clickhouse-test 用のスキップリストを ClickHouse リポジトリに移動しました。 #12107 (alesapin).
  • Anchore Container Analysis セキュリティ解析ツールによる、clickhouse-server Docker イメージ内の CVE を検出するための定期チェックを追加しました。また、Dockerfile がビルド可能であることも検証します。masterDockerfile への pull request に対して毎日実行されます。 #12102 (Ivan Blinkov).
  • GitHub CodeQL セキュリティ解析ツールによる、CWE を検出するための日次チェックを追加しました。 #12101 (Ivan Blinkov).
  • Dockerfile で最初の apt-get update を実行する前に ca-certificates をインストールするようにしました。 #12095 (Ivan Blinkov).

ClickHouse リリース 20.5

ClickHouse リリース v20.5.4.40-stable 2020-08-10

不具合修正

  • 関数を用いたインデックス解析の誤りを修正しました。MergeTree テーブルを読み取る際に、誤ったパーツがプルーニングされてしまう可能性がありました。#13060 および #12406 を修正しました。 #13081Anton Popov)。
  • ローカルレプリカからのSELECTクエリに対するスレッド数に課されていた不要な制限を修正しました。 #12840 (Nikolai Kochetov).
  • IN 節で大きなタプルが関数として解釈される場合のパフォーマンス問題を修正しました。ユーザーが何らかのよくわからない理由で WHERE x IN (1, 2, ...) ではなく WHERE x IN tuple(1, 2, ...) と記述した場合のケースです。 #12700 (Anton Popov).
  • input_format_parallel_parsing のメモリトラッキングを修正(スレッドをグループに紐付けることで実現)。 #12672 (Azat Khuzhin).
  • 定数式を用いた固定ブルームフィルタインデックスに関する不具合を修正しました。これにより #10572 が解決されました。#12659Winter Zhang)。
  • ブローカーが利用不能な場合(および一部の他の状況でも)に StorageKafka で発生していた SIGSEGV を修正しました。 #12658 (Azat Khuzhin).
  • 関数 if に対して Array(UUID) 引数のサポートを追加しました。これにより #11066 が修正されました。 #12648 (alexey-milovidov)。
  • 関数 any でエイリアスを利用できない問題を修正しました。 #12593 (Anton Popov)。
  • キャッシュレイアウトを使用する外部ディクショナリでのレースコンディションを修正しました。これによりサーバーがクラッシュするおそれがありました。 #12566 (alesapin).
  • DROP TABLE 時に、Distributed テーブルのデータ(非同期 INSERT によって作成されたブロック)を削除します。 #12556 (Azat Khuzhin).
  • enable_mixed_granularity_parts=1 のときに ALTER DELETE クエリ実行後、古いパーツが破損してしまう原因となっていたバグを修正しました。 #12536 を修正。 #12543 (alesapin)。
  • 無効な数の引数が指定された場合の in 関数の例外メッセージを改善しました。 #12529 (Anton Popov).
  • live view テーブルで発生し、データの重複を引き起こす可能性があったレースコンディションを修正しました。#12519 (vzakaznikov)。
  • コンパクトパーツからの読み取り時のパフォーマンス問題を修正しました。 #12492 (Anton Popov).
  • AggregateFunction(avg, ...) の値のバイナリ形式の後方互換性を修正しました。これにより #12342 が解決されました。 #12486 (alexey-milovidov)。
  • text_log が有効な場合に発生していたデッドロックを修正しました。#12452 (alexey-milovidov).
  • 非常に大きな LIMIT または OFFSET が指定された場合に発生するオーバーフローを修正しました。これにより #10470 および #11372 が修正されました。 #12427 (alexey-milovidov)。
  • StorageMerge 使用時に発生する可能性があったセグメンテーションフォルトを修正しました。 #12054 をクローズしました。 #12401 (tavplubix)。
  • #12098 を解決するために #11079 で導入された変更を元に戻しました。#12397 (Mike)。
  • インデックス付きテーブルの WHERE 句で負の値または浮動小数点の定数が使用された場合に、例外が発生しないようにしました。これにより #11905 が修正されます。 #12384 (alexey-milovidov)。
  • 依存している DEFAULT 式が存在していても列を CLEAR できるようにしました。これにより #12333 が修正されました。 #12378 (alexey-milovidov).
  • -State 引数および Nullable 引数を持つ集約関数に対する TOTALS/ROLLUP/CUBE の挙動を修正しました。これにより #12163 の問題が解決されました。#12376alexey-milovidov)。
  • Kafka Engine で、バッチの途中にエラーのあるメッセージがある場合に SIGSEGV が発生する問題を修正。 #12302 (Azat Khuzhin).
  • SummingMergeTree エンジンがパーティションキーの列を合計する際の挙動を修正しました。合計対象の列を明示的に指定した結果、パーティションキーの列と重複する場合には例外を送出するようにしました。これにより #7867 が修正されました。 #12173Nikita Mikhaylov)。
  • エイリアスが存在する場合に外部 DBMS(例: MySQL、ODBC)へ送信するクエリの変換処理を修正しました。これにより、#12032 が解決されました。#12151alexey-milovidov)。
  • ReplicatedVersionedCollapsingMergeTree テーブルに対して ZooKeepeer 内のテーブルメタデータが不正になる不具合を修正しました。これは #12093 を修正するものです。 #12121 (alesapin)。
  • VIEW からの SELECT でスレッド数が不必要に制限されていた問題を修正しました。 #11937 を解決しました。 #12085Nikolai Kochetov)。
  • join_algorithm=partial_merge を使用した LowCardinality 型を含む JOIN で発生していたクラッシュを修正しました。 #12035 (Artem Zuikov).
  • 条件式に NULL を含む if() が誤った結果を返す問題を修正。 #11807 (Artem Zuikov).

パフォーマンスの改善

  • リテラルを伴う IN 演算子でインデックスが使用されない問題を修正。v19.3 頃に発生したパフォーマンス低下を解消します。これは #10574 を修正します。#12062nvartolomei)。

ビルド/テスト/パッケージングの改善

  • Dockerfile 内で、最初の apt-get update の前に ca-certificates をインストールするように変更。#12095Ivan Blinkov)。

ClickHouse リリース v20.5.2.7-stable 2020-07-02

後方互換性のない変更

  • COUNT(DISTINCT) および uniq 集約関数ファミリーからは、Nullable ではない結果を返すようにしました。渡された値がすべて NULL の場合は、代わりに 0 を返します。これにより SQL との互換性が向上します。#11661alexey-milovidov)。
  • ユーザーレベル設定が誤った場所に指定されている場合のチェックを追加しました。ユーザーレベル設定は、特定のユーザープロファイルについては users.xml<profile> セクション内(またはデフォルト設定については <default> 内)に指定する必要があります。サーバーはログに例外メッセージを出力して起動に失敗します。これは #9051 を修正します。このチェックをスキップしたい場合は、設定を適切な場所に移動するか、config.xml に <skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings> を追加してください。#11449alexey-milovidov)。
  • 設定 input_format_with_names_use_header をデフォルトで有効化しました。これにより、入力フォーマット -WithNames および -WithNamesAndTypes のパース方法に影響します。#10937alexey-milovidov)。
  • 設定 experimental_use_processors を削除しました。この機能はデフォルトで有効です。#10924Nikolai Kochetov)。
  • zstd を 1.4.4 に更新しました。パフォーマンスおよび圧縮率にいくつかの細かな改善があります。ClickHouse の異なるバージョンを持つレプリカを実行している場合、Data after merge is not byte-identical to data on another replicas. という妥当なエラーメッセージとその説明が表示されることがあります。これらのメッセージは問題なく、心配する必要はありません。この変更は後方互換性がありますが、これらのメッセージについて疑問に思う可能性があるため、チェンジログに記載しています。#10663alexey-milovidov)。
  • 無意味と見なされる codec に対するチェックを追加し、このチェックを制御するための設定 allow_suspicious_codecs を追加しました。これは #4966 をクローズします。#10645alexey-milovidov)。
  • いくつかの Kafka 設定のデフォルト値を変更しました。#11388 を参照してください。
  • 20.5 より古いバージョンからアップグレードする際に、ローリングアップデートを行い、クラスタ内に 20.5 以上と 20.5 未満の両方のバージョンが混在している状態で、古いバージョンの ClickHouse ノードを再起動し、新しいバージョンが存在する状態で古いバージョンが起動した場合、Part ... intersects previous part エラーが発生することがあります。このエラーを防ぐには、まずクラスタ内の全ノードに新しい clickhouse-server パッケージをインストールし、その後で再起動を行ってください(つまり、clickhouse-server を再起動する際には、新しいバージョンで起動するようにします)。

新機能

  • テーブルにおけるデータの自動粗粒化およびロールアップのための TTL DELETE WHERETTL GROUP BY#10537expl0si0nn)。
  • PostgreSQL ワイヤプロトコルの実装。 #10242 (Movses)。
  • ユーザー、ロール、権限、設定プロファイル、クォータ、行ポリシーのシステムテーブルを追加し、コマンド SHOW USERSHOW [CURRENT|ENABLED] ROLESSHOW SETTINGS PROFILES を追加しました。 #10387 (Vitaly Baranov).
  • ODBC Table 関数での書き込みをサポートしました #10554 (ageraab)。 #10901 (tavplubix)。
  • Linux の perf_events に基づくクエリパフォーマンスメトリクスを追加しました(これらのメトリクスはハードウェア CPU カウンタおよび OS カウンタを用いて計算されます)。これはオプション機能であり、ClickHouse バイナリに CAP_SYS_ADMIN が設定されている必要があります。 #9545 Andrey Skobtsov#11226 (Alexander Kuzmenkov)。
  • CREATE クエリでデータ型に NULL および NOT NULL 修飾子を指定できるようになりました。 #11057 (Павел Потемкин).
  • ArrowStream の入力および出力フォーマットを追加しました。 #11088 (hcz).
  • 外部辞書ソースとして Cassandra をサポートするようになりました。 #4978 (favstovol)。
  • 新しいレイアウト direct を追加しました。各クエリごとにソースからすべてのデータを直接読み込み、データを保存したりキャッシュしたりしません。 #10622 (Artem Streltsov).
  • クエリ実行中にローカルには何も保存しない新しい complex_key_direct レイアウトを辞書に追加しました。 #10850 (Artem Streltsov).
  • MySQL 形式のグローバル変数構文(スタブ)のサポートを追加しました。これは MySQL プロトコルとの互換性を保つために必要です。 #11832 (alexey-milovidov).
  • replxx を使用して clickhouse-client に構文ハイライト機能を追加しました。 #11422 (Tagir Kuskarov).
  • minMapmaxMap 関数が追加されました。#11603 (Ildus Kurbangaliev)。
  • system.asynchronous_metrics からの過去のメトリクスを記録する system.asynchronous_metric_log テーブルを追加しました。 #11588 (Alexander Kuzmenkov).
  • 関数 extractAllGroupsHorizontal(haystack, re)extractAllGroupsVertical(haystack, re) を追加しました。 #11554 (Vasily Nemkov)。
  • SHOW CLUSTER(S) クエリを追加しました。 #11467 (hexiaoting).
  • Python の urlparse(url) における netloc と同様に、ネットワークロケーションを抽出するための netloc 関数を追加。 #11356 (Guillaume Tassery)。
  • engine=Kafka 用にメッセージヘッダーへアクセスするための仮想列を 2 つ追加。 #11283 (filimonov).
  • Kafka エンジン用に _timestamp_ms 仮想カラムを追加しました(型は Nullable(DateTime64(3)))。#11260filimonov)。
  • 関数 randomFixedString を追加。 #10866 (Andrei Nekrashevich).
  • 文字列中のビットを指定した確率でランダムに反転させる関数 fuzzBits を追加しました。 #11237 (Andrei Nekrashevich)。
  • 比較演算子、IN 句および VALUES 句で、数値と定数文字列を比較できるようにしました。 #11647 (alexey-milovidov).
  • round_robin ロードバランシングモードを追加しました。 #11645 (Azat Khuzhin).
  • cast_keep_nullable 設定を追加しました。これを有効にすると、CAST(something_nullable AS Type)Nullable(Type) を返すようになります。 #11733 (Artem Zuikov).
  • system.columns テーブルに position 列を、system.parts_columns テーブルに column_position 列を追加しました。これらの列には、テーブル内のカラムの位置を表す 1 から始まる序数が格納されます。これにより #7744 が解決されました。 #11655 (alexey-milovidov)。
  • ON CLUSTER による SYSTEM {FLUSH DISTRIBUTED,STOP/START DISTRIBUTED SEND} のサポート。 #11415 (Azat Khuzhin).
  • system.distribution_queue テーブルを追加。 #11394 (Azat Khuzhin).
  • Kafka におけるすべてのフォーマット設定をサポートし、一部の設定をテーブルレベルで指定可能にして、デフォルト値を調整することでパフォーマンスを向上させました。 #11388 (filimonov).
  • URL からポートを抽出する port 関数を追加。 #11120 (Azat Khuzhin).
  • dictGet* 関数がテーブル名を受け付けるようになりました。 #11050 (Vitaly Baranov)。
  • clickhouse-format ツールは、-n 引数を使用することで複数のクエリをフォーマットできるようになりました。 #10852 (Darío)。
  • DiskS3 向けの proxy-resolver を構成できるようになりました。 #10744 (Pavel Kovalenko).
  • pointInPolygon が非定数のポリゴンでも動作するようになりました。pointInPolygon は、2 番目の引数として Array(Array(Tuple(..., ...)))、すなわちポリゴン本体および穴の配列を受け取れるようになりました。#10623 (Alexey Ilyukhov) #11421 (Alexey Ilyukhov).
  • move_ttl_infosystem.parts に追加し、move TTL 機能の内部状態を確認できるようにしました。 #10591 (Vladimir Chebotarev).
  • プロキシ経由で S3 を利用できるように。 #10576 (Pavel Kovalenko).
  • データ型 NCHAR および NVARCHAR のシノニムを追加。 #11025 (alexey-milovidov).
  • #7224 を解決し、FailedQueryFailedSelectQueryFailedInsertQuery メトリクスを system.events テーブルに追加しました。 #11151 (Nikita Orlov)。
  • jemalloc の統計情報をさらに system.asynchronous_metrics に追加し、それらの値を常に最新の状態で取得できるようにしました。 #11748 (Alexander Kuzmenkov).
  • デフォルトの S3 認証情報およびカスタム認証ヘッダーを指定できるようにしました。 #11134 (Grigory Pervakov).
  • さまざまな精度の DateTime64 を Int64 としてインポート/エクスポートするための新しい関数 to-/fromUnixTimestamp64Milli/-Micro/-Nano を追加しました。 #10923 (Vasily Nemkov)。
  • MongoDBディクショナリ用に mongodb:// URI を指定できるようにしました。#10915 (Alexander Kuzmenkov)。
  • OFFSET キーワードを、LIMIT 句を伴わずに使用できるようになりました。 #10802 (Guillaume Tassery).
  • system.licenses テーブルを追加しました。このテーブルには、contrib ディレクトリにあるサードパーティライブラリのライセンスが含まれます。これにより #2890 が解決しました。 #10795 (alexey-milovidov)。
  • DateTime64 値のサブ秒部分を 0 にする新しい関数 toStartOfSecond(DateTime64) -> DateTime64。 #10722 (Vasily Nemkov).
  • 新しい入力フォーマット JSONAsString を追加しました。改行、空白、カンマのいずれかまたは組み合わせで区切られた一連の JSON オブジェクトを受け付けます。#10607 (Kruglov Pavel).
  • 4 MiB よりも細かい粒度でメモリプロファイルを取得できるようになりました。ランダムなメモリ確保/解放をサンプリングするメモリプロファイラを追加しました。 #10598 (alexey-milovidov).
  • SimpleAggregateFunctionsumMap もサポートされるようになりました。 #10000 (Ildus Kurbangaliev).
  • 分散テーブルエンジンで ALTER RENAME COLUMN をサポート。#10727 の継続。#10747 を修正。#10887alesapin)。

不具合修正

  • Decimal のパース処理で発生していた UBSan レポートを修正しました。これにより #7540 が解消されます。#10512alexey-milovidov)。
  • DateTime64 をパースする際に浮動小数点例外が発生する可能性のあった問題を修正しました。これにより #11374 が解決されます。#11875alexey-milovidov)。
  • PREWHERE 句の条件で Nullable カラムを使用した場合にまれに発生するクラッシュを修正しました。 #11895 #11608 #11869 (Nikolai Kochetov).
  • 高階関数の内部で arrayJoin を許可しないようにしました。これが原因で、プロトコルの同期が乱れる問題が発生していました。この修正により #3933 がクローズされました。#11846alexey-milovidov)。
  • FixedString と定数の String の比較で誤った結果が返る問題を修正しました。これにより #11393 が修正されます。このバグはバージョン 20.4 で発生しました。#11828 (alexey-milovidov)。
  • 条件に NULL を含む if で誤った結果が返される問題を修正。 #11807 (Artem Zuikov).
  • クエリでの過剰なスレッド使用を修正。 #11788 (Nikolai Kochetov).
  • SELECT ... FROM merge_tree_table ...WITH &lt;scalar subquery&gt; ... を使用した際に発生していた Scalar does not exist 例外を修正しました #11621#11767 (Amos Bird)。
  • SELECT *, xyz.* のようなクエリで、本来はエラーになるべきところが成功してしまっていた問題を修正しました。 #11753 (hexiaoting).
  • メタデータの変更(ALTER)処理中は、レプリケーションのフェッチ処理がキャンセルされるようになりました。 #11744 (alesapin).
  • 等価性をチェックする前に、ZooKeeper に保存されているメタデータをパースするようにしました。 #11739 (Azat Khuzhin).
  • Values 入力フォーマットで複合リテラルの型を誤って推論していたことにより発生していた LOGICAL_ERROR を修正しました。 #11732 (tavplubix).
  • 定数列に対する ORDER BY ... WITH FILL の問題を修正。 #11697 (Anton Popov).
  • SYSTEM SYNC REPLICA における非常にまれなレースコンディションを修正しました。複製テーブルが作成されているのと同時に、別の接続から別クライアントが同じテーブルに対して SYSTEM SYNC REPLICA コマンドを実行した場合(もう一方のクライアントはテーブルが作成中であることを認識しているはずなので、起こりにくい状況ですが)、nullptr の逆参照が発生する可能性がありました。 #11691 (alexey-milovidov).
  • XDBC ブリッジと通信する際に、適切にタイムアウトを設定するようにしました。最近、ブリッジの生存確認やメタ情報の受信時にタイムアウトが考慮されていませんでした。#11690 (alexey-milovidov)。
  • エイリアスを含む ORDER BY 句と組み合わせた LIMIT n WITH TIES 使用時の動作を修正。 #11689 (Anton Popov).
  • 並列な FINAL を伴う SELECT クエリで発生する可能性のある Pipeline stuck の問題を修正。 #11636 を修正。 #11682Nikolai Kochetov)。
  • system.mutations が不正な状態になる原因となっていたエラーを修正しました。mutation 全体がすでに完了しているかのように表示されているにもかかわらず、サーバーはレプリケーションキューに MUTATE_PART タスクを残したまま、それらを実行しようとし続けてしまう問題です。これにより #11611 が修正されました。#11681alesapin)。
  • CREATE USER クエリの構文ハイライトを修正しました。 #11664 (alexey-milovidov).
  • 大文字小文字の区別をしないフラグ付き正規表現のサポートを追加しました。これにより #11101#11506 が修正されました。#11649alexey-milovidov)。
  • 行レベルセキュリティが有効な場合に、自明な COUNT クエリ最適化を削除しました。以前のバージョンでは、ユーザーはフィルタリング後の件数ではなく、テーブル内の全レコード数を取得できていました。これにより #11352 が修正されます。#11644alexey-milovidov)。
  • String 用の Bloom フィルタ(データスキッピングインデックス)を修正。 #11638 (Azat Khuzhin).
  • -q オプションを指定しない場合、データベースは起動時に作成されません。 #11604 (giordyb).
  • Buffer テーブルからのサンプリング読み出しを行うクエリで発生していた Block structure mismatch エラーを修正しました。#11602 (Nikolai Kochetov).
  • exception.code() % 256 == 0 の場合に clickhouse-client が誤った終了コードを返す問題を修正しました。 #11601 (filimonov).
  • ReplicatedMergeTree の異なるレプリカに対する CREATE/DROP 操作のレースコンディションを修正しました。テーブルが ZooKeeper から完全に削除されていない、または正常に作成されていない場合でも処理を継続できるようにしました。これにより #11432 が修正されました。#11592alexey-milovidov)。
  • サーバー起動時に出力される「Mark cache size was lowered」というログメッセージ中の軽微な誤りを修正しました。これにより #11399 がクローズされます。#11589alexey-milovidov)。
  • PREWHERE column in (subquery)ARRAY JOIN を含むクエリで発生するエラー Size of offsets does not match size of column を修正しました。 #11580 (Nikolai Kochetov).
  • SHOW CREATE TABLE でまれに発生するセグメンテーションフォルトを修正しました。#11490 を解決。 #11579 (tavplubix)。
  • HTTP セッション内のすべてのクエリが同じ query_id になってしまっていた問題を修正しました。 #11578 (tavplubix)。
  • これにより、clickhouse-server の Docker コンテナは、サーバーの稼働確認に IPv6 を優先して使用するようになります。 #11550 (Ivan Starkov)。
  • min_bytes_to_use_direct_io が有効で、PREWHERE が有効かつ SAMPLE を使用している場合、またはスレッド数が多い場合に発生する可能性のある Data compressed with different methods エラーを修正しました。これにより #11539 が修正されます。 #11540 (alexey-milovidov).
  • <node> 向けの shard_num/replica_num を修正(use_compact_format_in_distributed_parts_names が正しく動作しなくなる問題)。 #11528 (Azat Khuzhin).
  • prefer_localhost_replica=0 かつ internal_replication を使用しない場合の Distributed への非同期 INSERT を修正しました。 #11527 (Azat Khuzhin).
  • 集約処理の途中で -State 関数が例外をスローした場合に発生するメモリリークを修正しました。これにより #8995 が修正されます。#11496alexey-milovidov)。
  • SELECTmax_threads>1)が複数のストリームを持ち、INSERT が 1 つのストリームしか持たない(max_insert_threads==0)場合の INSERT SELECT FINAL 実行時に発生する Pipeline stuck 例外を修正。 #11455 (Azat Khuzhin)。
  • select count() from t, u のようなクエリで誤った結果が返る不具合を修正。 #11454 (Artem Zuikov).
  • コーデックが返す圧縮サイズを修正。 #11448 (Nikolai Kochetov).
  • 非リテラルの引数を持つ圧縮コーデックが設定されたカラムが存在する場合にサーバーがクラッシュしていた問題を修正しました。 #11365 を修正。 #11431alesapin)。
  • テーブルが正常に作成されなかった場合に、MergeTree のシャットダウン時に未初期化メモリの読み取りが発生する可能性がある問題を修正しました。 #11420 (alexey-milovidov).
  • LowCarinality(T)Nullable(T) を含む JOIN で発生していたクラッシュを修正。 #11380#11414 (Artem Zuikov)。
  • 誤った USING キーに対して返されるエラーコードを修正。 #11373#11404 (Artem Zuikov)。
  • 緯度・経度の範囲外の引数が指定された場合の geohashesInBox の動作を修正しました。 #11403 (Vasily Nemkov).
  • joinGet() 関数のエラーメッセージを改善。#11389Artem Zuikov)。
  • 外部ソートと LIMIT を含むクエリで発生する可能性のある Pipeline stuck エラーを修正しました。#11359 を解決します。#11366Nikolai Kochetov)。
  • ReplicatedMergeTree におけるパーツ送信時に取得していた冗長なロックを削除。 #11354 (alesapin).
  • 複数行モードでの clickhouse-client における \G(縦方向の出力)サポートの不具合を修正しました。これにより #9933 がクローズされます。#11350alexey-milovidov)。
  • Lazy データベース使用時に発生する可能性のあったセグメンテーションフォルトを修正。 #11348 (alexey-milovidov).
  • Join テーブルエンジンからの(JOIN を伴わない)直接 SELECT 時のクラッシュと誤った NULL 許容性を修正しました。 #11340 (Artem Zuikov)
  • quantilesExactWeightedArray におけるクラッシュを修正。#11337 (Nikolai Kochetov).
  • ALTER クエリでメタデータを変更する前に、マージ処理が停止するようになりました。 #11335 (alesapin).
  • parallel_view_processing = 1 設定を使用した MATERIALIZED VIEW への書き込みを再度並列処理できるようにしました。#10241 を修正。#11330 (Nikolai Kochetov)。
  • 抽出された JSON に、{ または [ の対応が取れていない文字列が含まれている場合の visitParamExtractRaw の動作を修正。 #11318 (Ewout)。
  • ThreadPool における非常にまれな競合状態を修正しました。 #11314 (alexey-milovidov).
  • clickhouse-copier における軽微なデータ競合を修正。統合テストで検出 #11313 (alexey-milovidov)
  • 変換処理で未初期化メモリが使用される可能性があった問題を修正しました。例: SELECT toIntervalSecond(now64())#11311 (alexey-milovidov)。
  • プライマリキーに Array 型カラムがあり、そのカラムを empty または notEmpty 関数でフィルタリングするクエリの場合に、インデックス解析が機能しない問題を修正しました。これにより #11286 が解決されます。 #11303alexey-milovidov)。
  • クエリの速度推定が正しくない場合があり、クエリが max_network_bandwidthmax_execution_speed、または priority 設定によってスロットリングされているときに、min_execution_speed の制限が機能しない、もしくは誤動作する不具合を修正しました。timeout_before_checking_execution_speed のデフォルト値を 0 以外の値に変更しました。これは、0 のままだと min_execution_speed および max_execution_speed の設定が効果を持たないためです。これにより #11297 が修正されます。これにより #5732 が修正されます。これにより #6228 が修正されます。ユーザビリティの改善として、clickhouse-client において、例外メッセージが進捗バーと連結されて表示されないようにしました。 #11296 (alexey-milovidov)。
  • SET DEFAULT ROLE が誤った引数で呼び出されたときにクラッシュしていた問題を修正しました。これにより #10586 が修正されました。 #11278Vitaly Baranov)。
  • Protobuf フォーマットで不正なデータを読み込んだ際にクラッシュする不具合を修正しました。これにより #5957#11203 が解決されます。#11258Vitaly Baranov)。
  • cache 辞書が(有効期限切れのキーしかない場合に)本来の値ではなくデフォルト値を返してしまうバグを修正しました。これは文字列フィールドにのみ影響します。 #11233 (Nikita Mikhaylov)。
  • 内部クエリ内に定数を含む VIEW からの読み取り時に発生するエラー Block structure mismatch in QueryPipeline を修正。 #11181 を解決。 #11205Nikolai Kochetov)。
  • Invalid status for associated output という例外が発生する可能性を修正。 #11200 (Nikolai Kochetov).
  • これにより、CREATE クエリで定義されていれば primary.idx がチェックされるようになりました。 #11199 (alesapin)。
  • Array(Array(LowCardinality)) の引数をキャプチャする高階関数で発生する可能性のある Cannot capture column エラーを修正。 #11185 (Nikolai Kochetov).
  • 1000 個を超えるキーが存在する場合や一部のバックエンドを使用している場合に失敗する可能性があった S3 のグロビング処理を修正しました。 #11179 (Vladimir Chebotarev).
  • データスキッピングインデックスが、バックグラウンドマージ中に変更される列(SummingMergeTree、AggregatingMergeTree、および TTL GROUP BY の列)に依存している場合、インデックスが正しく計算されない不具合がありました。この問題は、インデックスの計算処理をマージ後に実行するよう変更し、マージ後のデータに対してインデックスが計算されるようにすることで修正されました。 #11162 (Azat Khuzhin).
  • テーブルエンジン=Kafka のテーブルを DROP する際(またはサーバー再起動時)に時々発生していたハングを修正。 #11145 (filimonov).
  • パイプラインの変更後に一部壊れていたスレッド数削減用の最適化を修正し、単純なクエリに対してスレッドを過剰に予約してしまう問題を解消。 #11114 (Azat Khuzhin).
  • 何もファイナライズされない場合は、mutation のファイナライズタスクでのログ出力を行わないようにしました。 #11109 (alesapin).
  • システムログテーブルの構造変更を含むアップデート後のサーバー起動時に発生していたデッドロックを修正しました。 #11106 (alesapin).
  • registerDiskS3 のメモリリークを修正しました。 #11074 (Pavel Kovalenko).
  • JOIN が PREWHERE と共に使用される場合、または optimize_move_to_prewhere によって WHERE から PREWHERE が生成される場合に発生するエラー No such name in Block::erase() を修正。 #11051 (Artem Zuikov).
  • Kafka エンジンテーブルの終了時に発生し得たデータ取りこぼしの問題を修正。 #11048 (filimonov).
  • parseDateTime64BestEffort の引数の解決に関するバグを修正しました。 #10925. #11038 (Vasily Nemkov).
  • 現在、1 回の ALTER クエリ内で同一の列に対して ADD/DROP および RENAME を行うことが可能になりました。MODIFYRENAME を同時に行った場合の例外メッセージが、これまでよりも分かりやすくなりました。#10669 を部分的に修正しました。#11037alesapin)。
  • S3 URL の解析処理を修正しました。 #11036 (Vladimir Chebotarev)。
  • LIMIT がある場合の二段階の GROUP BY に対するメモリトラッキングを修正。 #11022 (Azat Khuzhin).
  • テーブルの作成に失敗した場合に、MergeTree でごくまれに use-after-free エラーが発生する不具合を修正しました。 #10986 (alexey-milovidov).
  • Atomic データベース向けのメタデータ(rename 用の相対パス)およびデータ(symlink 用の相対パス)の扱いを修正。 #10980 (Azat Khuzhin).
  • Atomic データベースエンジンで ALTER および DROP DATABASE クエリを同時に実行した場合に発生するサーバーのクラッシュを修正。 #10968 (tavplubix).
  • メソッド getRawData() の生データサイズの不正値を修正。 #10964 (Igr).
  • バージョン 20.1 以前との間に存在する二段階の集約処理の非互換性を修正しました。これは、イニシエータノードとリモートノードで異なるバージョンの ClickHouse が使用されており、GROUP BY の結果セットのサイズが大きく、かつ単一の String 型フィールドで集約が行われる場合に発生します。この問題により、結果において単一のキーに対してマージされていない行が複数含まれることがありました。#10952 (alexey-milovidov).
  • DistributedBlockOutputStream によって部分的にしか書き込まれていないファイルが送信されないようにしました。 #10940 (Azat Khuzhin).
  • SELECT count(notNullIn(NULL, [])) で発生するクラッシュを修正。 #10920 (Nikolai Kochetov).
  • engine=Kafka のテーブルを DROP する際(またはサーバー再起動時)に時々発生していたハングを修正しました。 #10910 (filimonov).
  • これにより、a TO b, c TO a のように複数の ALTER RENAME を実行できるようになりました。 #10895 (alesapin)。
  • 同じカラムに対して複数スレッドから集約関数の state から結果を取得するときに発生しうるレースコンディションを修正しました。判明している限り、これは AggregateFunction の state を保持している quanite* 関数付きの Memory エンジンのテーブルを読み出しながら finalizeAggregation 関数を使用した場合にのみ発生します。 #10890 (Nikolai Kochetov).
  • Distributed テーブルにおけるタプルの後方互換性の問題を修正しました。 #10889 (Anton Popov).
  • 存在しないキーにアクセスした場合に StringHashTable で発生する SIGSEGV を修正。 #10870 (Azat Khuzhin).
  • Atomic エンジンを使用するデータベースから LiveView テーブルが削除された後に WATCH がハングする不具合を修正しました。 #10859 (tavplubix).
  • ReplicatedMergeTree において、レプリカが非アクティブになった後もそのレプリカを待ち続けてしまうために、OPTIMIZE クエリ中の一部の ALTER がハングする可能性のあったバグを修正しました。 #10849 (tavplubix)。
  • CONSTRAINT 式に含まれる列がリネームされた場合、その制約も更新されるようになりました。 #10844 を修正しました。 #10847 (alesapin)。
  • cache dictionary で発生する可能性のあった未初期化メモリの読み取りを修正。 #10834 (alexey-milovidov).
  • Block::sortColumns() の後のカラム順を修正し、これが実際のユースケース(Buffer エンジン)に影響することを示すテストも追加。 #10826 (Azat Khuzhin)。
  • 識別子をクォートしない設定時の ODBC ブリッジの不具合を修正しました。これにより #7984 が修正されました。 #10821alexey-milovidov)。
  • UBSan および MSan によって報告された DateLUT の問題を修正。 #10798 (alexey-milovidov).
  • キー条件における正しい型変換のために src_type を使用します。 #6287 を修正。 #10791 (Andrew Onyshchuk).
  • 古い libunwind のパッチを削除しました。 https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 これにより、clang ビルドで -fno-omit-frame-pointer を無効にできるようになり、平均して少なくとも 1% の性能向上が得られます。 #10761 (Amos Bird)。
  • 複数シャードにまたがって浮動小数点の重みを使用する場合の avgWeighted の動作を修正。 #10758 (Baudouin Giard).
  • parallel_view_processing の動作を修正しました。これにより、例外が発生した場合でも、MATERIALIZED VIEW へのすべての挿入が例外なく完了するようになりました。 #10241 を修正。 #10757 (Nikolai Kochetov).
  • -State と併用した際の -OrNull および -OrDefault コンビネータを修正しました。 #10741 (hcz).
  • ネストされた型で generateRandom がクラッシュする問題を修正しました。 #10583 を修正。 #10734Nikolai Kochetov)。
  • マージ後に発生していた可能性がある SummingMergeTree における LowCardinality(FixedString) キー列のデータ破損を修正しました。#10489 の問題を修正。#10721Nikolai Kochetov)。
  • 関数でラップされた主キーを、'FINAL' 修飾子および 'ORDER BY' 最適化と併用した際の処理を修正。 #10715 (Anton Popov).
  • 関数 h3EdgeAngle で発生し得るバッファオーバーフローの不具合を修正。 #10711 (alexey-milovidov).
  • 消えてしまう合計値の問題を修正しました。クエリに JOIN 句や、外側の WHERE 条件を持つサブクエリが含まれている場合、合計値がフィルタリングされてしまう可能性がありました。 #10674 を修正しました。 #10698Nikolai Kochetov)。
  • HTTP INSERT のアトミシティを修正。これにより #9666 が解決されました。 #10687 (Andrew Onyshchuk)。
  • 1つのクエリ内で同一の集合に対して IN 演算子を複数回使用している場合の動作を修正しました。 #10686 (Anton Popov)。
  • readonly=2 かつ cancel_http_readonly_queries_on_client_close=1 の場合に、クライアントが切断されたときに HTTP リクエストがハングしたままになるバグを修正しました。#7939#7019#7736#7091 が修正されます。#10684tavplubix)。
  • AggregateTransform コンストラクタのパラメータ順を修正。 #10667 (palasonic1).
  • distributed_aggregation_memory_efficient を有効にした場合にリモートクエリが並列実行されない問題を修正。#10655 を修正。#10664Nikolai Kochetov)。
  • LIMIT を含むクエリで結果の行数が誤っていた可能性がある問題を修正。#10566#10709 を解決。#10660Nikolai Kochetov)。
  • 多数のパーツを持つテーブルで、ALTER の同時実行がロックされてしまう不具合を修正。 #10659 (alesapin).
  • テーブル起動前にサーバーがシャットダウンされた場合に StorageBuffer で発生する nullptr デリファレンスを修正。 #10641 (alexey-milovidov).
  • HAVING 句を含むクエリ(つまりクエリイニシエータサーバー側でのフィルタリングが必要な場合)に対して、分散クエリ用の述語最適化(enable_optimize_predicate_expression=1)を、式の順序を維持することで修正(これだけで修正として十分)し、さらに集約処理では位置インデックスではなくカラム名を使用するように強制しました。修正: #10613, #11413#10621Azat Khuzhin)。
  • LowCardinality 使用時の optimize_skip_unused_shards を修正。 #10611 (Azat Khuzhin).
  • サーバー起動時に例外が発生した場合に StorageBuffer でセグメンテーションフォルトが発生する問題を修正。 #10550 を修正。 #10609 (tavplubix)。
  • SYSTEM DROP DNS CACHE クエリの実行時に、ユーザーが一部の IP アドレスから接続することを許可されているかを確認するために使用されるキャッシュも削除されるようになりました。 #10608 (tavplubix).
  • 依存テーブルを含むクエリの場合に、MATERIALIZED VIEW の内部クエリ内でスカラー結果が誤っていた問題を修正しました。 #10603 (Nikolai Kochetov).
  • 同期ミューテーションに関する条件変数の扱いを修正しました。一部のケースでは、その条件変数へのシグナルが失われてしまう可能性がありました。 #10588 (Vladimir Chebotarev).
  • loadStoredObject() の完了前に createDictionary() が呼び出されることで発生する可能性のあるクラッシュを修正。 #10587 (Vitaly Baranov).
  • the BloomFilter false positive must be a double number between 0 and 1 というエラーを修正。#10551#10569Winter Zhang)。
  • 列エイリアスのデフォルト式の型が列の型と異なっていた問題を修正。 #10563 (Azat Khuzhin).
  • DateTime と同様に、DateTime64 型と String 型の値の比較を実装しました。#10560 (Vasily Nemkov)。
  • マージでコンパクトパーツを別のコンパクトパーツに統合した後に一部のケースで発生する可能性のあるインデックス破損を修正しました。 #10531 (Anton Popov).
  • デフォルトで GROUP BY の sharding_key 最適化を無効化し(optimize_distributed_group_by_sharding_key は導入時、シャーディングキー解析の複雑さのためデフォルトでオフになっており、その単純な例としてはシャーディングキー内での if の使用などがある)、WITH ROLLUP/CUBE/TOTALS でも正しく動作するように修正しました。 #10516 (Azat Khuzhin).
  • 修正: #10263(その PR の後、INSERT 経由での dist 送信が各 INSERT のたびに延期されていた問題) 修正: #8756(その PR は、次のすべての条件が満たされる場合に distributed send が失敗していた(現時点では起こりそうにない構成と思われる):internal_replication == false、複数のローカルシャード(ハードリンク用コードを有効化)、および distributed_storage_policyEXDEV により link(2) が失敗する原因))。#10486Azat Khuzhin)。
  • "max_rows_to_sort" 制限に関するエラーを修正しました。 #10268 (alexey-milovidov).
  • 外部ディクショナリを読み取る関数では、呼び出しごとにディクショナリの取得とアクセス権の確認を1回だけ行うようにしました。 #10928 (Vitaly Baranov).

改善

  • ALTER MODIFY TTL クエリの実行後に、古いデータに対して TTL を適用します。この挙動は materialize_ttl_after_modify 設定で制御され、デフォルトで有効になっています。 #11042 (Anton Popov)。
  • C 風のバックスラッシュエスケープを文字列リテラル、VALUES、および各種テキストフォーマットでパースする際(これは SQL 標準に対する拡張であり、ClickHouse と MySQL に特有のものです)、未知のエスケープシーケンス(例: \%\w)が見つかった場合は、バックスラッシュをそのまま残します。これにより、LIKEmatch 正規表現の使用がより便利になり(name LIKE 'used\\_cars' ではなく name LIKE 'used\_cars' と書くだけで済みます)、同時に互換性も向上します。これにより #10922 が修正されました。#11208alexey-milovidov)。
  • Decimal 値を読み込む際に、小数点以下の余分な桁を切り捨てます。この動作により、MySQL および PostgreSQL との互換性が向上します。これにより #10202 が修正されました。 #11831 (alexey-milovidov).
  • ZooKeeper 上のメタデータがすでに削除され存在しない場合(テスト用途で TestKeeper を使用していてサーバーが再起動された場合も同様)、レプリケートテーブルを DROP できるようにしました。ZooKeeper との通信でエラーが発生していても、レプリケートテーブルを RENAME できるようにしました。これにより #10720 が修正されました。 #11652 (alexey-milovidov).
  • 文字列から Decimal を読み取る際の診断メッセージをわずかに改善しました。これにより #10202 が解決されます。#11829alexey-milovidov)。
  • シグナルハンドラ内の sleep 呼び出しを修正しました。期待されていた時間よりも短い時間しかスリープしていませんでした。 #11825 (alexey-milovidov).
  • (Linux のみ)OS 関連のパフォーマンスメトリクス(CPU および I/O 向け)は、CAP_NET_ADMIN ケーパビリティがなくても動作します。#10544 (Alexander Kazakov)。
  • hostName 関数のエイリアスとして hostname を追加しました。この機能は Yandex.Metrica の Victor Tarnavskiy 氏により提案されました。 #11821 (alexey-milovidov)。
  • クロスレプリケーションクラスター上での分散 DDL(update/delete/drop partition)のサポートを追加しました。 #11703 (Nikita Mikhaylov).
  • 起動時に、いずれかの listen アドレスで待ち受けできない場合(例: Docker 内で IPv6 が利用できない場合)は、サーバーログにエラーではなく警告を出力するようにしました。なお、列挙されたすべてのアドレスでの待ち受けに失敗した場合は、これまでどおり起動を拒否します。これにより #4406 が修正されました。 #11687 (alexey-milovidov)。
  • Docker イメージの起動時にデフォルトユーザーとデータベースを作成。 #10637 (Paramtamtam).
  • 複数行クエリがサーバーログに出力される際、行が連結されていました。複数行の文字列リテラル、識別子、単一行コメントを含む場合でも正しく処理されるように修正しました。これにより #3853 が解決されました。#11686alexey-milovidov)。
  • CREATE USERCREATE ROLEALTER USERSHOW CREATE USERSHOW GRANTS などのコマンドで、複数の名前を指定できるようになりました。 #11670 (Vitaly Baranov)
  • クロスレプリケーション構成のクラスターにおける分散 DDL(UPDATE/DELETE/DROP PARTITION)のサポートを追加しました。 #11508 (frank lee).
  • ユーザーがパスワードを明示的に指定した場合、clickhouse-clientclickhouse-benchmark のコマンドライン引数からその値をクリアします。これにより、ps などのツールによるパスワードの露出を防ぎます。 #11665 (alexey-milovidov)。
  • 実行中のバイナリと一致しない場合は、ELF ファイルからのデバッグ情報を使用しないようにしました。これは、スタックトレース内で誤った関数名やソース位置が出力されるのを防ぐために必要です。これにより #7514 を修正しました。 #11657alexey-milovidov)。
  • parseDateTimeBestEffortOrNull/Zero 関数で値を完全にパースできなかった場合に NULL/ゼロを返すようにしました。これにより #7876 が修正されました。 #11653 (alexey-milovidov)。
  • リクエスト URL 内の空のパラメータをスキップします。これは http://localhost:8123/?&a=bhttp://localhost:8123/?a=b&&c=d のように URL を記述した場合に発生する可能性があります。これにより #10749 がクローズされました。 #11651alexey-milovidov)。
  • groupArrayArraygroupUniqArrayArraySimpleAggregateFunction として使用できるようにしました。 #11650 (Volodymyr Kuznetsov)。
  • 他の型のインデックス条件を解析する際に、暗黙的な型変換により定数文字列との比較を許可します。これにより #11630 が解決される可能性があります。#11648alexey-milovidov)。
  • https://github.com/ClickHouse/ClickHouse/pull/7572#issuecomment-642815377 設定ファイルでデフォルトの HTTPHandlers を指定できるように対応。 #11628 (Winter Zhang).
  • Kafka エンジンで利用可能な入力フォーマットを増やしました。フラッシュが早期に発生する問題を修正しました。トピックのパーティション数よりも kafka_num_consumers が大きい場合のパフォーマンス問題を修正しました。 #11599 (filimonov).
  • multiple_joins_rewriter_version=2 のロジックを改善し、ラムダ式エイリアスに対する不明な列エラーを修正。#11587 (Artem Zuikov).
  • カラム定義リストをパースできない場合の例外メッセージを改善しました。これにより #10403 がクローズされました。 #11537 (alexey-milovidov).
  • VIEW に対する enable_optimize_predicate_expression=1 のロジックを改善。 #11513 (Artem Zuikov).
  • ライブビュー テーブルで PREWHERE がサポートされました。 #11495 (vzakaznikov).
  • ユーザーがアドレスから接続することを許可されているかを確認するために使用される DNS キャッシュを自動更新します。 #11487 (tavplubix).
  • OPTIMIZE FINAL は、同時にマージ処理が実行されている場合でもマージを強制的に行います。これにより #11309#11322 がクローズされました。#11346alexey-milovidov)。
  • clickhouse-client でキャンセルされたクエリの出力を抑制しました。以前のバージョンでは、クエリをキャンセルするために Ctrl+C を押しても、結果がターミナルに出力され続けることがありました。これにより、#9473 がクローズされました。 #11342 (alexey-milovidov)。
  • これにより、各クエリの後に履歴ファイルが更新され、複数のクライアントが同じ履歴ファイルを使用しても競合状態が発生しなくなりました。これによって #9897 が修正されました。 #11453 (Tagir Kuskarov)。
  • 設定再読み込み中のログメッセージを改善。 #11341 (alexey-milovidov).
  • 一部の場合に、clickhouse-client または clickhouse-format によってフォーマットされたクエリから末尾の空白文字を削除しました。 #11325 (alexey-milovidov)。
  • 設定 "output_format_pretty_max_value_width" を追加しました。値がこの長さを超える場合は、ターミナルに過度に大きな値が出力されるのを避けるために、途中で切り詰められます。これにより #11140 が解決されました。#11324alexey-milovidov)。
  • メモリマッピングが不足している場合の例外メッセージを改善しました。これにより #11027 が解決されました。#11316alexey-milovidov)。
  • ASOF JOIN で (U)Int8、(U)Int16、Date 型をサポート。 #11301 (Artem Zuikov).
  • Kafka テーブル向けに kafka_client_id パラメータをサポートしました。また、ClickHouse が Kafka と通信する際に使用するデフォルトの client.id を、より情報量が多く実用的な値に変更しました。 #11252 (filimonov).
  • 例外発生時にも DistributedFilesToInsert メトリクスの値を保持するようにしました。以前のバージョンでは、ファイルを送信しようとするタイミングで値が設定されていましたが、例外が発生してファイルがまだ保留中の状態でも、値はゼロになっていました。現在は、ファイルシステム上で保留中のファイル数を表す値になりました。 #11220 (alexey-milovidov).
  • DOUBLE PRECISIONCHAR VARYING のような複数語からなるデータ型名への対応を追加し、SQL との互換性を向上させました。 #11214 (Павел Потемкин).
  • 一部のデータ型に対してシノニムを追加しました。 #10856 (Павел Потемкин).
  • クエリログは既定で有効になりました。 #11184 (Ivan Blinkov).
  • 認証方式を system.users テーブルおよび SHOW CREATE USER クエリの結果に表示するようにしました。 #11080 (Vitaly Baranov).
  • Memory データベースエンジンに対して明示的に DROP DATABASE を実行した際にデータを削除するようにしました。#10557 を修正。#11021tavplubix)。
  • rdkafka ライブラリの内部スレッドにスレッド名を設定しました。rdkafka のログをサーバーログに出力できるようにしました。 #10983 (Azat Khuzhin).
  • クエリ内の Unicode の空白文字をサポートしました。これにより、Word や Web ページからクエリをコピー&ペーストした場合にも問題なく動作します。この変更で #10896 が修正されました。 #10903 (alexey-milovidov)。
  • 関数 tupleElement で、インデックスとして大きな UInt 型を使用できるようにしました。 #10874 (hcz).
  • Distributed テーブルへの INSERT 時に prefer_localhost_replica/load_balancing の設定が反映されるようにしました。 #10867 (Azat Khuzhin).
  • min_insert_block_size_rows_for_materialized_viewsmin_insert_block_size_bytes_for_materialized_views 設定を導入しました。これらの設定は min_insert_block_size_rows および min_insert_block_size_bytes と似ていますが、MATERIALIZED VIEW に挿入されるブロックに対してのみ適用されます。これにより、マテリアライズドビューへの書き込み時のブロックのまとめ方を制御し、過剰なメモリ使用を回避できます。 #10858 (Azat Khuzhin).
  • サーバーのシャットダウン中にレプリケーションキューから発生していた例外が発生しないようにしました。Fixes #10819. #10841 (alesapin).
  • varSampvarPop が数値誤差により負の結果を返さないようにし、stddevSampstddevPop が負の分散から計算されないようにします。これにより #10532 が修正されました。 #10829 (alexey-milovidov).
  • DNS 例外メッセージを改善しました。これにより #10813 が修正されました。 #10828 (alexey-milovidov).
  • 一部のパースエラー発生時の HTTP レスポンスコードを 400 Bad Request に変更しました。この修正は #10636 に対応しています。#10640alexey-milovidov)。
  • clickhouse-client が clickhouse-server より新しい場合にメッセージを出力します。 #10627 (alexey-milovidov).
  • INSERT INTO [db.]table WATCH クエリのサポートを追加しました。 #10498 (vzakaznikov).
  • clickhouse-client で quota_key を指定できるようにしました。この変更により #10227 がクローズされます。#10270 (alexey-milovidov)。

パフォーマンスの向上

  • 複数のレプリカがマージ、ミューテーション、パーティションの削除、移動および置換を同時に割り当てられるようになりました。これにより #10367 がクローズされました。 #11639 (alexey-milovidov) #11795 (alexey-milovidov)。
  • テーブルのソートキーを考慮した GROUP BY の最適化が、optimize_aggregation_in_order 設定で有効になります。 #9113 (dimarub2000).
  • FINAL を伴う SELECT は並列実行されるようになりました。使用されるスレッド数を制限するための設定 max_final_threads を追加しました。#10463 (Nikolai Kochetov)。
  • INSERT SELECT または、並列パース時に小さなブロックが生成される典型的なケースにおける clickhouse-client を用いた INSERT によって、INSERT クエリのパフォーマンスを改善しました。これは #11275 を修正します。DEFAULT フィールドに対して CONSTRAINT が動作していなかった問題を修正しました。これは #11273 を修正します。TEMPORARY テーブルに対して CONSTRAINTS が無視されていた問題を修正しました。これは #11274 を修正します。#11276alexey-milovidov)。
  • optimize_aggregators_of_group_by_keys 設定で有効化される、SELECT 句において GROUP BY キーに対する min/max/any 集約関数を除去する最適化。 #11667 (xPoSx). #11806 (Azat Khuzhin).
  • optimize_move_functions_out_of_any を有効にすると、すべての演算を any 関数の外に移動する新しい最適化。#11529 (Ruslan)。
  • Pretty フォーマット使用時の対話モードにおける clickhouse-client のパフォーマンスを改善しました。以前のバージョンでは、UTF-8 文字列の可視幅の計算にかなりの時間がかかる場合がありました。これにより #11323 がクローズされました。 #11323 (alexey-milovidov)。
  • ORDER BY と小さい LIMITmax_block_size 未満)が指定されたクエリのパフォーマンスが改善されました。 #11171 (Albert Kidrachev).
  • ランタイム CPU 検出機能を追加し、最適な関数実装を選択してディスパッチするようにしました。複数ターゲット向けコード生成をサポートしました。これにより #1017 が解決されました。 #10058 (DimasKovas)。
  • デフォルトで ClickHouse バイナリの mlock を有効化しました。これにより、高い I/O 負荷がかかった際に ClickHouse 実行ファイルがページアウトされるのを防ぎます。 #11139 (alexey-milovidov).
  • sum 集約関数を使用し、GROUP BY キーを含まないクエリが数倍高速に実行されるようになりました。 #10992 (alexey-milovidov).
  • 単純なキーを対象とする ORDER BY で使用される基数ソートについて、いくつかの冗長なデータ移動を削除することで性能を改善しました。#10981Arslan Gumerov)。
  • MergeJoin において左テーブルのより大きな部分をソートするようにしました。左テーブル側のブロックをメモリにバッファします。左テーブル側ブロックのバッファサイズを制御するための partial_merge_join_left_table_buffer_bytes 設定を追加しました。 #10601 (Artem Zuikov).
  • サブクエリから重複した ORDER BY と DISTINCT を削除します。この最適化は optimize_duplicate_order_by_and_distinct で有効になります #10067 (Mikhail Malafeev)。
  • この機能は、GROUP BY 句における他のキーの関数呼び出しを除去するもので、optimize_group_by_function_keys によって有効化されます #10051xPoSx)。
  • 集約関数から算術演算を外に出す新しい最適化を追加し、optimize_arithmetic_operations_in_aggregate_functions で有効化できます #10047 (Ruslan)。
  • curl の代わりに Poco ベースの S3 用 HTTP クライアントを使用します。これにより、S3 ストレージおよびテーブル関数のパフォーマンスが向上し、メモリ使用量が削減されます。 #11230 (Pavel Kovalenko).
  • 制限に基づく再スケジューリングが常に行われていたことが原因の Kafka のパフォーマンス問題を修正しました。 #11149 (filimonov)。
  • jemalloc で percpu_arena:percpu を有効化しました(スレッドプールによるメモリの断片化を軽減します)。 #11084 (Azat Khuzhin).
  • S3 HTTP クライアントからレスポンスを読み取る際のメモリ使用量を最適化しました。#11561 (Pavel Kovalenko)。
  • デフォルトの Kafka 設定を調整してパフォーマンスを向上させました。#11388filimonov)。

実験的機能

  • データ型 Point (Tuple(Float64, Float64)) と Polygon (Array(Array(Tuple(Float64, Float64))) を追加しました。 #10678 (Alexey Ilyukhov).
  • 配列内で部分シーケンスを検索できる hasSubstr 関数を追加しました。注意: この関数は予告なく名称が変更される可能性があります。 #11071 (Ryad Zenine).
  • OpenCL サポートおよびビトニックソートアルゴリズムを追加しました。これは単一列内の整数型データのソートに使用できます。-DENABLE_OPENCL=1 フラグを付けてビルドする必要があります。他のソートアルゴリズムではなくビトニックソートアルゴリズムを使用するには、設定オプション special_sortbitonic_sort を設定し、OpenCL が利用可能であることを確認してください。この機能は性能向上などを目的としたものではなく、あくまでサンプルおよびデモ用途として提供されています。この分野でさらなる開発が行われない場合、近い将来削除される可能性があります。 #10232 (Ri).

Build/Testing/Packaging の改善

  • programs および utils で clang-tidy を有効化。 #10991 (alexey-milovidov).
  • tzdata への依存関係を削除し、/usr/share/zoneinfo ディレクトリが存在しない場合でもエラーにならないようにしました。tzdata がシステムにインストールされていなくても、すべてのタイムゾーンは ClickHouse で問題なく動作します。 #11827 (alexey-milovidov)。
  • MSan および UBSan のストレステストを追加しました。すでに機能テスト用の MSan と UBSan は存在しており、「stress」テストは別の種類のテストであることに注意してください。 #10871 (alexey-milovidov)。
  • クラッシュメッセージにコンパイラのビルドIDを出力するようにしました。これにより、どのバイナリがクラッシュしたかを、わずかながらより確実に特定できるようになります。新しい関数 buildId を追加しました。 #11824 (alexey-milovidov).
  • FREEZE クエリの後でもミューテーションが引き続き正常に動作することを確認するテストを追加しました。 #11820 (alexey-milovidov).
  • テスト名に「fail」という部分文字列を含めないようにしました。ブラウザでテスト結果を確認する際に、Ctrl+F で「fail」を検索すると不便になるためです。 #11817 (alexey-milovidov).
  • HTTPHandlerFactory から未使用のインポートを削除。 #11660 (Bharat Nallan).
  • copier の実行インスタンスをランダムにサンプリングするようにしました。これは Too many simultaneous queries エラーを回避するために必要です。また、タイムアウトを延長し、障害発生の確率を下げました。 #11573 (Nikita Mikhaylov).
  • 不足していた include を修正。 #11525 (Matwey V. Kornilov).
  • 古いサンプルプログラムを削除してビルド時間を短縮しました。また、孤立していた機能テストもいくつか見つかりました。 #11486 (alexey-milovidov).
  • CI ビルドで使用する ccache のサイズを増加。 #11450 (alesapin).
  • deb ビルドでは unit_tests_dbms のみを残すようにしました。 #11429 (Ilya Yatsishin).
  • librdkafka をバージョン 1.4.2 に更新しました。#11256 (filimonov)。
  • CMake ビルドファイルをリファクタリング。 #11390 (Ivan).
  • いくつかの不安定だった統合テストを修正しました。 #11355 (alesapin)。
  • UBSan で実行されるユニットテスト向けのサポートを追加。 #11345 (alexey-milovidov).
  • 統合テスト test_insertion_sync_fails_with_timeout から冗長なタイムアウトを削除。#11343alesapin)。
  • clickhouse-test でハングしているクエリをより確実に検出できるようにしました。 #11321 (alexey-milovidov).
  • サーバーがデバッグビルド、またはサニタイザーを有効にしてビルドされている場合に警告を出すようにしました。 #11304 (alexey-milovidov).
  • 現在、clickhouse-test はテストを実行する前にサーバーの生存確認を行います。 #11285 (alesapin)
  • 潜在的に不安定なテスト 00731_long_merge_tree_select_opened_files.sh を修正。頻繁に失敗するわけではありませんが、ThreadFuzzer を使った実験中に、このテストにおけるレースコンディションの可能性が判明しました(#9814)。例については link を参照してください。#11270alexey-milovidov)。
  • curl の呼び出しがタイムアウトした場合は、CI でテストを再実行します。これは、当社の CI インフラストラクチャで典型的な 10 秒以上のシステムハングが原因で発生する可能性があります。これにより #11267 が修正されます。 #11268 (alexey-milovidov)。
  • @donmikel による Join テーブルエンジン用のテストを追加しました。これにより #9158 がクローズされます。#11265alexey-milovidov)。
  • ユニットテスト内のいくつかの軽微なエラーを修正。 #11262 (alesapin).
  • これで、cctz ライブラリ用リンカコマンドの一部が他のライブラリと順序を入れ替えられることはなくなりました。 #11213 (alesapin).
  • /programs/server を実行プログラムとライブラリに分割。#11186Ivan)。
  • protobuf および gRPC 向けのビルドスクリプトを改善。 #11172 (Vitaly Baranov).
  • 動作していなかったパフォーマンス テストを有効化しました。 #11158 (alexey-milovidov).
  • 任意の ClickHouse インスタンスを起動する前に、テスト用のルート S3 バケットを作成します。 #11142 (Pavel Kovalenko).
  • 非定数ポリゴン用の性能テストを追加。 #11141 (alexey-milovidov)。
  • 00979_live_view_watch_continuous_aggregates テストの修正。#11024vzakaznikov)。
  • インテグレーションテストで tmpfs 上で ZooKeeper を実行できる機能を追加しました。 #11002 (alesapin).
  • odbc-bridge の起動を指数バックオフで待機するようにしました。CI 環境では、以前の 200 ms の待機時間では不十分でした。 #10990 (alexey-milovidov).
  • 非決定的なテストを修正しました。 #10989 (alexey-milovidov)。
  • 空の外部データ用のテストを追加しました。 #10926 (alexey-milovidov)。
  • テストごとにデータベースが再作成されます。これによりテスト間の独立性が高まります。 #10902 (alexey-milovidov).
  • カラム関連のコードにアサーションをさらに追加しました。 #10833 (alexey-milovidov).
  • サニタイザとの連携を改善しました。サニタイザの失敗メッセージに query_id に関する情報を含めて表示するようにしました。 #10832 (alexey-milovidov).
  • "Split build smoke test" チェックにおける明らかなレースコンディションを修正。 #10820 (alexey-milovidov)。
  • MergeTreeIndexFullText における MSan の誤検出レポートを修正しました。この問題は最初に #9968 で発生しました。#10801alexey-milovidov)。
  • MariaDB クライアントライブラリ向けの MSan サプレッションを追加。 #10800 (alexey-milovidov).
  • gRPC の make が protobuf ファイルを見つけられなかった問題を、正しい参照先を追加して Makefile を修正することで解決しました。 #10794 (mnkonkova).
  • base、utils、programs に対して追加の警告(-Weverything)を有効にします。ほとんどのコードではすでに有効になっている点に注意してください。 #10779 (alexey-milovidov)。
  • ライブラリからの警告抑制設定が、誤って public として公開されていました #10396#10776alexey-milovidov)。
  • #10396 で誤って削除されていたパッチを復元。#10774alexey-milovidov)。
  • パフォーマンステストのエラーを修正 (その2)。 #10773 (alexey-milovidov).
  • パフォーマンステストの不具合を修正。 #10766 (alexey-milovidov).
  • クロスビルドで使用するコンパイラを clang-10 に更新しました。#10724Ivan)。
  • RPM パッケージのインストール手順を更新しました。Denis(TG ログイン @ldviolet)の提案に基づき、Arkady Shejn によって実装されました。#10707 (alexey-milovidov).
  • tests/queries/0_stateless/01246_insert_into_watch_live_view.py テストの修正を試みています。 #10670 (vzakaznikov).
  • 00979_live_view_watch_continuous_aggregates.py テストを修正して再度有効化。 #10658 (vzakaznikov).
  • ASan ストレステストで発生する OOM 問題を修正。 #10646 (alexey-milovidov).
  • clang-10 への移行後に HashTable で発生した UBSan のレポート(nullptr へのゼロ加算)を修正。 #10638 (alexey-milovidov).
  • コンパイル時の tzdata 処理において、ld(bfd)リンカーへの外部呼び出しを削除しました。#10634alesapin)。
  • lld を使用して blob(リソース)をリンクできるようにしました。 #10632 (alexey-milovidov).
  • LZ4 ライブラリにおける UBSan のレポートを修正しました。 #10631 (alexey-milovidov)。あわせて https://github.com/lz4/lz4/issues/857 も参照してください。
  • LZ4 を最新の開発ブランチに更新。#10630alexey-milovidov)。
  • 安定版バージョンの一覧を含む、自動生成の機械可読ファイルを追加しました。 #10628 (alexey-milovidov)。
  • capnp::UnalignedFlatArrayMessageReader 用の capnproto のバージョンチェックを修正。 #10618 (Matwey V. Kornilov).
  • テスト時のメモリ使用量を削減。 #10617 (alexey-milovidov).
  • 新しい Live View テストでハードコードされていたタイムアウトを修正。 #10604 (vzakaznikov).
  • tests/queries/0_stateless/helpers/client.py でクライアントをオープンする際のタイムアウトを延長。 #10599 (vzakaznikov).
  • clang ビルド向けに ThinLTO を有効化(#10435 の続き)。#10585Amos Bird)。
  • fuzzer を追加し、oss-fuzz との統合に向けて準備。 #10546 (kyprizel).
  • FreeBSD 向けビルドを修正。 #10150 (Ivan).
  • pytest フレームワークを使用するクエリテスト向けの新しいビルドを追加しました。 #10039 (Ivan).

ClickHouse リリース v20.4

ClickHouse リリース v20.4.8.99-stable 2020-08-10

バグ修正

  • parseDateTimeBestEffort 関数に、UNIX タイムスタンプが引数として渡されたときに発生するエラーを修正しました。これにより #13362 が解決されました。 #13441 (alexey-milovidov).
  • NaN 値を含む Float 型に対して呼び出された uniqExacttopKsumDistinct などの集計関数における、潜在的な性能低下と結果がわずかに誤る問題を修正しました。この問題はデバッグビルドで assert をトリガーすることもありました。この修正は #12491 を解決します。 #13254alexey-milovidov)。
  • リテラル NULL ではない nullable な constexpr を条件として使用する if 関数の不具合を修正しました。#12463 の問題を修正。#13226 (alexey-milovidov).
  • 配列要素と配列添字の両方が Nullable であるケースにおける arrayElement 関数のアサートを修正しました。これにより #12172 が解決されました。 #13224alexey-milovidov)。
  • 関数を用いたインデックスの誤った解析を修正しました。MergeTree テーブルの読み取り時に、誤ったパーツをプルーニングしてしまう可能性がありました。#13060#12406 の問題を修正しました。#13081Anton Popov)。
  • ローカルレプリカからの SELECT で使用するスレッド数に対する不要な制限を修正しました。 #12840 (Nikolai Kochetov).
  • WITH TOTALS を含むクエリで発生する可能性があった、データ中の余分なオーバーフロー行を修正しました。 #12747 (Nikolai Kochetov).
  • IN 句内で関数として解釈される大きなタプルに対するパフォーマンスを修正しました。ユーザーが何らかのよく分からない理由で WHERE x IN (1, 2, ...) ではなく WHERE x IN tuple(1, 2, ...) と記述した場合のケースです。 #12700 (Anton Popov).
  • input_format_parallel_parsing のメモリトラッキングを修正(スレッドをグループに紐付けることで対応)。 #12672 (Azat Khuzhin).
  • #12293 サブクエリに WITH 句が含まれている場合でも述語をプッシュダウンできるよう修正しました。#12663Winter Zhang)。
  • #10572 定数式を用いた Bloom フィルターインデックスの問題を修正しました。 #12659 (Winter Zhang).
  • ブローカーが利用できない場合などに StorageKafka で発生していた SIGSEGV を修正しました。 #12658 (Azat Khuzhin).
  • Array(UUID) 型の引数を取る関数 if のサポートを追加しました。これにより #11066 が修正されました。 #12648 (alexey-milovidov).
  • キャッシュレイアウトを使用する外部ディクショナリにおいて、サーバーのクラッシュを引き起こす可能性のあったレースコンディションを修正しました。 #12566 (alesapin).
  • DROP TABLE 時に Distributed テーブルのデータ(非同期 INSERT のブロック)も削除されるようになりました。 #12556 (Azat Khuzhin).
  • enable_mixed_granularity_parts=1 のときに ALTER DELETE クエリ実行後に古いパーツが破損する不具合を修正しました。これにより #12536 が修正されます。 #12543alesapin)。
  • in 関数に不正な数の引数が指定された場合の例外メッセージを改善。 #12529 (Anton Popov).
  • コンパクトパーツからの読み取り時のパフォーマンス問題を修正しました。 #12492 (Anton Popov).
  • 辞書キーの式で結合する場合(t JOIN dict ON expr(dict.id) = t.id)に発生していた辞書 JOIN のクラッシュを修正しました。このケースでは辞書 JOIN の最適化を無効化するようにしました。 #12458 (Artem Zuikov).
  • StorageMerge 使用時に発生する可能性のあったセグメンテーションフォールトを修正しました。#12054 をクローズ。#12401tavplubix)。
  • WITH FILL 修飾子での列の順序の扱いを修正しました。以前は、ORDER BY 句で指定した列の順序が考慮されていませんでした。 #12306 (Anton Popov).
  • 仮想列(Merge テーブルにおける _table など)によるフィルタリングや、system.tables からクエリする際のデータベース名でのフィルタリングのように、システムテーブルの index 列でデータをフィルタリングする式があり、その式が Nullable 型を返す場合に発生する「bad cast」例外を回避します。これにより #12166 が修正されます。 #12305alexey-milovidov)。
  • TrieDictionary のロードに失敗した場合にエラーを表示するようにしました。 #12290 (Vitaly Baranov).
  • 空の配列に対して arrayFill 関数が誤って動作し、クラッシュを引き起こす可能性がありました。この変更により #12263 が修正されました。#12279alexey-milovidov)。
  • LowCardinality 型に対する共通の型への変換を実装しました。これにより、LowCardinality 型のカラムとその他のカラムを持つテーブルに対して UNION ALL を実行できるようになりました。これにより #8212 が修正され、#4342 も修正されました。#12275alexey-milovidov)。
  • StorageFile への複数の連続した挿入時に、一部の特殊な型に対してヘッダーが複数回書き込まれてしまう問題を修正しました。これにより #6155 が解決されました。 #12197 (Nikita Mikhaylov).
  • 0 または 1 以外の UInt8 値に対する論理関数を修正しました。 #12196 (Alexander Kazakov)。
  • max_memory_usage* の上限をプロセスの常駐メモリ量までに制限しました。 #12182 (Azat Khuzhin).
  • GROUP BY の単射関数の除去処理中における dictGet の引数チェックを修正しました。 #12179 (Azat Khuzhin).
  • ODBC 接続がスキーマをサポートしていない場合、辞書ソースのテーブル名をスキーマ名とテーブル名に分割しないようにしました。 #12165 (Vitaly Baranov).
  • ALTER DELETE において、条件式が NULL と評価される場合にレコードが削除される誤ったロジックを修正しました。これにより #9088 が修正され、#12106 がクローズされます。#12153alexey-milovidov)。
  • エイリアスが存在する場合の、外部 DBMS(例: MySQL、ODBC)向けクエリ変換を修正しました。これにより #12032 が解決されます。#12151 (alexey-milovidov)。
  • 整数除算でオーバーフローが発生する可能性を修正しました。この変更により #12119 が修正されました。#12140alexey-milovidov)。
  • greatCircleDistancegeoDistance における無限ループが発生する可能性のあった問題を修正しました。これにより #12117 が修正されます。#12137alexey-milovidov)。
  • 「pid」ファイルの扱いを適正化しました。以前のバージョンでは、サーバーが適切にシャットダウンされずに強制終了され、その後に以前に動作していたサーバーと同じ pid を持つ別のプロセスが存在する場合、サーバーの起動が拒否されることがありました。また、別のサーバーが稼働中であっても、サーバーの起動に失敗した際に pid ファイルが削除されてしまうこともありました。これにより #3501 が修正されました。 #12133 (alexey-milovidov)。
  • ENGINE=Dictionary を使用するテーブルの辞書に対する依存関係の処理を修正しました。これにより #10994 および #10397 の問題が修正されます。 #12116 (Vitaly Baranov).
  • UNION を含む SELECT 文で、スレッド総数に対する誤った制限値が原因となっていたパフォーマンス問題を修正しました。#12030 を修正。 #12103Nikolai Kochetov)。
  • -StateResample コンビネータで発生していたセグメンテーションフォールトを修正しました。 #12092 (Anton Popov).
  • SELECT クエリに対して system.quey_log 内の空の result_rows および result_bytes メトリクスを修正しました。Issue #11595 を修正。#12089Nikolai Kochetov)。
  • VIEW からの SELECT でスレッド数を不必要に制限していた問題を修正しました。 #11937 を修正。 #12085 (Nikolai Kochetov)。
  • PREWHERE に誤った型を使用した際に発生する可能性があったクラッシュを修正しました。#12053#12060 を解決しました。#12060Nikolai Kochetov)。
  • LowCardinality 型に対する関数 defaultValueOfArgumentType で発生していた Expected single dictionary argument for function エラーを修正しました。これにより #11808 が解決されました。#12056Nikolai Kochetov)。
  • Tuple(LowCardinality) 引数を持つ高階関数で発生していた Cannot capture column エラーを修正しました。これにより #9766 が解決されました。 #12055Nikolai Kochetov)。
  • データベースをロードする際にテーブルメタデータを並列に解析するようにしました。これにより、大量のテーブルが存在する場合にサーバーの起動が遅くなる問題が解消されます。 #12045 (tavplubix).
  • Enum 型に対しては topK 集約関数が Enum を返すようにしました。これにより、#3740 を修正します。#12043alexey-milovidov)。
  • 制約が定数式かどうかをチェックするように修正しました。これにより #11360 が修正されました。 #12042 (alexey-milovidov)。
  • Nullable 列を含むタプルの誤った比較を修正しました。 #11985 を解決。 #12039Nikolai Kochetov)。
  • allow_introspection_functions=0 の場合のアクセス権限の計算を修正しました。 #12031 (Vitaly Baranov)。
  • サイズの異なる FixedString 型の引数を指定して関数 if を呼び出した際に、誤った結果が返ったりクラッシュが発生したりする可能性があった問題を修正しました。これにより #11362 が修正されました。 #12021alexey-milovidov)。
  • 返される式が関数 neighbor のみであるクエリは、オフセット -9223372036854775808 で関数が呼び出された場合、空の結果を返すことがあります。この不具合を修正しました #11367#12019 (alexey-milovidov).
  • allow_ddl=0 の場合のアクセス権計算を修正。 #12015 (Vitaly Baranov).
  • クラッシュの原因となり得る generateRandom 内の配列サイズのオーバーフローの可能性を修正しました。この修正は #11371 を解決します。 #12013 (alexey-milovidov)。
  • 浮動小数点例外を引き起こす可能性のあった不具合を修正しました。これにより #11378 がクローズされます。#12005alexey-milovidov)。
  • サーバー起動時のログメッセージ内の誤った設定名を修正しました。 #11997 (alexey-milovidov).
  • Values フォーマットで Query parameter was not set エラーが発生する問題を修正。 #11918 を解決。 #11936tavplubix)。
  • クエリ内の置換(パラメータ化クエリ)に対するエイリアスを保持するようにしました。これにより #11914 を修正しました。 #11916 (alexey-milovidov)。
  • ストレージポリシーをデフォルトから変更した際にデータが移動されない不具合を修正。 #11893 (Vladimir Chebotarev).
  • DateTime64 のパース時に発生する可能性のあった浮動小数点例外を修正しました。これにより #11374 が修正されました。#11875alexey-milovidov)。
  • HTTP インターフェイス経由のメモリ計上を修正しました(wait_end_of_query=1 の場合に影響が大きくなることがあります)。#11840Azat Khuzhin)。
  • 同値性を確認する前に、ZooKeeper に保存されているメタデータを解析するようにしました。 #11739 (Azat Khuzhin).

パフォーマンスの改善

  • リテラルを引数に取る IN 演算子でインデックスが使用されず、v19.3 前後で発生していたパフォーマンス低下を修正しました。これにより #10574 が解消されています。 #12062nvartolomei)。

ビルド/テスト/パッケージングの改善

  • Dockerfile 内で、最初の apt-get update の前に ca-certificates をインストールするようにしました。 #12095Ivan Blinkov)。

ClickHouse リリース v20.4.6.53-stable 2020-06-25

バグ修正

  • prewhere 条件で Nullable 型のカラムを使用した場合に発生するまれなクラッシュを修正。#11608 の継続対応。#11869Nikolai Kochetov)。
  • 高階関数内で arrayJoin を許可しないようにしました。プロトコル同期の不整合を引き起こしていたためです。これにより #3933 が解決されました。 #11846 (alexey-milovidov).
  • FixedString と定数 String の比較で誤った結果が返される不具合を修正しました。これにより #11393 が解決されます。このバグはバージョン 20.4 で導入されました。 #11828alexey-milovidov)。
  • 条件に NULL が含まれる場合に if() が誤った結果を返す問題を修正。 #11807 (Artem Zuikov).
  • クエリでの過剰なスレッド使用を修正。 #11788 (Nikolai Kochetov).
  • SELECT *, xyz.* のような、本来はエラーになるべきクエリが成功してしまっていた問題を修正しました。 #11753 (hexiaoting).
  • メタデータの ALTER 実行中は、レプリケートされたフェッチがキャンセルされるようになりました。 #11744 (alesapin).
  • Values 入力フォーマット内の複合リテラルに対する誤った型推論により発生していた LOGICAL_ERROR を修正。 #11732 (tavplubix).
  • 定数列に対する ORDER BY ... WITH FILL の動作を修正。 #11697 (Anton Popov).
  • XDBC bridge と通信する際に適切なタイムアウトを渡すようにしました。これまで、bridge の生存確認およびメタ情報の受信時にタイムアウトが考慮されていませんでした。 #11690 (alexey-milovidov).
  • エイリアスを含む ORDER BY 句と併用した際の LIMIT n WITH TIES の動作を修正。 #11689 (Anton Popov).
  • system.mutations の状態が不正になる原因となっていたエラーを修正しました。サーバーがレプリケーションキューに MUTATE_PART タスクを保持したまま実行しようとしているにもかかわらず、ミューテーション全体がすでに完了しているかのように表示される場合がありました。この変更で #11611 が修正されました。 #11681alesapin)。
  • 大文字小文字を区別しないフラグ付きの正規表現のサポートを追加しました。これにより #11101#11506 が修正されました。 #11649alexey-milovidov)。
  • 行レベルセキュリティが設定されている場合、単純な COUNT クエリに対する最適化を削除しました。以前のバージョンでは、ユーザーはフィルタ後の件数ではなくテーブル内の全レコード数を取得していました。この変更により #11352 が修正されました。#11644alexey-milovidov)。
  • String 向けブルームフィルタ(データスキップインデックス)の不具合を修正。 #11638 (Azat Khuzhin).
  • prewhere 句の条件で Nullable カラムを使用した際に発生する、まれなクラッシュを修正。 (おそらく #11572 と何らかの形で関連しています)。 #11608 (Nikolai Kochetov)。
  • Buffer テーブルからのサンプリング読み込みを行うクエリで発生していた Block structure mismatch エラーを修正。 #11602 (Nikolai Kochetov).
  • exception.code() % 256 が 0 となる場合に誤った終了コードを返していた clickhouse-client の問題を修正。#11601filimonov)。
  • サーバー起動時に出力される「Mark cache size was lowered」というログメッセージの些細な誤りを修正。この変更により #11399 がクローズされる。 #11589 (alexey-milovidov).
  • PREWHERE column in (subquery)ARRAY JOIN を含むクエリで発生するエラー Size of offsets does not match size of column を修正しました。#11580Nikolai Kochetov)。
  • SHOW CREATE TABLE でまれに発生していたセグメンテーションフォールトを修正しました。#11490 を解決しました。#11579 (tavplubix).
  • HTTP セッション内のすべてのクエリが同じ query_id を持っていました。この問題を修正しました。 #11578 (tavplubix).
  • これにより、clickhouse-server の Docker コンテナはサーバーのヘルスチェックの際に IPv6 を優先して使用するようになります。 #11550 (Ivan Starkov)。
  • <node> 用の shard_num/replica_num を修正(use_compact_format_in_distributed_parts_names の動作を損なっていた問題を修正)。 #11528 (Azat Khuzhin).
  • テーブルのドロップ処理中に例外が発生する可能性のあるレースコンディションを修正しました。少しややこしいものの、まったく危険ではありません。説明が必要な場合は、Telegram で連絡してください。 #11523 (alesapin).
  • -State 関数を用いた集約の途中で例外がスローされた場合に発生するメモリリークを修正しました。これにより #8995 が解決されました。#11496alexey-milovidov)。
  • データスキップインデックスが、バックグラウンドマージ中に変更される列(SummingMergeTree、AggregatingMergeTree、および TTL GROUP BY の場合)に依存している場合、インデックスが正しく計算されていませんでした。この問題は、マージ後にインデックスを計算するように処理順を変更し、マージ後のデータに対してインデックスが計算されるようにすることで修正されました。 #11162 (Azat Khuzhin).
  • 古い libunwind のパッチを削除。 https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 これにより、clang ビルドで -fno-omit-frame-pointer を無効化できるようになり、平均で少なくとも 1% の性能向上が見込まれます。 #10761 (Amos Bird)。
  • 関数でラップされた主キーを、'FINAL' モディファイアおよび 'ORDER BY' 最適化と組み合わせて使用した場合の動作を修正。 #10715 (Anton Popov).

ビルド/テスト/パッケージングの改善

  • ユニットテスト内のいくつかの重大でないエラーを修正しました #11262 (alesapin).
  • MergeTreeIndexFullText における(誤検出の)MSan レポートを修正しました。この問題は最初に #9968 で発生しました #10801 (alexey-milovidov).

ClickHouse リリース v20.4.5.36-stable 2020-06-10

バグ修正

  • min_bytes_to_use_direct_io が有効で、PREWHERE が有効な状態で SAMPLE を使用している、またはスレッド数が多い場合に発生し得る Data compressed with different methods エラーを修正しました。これにより #11539 の問題が修正されます。 #11540alexey-milovidov)。
  • コーデックで返される圧縮サイズを修正。#11448Nikolai Kochetov)。
  • リテラル以外の引数を取る圧縮コーデックが列に設定されている場合にサーバーがクラッシュする問題を修正しました。#11365 の修正です。#11431alesapin)。
  • NaN を点として扱う場合の pointInPolygon の不具合を修正。#11375 を修正。#11421Alexey Ilyukhov)。
  • テーブルが正常に作成されなかった場合に、MergeTree のシャットダウン時に発生する可能性のある未初期化メモリの読み取りを修正しました。 #11420 (alexey-milovidov).
  • 緯度・経度の範囲外の引数を指定した場合の geohashesInBox を修正しました。 #11403 (Vasily Nemkov)。
  • 外部ソートおよび limit を使用したクエリで発生する可能性のある Pipeline stuck エラーを修正。#11359 を解決。#11366Nikolai Kochetov)。
  • ReplicatedMergeTree におけるパーツ送信中の不要なロックを削除。 #11354 (alesapin).
  • 複数行モードにおける clickhouse-client の \G(縦方向の出力)サポートを修正しました。これにより #9933 がクローズされます。#11350alexey-milovidov)。
  • Lazy データベース使用時に発生し得るセグメンテーションフォールトを修正。 #11348 (alexey-milovidov).
  • quantilesExactWeightedArray におけるクラッシュを修正しました。#11337 (Nikolai Kochetov).
  • ALTER クエリでメタデータを変更する前にマージ処理が停止されるようになりました。 #11335 (alesapin).
  • parallel_view_processing = 1 を設定している場合の MATERIALIZED VIEW への書き込みを、再度並列実行できるようにしました。 #10241 を修正。 #11330Nikolai Kochetov)。
  • 抽出された JSON 内に、対応する { または [ が存在しない文字列が含まれている場合の visitParamExtractRaw を修正。 #11318 (Ewout).
  • ThreadPool における、非常にまれなレースコンディションを修正しました。 #11314 (alexey-milovidov)。
  • clickhouse-copier における軽微なデータレースを修正。インテグレーションテストで検出。 #11313 (alexey-milovidov).
  • 変換処理で未初期化メモリが使われる可能性のある問題を修正。例: SELECT toIntervalSecond(now64())#11311alexey-milovidov)。
  • プライマリキーに Array カラムを持つテーブルで、このカラムを empty または notEmpty 関数でフィルタリングするクエリに対してインデックス解析が機能しない問題を修正しました。これにより、#11286 が解決されました。 #11303 (alexey-milovidov)。
  • クエリが max_network_bandwidthmax_execution_speed または priority 設定によってスロットルされている場合に、クエリ速度の推定が正しく行われず、その結果 min_execution_speed の制限が機能しない、または誤った動作をするバグを修正しました。timeout_before_checking_execution_speed のデフォルト値を非ゼロに変更しました。そうしないと、min_execution_speed および max_execution_speed の設定が効果を持たないためです。これにより #11297 が修正されます。#5732 も修正されます。#6228 も修正されます。ユーザビリティの改善: clickhouse-client において例外メッセージとプログレスバーが連結されるのを回避しました。 #11296 (alexey-milovidov)。
  • SET DEFAULT ROLE が誤った引数で呼び出されたときに発生していたクラッシュを修正しました。これにより #10586 が解決されます。#11278 (Vitaly Baranov).
  • Protobuf フォーマットの不正なデータを読み込む際に発生するクラッシュを修正しました。これにより #5957 および #11203 が修正されます。 #11258 (Vitaly Baranov)。
  • cache-dictionary が(期限切れのキーしか存在しない場合に)本来の値ではなくデフォルト値を返してしまうバグを修正しました。これは文字列フィールドのみに影響します。 #11233 (Nikita Mikhaylov)。
  • 内部クエリに定数を含む VIEW から読み取る際に発生するエラー Block structure mismatch in QueryPipeline を修正しました。 #11181 を解決。 #11205Nikolai Kochetov)。
  • Invalid status for associated output となる可能性があった例外を修正しました。 #11200 (Nikolai Kochetov).
  • Array(Array(LowCardinality)) 型の引数をキャプチャする高階関数で発生する可能性のある Cannot capture column エラーを修正。 #11185 (Nikolai Kochetov).
  • 1000個を超えるキーが存在する場合や一部のバックエンド環境で失敗していた S3 のグロブ処理を修正しました。#11179 (Vladimir Chebotarev)。
  • データスキッピングインデックスが、バックグラウンドマージ中に変更される列(SummingMergeTree、AggregatingMergeTree、および TTL GROUP BY の場合)に依存している場合、そのインデックスは正しく計算されていませんでした。この問題は、マージ後にインデックス計算を行うように順序を変更し、マージ済みデータに対してインデックスが計算されるようにすることで修正されました。 #11162 (Azat Khuzhin).
  • 常に適用されていた制限に基づく再スケジュールが原因となっていた Kafka のパフォーマンス問題を修正しました。 #11149 (filimonov).
  • engine=Kafka のテーブルに対する DROP 実行中(またはサーバー再起動時)に時々発生していたハングを修正。 #11145 (filimonov)。
  • 単純なクエリに対してスレッドを過剰に予約してしまう問題を修正(パイプラインの変更後に一部動作しなくなっていたスレッド数削減のための最適化)。#11114 (Azat Khuzhin).
  • 分散クエリに対する述語の最適化(HAVING 句を含み、つまりクエリを開始したサーバー側でのフィルタリングが必要なクエリ向けの enable_optimize_predicate_expression=1)について、式の順序を保持することで修正し(これだけで修正としては十分)、さらに集約処理でインデックスではなくカラム名を使用するように強制しました。修正: #10613, #11413#10621Azat Khuzhin)。

ビルド/テスト/パッケージングの改善

  • いくつかの不安定だったインテグレーションテストを修正。 #11355 (alesapin).

ClickHouse リリース v20.4.4.18-stable 2020-05-26

v20.4.3.16-stable からの変更はありません。

ClickHouse リリース v20.4.3.16-stable 2020-05-23

バグ修正

  • 何もファイナライズされなかった場合に、mutation finalization タスクでのログ出力を削除しました。 #11109 (alesapin).
  • registerDiskS3 におけるメモリリークを修正しました。 #11074 (Pavel Kovalenko).
  • Kafka エンジンテーブルの停止時にデータが欠落する可能性のあった問題を修正しました。 #11048 (filimonov).
  • parseDateTime64BestEffort の引数解決に関するバグを修正しました。 #11038 (Vasily Nemkov).
  • テーブルの作成に失敗した場合に、MergeTree でごくまれに発生しうる use-after-free の不具合を修正しました。 #10986, #10970 (alexey-milovidov).
  • Atomic データベースにおけるメタデータ(リネーム用の相対パス)およびデータ(シンボリックリンク用の相対パス)の処理を修正。 #10980 (Azat Khuzhin).
  • Atomic データベースエンジン使用時に、ALTER および DROP DATABASE クエリが同時に実行されるとサーバーがクラッシュする不具合を修正しました。 #10968 (tavplubix).
  • getRawData() メソッドで生データのサイズが正しくない問題を修正しました。 #10964 (Igr)
  • 20.1 とそれ以前のバージョンとの間における二段階集約処理の非互換性を修正しました。この問題は、イニシエーターノードとリモートノードで異なるバージョンの ClickHouse を使用しており、かつ GROUP BY の結果セットが大きく、単一の String フィールドで集約を行っている場合に発生します。その結果、単一のキーに対応する行がマージされず、結果内に複数行として残ってしまうことがありました。 #10952 (alexey-milovidov).
  • DistributedBlockOutputStream によって部分的にしか書き込まれていないファイルが送信されてしまう問題を修正しました。 #10940 (Azat Khuzhin).
  • SELECT count(notNullIn(NULL, [])) で発生していたクラッシュを修正しました。 #10920 (Nikolai Kochetov).
  • Kafka テーブルエンジンの DROP 実行中(またはサーバー再起動時)にまれに発生していたハングを修正しました。 #10910 (filimonov).
  • a TO b, c TO a のような複数の ALTER RENAME を実行できなかった問題を修正しました。#10895 (alesapin).
  • 同じカラムに対して複数スレッドから集約関数状態からの結果を取得する際に発生しうるレースコンディションを修正しました。これが発生しうるのは、quantile* 関数用の AggregateFunction の状態を保持している Memory エンジンのテーブルを読み取る際に、finalizeAggregation 関数を使用している場合に限られます。 #10890 (Nikolai Kochetov)。
  • Distributed テーブルのタプルに関する後方互換性を修正しました。 #10889 (Anton Popov).
  • StringHashTable で存在しないキーを扱う際に発生していた SIGSEGV を修正しました。 #10870 (Azat Khuzhin).
  • Atomic エンジンを使用したデータベースから LiveView テーブルが削除された後に WATCH がハングする問題を修正しました。 #10859 (tavplubix).
  • ReplicatedMergeTree において、あるレプリカが非アクティブになった後もそのレプリカを待ち続けてしまい、OPTIMIZE クエリ中の一部の ALTER がハングする可能性のあったバグを修正しました。 #10849 (tavplubix)。
  • CONSTRAINT 式に含まれているカラムがリネームされた場合に、制約が更新されるようになりました。 #10844 を修正しました。 #10847alesapin)。
  • cache-dictionary において未初期化メモリを読み取ってしまう可能性があった問題を修正しました。 #10834 (alexey-milovidov).
  • Block::sortColumns() の後にカラムの順序を修正しました。 #10826 (Azat Khuzhin).
  • 識別子のクオートを行わないよう指定された場合に発生していた ODBC ブリッジの問題を修正しました。#7984 を解決。#10821alexey-milovidov)。
  • DateLUT における UBSan および MSan のレポートを修正しました。 #10798 (alexey-milovidov).
  • キー条件における誤った型変換を修正。 #6287 を解決。 #10791Andrew Onyshchuk)。
  • parallel_view_processing の動作を修正しました。これにより、例外が発生した場合でも、すべての MATERIALIZED VIEW への挿入が例外なく完了するようになりました。#10241 を修正しました。 #10757Nikolai Kochetov)。
  • -State と併用した際の -OrNull および -OrDefault コンビネーターの不具合を修正しました。 #10741 (hcz).
  • 関数 h3EdgeAngle において発生する可能性のあったバッファオーバーフローを修正しました。 #10711 (alexey-milovidov).
  • 多数のパーツを持つテーブルで同時実行される ALTER がロックされてしまう不具合を修正しました。 #10659 (alesapin).
  • テーブルの起動前にサーバーがシャットダウンされた場合に StorageBuffer で発生していた nullptr デリファレンスを修正しました。 #10641 (alexey-milovidov).
  • LowCardinality 使用時における optimize_skip_unused_shards の不具合を修正しました。 #10611 (Azat Khuzhin).
  • 同期ミューテーションで使用する条件変数の扱いを修正しました。場合によっては、その条件変数へのシグナルが失われることがありました。 #10588 (Vladimir Chebotarev).
  • loadStoredObject() が終了する前に createDictionary() が呼び出された場合に発生する可能性のあったクラッシュを修正しました。 #10587 (Vitaly Baranov).
  • デフォルト式の型が列の型と異なる列 ALIAS に対する SELECT を修正しました。 #10563 (Azat Khuzhin).
  • DateTime64 型と String 型の値の比較を実装しました。 #10560 (Vasily Nemkov).
  • GROUP BY の sharding_key 最適化をデフォルトで無効化し(optimize_distributed_group_by_sharding_key は導入されたものの、sharding_key の解析がトリッキーであり、例えばシャーディングキーに if が含まれるケースがあるため、デフォルトではオフになっています)、WITH ROLLUP/CUBE/TOTALS に対するこの最適化を修正しました。 #10516 (Azat Khuzhin).
  • #10263 を修正しました。#10486Azat Khuzhin)。
  • max_rows_to_sort 設定に関するテストを追加しました。 #10268 (alexey-milovidov).
  • Bloomフィルタインデックスの作成に後方互換性を追加。#10551#10569 (Winter Zhang)。

ClickHouse リリース v20.4.2.9, 2020-05-12

後方互換性のない変更

  • システムテーブル(例: system.query_logsystem.trace_logsystem.metric_log)は、サイズが 10 MiB 未満のパーツに対して compact data part フォーマットを使用するようになりました。compact data part フォーマットはバージョン 20.3 以降でサポートされています。20.3 未満のバージョンにダウングレードする場合は、/var/lib/clickhouse/data/system/ 内のシステムログ用テーブルデータを手動で削除する必要があります。
  • FixedString を含む文字列比較で、比較対象の引数のサイズが異なる場合、小さい文字列が大きい文字列の長さまでパディングされているかのように比較を行います。これは、FixedString データ型が SQL の CHAR 型に対応すると仮定した場合の SQL 互換性のためのものです。これにより #9272 がクローズされました。 #10363alexey-milovidov
  • SHOW CREATE TABLE を複数行表示にしました。これにより可読性が向上し、MySQL に近い形式になりました。 #10049Azat Khuzhin
  • pointInPolygon 関数で使用され、デフォルトで有効になっている設定 validate_polygons を追加しました。 #9857alexey-milovidov

新機能

  • ClickHouse から Zookeeper へのセキュアな接続のサポートを追加 #10184 (Konstantin Lebedev)
  • カスタム HTTP ハンドラーのサポートを追加。説明については #5436 を参照。#7572Winter Zhang
  • MessagePack の入出力フォーマットを追加。 #9889 (Kruglov Pavel)
  • Regexp 入力フォーマットを追加しました。 #9196 (Kruglov Pavel)
  • Markdown 文書にテーブルを埋め込めるようにする出力フォーマット Markdown を追加しました。 #10317 (Kruglov Pavel)
  • 辞書のカスタム設定セクションのサポートを追加しました。また、#2829 の問題も修正しました。 #10137 (Artem Streltsov)
  • DDL クエリの CREATE DICTIONARY でカスタム設定をサポート #10465Artem Streltsov
  • サーバー全体で動作するシンプルなメモリプロファイラを追加しました。サーバーのメモリ使用量が次の割り当て閾値を超えたタイミングで、割り当てコンテキストを収集します。 #10444 (alexey-milovidov)
  • レプリカが自分でパーツをマージすることを制限し、常に他のレプリカからマージ済みパーツをフェッチするようにする設定 always_fetch_merged_part を追加しました。 #10379 (alesapin)
  • JSONオブジェクトから生データを抽出する関数 JSONExtractKeysAndValuesRaw を追加しました #10378 (hcz)
  • OS のメモリ使用量を system.asynchronous_metrics に追加。 #10361 (alexey-milovidov)
  • 関数 leastgreatest に汎用版を追加しました。これにより、任意の型の引数を任意個指定して動作させることができます。この変更により #4767 #10318 が修正されました(alexey-milovidov
  • これにより、ClickHouse は辞書ソースのタイムアウトを ClickHouse 側で制御するようになりました。キャッシュ辞書の構成に 2 つの新しい設定項目が追加されました。strict_max_lifetime_seconds はデフォルトでは max_lifetime であり、query_wait_timeout_milliseconds はデフォルトで 1 分です。前者の設定は、allow_read_expired_keys 設定(有効期限が大きく過ぎたキーの読み取りを禁止するため)と併用する場合にも有用です。 #10337 (Nikita Mikhaylov)
  • query_log に書き込むエントリをフィルタリングするための log_queries_min_type を追加 #10053 (Azat Khuzhin)
  • 関数 isConstant を追加しました。この関数は、引数が定数式であるかどうかをチェックし、1 または 0 を返します。開発、デバッグ、およびデモンストレーションを目的としています。 #10198 (alexey-milovidov)
  • キーが存在しない場合にデフォルト値ではなく NULL を返す joinGetOrNull を追加。 #10094 (Amos Bird)
  • transform_null_in オプションが有効な場合、IN 演算子では NULLNULL と等しいものと見なします。 #10085 (achimbab)
  • MergeTree テーブルエンジンファミリーに対して ALTER TABLE ... RENAME COLUMN を追加。 #9948 (alesapin)
  • 並列分散 INSERT SELECT をサポートしました。 #9759 (vxider)
  • distributed_group_by_no_merge なしで Distributed over Distributed をクエリできるようにする機能を追加 ... #9923 (Azat Khuzhin)
  • 指定された複数の範囲ごとに配列要素を集約する関数 arrayReduceInRanges を追加。 #9598 (hcz)
  • Prometheus exporter に Dictionary のステータスを追加。 #9622 (Guillaume Tassery)
  • 関数 arrayAUC を追加 #8698 (taiyang-li)
  • TPC-H との互換性を高めるために DROP VIEW ステートメントをサポートしました。 #9831 (Amos Bird)
  • windowFunnel() に 'strict_order' オプションを追加 #9773 (achimbab)
  • DATE および TIMESTAMP SQL 演算子のサポートを追加。例: SELECT date '2001-01-01' #9691 (Artem Zuikov)

実験的機能

  • 実験的なデータベースエンジン Atomic を追加しました。これは非ブロッキングな DROP および RENAME TABLE クエリと、アトミックな EXCHANGE TABLES t1 AND t2 クエリをサポートします #7512 (tavplubix)
  • S3 上での ReplicatedMergeTree の初期サポートを追加しました(動作はまだ最適とは言えません)#10126 (Pavel Kovalenko)

バグ修正

  • 依存テーブルを含む場合に、MATERIALIZED VIEW の内部クエリで誤ったスカラー結果が返される問題を修正 #10603 (Nikolai Kochetov)
  • readonly=2 かつ cancel_http_readonly_queries_on_client_close=1 のときに、クライアントが接続を閉じた際に HTTP リクエストがハングする問題を修正しました。 #10684 (tavplubix)
  • サーバー起動時に例外がスローされた場合に発生する StorageBuffer のセグメンテーションフォルトを修正。 #10550 #10609 を修正(tavplubix
  • クエリ SYSTEM DROP DNS CACHE は、ユーザーが特定の IP アドレスからの接続を許可されているかどうかを確認するために使用されるキャッシュも削除するようになりました #10608 (tavplubix)
  • 1 つのクエリ内で同一の集合に対して複数の IN 演算子を使用している場合の処理を修正。 #10539 #10686 を修正 (Anton Popov)
  • ネストされた型で generateRandom がクラッシュする問題を修正しました。#10583 を解決。 #10734Nikolai Kochetov
  • マージ後に発生する可能性のあった、SummingMergeTree における LowCardinality(FixedString) キーカラムのデータ破損を修正。 #10489 を修正。 #10721 (Nikolai Kochetov)
  • aggregation_memory_efficient_merge_threads 設定ロジックを修正しました。 #10667 (palasonic1)
  • 消えてしまう合計値の問題を修正。クエリに JOIN または外側の WHERE 条件を持つサブクエリが含まれている場合に、合計値がフィルタリングされてしまうことがありました。#10674 #10698Nikolai Kochetov)で修正。
  • distributed_aggregation_memory_efficient が有効な場合に、リモートクエリが並列実行されない問題を修正。関連する #10655 #10664Nikolai Kochetov
  • LIMIT を含むクエリで行数が誤る可能性がある問題を修正。 #10566#10709#10660 を修正 (Nikolai Kochetov)
  • コンパクトパーツを別のコンパクトパーツへマージした後に特定の状況で発生する可能性のあるインデックス破損を修正。 #10531 (Anton Popov)
  • Mutation のすべてのパートが完了しているにもかかわらず、is_done=0 のままハングしてしまう状況を修正しました。 #10526 (alesapin)
  • UTC からのオフセットが小数値のタイムゾーンにおける Unix エポック開始時のオーバーフローを修正。#9335 に対応。#10513alexey-milovidov
  • 入力フォーマットの診断機能を改善。#10204 #10418 を修正(tavplubix)。
  • simpleLinearRegression() における大きな整数値を扱う際の数値オーバーフローを修正 #10474 (hcz)
  • Distributed のシャットダウン時の use-after-free を修正し、すべてのバッチの送信完了を待たないようにしました #10491 (Azat Khuzhin)
  • clickhouse-server の Docker イメージに CA 証明書を追加 #10476 (filimonov)
  • addressToLine 関数または AggregateFunctionState 列の使用時にまれに発生し得た無限ループを修正しました。 #10466 (Alexander Kuzmenkov)
  • 分散クエリ中に発生する ZooKeeper の "no node error" を処理 #10050 (Daniel Chen)
  • カラムのデフォルト値を変更した後にテーブルを ATTACH できなくなる不具合を修正しました。 #10441 (alesapin)
  • ALIAS 列のデフォルト式の型を列の型へ暗黙的にキャストするようにした #10563 (Azat Khuzhin)
  • ATTACH DATABASE 失敗時に metadata ディレクトリを削除しないようにする #10442 (Winter Zhang)
  • システムの tzdata への依存を回避しました。CentOS 8 における Africa/Casablanca タイムゾーンの読み込みを修正しました。#10211 #10425alexey-milovidov
  • クォーラム付きでデータを挿入した後に、そのデータが削除される(DROP PARTITION、TTL など)場合の不具合をいくつか修正しました。これにより INSERT がハングしたり、SELECT で誤って例外が発生したりしていた問題が解消されます。 #9946 #10188 を修正(Nikita Mikhaylov
  • BloomFilter インデックス作成時の引数の数と型をチェック #9623 #10431 (Winter Zhang)
  • skip_unavailable_shards よりも fallback_to_stale_replicas を使用することを推奨します。そうしないと、両方の設定が指定されていて最新のレプリカが存在しない場合、クエリが失敗します(@alex-zaitsev によるパッチ) #10422 (Azat Khuzhin)
  • ARRAY JOIN、ORDER BY、LIMIT を含むクエリで不完全な結果が返されることがある問題を修正しました。#10226 を修正。#10427Vadim Plakhtinskiy
  • DETACH/ATTACH 後に辞書名へデータベース名を追加するように変更。system.dictionaries テーブルおよび SYSTEM RELOAD クエリの不具合を修正 #10415 (Azat Khuzhin)
  • processors pipeline における extremes の結果が不正確になる可能性があった問題を修正。 #10131 (Nikolai Kochetov)
  • 設定 distributed_group_by_no_merge が有効な場合に発生する可能性があったセグメンテーションフォルトを修正しました(#10131 により 20.3.7.46 で導入)。#10399Nikolai Kochetov
  • Array(Tuple(...)) データ型の誤ったフラット化処理を修正。 #10259 #10390 を解決(alexey-milovidov
  • JOIN 内の定数の列名が JOIN 外の定数の列名と衝突しないように修正 #9950 (Alexander Kuzmenkov)
  • Block::sortColumns() 呼び出し後の列順を修正 #10826 (Azat Khuzhin)
  • リモートクエリ実行時に発生する可能性のある ConcatProcessorPipeline stuck エラーを修正。 #10381 (Nikolai Kochetov)
  • 集約処理でディスク予約を行わないようにし、#9241 #10375 を修正(Azat Khuzhin)。
  • UTC からのオフセットが正と負の間で変更されたことのあるタイムゾーン(例: Pacific/Kiritimati)における datetime 関数の誤った動作を修正しました。 #7202 および #10369 を修正。(alexey-milovidov)
  • dictIsIn 関数で発生する無限ループを回避。#515 を修正 #10365 (alexey-milovidov)
  • デフォルトで GROUP BY の sharding_key 最適化を無効化し、WITH ROLLUP/CUBE/TOTALS で正しく動作するよう修正 #10516 (Azat Khuzhin)
  • パーツをチェックするときにはエラーコードも確認し、エラーが「メモリ不足」などの場合にはそのパーツを破損としてマークしないようにしました。#6269 #10364 を修正。(alexey-milovidov)
  • 読み込まれていない辞書の情報を system テーブルに表示するようにしました。 #10234 (Vitaly Baranov)
  • サーバーがテーブルの起動前にシャットダウンされた場合に発生する StorageBuffer 内のヌルポインタ参照を修正。 #10641 (alexey-milovidov)
  • ReplicatedMergeTree における DROPOPTIMIZE のレースコンディションを修正しました。OPTIMIZE クエリが同時に実行されている場合、DROP が ZooKeeper のレプリカパス内に不要なデータを残してしまう可能性がありました。 #10312 (tavplubix)
  • カンマ区切りと名前付き JOIN を混在させたクエリで発生する「Logical error: CROSS JOIN has expressions」エラーを修正。 #9910 #10311 を修正。(Artem Zuikov)
  • max_bytes_before_external_group_by を使用したクエリを修正しました。 #10302 (Artem Zuikov)
  • 特定のケースでパーサーの最大再帰深度を制限してしまっていた問題を修正しました。これにより、#10283 が解決されます。この修正により、わずかな非互換性が生じる可能性があります。長くてネストの深いクエリを clickhouse-client 経由で実行しようとすると失敗する場合があるため、その場合は max_query_sizemax_parser_depth の設定を適切に調整してください。 #10295 (alexey-milovidov)
  • 複数の JOIN を含むクエリでも count(*) を使用できるようにしました。Fixes #9853 #10291 (Artem Zuikov)
  • max_rows_to_group_bygroup_by_overflow_mode = 'break' を使用した際に発生する Pipeline stuck エラーを修正。 #10279 (Nikolai Kochetov)
  • DDL クエリを使用して range_hashed 辞書を作成する際に発生する「Cannot add column」エラーを修正(#10093 を解決)。#10235 (alesapin)
  • まれに発生しうる例外 Cannot drain connections: cancel first を修正。 #10239 (Nikolai Kochetov)
  • ユーザーが ENGINE = Replicated* のテーブルに対して ALTER UPDATE/DELETE を実行しようとした際に、ClickHouse が「Unknown function lambda.」というエラーメッセージを返していたバグを修正しました。非決定的関数のチェックで lambda 式を正しく扱えるようになりました。 #10237 (Alexander Kazakov)
  • Lazy エンジンを使用しているデータベース上で SELECT ... FROM system.tables を実行した際に比較的まれに発生していた、StorageSystemTables のセグメンテーションフォルトを修正しました。 #10209 (Alexander Kazakov)
  • system.numberssystem.zeros のような無限ソースから読み取る際に、本来は LIMIT で停止すべきところを停止せず、クエリが無限に実行されてしまう可能性がある問題を修正。 #10206 (Nikolai Kochetov)
  • Date 型に対する "generateRandom" 関数を修正しました。これにより #9973 が解決されます。年 2106 の日付を旧スタイルのパーティション方式を使用する MergeTree テーブルに挿入した際に、パーティション名が年 1970 になってしまうエッジケースを修正しました。 #10218 (alexey-milovidov)
  • View のテーブル定義が SELECT クエリと一致しない場合に型を変換するようにしました。これにより #10180#10022#10217 が修正されました (alexey-milovidov)
  • 曜日が火曜日または木曜日の RFC-2822 形式の文字列を正しく処理できるように parseDateTimeBestEffort を修正しました。これにより #10082 および #10214 が修正されました (alexey-milovidov)
  • JOIN 内の定数のカラム名が JOIN の外側の定数のカラム名と衝突し得る不具合を修正。#10207 (alexey-milovidov)
  • 特定のケースで arrayJoin 関数が存在する場合の move-to-prewhere 最適化を修正しました。これにより #10092 および #10195 の問題が修正されました(alexey-milovidov)。
  • ネイティブな mysql-connector-java (JDBC) で SCRAMBLE に区切り文字が現れる問題を修正 #10140 (BohuTANG)
  • データベースが指定されていない場合のアクセスチェック時に、現在のデータベースを使用するよう修正。 #10192 (Vitaly Baranov)
  • compact パーツを持つテーブルに対する ALTER を修正。 #10130 (Anton Popov)
  • allow_nondeterministic_mutations 設定を追加し、mutations における非決定的関数の使用制限を緩和できるようにしました。 #10186 (filimonov)
  • 辞書に対して呼び出される DROP TABLE の問題を修正 #10165 (Azat Khuzhin)
  • Distributed テーブルに対して INSERT を行う際、構造が一致しない場合にはブロックを変換するように変更 #10135 (Azat Khuzhin)
  • 挿入ブロックがパーティションキーによって複数のパーツに分割された場合、行数が(全パーツの合計として)誤ってログに記録されていました。 #10138 (alexey-milovidov)
  • いくつかの引数チェックを追加し、MySQL Database Engine に識別子引数のサポートを追加 #10077 (Winter Zhang)
  • 新しいレプリカを作成する際の index_granularity_bytes の誤ったチェックを修正し、#10098 を解決。#10121alesapin
  • テーブルにスキップインデックスが含まれている場合に CHECK TABLE クエリで発生していたバグを修正。 #10068 (alesapin)
  • シャードが 1 つしかないネストされたテーブルにおける Distributed-over-Distributed の問題を修正 #9997 (Azat Khuzhin)
  • JOINUNION ALL を含むクエリで行が失われる可能性のある不具合を修正しました。 #9826#10113 を解決。 ... #10099 (Nikolai Kochetov)
  • ローカルの ClickHouse サーバーをソースとして使用する場合の辞書のバグを修正しました。辞書とソース側の型が互換性のない場合に、メモリ破損を引き起こす可能性がありました。 #10071 (alesapin)
  • 古い ClickHouse バージョンからのアップグレード時に、/table/replicas/replica_name/metadata ノードが存在しない場合にレプリケーテッドテーブルが起動できない問題を修正しました。#10037 を修正。#10095alesapin
  • エラー Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform を修正しました。これは、distributed_aggregation_memory_efficient 設定が有効になっていて、分散クエリが異なるシャードから単一レベルおよび 2 レベルの集約が混在したデータを読み込んだ際に発生していました。 #10063 (Nikolai Kochetov)
  • 起動時にマテリアライズドビューを持つデータベースの ATTACH が失敗した際に発生するデッドロックを修正 #10054 (Azat Khuzhin)
  • 末尾にゼロバイトを含む文字列キーに対する GROUP BY で発生する可能性があったセグメンテーションフォルトを修正しました(#8636, #8925)。... #10025Alexander Kuzmenkov
  • 分散クエリにおいて、エイリアスが修飾付き列名を上書きしてしまうことで誤った結果が返される不具合を修正。Fixes #9672 #9714 #9972 (Artem Zuikov)
  • SYSTEM RESTART REPLICAS で発生しうるデッドロックを修正 #9955 (tavplubix)
  • リモートクエリ実行に使用するスレッド数の扱いを修正しました(20.3 以降で発生していたパフォーマンス低下を解消)。これは、Distributed テーブルからのクエリがローカルシャードとリモートシャードで同時に実行された場合に発生していました。 #9965 #9971 に対応(Nikolai Kochetov
  • ATTACH PART において、アタッチされたパーツが自動的に削除されてしまう可能性のあった DeleteOnDestroy ロジックを修正し、いくつかのテストを追加しました #9410 (Vladimir Chebotarev)
  • サーバーの起動時に ON CLUSTER DDL クエリがフリーズしてしまう不具合を修正。 #9927 (Gagan Arneja)
  • 一部のデータベースに対するクエリ処理のある段階で必要なテーブルが取得されていなかった不具合を修正しました。#9699 を解決。#9949 (achulkov2)
  • JOINTOTALS と併用された場合に発生する 'Not found column in block' エラーを修正。#9839 #9939 に対応 (Artem Zuikov)
  • CREATE USER コマンドで指定された複数ホストの解析を修正 #9924 (Vitaly Baranov)
  • Join テーブルエンジン向けの TRUNCATE を修正(#9917)。#9920Amos Bird
  • ReplicatedMergeTree における DROPOPTIMIZE の間の競合状態を修正。 #9901 (alesapin)
  • optimize_skip_unused_shards が設定されている場合の Distributed テーブルにおける DISTINCT の動作を修正。 #9808 (Azat Khuzhin)
  • ALTER 文で発生する "scalar does not exist" エラーを修正 (#9878). ... #9904 (Amos Bird)
  • distributed_product_mode='local' における修飾名のエラーを修正。 #4756 #9891 を解決 (Artem Zuikov)
  • INSERT クエリに対して、シャードは例外をスローするのではなく、発行元から渡された設定を自身の制約に合わせてクランプ(切り詰め)するようになりました。この修正により、異なる制約を持つシャードに対しても INSERT クエリを送信できるようになります。この変更は、修正 #9447 をさらに改善するものです。 #9852 (Vitaly Baranov)
  • offsets.commit.timeout.ms の間に __consumer_offsets トピックで十分な数のレプリカが利用可能でない場合、Kafka broker がコミットを拒否することがあるため、オフセットをコミットする際にリトライ処理を追加しました #9884 (filimonov)
  • WHERE で基になるテーブルの仮想カラムを使用した場合の Distributed エンジンの動作を修正 #9847 (Azat Khuzhin)
  • 関数引数で指定されたタイムゾーンが正しく使用されていなかった一部のケースを修正しました。 #9574 (Vasily Nemkov)
  • SET distributed_product_mode = 'local' が設定されている環境で、分散テーブルに対するクエリに PREWHERE と WHERE の両方が含まれている場合に発生する「Different expressions with the same alias」エラーを修正。 #9871 (Artem Zuikov)
  • 複合主キーを持つテーブルに対するミューテーションで発生していた過剰なメモリ消費を修正しました。これにより #9850 が解決されました。 #9860 (alesapin)
  • 設定 allow_introspection_functions に基づくイントロスペクション関数の権限付与の計算を修正。 #9840 (Vitaly Baranov)
  • max_distributed_connections を修正(Processor 使用時および未使用時の両方) #9673 (Azat Khuzhin)
  • クライアントで発生する可能性のある例外 Got 0 in totals chunk, expected 1 を修正しました。これは、JOIN の右側のテーブルの行数が 0 行である場合に、JOIN を含むクエリで発生していました。例: select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;#9777 を修正。... #9823Nikolai Kochetov
  • テーブルリスト外(例:WHERE 句内)で COMMA JOIN を含むサブクエリに対して発生する 'COMMA to CROSS JOIN rewriter is not enabled or cannot rewrite query' エラーを修正しました。これにより #9782 および #9830 が修正されました(Artem Zuikov)。
  • optimize_skip_unused_shards が設定されていて、キーの式をそのフィールド型に変換できない場合にサーバーがクラッシュする問題を修正 #9804 (Azat Khuzhin)
  • splitByString の空文字列の扱いを修正。 #9767 (hcz)
  • compact parts に対して壊れていた ALTER TABLE DELETE COLUMN クエリを修正。 #9779 (alesapin)
  • processors パイプラインを使用する HTTP 経由のクエリで欠落していた rows_before_limit_at_least を修正しました。これにより #9730 および #9757 が解決されました。(Nikolai Kochetov
  • ALTER クエリ(ミューテーション)における過剰なメモリ消費を修正しました。これにより、#9533#9670 が解決されます。#9754alesapin
  • 「Cannot schedule a task」エラーが永続的に発生し得る問題を修正。 #9154 (Azat Khuzhin)
  • 外部ディクショナリの DDL におけるバックスクオートの扱いに関するバグを修正。#9619 を修正。#9734alesapin
  • text_log のデータ競合を修正しました。これは実際の不具合に対応するものではありません。 #9726 (alexey-milovidov)
  • 以前のバージョンでユーザーがミューテーションを実行している場合にレプリケーションが機能しなくなる不具合を修正しました。この修正は #9645 を解決します。 #9652 (alesapin)
  • sumKahansumWithOverflow の誤った内部関数名を修正しました。この不具合により、リモートクエリでこれらの関数を使用すると例外が発生していました。 #9636 (Azat Khuzhin)
  • 設定 use_compact_format_in_distributed_parts_names を追加しました。これにより、Distributed テーブルへの INSERT クエリで、よりコンパクトな形式でファイルを書き込めるようになります。この変更により #9647 が修正されました。 #9653 (alesapin)
  • JOIN キーに LowCardinality 型を使用した RIGHT および FULL JOIN を修正。 #9610 (Artem Zuikov)
  • MergeTreeRangeReader で発生する可能性があった例外 Size of filter does not match size of column および Invalid number of rows in Chunk を修正しました。これらは一部の状況で PREWHERE を実行している際に発生することがありました。 #9612 (Anton Popov)
  • 内部レプリケーションを使用する Distributed テーブルに対する ALTER ON CLUSTER を許可します。これにより #3268 #9617 が修正されます(shinoi2
  • time + 1 のような単純な算術式(time + INTERVAL 1 SECOND のような式とは異なり)を書いた場合に、タイムゾーンが保持されていなかった問題を修正しました。これにより #5743 #9323 が修正されました(alexey-milovidov

改善

  • DateTime を文字列リテラルと比較する際にタイムゾーンを使用するようにしました。これにより #5206 が修正されました。 #10515 (alexey-milovidov)
  • テキスト入力フォーマットから Decimal 値をパースできない場合に、冗長な診断情報を出力します。 #10205 (alexey-milovidov)
  • 分散/バッファスケジュールプール向けにタスク/メモリのメトリクスを追加 #10449 (Azat Khuzhin)
  • clickhouse-local および HTTP インターフェイスにおける SELECT DISTINCT クエリの結果が、準備でき次第すぐに表示されるようにしました。これにより #8951 #9559 が修正されました(alexey-milovidov)。
  • clickhouse-copier で分割を行う際に、cityHash64(PRIMARY KEY) % N == n の代わりに SAMPLE OFFSET クエリを使用できるようになりました。この機能を使用するには、コマンドライン引数として --experimental-use-sample-offset 1 を指定してください。 #10414 (Nikita Mikhaylov)
  • 最初の列の値に BOM を含めることがありえない場合、TSV 内の BOM をパースできるようにしました。これにより #10301 #10424 が修正されました(alexey-milovidov)。
  • Avro のネストされたフィールドの挿入サポートを追加 #10354 (Andrew Onyshchuk)
  • 同じ型が指定されている場合には、データ非変更モードでもカラムの変更を許可するようにしました。 #10382 (Vladimir Chebotarev)
  • optimize_skip_unused_shards が設定されている場合に、GROUP BY 句のシャーディングキーに対して distributed_group_by_no_merge を自動適用 #10341 (Azat Khuzhin)
  • GROUP BY sharding_key を用いた分散クエリ向けに LIMIT/LIMIT BY/ORDER BY を使ったクエリを最適化 #10373 (Azat Khuzhin)
  • サーバーの合計メモリ使用量を制限するために、設定 max_server_memory_usage を追加しました。メトリクス MemoryTracking は、誤差なく算出されるようになりました。設定 max_memory_usage_for_all_queries は廃止されており、現在は何の効果もありません。これにより #10293 がクローズされました。 #10362 (alexey-milovidov)
  • system_tables_lazy_load 設定オプションを追加しました。false に設定すると、ログを含むシステムテーブルはサーバー起動時に読み込まれます。Alexander BurmakSvyatoslav Tkhon Il Pak#9642 #10359alexey-milovidov
  • 分散送信でバックグラウンドスレッドプール (background_schedule_pool_size) を使用 #10263 (Azat Khuzhin)
  • バックグラウンドバッファのフラッシュにバックグラウンドスレッドプールを使用するようにした。 #10315 (Azat Khuzhin)
  • 不完全に書き込まれた部分を削除するための特別なケース 1 件への対応を行いました。これにより #9940 が修正されました。#10221 (alexey-milovidov)
  • GROUP BY を最適化する際には、この種の関数の手動リストではなく isInjective() を使用する。 #10342 (Azat Khuzhin)
  • クライアントが接続直後に RST パケットを送信した場合に、ログにエラーメッセージを出力しないようにしました。これは keepalived と VRRP を用いた IPVS バランサーで一般的な挙動です。これにより #1851 #10274 が修正されました(alexey-milovidov)。
  • 浮動小数点型で +inf をパースできるようにしました。これにより #1839 および #10272 が解決されました(alexey-milovidov)。
  • Nested 型用の generateRandom テーブル関数を実装しました。これにより #9903 および #10219 がクローズされました(alexey-milovidov
  • MySQL プロトコル経由で一部のクライアントが ClickHouse と通信できるようにするため、MySQL 互換インターフェイスで max_allowed_packed を提供しました。 #10199 (BohuTANG)
  • GLOBAL IN でリテラルの使用を許可 (例: SELECT * FROM remote('localhost', system.one) WHERE dummy global in (0)) #10196 (Azat Khuzhin)
  • clickhouse-client のインタラクティブモードにおけるさまざまな細かな問題を修正 #10194 (alexey-milovidov)
  • 不要な辞書の読み込みを回避(system.tablesDROP/SHOW CREATE TABLE#10164Azat Khuzhin
  • RWLock の更新: getLock() に timeout パラメータを追加し、実装を phase-fair になるように再設計 #10073 (Alexander Kazakov)
  • ネイティブな mysql-connector-java(JDBC) との互換性を向上 #10021 (BohuTANG)
  • 関数 toString は単調と見なされ、String または LowCardinality(String) 型の引数に対して恒真な条件として適用された場合でも、インデックス解析に使用できます。 #10110 (Amos Bird)
  • {CREATE|DROP} USER/ROLE/ROW POLICY/SETTINGS PROFILE/QUOTA および GRANT コマンドで ON CLUSTER 句が使用できるようになりました。 #9811 (Vitaly Baranov)
  • S3 URI の virtual-hosted-style サポート #9998 (Pavel Kovalenko)
  • 引数を取らない辞書のレイアウト型を、辞書 DDL クエリ内で丸括弧なしで指定できるようになりました。 #10057 を修正。 #10064alesapin
  • ファイルパスで先頭ゼロ付きの数値範囲を使用できるようにしました #9989 (Olga Khvostikova)
  • CROSS JOIN のメモリ使用量を改善。 #10029 (Artem Zuikov)
  • リモートテーブルの構造を取得する際に、クラスタ内のすべてのシャードへの接続を試み、skip_unavailable_shards が有効な場合には利用不能なシャードをスキップするようにしました。 #7278 (nvartolomei)
  • system.tables テーブルに total_rowstotal_bytes を追加。 #9919 (Azat Khuzhin)
  • System log テーブルでは、デフォルトで polymorphic parts が使用されるようになりました。 #9905 (Anton Popov)
  • system.settings/merge_tree_settings に type 列を追加 #9909 (Azat Khuzhin)
  • サーバー起動時のできるだけ早い段階で、利用可能な CPU 命令をチェックするようにしました。 #9888 (alexey-milovidov)
  • ミューテーションから ORDER BY ステージを削除しました。これは、単一スレッドで単一のソート済みパートから読み取るためです。あわせて、ミューテーション内の行がソートキーで並べ替えられていて、その順序が崩れていないことを検証するチェックも追加しました。 #9886 (alesapin)
  • 左辺に FixedString を取る LIKE 演算子を実装しました。これは TPC-DS クエリをより良くサポートするために必要です。 #9890 (alexey-milovidov)
  • ネストされた Distributed テーブルでは force_optimize_skip_unused_shards を無効化する force_optimize_skip_unused_shards_no_nested を追加 #9812 (Azat Khuzhin)
  • これにより、MergeTree のデータパーツに対するカラムサイズは一度だけ計算されるようになりました。 #9827 (alesapin)
  • optimize_skip_unused_shards で定数式を評価できるようにした(例:SELECT * FROM foo_dist WHERE key=xxHash32(0)#8846 (Azat Khuzhin)
  • TTL 式で Date または DateTime 列を使用しているかどうかのチェックが削除されました。 #9967 (Vladimir Chebotarev)
  • DiskS3 におけるハードリンク実装の最適化。 #9760 (Pavel Kovalenko)
  • set multiple_joins_rewriter_version = 2 を設定すると、衝突していない列名をそのまま保持する、複数 JOIN 書き換えの第 2 バージョンが有効になります。これにより、USING を伴う複数の JOIN をサポートし、サブクエリを含む JOIN に対しても select * を使用できるようになります。 #9739 (Artem Zuikov)
  • StorageMergeTree 向け「非ブロッキング」ALTER の実装 #9606 (alesapin)
  • DiskS3 に対する MergeTree の完全サポートを追加 #9646 (Pavel Kovalenko)
  • splitByString を拡張し、区切り文字列として空文字列もサポートするようにしました。 #9742 (hcz)
  • system.trace_logtimestamp_ns カラムを追加しました。これはトレースイベントの高精度なタイムスタンプを含んでおり、スレッドプロファイル(「フレームチャート」)のタイムラインを構築できるようになります。 #9696 (Alexander Kuzmenkov)
  • 設定 send_logs_level が有効な場合、ログメッセージとクエリの進捗表示が混在しないようにしました。 #9634 (Azat Khuzhin)
  • MATERIALIZE TTL IN PARTITION のサポートを追加しました。 #9581 (Vladimir Chebotarev)
  • Avro のネストされたフィールド内で複合型をサポート #10502 (Andrew Onyshchuk)

パフォーマンスの改善

  • Partial MergeJoin における右テーブルへの挿入ロジックを改善しました。 #10467 (Artem Zuikov)
  • 行指向フォーマットのパフォーマンスを改善しました(狭いテーブルの場合、CSV で 10%以上、Avro で 35%以上)。 #10503 (Andrew Onyshchuk)
  • IN 演算子の右辺に明示的に定義された集合があり、左辺がタプルであるクエリのパフォーマンスを改善しました。 #10385 (Anton Popov)
  • HashJoin で使用するハッシュテーブルのメモリ使用量を削減しました。 #10416 (Artem Zuikov)
  • StorageDictionary 上での専用の HashJoin を追加しました。dictGet() 関数を JOIN で書き換えられるようにしました。これ自体は後方互換性を壊しませんが、一部の環境では #8400 を顕在化させる可能性があります。 #10133 (Artem Zuikov)
  • 対象テーブルが対応している場合に、マテリアライズドビューの並列挿入を有効化しました。 #10052 (vxider)
  • 単調関数を用いたインデックス解析のパフォーマンスを改善しました。 #9607#10026 (Anton Popov)
  • bloom filter におけるトークン化を高速化するために、SSE2 または SSE4.2 の SIMD 命令を使用するようにしました。 #9968 (Vasily Nemkov)
  • IN 演算子の右辺に明示的に定義された集合を持つクエリのパフォーマンスを改善しました。これにより、バージョン 20.3 のパフォーマンス退行を修正しました。 #9740 (Anton Popov)
  • clickhouse-copier は各パーティションを複数の部分に分割し、それぞれを独立してコピーするようになりました。 #9075 (Nikita Mikhaylov)
  • より多くの集約メソッドを追加しました。たとえば、TPC-H クエリ 1 では FixedHashMap<UInt16, AggregateDataPtr> が選択され、25% のパフォーマンス向上が得られます。 #9829 (Amos Bird)
  • pre-limit transform において、複数のストリームに対して単一の行カウンターを使用するようにしました。これにより、order by を含まないが limit を含むクエリ(select f(x) from (select x from t limit 1000000000) のようなもの)でパイプラインストリームを結合することを避け、以降の処理に複数スレッドを利用できるようになります。 #9602 (Nikolai Kochetov)

ビルド/テスト/パッケージングの改善

  • ClickHouse-Extras 由来の AWS SDK ライブラリのフォークを使用 #10527 (Pavel Kovalenko)
  • 新しい ALTER RENAME COLUMN クエリの統合テストを追加。 #10654 (vzakaznikov)
  • 関数 now64 を誤った引数で呼び出した場合に発生しうる符号付き整数オーバーフローを修正しました。この修正により #8973#10511 が解決されました(alexey-milovidov
  • fuzzer と sanitizer の設定を分離し、ビルド設定を Oss-fuzz と互換性を持たせました。 #10494 (kyprizel)
  • clang-10 向けの clang-tidy 修正。 #10420 (alexey-milovidov)
  • エラーメッセージに絶対パスを表示する。そうしない場合、KDevelop が正しいファイルに移動できず、代わりに新しいファイルを開いてしまう。 #10434 (alexey-milovidov)
  • AddressSanitizer を有効にした CI ストレステストで発生するエラーを調査するために、ASAN_OPTIONS 環境変数を追加しました。 #10440 (Nikita Mikhaylov)
  • clang ビルドで ThinLTO を有効化(試験的)。 #10435 (alexey-milovidov)
  • システムに Z3 ソルバーがインストールされている場合に意図せず発生する可能性がある、Z3 への依存関係を削除。 #10426 (alexey-milovidov)
  • 統合テスト用の Docker ファイルを docker/ ディレクトリに移動。 #10335 (Ilya Yatsishin)
  • CI で clang-10 を使用できるようにしました。これにより #10238 が修正されていることを確認しています。#10384 (alexey-milovidov)
  • OpenSSL を upstream の master に更新しました。OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error および SSL Exception: error:2400006E:random number generator::error retrieving entropy というメッセージとともに TLS 接続が失敗することがある問題を修正しました。この問題はバージョン 20.1 で発生していました。 #8956 (alexey-milovidov)
  • clang-10 を用いたビルドを修正。 #10238 #10370 (Amos Bird)
  • マテリアライズドビューに対する Parallel INSERT のパフォーマンステストを追加#10345 (vxider)
  • 不安定なテスト test_settings_constraints_distributed.test_insert_clamps_settings を修正。 #10346 (Vitaly Baranov)
  • CI でテスト結果をアップロードするためのユーティリティを ClickHouse に追加 #10330 (Ilya Yatsishin)
  • junit_to_html ツールでテスト結果を JSONEachRow 形式に変換 #10323 (Ilya Yatsishin)
  • cctz を更新しました。 #10215 (alexey-milovidov)
  • プレーンな JUnit XML レポートから HTML レポートを作成できるようにしました。 #10247 (Ilya Yatsishin)
  • 最小コンパイラバージョンのチェックを更新し、問題 #10250 の根本原因を修正 #10256alexey-milovidov
  • 分散テーブルに対する Live View テーブルの初期サポート #10179 (vzakaznikov)
  • MergeTreeIndexFullText における(誤検知の)MSan レポートを修正しました。この問題が最初に発生したのは #9968 です。#10801alexey-milovidov
  • clickhouse-docker-util #10151 (filimonov)
  • pdqsort を最近のバージョンに更新 #10171 (Ivan)
  • libdivide を v3.0 に更新 #10169 (Ivan)
  • ポリモーフィックパーツ有効時のチェックを追加。 #10086 (Anton Popov)
  • FreeBSD 向けクロスコンパイルビルドを追加し、#9465 および #9643 を修正 (Ivan)
  • #6924 および #6980 向けのパフォーマンステストを追加 (filimonov)
  • パフォーマンステストを改善するため、File エンジンに /dev/null サポートを追加 #8455 (Amos Bird)
  • /dbms 配下のすべてのフォルダを1階層上に移動 #9974 (Ivan)
  • 単一スレッドで MergeTree から読み取る際に順序が保持されることを検証するテストを追加。 #9670 #9762 への追加(alexey-milovidov
  • レースコンディションを回避するように 00964_live_view_watch_events_heartbeat.py テストを修正。 #9944 (vzakaznikov)
  • 統合テスト test_settings_constraints を修正 #9962 (Vitaly Baranov)
  • 各関数を個別ファイルに分割、第12弾。 #9922 (alexey-milovidov)
  • タプルの配列の処理が極端に遅いケースに対する性能テストを追加しました。 #9872 (alexey-milovidov)
  • zstd を 1.4.4 に更新しました。パフォーマンスと圧縮率がわずかに改善されています。異なるバージョンの ClickHouse を実行しているレプリカが混在している場合、Data after merge is not byte-identical to data on another replicas. という妥当なエラーメッセージと、その説明が表示されることがあります。これらのメッセージは想定された動作であり、心配する必要はありません。 #10663 (alexey-milovidov)
  • system.stack_trace での TSan レポートを修正。 #9832 (alexey-milovidov)
  • clock_getres への依存関係を削除しました。 #9833 (alexey-milovidov)
  • clang-tidy を使用した識別子名のチェックを追加しました。 #9799 (alexey-milovidov)
  • "builder" Docker イメージを更新。このイメージは CI では使用されませんが、開発者にとって有用です。 #9809 (alexey-milovidov)
  • CI ではもはや使用されていない旧 performance-test ツールを削除しました。clickhouse-performance-test も優れたツールですが、現在は、環境のさまざまな変化に左右されることなく信頼性の高い結果を得るために、高度な統計的手法を用いて比較テストを実行する、はるかに優れたツールを使用しています。 #9796 (alexey-milovidov)
  • clang-static-analyzer によるチェックをほとんどすべて追加しました。 #9765 (alexey-milovidov)
  • MongoDB URI サポートに向けて Poco を 1.9.3 に更新。 #6892 (Alexander Kuzmenkov)
  • -DUSE_STATIC_LIBRARIES=0 -DENABLE_JEMALLOC=0 を指定したビルドを修正 #9651 (Artem Zuikov)
  • 変更ログ用スクリプトでは、マージコミットがリリースブランチに cherry-pick された場合、コミットの説明から PR 名を取得します。 #9708 (Nikolai Kochetov)
  • バックポート用スクリプトで vX.X-conflicts タグをサポートする。 #9705 (Nikolai Kochetov)
  • バックポート用スクリプトの auto-label を修正。 #9685 (Nikolai Kochetov)
  • Darwin のクロスビルドで libc++ を使用し、ネイティブビルドとの一貫性を持たせました。 #9665 (Hui Wang)
  • 不安定だったテスト 01017_uniqCombined_memory_usage を修正。#7236 の続き。#9667alexey-milovidov
  • ネイティブな macOS Clang コンパイラ用のビルドを修正 #9649 (Ivan)
  • pthread_mutex_lock および pthread_mutex_unlock 関数の周辺にさまざまなグリッチを挿入できるようにした。 #9635 (alexey-milovidov)
  • packager スクリプトに clang-tidy のサポートを追加。 #9625 (alexey-milovidov)
  • バンドルされていない msgpack を使用できるようにした。 #10168 (Azat Khuzhin)

ClickHouse リリース v20.3

ClickHouse リリース v20.3.21.2-lts, 2020-11-02

バグ修正

  • sharding_key(および、関数コンテキストが永続的に保存される同様の箇所)における dictGet を修正。#16205Azat Khuzhin)。
  • クエリに WHEREPREWHERE および GLOBAL IN が含まれる場合に、Distributed テーブルへのクエリで誤って空の結果が返る問題を修正。#15792 を修正。#15933Nikolai Kochetov)。
  • TSV/CSVWithNames フォーマットでヘッダー行が欠落、もしくは過剰になる問題を修正。これにより #12504 が修正される。#13343Azat Khuzhin)。

ClickHouse リリース v20.3.20.6-lts, 2020-10-09

バグ修正

  • MOVE または REPLACE PARTITION の後、またはまれなケースでは DETACHDROP PARTITION の後に、存在しないパーツを待ち続けて Mutation がハングする可能性があった問題を修正。#15724#15537tavplubix)。
  • 同じテーブルに対する多数のサブクエリを含む MySQL エンジンのクエリがハングする問題を修正。以前は、1 つのクエリ内で同じ MySQL テーブルに対するサブクエリが 16 個を超えると、無期限にハングしていた。#15299Anton Popov)。
  • Merge テーブルに対する JOIN を含むクエリで、GROUP BY において Unknown identifier が発生する問題を修正。#15242Artem Zuikov)。
  • サブクエリに finalizeAggregation 関数が含まれる場合に、述語プッシュダウンが動作するように修正。#14847 を修正。#14937filimonov)。
  • 併行する ALTER ... REPLACE/MOVE PARTITION ... クエリがデッドロックを引き起こす可能性があった問題を修正。#13626tavplubix)。

ClickHouse リリース v20.3.19.4-lts, 2020-09-18

バグ修正

  • SELECT クエリで、問い合わせ対象のカラムに DEFAULT 式があり、その式が、やはり DEFAULT を持ち、SELECT クエリ内に含まれておらず、かつディスク上にも存在しない別カラムに依存している場合に発生するまれなエラーを修正しました。#14531 を部分的に修正します。#14845alesapin)。
  • 代入式内に Nullable カラムと定数値(UPDATE x = 42 のようなもの)がある ALTER UPDATE ミューテーションが、カラム内の値の不整合またはセグメンテーションフォルトを引き起こすバグを修正しました。#13634#14045 を修正します。#14646alesapin)。
  • 結果カラムの小数スケールが誤っていたことにより、Decimal の乗算結果が誤っていた問題を修正しました。#14603Artem Zuikov)。

改善

  • compact part でカスタム codec をサポートしました。#12183Anton Popov)。

ClickHouse release v20.3.18.10-lts, 2020-09-08

バグ修正

  • 例外が PipelineExecutor 自体の内部で発生した場合に、クエリ実行を停止するようにしました。これにより、まれに発生し得るクエリのハングを防ぐことができます。#14334 の継続対応です。#14402Nikolai Kochetov)。
  • cache-dictionary が、ソースに値が存在するにもかかわらずデフォルト値を返してしまうことがある動作を修正しました。#13624Nikita Mikhaylov)。
  • データベース名またはテーブル名にドットが含まれている場合に、users.xml から row policy をパースできない問題を修正しました。これにより #5779#12527 が修正されます。#13199Vitaly Baranov)。
  • CAST(Nullable(String), Enum()) を修正しました。#12745Azat Khuzhin)。
  • text_log におけるデータレースを修正しました。これは実際のバグに対応するものではありません。#9726alexey-milovidov)。

改善

  • 長いクエリに対する誤ったエラーを修正しました。正しいクエリでも Max query size exceeded 以外の構文エラーが返される可能性がありました。#13928Nikolai Kochetov)。
  • parseDateTimeBestEffortOrNull/Zero 関数で値が完全にパースされない場合、NULL/ゼロを返すようにしました。これにより #7876 が修正されます。#11653alexey-milovidov)。

パフォーマンス改善

  • LowCardinality を用いる非常に短いクエリをわずかに最適化しました。#14129Anton Popov)。

ビルド/テスト/パッケージングの改善

  • clang-10 への移行後に HashTable で発生した UBSan レポート(nullptr に 0 を加算していた処理)を修正しました。#10638 (alexey-milovidov)。

ClickHouse リリース v20.3.17.173-lts, 2020-08-15

バグ修正

  • StorageMerge を利用した JOIN と set enable_optimize_predicate_expression=1 の組み合わせで発生していたクラッシュを修正しました。#13679 (Artem Zuikov)。
  • NULL 要素を含むタプルの比較における不正な戻り値の型を修正しました。#12461 を修正します。#13420 (Nikolai Kochetov)。
  • 定数カラムと、ORDER BY 句がプライマリキーのプレフィックスになっているクエリを修正しました。#13396 (Anton Popov)。
  • roundUpToPowerOfTwoOrZero() において、MSB がセットされている数値に対して渡された数値自体を返すようにしました。#13234 (Azat Khuzhin)。

ClickHouse リリース v20.3.16.165-lts 2020-08-10

バグ修正

  • parseDateTimeBestEffort 関数に引数として Unix タイムスタンプを渡した際に発生していたエラーを修正しました。これにより #13362 が解決されました。#13441alexey-milovidov)。
  • NaN 値を含む Float 型に対して呼び出された uniqExacttopKsumDistinct などの集約関数で、潜在的な低いパフォーマンスおよびわずかに不正確な結果が発生する問題を修正しました。これはデバッグビルドで assert をトリガーする原因にもなっていました。この変更により #12491 が修正されました。#13254alexey-milovidov)。
  • リテラルの NULL ではない nullable な constexpr を条件に取る if 関数の不具合を修正しました。#12463 を修正します。#13226alexey-milovidov)。
  • 配列要素が Nullable であり、配列の添字も Nullable である場合の arrayElement 関数内のアサートを修正しました。これにより #12172 が解決されます。#13224alexey-milovidov)。
  • ローカルレプリカからの SELECT クエリでスレッド数が不要に制限されていた問題を修正しました。 #12840 (Nikolai Kochetov).
  • WITH TOTALS を使用するクエリで発生する可能性があった、データの余分なオーバーフロー行を修正しました。 #12747 (Nikolai Kochetov).
  • IN 節内で関数として解釈される大きなタプルを使用した場合のパフォーマンス問題を修正しました。ユーザーが何らかのよく分からない理由で WHERE x IN (1, 2, ...) ではなく WHERE x IN tuple(1, 2, ...) と記述してしまうケースです。 #12700 (Anton Popov).
  • input_format_parallel_parsing のメモリトラッキングを修正(スレッドをグループに関連付けることで実現)。 #12672 (Azat Khuzhin).
  • #12293 を修正し、サブクエリに WITH 句が含まれている場合でも述語プッシュダウンを許可するようにしました。 #12663 (Winter Zhang)。
  • Fixed #10572 定数式を用いる Bloom Filter インデックスの不具合を修正。#12659 (Winter Zhang).
  • ブローカーが利用不能な場合(など)に StorageKafka で SIGSEGV が発生する不具合を修正しました。 #12658 (Azat Khuzhin).
  • キャッシュレイアウトを使用する外部ディクショナリにおけるレースコンディションを修正しました。この問題によりサーバークラッシュが発生する可能性がありました。 #12566 (alesapin).
  • enable_mixed_granularity_parts=1 のときに ALTER DELETE クエリ実行後、古いパーツが破損する原因となっていたバグを修正しました。#12536 を修正。#12543alesapin)。
  • 引数の数が不正な場合に関数 in が送出する例外を改善。 #12529 (Anton Popov).
  • コンパクトなパーツからの読み取り時のパフォーマンス問題を修正しました。 #12492 (Anton Popov).
  • text_log が有効化されている場合に発生していたデッドロックを修正しました。 #12452 (alexey-milovidov).
  • StorageMerge 使用時に発生する可能性があったセグメンテーションフォルトを修正しました。#12054 をクローズ。 #12401 (tavplubix).
  • -State および Nullable 引数を持つ集約関数に対する TOTALS/ROLLUP/CUBE を修正しました。これにより #12163 が解決されました。 #12376 (alexey-milovidov).
  • WITH FILL 修飾子における列の順序を修正しました。以前は、ORDER BY 句で指定した列の順序が反映されていませんでした。 #12306 (Anton Popov).
  • 仮想カラム(Merge テーブルにおける _table など)や、system.tables からクエリする際のデータベース名によるフィルタリングといった、システムテーブルの「index」カラムでデータをフィルタする式が存在し、その式が Nullable 型を返す場合に発生していた「bad cast」例外を回避します。これにより #12166 が修正されました。#12305alexey-milovidov)。
  • TrieDictionary の読み込みに失敗した場合にエラーを表示するようにしました。 #12290 (Vitaly Baranov)。
  • 空の配列に対しては arrayFill 関数が正しく動作せず、クラッシュを引き起こす可能性がありました。これにより #12263 が修正されました。 #12279alexey-milovidov)。
  • LowCardinality 型に対して共通型への変換を実装しました。これにより、LowCardinality 列とその他の列を含むテーブル同士で UNION ALL を実行できるようになります。この変更により #8212 および #4342 が修正されました。#12275alexey-milovidov)。
  • StorageFile で複数回連続して挿入を行った際、一部の特殊な型でヘッダーが複数回書き込まれてしまう問題を修正しました。これにより #6155 が解決しました。 #12197 (Nikita Mikhaylov).
  • 0 または 1 以外の UInt8 値に対する論理関数の動作を修正しました。 #12196 (Alexander Kazakov).
  • GROUP BY での単射関数削除時における dictGet の引数チェックを修正しました。 #12179 (Azat Khuzhin).
  • ALTER DELETE において、条件が NULL と評価された場合にレコードが削除されてしまっていた誤ったロジックを修正しました。これにより #9088 が修正されます。#12106 はこれでクローズされます。#12153alexey-milovidov)。
  • エイリアスが存在する場合に外部DBMS(例: MySQL、ODBC)へ送信するクエリの変換処理を修正しました。これにより #12032 の問題が解消されます。#12151alexey-milovidov)。
  • 整数除算時に発生し得るオーバーフローを修正しました。これにより #12119 が解決されました。 #12140alexey-milovidov)。
  • greatCircleDistancegeoDistance において無限ループが発生する可能性のあった問題を修正しました。これにより #12117 が解決されます。 #12137alexey-milovidov)。
  • There is no query という例外が、結合を含むマテリアライズドビュー、または system ログ(system.query_log、metric_log など)や engine=Buffer の基になるテーブルに紐づいたサブクエリを含むマテリアライズドビューで発生しないようにしました。 #12120 (filimonov).
  • UNION を含む SELECT において、スレッド総数に対する誤った上限値が原因となっていたパフォーマンス問題を修正しました。#12030 を修正。 #12103Nikolai Kochetov)。
  • -StateResample コンビネータで発生していたセグメンテーションフォルトを修正しました。#12092 (Anton Popov)。
  • VIEW からの SELECT に対してスレッド数を不必要に制限していた問題を修正しました。これにより、#11937 が修正されました。 #12085Nikolai Kochetov)。
  • PREWHERE に誤った型を使用した場合に発生しうるクラッシュを修正しました。 #12053#12060 を解決しています。 #12060Nikolai Kochetov)。
  • LowCardinality 型に対する関数 defaultValueOfArgumentType で発生していた Expected single dictionary argument for function エラーを修正し、#11808 を解決しました。 #12056 (Nikolai Kochetov)。
  • Tuple(LowCardinality) 引数を持つ高階関数で発生していた Cannot capture column エラーを修正しました。これにより #9766 が解決されました。 #12055 (Nikolai Kochetov).
  • データベース読み込み時にテーブルのメタデータを並列に解析するようにしました。これにより、多数のテーブルが存在する場合のサーバー起動の遅さが解消されます。 #12045 (tavplubix).
  • topK 集約関数が Enum 型に対して Enum を返すようにしました。これにより #3740 が修正されました。 #12043 (alexey-milovidov).
  • 制約が定数式かどうかを検査するように修正しました。これにより #11360 が解決されました。#12042alexey-milovidov)。
  • Nullable 列を含むタプルの誤った比較を修正。#11985 を修正。#12039Nikolai Kochetov)。
  • サイズが異なる FixedString 型の引数で関数 if を呼び出した際に、誤った結果やクラッシュが発生する可能性のあった問題を修正しました。これにより #11362 が修正されました。 #12021 (alexey-milovidov)。
  • 戻り値の式が neighbor 関数だけのクエリは、オフセット -9223372036854775808 でこの関数が呼び出されると、空の結果を返すことがあります。この問題を修正しました #11367#12019 (alexey-milovidov)。
  • generateRandom において、クラッシュにつながるおそれのあった配列サイズのオーバーフローの問題を修正しました。これにより #11371 が解決されます。 #12013alexey-milovidov)。
  • 浮動小数点例外が発生する可能性のある問題を修正しました。これにより #11378 がクローズされました。#12005alexey-milovidov)。
  • サーバー起動時のログメッセージ内の誤った設定名を修正しました。 #11997 (alexey-milovidov).
  • Values フォーマットで発生していた Query parameter was not set エラーを修正しました。#11918 を解決します。 #11936 (tavplubix).
  • クエリ内の置換(パラメータ化クエリ)で使用するエイリアスを保持するようにしました。これにより #11914 が修正されました。 #11916 (alexey-milovidov).
  • DateTime64 をパースする際に発生する可能性のあった浮動小数点例外を修正しました。これにより #11374 が解決されました。#11875alexey-milovidov)。
  • HTTP インターフェイス経由のメモリ計上を修正しました(wait_end_of_query=1 の場合に大きな影響が生じる可能性があります)。 #11840 (Azat Khuzhin).
  • 条件に NULL を含む場合の if() が誤った結果を返す問題を修正しました。 #11807 (Artem Zuikov).
  • 等価比較を行う前に ZooKeeper に保存されているメタデータを解析するようにしました。 #11739 (Azat Khuzhin).
  • エイリアスを含む ORDER BY 句と併用した LIMIT n WITH TIES の動作を修正しました。 #11689 (Anton Popov).
  • cache dictionary における未初期化メモリの読み取りが発生する可能性を修正。 #10834 (alexey-milovidov).

パフォーマンスの改善

  • リテラルを伴う IN 演算子でインデックスが使用されず、v19.3 前後でパフォーマンスが低下していた問題を修正。これにより #10574 が解決されます。 #12062 (nvartolomei)。

ClickHouse リリース v20.3.12.112-lts 2020-06-25

バグ修正

  • Nullable カラムを PREWHERE 句で使用した場合にまれに発生するクラッシュを修正しました。#11608 の継続対応です。#11869Nikolai Kochetov)。
  • 高階関数の内部で arrayJoin を許可しないようにしました。これが原因でプロトコルの同期が壊れる問題が発生していました。この変更により #3933 が解決されます。 #11846 (alexey-milovidov)。
  • クエリで過剰なスレッド数が使用される問題を修正。 #11788 (Nikolai Kochetov).
  • SELECT *, xyz.* のようなクエリが、本来はエラーとなるべきにもかかわらず成功してしまう予期しない動作を修正しました。 #11753 (hexiaoting).
  • メタデータの ALTER 処理中は、レプリケートフェッチがキャンセルされるようになりました。 #11744 (alesapin).
  • Values 入力フォーマットでの複合リテラルの誤った型推論によって発生していた LOGICAL_ERROR を修正。 #11732 (tavplubix).
  • 定数列に対する ORDER BY ... WITH FILL の不具合を修正。 #11697 (Anton Popov).
  • XDBC bridge と通信する際に、適切なタイムアウトを渡すようにしました。以前は、bridge の生存確認とメタ情報の受信時に、タイムアウトが正しく考慮されていませんでした。 #11690 (alexey-milovidov).
  • system.mutations が不正な状態になる原因となっていたエラーを修正します。mutation 全体がすでに完了しているように表示されていても、サーバーのレプリケーションキューには依然として MUTATE_PART タスクが残っており、それらの実行を試み続けてしまうことがありました。これにより #11611 を修正します。 #11681 (alesapin)。
  • 大文字小文字を区別しないフラグ付き正規表現のサポートを追加しました。これにより #11101 および #11506 が修正されます。#11649alexey-milovidov)。
  • 行レベルセキュリティが設定されている場合、単純な count クエリの最適化を無効化しました。以前のバージョンでは、フィルタ適用後の件数ではなく、テーブル内の全レコード数がユーザーに返されていました。これにより #11352 が修正されました。 #11644alexey-milovidov)。
  • String 型のデータスキップインデックス用ブルームフィルターを修正しました。 #11638 (Azat Khuzhin).
  • prewhere 条件で Nullable カラムを使用した場合に発生するまれなクラッシュを修正しました(おそらく #11572 と何らかの関連があると考えられます)。#11608Nikolai Kochetov)。
  • Buffer テーブルからのサンプリング読み取りを行うクエリで発生していた Block structure mismatch エラーを修正。 #11602 (Nikolai Kochetov).
  • exception.code() % 256 = 0 の場合に clickhouse-client が返す誤った終了コードを修正しました。 #11601 (filimonov).
  • サーバー起動時の「Mark cache size was lowered」に関するログメッセージ内の軽微な誤りを修正しました。これにより #11399 がクローズされました。 #11589 (alexey-milovidov)。
  • PREWHERE column IN (subquery) 句と ARRAY JOIN を含むクエリで発生する Size of offsets does not match size of column エラーを修正しました。#11580 (Nikolai Kochetov)。
  • HTTP セッション内のすべてのクエリに同じ query_id が割り当てられてしまっていました。この不具合を修正しました。 #11578 (tavplubix).
  • これにより、ClickHouse サーバーの Docker コンテナは、サーバーの生存確認において IPv6 を優先して使用するようになります。 #11550 (Ivan Starkov).
  • <node> の shard_num/replica_num を修正(use_compact_format_in_distributed_parts_names を壊していた問題)。 #11528 (Azat Khuzhin).
  • -State 関数を用いた集約処理の途中で例外がスローされた場合に発生するメモリリークを修正しました。これにより #8995 が解決されます。 #11496alexey-milovidov)。
  • エイリアスが修飾付きカラム名を上書きしてしまう場合に分散クエリで誤った結果が返される不具合を修正。 #9672 および #9714 を解決。 #9972 (Artem Zuikov)。

ClickHouse リリース v20.3.11.97-lts 2020-06-10

新機能

  • ClickHouse は辞書ソースのタイムアウトを ClickHouse 側で制御するようになりました。キャッシュ辞書の設定に 2 つの新しい設定項目が追加されました。既定では max_lifetime となる strict_max_lifetime_seconds と、既定で 1 分となる query_wait_timeout_milliseconds です。最初の設定は、allow_read_expired_keys 設定と組み合わせて使用する場合にも有用です(有効期限が大きく過ぎたキーの読み取りを禁止するため)。#10337Nikita Mikhaylov)。

バグ修正

  • min_bytes_to_use_direct_io が有効で、PREWHERE 句が有効な状態で SAMPLE を使用している場合、またはスレッド数が多い場合に発生することがある Data compressed with different methods エラーを修正しました。これにより #11539 が解決されました。 #11540 (alexey-milovidov)。
  • コーデックの返す圧縮サイズを修正。 #11448 (Nikolai Kochetov).
  • 列が非リテラル引数を持つ圧縮コーデックを使用している場合にサーバーがクラッシュする問題を修正。#11365 を修正。#11431alesapin)。
  • nan を点として使用した場合の pointInPolygon の挙動を修正しました。#11375 を修正。#11421Alexey Ilyukhov)。
  • LowCarinality(T) と Nullable(T) を使用した JOIN で発生するクラッシュを修正。 #11380#11414 (Artem Zuikov)。
  • 誤った USING キーが指定された場合のエラーコードを修正。#11373#11404Artem Zuikov)。
  • 緯度・経度の有効範囲外の引数を指定した場合の geohashesInBox の問題を修正しました。 #11403 (Vasily Nemkov).
  • joinGet() 関数のエラーメッセージを改善。 #11389 (Artem Zuikov).
  • 外部ソートおよび LIMIT を含むクエリで発生する可能性のある Pipeline stuck エラーを修正。#11359 を解決。#11366Nikolai Kochetov)。
  • ReplicatedMergeTree におけるパーツ送信時の冗長なロックを削除しました。 #11354 (alesapin).
  • 複数行モードの clickhouse-client における \G(縦向き出力)のサポートを修正しました。これにより #9933 がクローズされました。#11350 (alexey-milovidov).
  • StorageJoin からの直接 SELECT(JOIN なし)時のクラッシュと誤った nullability を修正。 #11340 (Artem Zuikov).
  • quantilesExactWeightedArray で発生していたクラッシュを修正。#11337Nikolai Kochetov)。
  • ALTER クエリでメタデータを変更する前に、マージが停止されるようになりました。 #11335 (alesapin).
  • parallel_view_processing = 1 設定を使用した MATERIALIZED VIEW への書き込みを再び並列で行えるようにしました。 #10241 を修正。 #11330Nikolai Kochetov)。
  • 抽出された JSON 内の文字列に対応の取れていない { または [ が含まれている場合の visitParamExtractRaw を修正しました。 #11318 (Ewout).
  • ThreadPool において極めてまれに発生するレースコンディションを修正。 #11314 (alexey-milovidov).
  • 変換時に未初期化メモリが使用される可能性のある問題を修正。例: SELECT toIntervalSecond(now64())#11311 (alexey-milovidov)。
  • プライマリキーに Array 型のカラムを持つテーブルで、クエリがこのカラムに対して empty または notEmpty 関数によるフィルタを行っている場合に、インデックス解析が動作しない問題を修正しました。これにより #11286 が解決されます。 #11303 (alexey-milovidov)。
  • max_network_bandwidthmax_execution_speed、または priority 設定によってクエリがスロットルされている場合に、クエリ速度の推定が正しく行われず、その結果 min_execution_speed の制限が機能しない、あるいは誤って機能する可能性があるバグを修正しました。min_execution_speed および max_execution_speed の設定がそれ以外の場合には効果を持たないため、timeout_before_checking_execution_speed のデフォルト値を 0 以外の値に変更しました。これにより #11297 が修正されます。また #5732 も修正されます。さらに #6228 も修正されます。ユーザビリティの改善として、clickhouse-client において例外メッセージとプログレスバーが連結されないようにしました。#11296 (alexey-milovidov)。
  • Protobuf フォーマットで不正なデータを読み込んだ際に発生するクラッシュを修正しました。これにより #5957 および #11203 が修正されました。#11258Vitaly Baranov)。
  • キャッシュディクショナリが(有効なキーがなく期限切れのキーだけの場合に)本来の値ではなくデフォルト値を返してしまうバグを修正しました。これは文字列フィールドのみに影響します。 #11233 (Nikita Mikhaylov).
  • VIEW から、内側のクエリに定数が含まれている場合に発生する Block structure mismatch in QueryPipeline エラーを修正しました。 #11181 を修正。 #11205 (Nikolai Kochetov).
  • 関連出力の状態が不正であることを示す例外 Invalid status for associated output が発生する可能性のある問題を修正。 #11200 (Nikolai Kochetov)。
  • Array(Array(LowCardinality)) をキャプチャ引数として受け取る高階関数で発生する可能性のあるエラー Cannot capture column を修正しました。 #11185 (Nikolai Kochetov)。
  • 1000 個を超えるキーが存在する場合や一部のバックエンドで失敗する可能性があった S3 のグロブ処理を修正しました。 #11179 (Vladimir Chebotarev).
  • データスキップインデックスが、バックグラウンドマージ中に変更される列(SummingMergeTree、AggregatingMergeTree、および TTL GROUP BY の場合)に依存している場合、そのインデックスは誤って計算されていました。この問題は、マージ後にインデックス計算を行うように処理を移動し、マージ後のデータに対してインデックスを計算することで修正されました。 #11162 (Azat Khuzhin).
  • 単純なクエリに対するスレッドの過剰予約を修正(スレッド数削減のための最適化だが、パイプラインの変更後に一部で動作しなくなっていたもの)。#11114 (Azat Khuzhin).
  • HAVING 句を含むクエリ(つまりサーバーイニシエーター側でのフィルタリングが必要な場合)に対して、分散クエリ用の述語最適化(enable_optimize_predicate_expression=1)を、式の順序を保持することで修正(これだけで修正としては十分)し、さらにアグリゲーターがインデックスではなくカラム名を使用するように強制します。修正対象: #10613, #11413#10621Azat Khuzhin)。
  • オフセットコミットが失敗するまれなケースにおいて Kafka から重複データを取得してしまう可能性を低減するため、コミットのリトライロジックを導入しました。 #9884 (filimonov).

パフォーマンス改善

  • 外部ディクショナリを読み込む関数の各呼び出し時に、ディクショナリの取得とアクセス権チェックを一度だけ行うようにしました。 #10928 (Vitaly Baranov).

ビルド/テスト/パッケージングの改善

  • フレークが発生していた統合テストをいくつか修正しました。 #11355 (alesapin).

ClickHouse リリース v20.3.10.75-lts 2020-05-23

バグ修正

  • 何もファイナライズされなかった場合は、mutation のファイナライゼーションタスクでのロギングを削除しました。 #11109 (alesapin)。
  • parseDateTime64BestEffort の引数解決に関する不具合を修正しました。 #11038 (Vasily Nemkov)
  • メソッド getRawData() における生データのサイズの誤りを修正しました。 #10964 (Igr).
  • 20.1 より前のバージョンとの間で発生していた二段階集約における非互換性を修正しました。この非互換性は、イニシエータノードとリモートノードで異なるバージョンの ClickHouse を使用しており、GROUP BY の結果セットが大きく、かつ単一の String フィールドで集約を実行している場合に発生します。その結果、単一のキーに対してマージされていない複数の行が結果に含まれてしまうことがありました。 #10952 (alexey-milovidov).
  • Distributed テーブルにおけるタプルの後方互換性の問題を修正しました。 #10889 (Anton Popov).
  • 存在しないキーを参照した場合に StringHashTable で発生していた SIGSEGV を修正しました。 #10870 (Azat Khuzhin).
  • ReplicatedMergeTree において、レプリカが非アクティブになった後でもそのレプリカを待ち続けてしまい、OPTIMIZE クエリ中の一部の ALTER がハングする可能性があったバグを修正しました。 #10849 (tavplubix).
  • Block::sortColumns() の後の列順を修正しました。 #10826 (Azat Khuzhin).
  • 識別子のクオートを行わないよう指定されている場合の ODBC ブリッジの問題を修正しました。#7984 を修正します。#10821alexey-milovidov)。
  • DateLUT における UBSan および MSan のレポートを修正しました。 #10798 (alexey-milovidov).
  • キー条件における誤った型変換を修正しました。#6287 を解決。#10791 (Andrew Onyshchuk)
  • parallel_view_processing の動作を修正しました。これにより、例外が発生した場合でも、すべての MATERIALIZED VIEW への挿入が漏れなく完了するようになりました。 #10241 を修正。 #10757Nikolai Kochetov)。
  • -State と組み合わせて使用した際のコンビネータ -OrNull および -OrDefault を修正しました。 #10741 (hcz).
  • ネストされた型で generateRandom がクラッシュする問題を修正しました。 #10583 を修正。 #10734Nikolai Kochetov)。
  • マージ後に発生することがあった、SummingMergeTreeLowCardinality(FixedString) キーカラムにおけるデータ破損の問題を修正しました。 #10489 を修正。 #10721 (Nikolai Kochetov)。
  • 関数 h3EdgeAngle において、バッファオーバーフローを引き起こす可能性のあった問題を修正しました。 #10711 (alexey-milovidov).
  • 合計値が消失してしまう問題を修正しました。クエリに JOIN または外側の WHERE 条件を持つサブクエリが含まれている場合に、合計値がフィルタリングされてしまうことがありました。#10674 を修正しました。#10698Nikolai Kochetov)。
  • 1 つのクエリ内で同じ集合に対して IN 演算子を複数回使用するケースを修正しました。 #10686 (Anton Popov).
  • readonly=2 かつ cancel_http_readonly_queries_on_client_close=1 のとき、クライアントが接続を閉じても HTTP リクエストがハングしてしまう不具合を修正しました。#7939#7019#7736#7091 を修正しました。#10684tavplubix)。
  • AggregateTransform コンストラクタ内のパラメータの順序を修正しました。 #10667 (palasonic1).
  • distributed_aggregation_memory_efficient が有効な場合にリモートクエリが並列実行されない問題を修正しました。#10655 を解決します。 #10664Nikolai Kochetov)。
  • LIMIT を含むクエリで行数が誤った値になる可能性があった問題を修正しました。#10566#10709 を修正。#10660Nikolai Kochetov)。
  • 多数のパーツを持つテーブルで ALTER を同時実行するとロックされてしまうバグを修正しました。 #10659 (alesapin).
  • SYSTEM DROP DNS CACHE クエリを実行した際に、接続元 IP アドレスが許可されているかを確認するために使用されるキャッシュまで同時に削除されてしまう不具合を修正しました。 #10608 (tavplubix).
  • このクエリに依存テーブルが含まれている場合に、MATERIALIZED VIEW の内部クエリ内で誤ったスカラ値が返されていた問題を修正しました。 #10603 (Nikolai Kochetov).
  • デフォルト式の型が列の型と異なる ALIAS 列に対する SELECT を修正しました。 #10563 (Azat Khuzhin).
  • DateTime64 型と String 型の値の比較機能を実装しました。 #10560 (Vasily Nemkov).
  • マージ処理でコンパクトパーツを別のコンパクトパーツに統合した後に、一部のケースで発生する可能性のあったインデックス破損を修正しました。 #10531 (Anton Popov).
  • mutation がすべてのパーツを処理し終えているにもかかわらず、is_done=0 の状態でハングしてしまう問題を修正しました。 #10526 (alesapin).
  • UTC からのオフセットに小数値を持つタイムゾーンで、Unix エポック開始時に発生していたオーバーフローを修正しました。これにより #9335 が解決されています。 #10513 (alexey-milovidov).
  • Distributed ストレージの不適切なシャットダウンを修正しました。 #10491 (Azat Khuzhin).
  • 大きな整数値を扱う場合の simpleLinearRegression における数値オーバーフローを修正しました。 #10474 (hcz).

ビルド/テスト/パッケージングの改善

  • LZ4 ライブラリでの UBSan レポートを修正しました。#10631 (alexey-milovidov).
  • clang-10 でのビルドを修正しました。#10238#10370 (Amos Bird).
  • max_rows_to_sort 設定に関する意図的に失敗するテストを追加しました。#10268 (alexey-milovidov).
  • 入力フォーマットにおける診断情報の出力をいくつか改善しました。#10204 を修正しました。#10418 (tavplubix).
  • clickhouse-server の Docker イメージに CA 証明書を追加しました。#10476 (filimonov).

バグ修正

  • エラー the BloomFilter false positive must be a double number between 0 and 1 を修正しました。#10551#10569 (Winter Zhang).

ClickHouse リリース v20.3.8.53, 2020-04-23

バグ修正

  • UTC からのオフセットが正から負、またはその逆に変更されたタイムゾーン(例: Pacific/Kiritimati)における datetime 関数の誤った挙動を修正しました。これにより #7202 #10369 が修正されました(alexey-milovidov
  • distributed_group_by_no_merge 有効時に発生する可能性のあるセグメンテーションフォルトを修正(20.3.7.46 で #10131 により導入されたもの)。#10399Nikolai Kochetov
  • Array(Tuple(...)) データ型の誤ったフラット化処理を修正しました。これにより #10259#10390 が修正されました(alexey-milovidov
  • Aggregator でのディスク領域の予約を廃止しました。これによりディスク領域の予約に関するバグが修正され、本来であれば正常に完了できた大規模な external aggregation が失敗してしまう可能性があった問題を解消します #10375 (Azat Khuzhin)
  • ReplicatedMergeTree における DROPOPTIMIZE のレースコンディションを修正しました。OPTIMIZE クエリが同時に実行されている場合、DROP が ZooKeeper 上のレプリカパスに不要なデータを残してしまうことがありました。 #10312 (tavplubix)
  • カラムのデフォルト値を変更した後にサーバーがテーブルをアタッチできなくなる不具合を修正しました。 #10441 (alesapin)
  • テーブルをロードする前に ATTACH DATABASE が失敗した場合でも metadata ディレクトリを削除しないようにする。 #10442 (Winter Zhang)
  • いくつかのデータが quorum を指定して挿入された後、DROP PARTITIONTTL などによって削除され、その結果として INSERT がハングしたり、SELECT で誤検出の例外が発生したりする不具合を複数修正しました。これにより #9946 および #10188 が修正されています(Nikita Mikhaylov
  • リモートクエリで発生する可能性があった ConcatProcessorPipeline stuck エラーを修正。 #10381 (Nikolai Kochetov)
  • バッファから HashMap を読み込もうとした際にコンパイルエラーの原因となっていた HashTable の誤った動作を修正しました。 #10386 (palasonic1)
  • 複数の JOIN を含むクエリで count(*) を使用できるようにしました。#9853 #10291 を修正しました(Artem Zuikov)。
  • skip_unavailable_shards よりも fallback_to_stale_replicas を優先してください。そうしないと、両方の設定を指定していて最新のレプリカが存在しない場合、クエリは失敗します(@alex-zaitsev によるパッチ)。修正:#2564#10422Azat Khuzhin
  • ARRAY JOIN、ORDER BY、LIMIT を含むクエリで結果が欠落する場合がある問題を修正しました。これにより #10226 が修正されました。著者: Vadim Plakhtinskiy#10427alexey-milovidov
  • BloomFilter インデックス作成時に引数の数と型をチェックするようにしました #9623 #10431 (Winter Zhang)

パフォーマンスの改善

  • IN 演算子の右辺に明示的に定義されたセットがあり、左辺にタプルがあるクエリのパフォーマンスを改善しました。これにより、バージョン 20.3 におけるパフォーマンス低下(リグレッション)が解消されます。#9740, #10385 (Anton Popov)

ClickHouse release v20.3.7.46, 2020-04-17

バグ修正

  • カンマ区切りの結合と名前付き結合が混在するクエリで発生する Logical error: CROSS JOIN has expressions エラーを修正しました。#10311 (Artem Zuikov).
  • max_bytes_before_external_group_by を使用したクエリの問題を修正しました。#10302 (Artem Zuikov).
  • arrayJoin 関数が存在する場合(特定のケース)の move-to-prewhere 最適化を修正しました。これにより #10092 が解消されます。#10195 (alexey-milovidov).
  • allow_nondeterministic_mutations 設定により、ミューテーション内での非決定論的関数の使用に関する制限を緩和できるようにしました。#10186 (filimonov).

ClickHouse release v20.3.6.40, 2020-04-16

新機能

  • 関数 isConstant を追加しました。この関数は、引数が定数式かどうかをチェックし、1 または 0 を返します。開発、デバッグ、およびデモ目的での使用を想定しています。#10198 (alexey-milovidov).

バグ修正

  • max_rows_to_group_bygroup_by_overflow_mode = 'break' を使用した際に発生する Pipeline stuck エラーを修正しました。 #10279 (Nikolai Kochetov).
  • まれに発生する可能性のあった例外 Cannot drain connections: cancel first を修正。#10239Nikolai Kochetov)。
  • ユーザーが ENGINE = Replicated* のテーブルに対して ALTER UPDATE/DELETE を実行しようとした際に、ClickHouse が「Unknown function lambda.」というエラーメッセージを返してしまう不具合を修正しました。非決定的関数のチェックでラムダ式も正しく扱えるようになりました。 #10237 (Alexander Kazakov)。
  • Date 型に対する generateRandom 関数を修正しました。これにより#9973が解決されます。年 2106 の日付を旧形式のパーティショニングを用いた MergeTree テーブルに挿入した際に、パーティション名が年 1970 になってしまうエッジケースを修正しました。#10218alexey-milovidov)。
  • View のテーブル定義が SELECT クエリと一致しない場合に、型を変換するようにしました。これにより、#10180 および #10022 の問題が修正されます。#10217alexey-milovidov)。
  • 曜日が火曜日または木曜日の場合に、RFC-2822 形式の文字列を扱う parseDateTimeBestEffort を修正しました。これにより #10082 が解決されます。 #10214 (alexey-milovidov)。
  • JOIN の内部にある定数の列名が JOIN の外部にある定数と衝突する可能性がある問題を修正しました。 #10207 (alexey-milovidov).
  • system.numberssystem.zeros のような無限に生成されるデータソースから読み取る際に、本来は LIMIT で停止すべきクエリが無限に実行されてしまう可能性のあった問題を修正。 #10206 (Nikolai Kochetov).
  • データベースが指定されていない場合に、アクセスチェックで現在のデータベースを使用するように修正。 #10192 (Vitaly Baranov)
  • Distributed() への INSERT 時に構造が一致しない場合は、自動的にブロックを変換するようにしました。 #10135 (Azat Khuzhin).
  • processors パイプラインにおける extremes の結果が誤った結果を返す可能性があった問題を修正。 #10131 (Nikolai Kochetov)。
  • コンパクトパーツに関連する一部の種類の ALTER を修正しました。 #10130 (Anton Popov).
  • 新しいレプリカ作成時の index_granularity_bytes の誤ったチェックを修正。 #10098 を解決。 #10121alesapin)。
  • 構造が配下のテーブルと異なる Distributed テーブルへの INSERT 実行時に SIGSEGV が発生する問題を修正。 #10105 (Azat Khuzhin).
  • JOIN および UNION ALL を含むクエリで行が失われる可能性があった問題を修正。#9826#10113 を解消。#10099Nikolai Kochetov)。
  • 古い ClickHouse バージョンからのアップデート時に /table/replicas/replica_name/metadata ノードが存在しない場合に、レプリケーテッドテーブルが起動できない問題を修正しました。#10037 を解決。#10095alesapin)。
  • MySQL Database エンジン向けに引数のチェックをいくつか追加し、識別子を引数として指定することをサポートしました。 #10077 (Winter Zhang).
  • localhost 上の ClickHouse サーバーを辞書ソースとして使用する際のバグを修正しました。辞書とソースの型に互換性がない場合、メモリ破壊を引き起こす可能性がありました。 #10071 (alesapin)。
  • テーブルにスキップインデックスが含まれている場合の CHECK TABLE クエリにおけるバグを修正しました。 #10068 (alesapin).
  • エラー Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform を修正しました。これは、distributed_aggregation_memory_efficient 設定が有効になっており、分散クエリが異なるシャードから異なるレベルで集約されたデータを読み取った場合(単一レベル集約と二レベル集約が混在している場合)に発生していました。 #10063 (Nikolai Kochetov).
  • 末尾にゼロバイトを含む文字列キーに対する GROUP BY 実行時に発生し得たセグメンテーションフォルトを修正しました(#8636, #8925)。#10025Alexander Kuzmenkov)。
  • リモートクエリ実行に使用されるスレッド数の制御を修正しました(20.3 以降で発生していたパフォーマンスリグレッション)。この問題は、Distributed テーブルからのクエリがローカルおよびリモートのシャードで同時に実行された場合に発生していました。#9965 を修正。#9971Nikolai Kochetov)。
  • 一部のデータベースに対するクエリ処理のある段階で、必要なテーブルが取得されていなかったバグを修正しました。これは #9699 を解決するものです。 #9949achulkov2)。
  • JOINTOTALS と併用した際に発生する "Not found column in block" エラーを修正。#9839 を修正。#9939Artem Zuikov)。
  • サーバー起動時に ON CLUSTER DDL クエリがフリーズする不具合を修正しました。 #9927 (Gagan Arneja).
  • CREATE USER コマンドで複数のホストを指定した場合の解析処理を修正しました。例: CREATE USER user6 HOST NAME REGEXP 'lo.?*host', NAME REGEXP 'lo*host'#9924 (Vitaly Baranov)。
  • Join テーブルエンジン向けの TRUNCATE を修正(#9917)。#9920Amos Bird)。
  • ALTER での "scalar does not exist" エラーを修正。(#9878) #9904 (Amos Bird).
  • ReplicatedMergeTree における drop と optimize 間のレースコンディションを修正。 #9901 (alesapin).
  • distributed_product_mode='local' における修飾名関連の不具合を修正。#4756 を解消。#9891Artem Zuikov)。
  • 'allow_introspection_functions' 設定に基づくイントロスペクション関数の権限計算を修正。 #9840 (Vitaly Baranov).

ビルド/テスト/パッケージングの改善

ClickHouse リリース v20.3.5.21, 2020-03-27

バグ修正

  • 分散テーブルに対するクエリで PREWHERE および WHERE を使用し、かつ SET distributed_product_mode = 'local' の場合に発生する「同じエイリアスを持つ異なる式」エラーを修正。 #9871 (Artem Zuikov)。
  • 複合主キーを持つテーブルに対するミューテーションの過剰なメモリ消費を修正。これにより #9850 が解決します。 #9860 (alesapin)。
  • INSERT クエリについて、これまでは例外をスローしていたところを、シャードがイニシエータから受け取った設定をシャード側の制約の範囲内に収めるように変更。この修正により、異なる制約を持つシャードに対しても INSERT クエリを送信できるようになります。この変更は #9447 の修正を強化するものです。 #9852 (Vitaly Baranov)。
  • COMMA JOIN をテーブルリスト外(例: WHERE 内)のサブクエリで使用した場合に発生する「COMMA to CROSS JOIN rewriter is not enabled or cannot rewrite query」エラーを修正。 #9782 を修正。 #9830 (Artem Zuikov)。
  • クライアント側で発生しうる Got 0 in totals chunk, expected 1 例外を修正。これは、右側の結合テーブルの行数が 0 の場合に、JOIN を含むクエリで発生していました。例: select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;#9777 を修正。 #9823 (Nikolai Kochetov)。
  • 型を変換できない場合に optimize_skip_unused_shards で発生する SIGSEGV を修正。 #9804 (Azat Khuzhin)。
  • コンパクトパーツに対する ALTER TABLE DELETE COLUMN クエリが正しく動作していなかった問題を修正。 #9779 (alesapin)。
  • max_distributed_connections(Processors あり/なしの両方)を修正。 #9673 (Azat Khuzhin)。
  • 関数引数のタイムゾーンが正しく使用されていなかったいくつかのケースを修正。 #9574 (Vasily Nemkov)。

改善

  • 単一スレッドで単一の順序付きパーツから読み取るため、ミューテーションから ORDER BY ステージを削除。また、ミューテーション内の行の順序がソートキーの順序どおりであり、その順序が破られていないことを確認するチェックを追加。 #9886 (alesapin)。

ClickHouse リリース v20.3.4.10, 2020-03-20

バグ修正

  • このリリースには、20.1.8.41 のすべてのバグ修正も含まれています。
  • HTTP 経由のクエリ(processors パイプラインを使用)で rows_before_limit_at_least が欠落していた問題を修正しました。これにより #9730 が解決されています。 #9757Nikolai Kochetov

ClickHouse リリース v20.3.3.6, 2020-03-17

バグ修正

  • このリリースには、20.1.7.38 のすべてのバグ修正も含まれています。
  • 以前のバージョンでユーザーが mutation を実行していた場合にレプリケーションが動作しなくなるバグを修正しました。これにより #9645 が解決されています。 #9652alesapin)。これによりバージョン 20.3 は再び後方互換性を持つようになります。
  • INSERT クエリのファイルを、よりコンパクトな形式で Distributed テーブルに書き込めるようにする設定 use_compact_format_in_distributed_parts_names を追加しました。これにより #9647 が解決されています。 #9653alesapin)。これによりバージョン 20.3 は再び後方互換性を持つようになります。

ClickHouse リリース v20.3.2.1, 2020-03-12

後方互換性のない変更

  • 多数のレプリカに対して Distributed テーブルのデータ送信を行う際に発生していた file name too long の問題を修正しました。サーバーログ内でレプリカの認証情報が表示されてしまう問題を修正しました。ディスク上のディレクトリ名の形式は [shard{shard_index}[_replica{replica_index}]] に変更されました。 #8911 (Mikhail Korotov) 新しいバージョンにアップグレードした後は、古いサーバーバージョンが新しいディレクトリ形式を認識しないため、手動での対応なしにダウングレードすることはできません。ダウングレードする場合は、該当するディレクトリを手動で旧形式にリネームする必要があります。この変更の影響を受けるのは、Distributed テーブルに対して非同期の INSERT を使用していた場合のみです。バージョン 20.3.3 では、新しい形式を段階的に有効化できる設定を導入する予定です。
  • ミューテーションコマンド用のレプリケーションログエントリのフォーマットを変更しました。新しいバージョンをインストールする前に、既存のミューテーションの処理が完了するまで待つ必要があります。
  • ソフト割り当て上限を超過したメモリ割り当て量が N バイト増えるたびにスタックトレースを system.trace_log にダンプするシンプルなメモリプロファイラを実装しました #8765 (Ivan) #9472 (alexey-milovidov) system.trace_log のカラム名が timer_type から trace_type に変更されました。これにより、サードパーティのパフォーマンス解析ツールや Flamegraph 処理ツールに変更が必要になります。
  • 内部スレッド番号の代わりに、あらゆる箇所で OS のスレッド ID を使用するようにしました。これにより、#7477 が修正されます。send_logs_level 設定が有効な場合、構造化ログメッセージの名前と型が変更されたため、旧バージョンの clickhouse-client はサーバーから送信されるログを受信できませんでした。一方で、異なるサーバーバージョン同士が、互いに異なる型のログを送信する可能性があります。send_logs_level 設定を使用していない場合は、この問題を気にする必要はありません。#8954 (alexey-milovidov)
  • indexHint 関数を削除しました #9542 (alexey-milovidov)
  • findClusterIndexfindClusterValue 関数を削除しました。これにより #8641 が修正されます。これらの関数を使用していた場合は、[email protected] 宛てにメールを送ってください #9543 (alexey-milovidov)
  • 現在は、SELECT サブクエリをデフォルト式として指定して列を作成または追加することはできません。 #9481 (alesapin)
  • JOIN における副問い合わせに別名の指定を必須化。 #9274 (Artem Zuikov)
  • ALTER MODIFY/ADD クエリのロジックを改善しました。これにより、型を指定せずにカラムを ADD することはできず、MODIFY でデフォルト式を変更してもカラムの型は変わらず、MODIFY で型を変更してもデフォルト式の値は失われません。この変更により #8669 が修正されています。#9227alesapin
  • ログ設定の変更を反映するには、サーバーを再起動する必要があります。これは、削除されたログファイルに対してサーバーがログ出力を続けてしまう不具合を避けるための一時的な回避策です(#8696 を参照)。#8707Alexander Kuzmenkov
  • 設定 experimental_use_processors はデフォルトで有効になっています。この設定により、新しいクエリパイプラインが使用されます。これは内部的なリファクタリングであり、ユーザーからは変更が分からない想定です。もし何か問題が発生した場合は、値を 0 に戻してください。 #8768 (alexey-milovidov)

新機能

  • Avro および AvroConfluent の入力/出力フォーマットを追加 #8571 (Andrew Onyshchuk) #8957 (Andrew Onyshchuk) #8717 (alexey-milovidov)
  • cache 辞書における期限切れキーのマルチスレッドかつノンブロッキングな更新(古い値の読み取りを許可するオプション付き)。 #8303 (Nikita Mikhaylov)
  • クエリ ALTER ... MATERIALIZE TTL を追加しました。このクエリは、TTL によって期限切れとなったデータを強制的に削除するミューテーションを実行し、すべてのパーツにおける TTL のメタ情報を再計算します。 #8775 (Anton Popov)
  • 必要に応じて HashJoin からディスク上の MergeJoin に切り替える #9082 (Artem Zuikov)
  • ALTER TABLEMOVE PARTITION コマンドを追加 #4729 #6168 (Guillaume Tassery)
  • 構成ファイルからストレージ設定をオンザフライで再読み込みできるようにしました。 #8594 (Vladimir Chebotarev)
  • storage_policy を、現在と同等以上にリッチなポリシーへ変更できるようにしました。 #8107 (Vladimir Chebotarev)
  • S3 ストレージおよびテーブル関数でグロブ/ワイルドカードがサポートされるようになりました。 #8851 (Vladimir Chebotarev)
  • FixedString(N) データ型向けに bitAndbitOrbitXorbitNot を実装しました。 #9091 (Guillaume Tassery)
  • 関数 bitCount を追加しました。これにより #8702 が修正されました。 #8708 (alexey-milovidov) #8749 (ikopylov)
  • 指定したスキーマに従うランダムな行を生成するための generateRandom テーブル関数を追加しました。これにより、任意のテスト用テーブルにデータを投入できるようになります。 #8994 (Ilya Yatsishin)
  • JSONEachRowFormat: 最上位が配列で、その中にオブジェクトが含まれている特殊なケースをサポート。 #8860 (Kruglov Pavel)
  • これで、ALIAS のデフォルト式を持つ列に依存する DEFAULT 式を持つ列を作成できるようになりました。 #9489 (alesapin)
  • clickhouse-obfuscator でソースデータのサイズより大きい --limit を指定できるようにしました。データは異なる乱数シードで繰り返されます。 #9155 (alexey-milovidov)
  • groupArray と同様の関数 groupArraySample を、リザーバサンプリングアルゴリズムに基づいて追加しました。 #8286 (Amos Bird)
  • これで、cache/complex_key_cache 辞書の更新キューのサイズをシステムメトリクス経由で監視できるようになりました。 #9413 (Nikita Mikhaylov)
  • CSV 出力形式で、設定 output_format_csv_crlf_end_of_line を 1 にした場合、行区切りとして CRLF を使用できるようにしました #8934 #8935 #8963 (Mikhail Korotov)
  • H3 API のさらなる関数を実装: h3GetBaseCellh3HexAreaM2h3IndexesAreNeighborsh3ToChildrenh3ToString および stringToH3 #8938 (Nico Mandery)
  • 新しい設定 max_parser_depth が導入され、スタックサイズの上限を制御して、大規模で複雑なクエリも処理できるようになりました。これにより、#6681 および #7668 が修正されました。#8647Maxim Smirnov
  • 未使用シャードをスキップできない場合に例外をスローするための設定 force_optimize_skip_unused_shards を追加 #8805 (Azat Khuzhin)
  • Distributed エンジンで送信するデータの保存先として使用する複数のディスク/ボリュームを構成できるようにした #8756 (Azat Khuzhin)
  • 一時データ保存用のストレージポリシー(<tmp_policy>)をサポート。 #8750 (Azat Khuzhin)
  • データ送信前に例外がスローされた場合に設定される X-ClickHouse-Exception-Code HTTP ヘッダーを追加しました。これは #4971 の実装です。 #8786 (Mikhail Korotov)
  • 関数 ifNotFinite を追加しました。これは単なる構文シュガーです: ifNotFinite(x, y) = isFinite(x) ? x : y#8710 (alexey-milovidov)
  • system.dictionaries テーブルに last_successful_update_time 列を追加しました #9394 (Nikita Mikhaylov)
  • 圧縮なしのディスク上サイズを返す blockSerializedSize 関数を追加 #8952 (Azat Khuzhin)
  • 関数 moduloOrZero を追加 #9358 (hcz)
  • システムテーブル system.zerossystem.zeros_mt、およびテーブル関数 zeros()zeros_mt() を追加しました。テーブル(およびテーブル関数)は、zero という名前で型が UInt8 の単一カラムのみを持ち、このカラムには 0 が入ります。これは、多数の行を最速で生成するためのテスト用途として必要なものです。これにより #6604 #9593 が修正されました(Nikolai Kochetov

実験的機能

  • MergeTree ファミリーのテーブルにおいて、すべてのカラムを 1 つのファイルに格納する新しいコンパクトなパーツ形式を追加しました。これにより、小規模かつ高頻度な挿入のパフォーマンスが向上します。従来の形式(カラムごとに 1 ファイル)は、現在はワイド形式と呼ばれます。データの保存形式は min_bytes_for_wide_part および min_rows_for_wide_part の設定で制御されます。 #8290 (Anton Popov)
  • LogTinyLogStripeLog テーブルに対する S3 ストレージのサポートを追加しました。 #8862 (Pavel Kovalenko)

バグ修正

  • ログメッセージ内の不揃いな空白を修正しました。 #9322 (alexey-milovidov)
  • テーブル作成時に、名前のないタプルの配列が Nested 構造としてフラット化されてしまう不具合を修正。 #8866 (achulkov2)
  • File テーブルまたは file テーブル関数で、glob パターンにマッチするファイルが多すぎる場合に「Too many open files」エラーが発生する可能性があった問題を修正しました。現在はファイルを遅延的にオープンするようになりました。これにより #8857 #8861 が解決されています(alexey-milovidov
  • DROP TEMPORARY TABLE は、一時テーブルだけを削除するようになりました。 #8907 (Vitaly Baranov)
  • サーバーのシャットダウン時やテーブルの DETACH/ATTACH 時に、古いパーティションを削除します。 #8602 (Guillaume Tassery)
  • デフォルトディスクが data サブディレクトリを基準に空き容量を計算する方法を変更しました。data ディレクトリが別のデバイスにマウントされている場合(まれなケース)に、空き容量が正しく計算されない問題を修正しました。これにより #7441 #9257 が解決されました (Mikhail Korotov)
  • IN () を含むカンマ(クロス)JOINを許可。 #9251 (Artem Zuikov)
  • WHERE 句に [NOT] LIKE 演算子が含まれている場合に、CROSS JOIN を INNER JOIN に書き換えられるようにしました。 #9229 (Artem Zuikov)
  • distributed_aggregation_memory_efficient 設定を有効にした状態で GROUP BY を実行した際に、誤った結果が返される可能性がある問題を修正。 #9134 を修正。 #9289Nikolai Kochetov
  • ヒットしたキーが、キャッシュ辞書のメトリクスでミスとしてカウントされていました。 #9411 (Nikita Mikhaylov)
  • #8598 で導入されたレプリケーションプロトコルの互換性の問題を修正。 #9412 (alesapin)
  • ReplicatedMergeTree テーブルの起動時に発生していた queue_task_handle のレースコンディションを修正しました。 #9552 (alexey-milovidov)
  • SHOW TABLES NOT LIKE クエリで NOT トークンが正しく動作していませんでした #8727 #8940 (alexey-milovidov)
  • 関数 h3EdgeLengthM に範囲チェックを追加しました。このチェックがないと、バッファーオーバーフローが発生する可能性があります。 #8945 (alexey-milovidov)
  • 10 個を超える引数に対する三項論理演算子のバッチ計算で発生していたバグを修正しました。 #8718 (Alexander Kazakov)
  • セグメンテーションフォールトや Inconsistent number of columns got from MergeTreeRangeReader 例外が発生する可能性のあった PREWHERE 最適化の不具合を修正。 #9024 (Anton Popov)
  • セキュア接続において、実際にはタイムアウトを超過していないにもかかわらず、query profiler が有効化されているとランダムに発生していた予期しない Timeout exceeded while reading from socket 例外を修正しました。また、SSL ハンドシェイクは通常の TCP 接続よりも遅いため、セキュア接続向けに使用される connect_timeout_with_failover_ms と同様の役割を持つ connect_timeout_with_failover_secure_ms 設定(デフォルト 100ms)も追加しました #9026 (tavplubix)
  • mutation の完了処理において、parts_to_do=0 かつ is_done=0 の状態で mutation がハングする可能性があるバグを修正。 #9022 (alesapin)
  • partial_merge_join 設定を使って新しい ANY JOIN ロジックを利用できるようになりました。partial_merge_join=1 を指定することで、ANY|ALL|SEMI LEFT および ALL INNER JOIN を実行できます。 #8932 (Artem Zuikov)
  • シャードは、例外をスローする代わりに、呼び出し元から取得した設定値を自分自身の制約に合わせて調整するようになりました。この修正により、異なる制約を持つシャードに対してもクエリを送信できるようになりました。 #9447 (Vitaly Baranov)
  • MergeTreeReadPool におけるメモリ管理の問題を修正しました。 #8791 (Vladimir Chebotarev)
  • 文字列 e を引数に指定して呼び出した場合の toDecimal*OrNull() 関数ファミリーの動作を修正(#8312 #8764)(Artem Zuikov)。
  • FORMAT Null がクライアントに一切データを送信しないようにしました。 #8767 (Alexander Kuzmenkov)
  • LiveViewBlockInputStream 内のタイムスタンプが更新されない不具合を修正しました。LIVE VIEW は実験的な機能です。 #8644 (vxider) #8625 (vxider)
  • 古い TTL 式を削除できなかった ALTER MODIFY TTL の不具合を修正しました。 #8422 (Vladimir Chebotarev)
  • MergeTreeIndexSet における UBSan の報告を修正しました。これにより #9250#9365 が修正されました(alexey-milovidov
  • haystack がゼロバイトの場合の match 関数および extract 関数の動作を修正しました。haystack が定数の場合の動作が誤っていました。これにより #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov) を修正しました。
  • Apache Avro サードパーティライブラリのデストラクタが例外をスローしないようにしました。 #9066 (Andrew Onyshchuk)
  • Kafka からポーリングしたバッチを部分的にコミットしないでください。データに欠落が生じる可能性があります。 #8876 (filimonov)
  • joinGet の nullable な戻り値型に関する問題を修正。 #8919 #9014 (Amos Bird)
  • T64 コーデックで圧縮された際のデータ非互換性を修正。#9016Artem Zuikov)影響を受けるバージョンで誤った圧縮/伸長処理を引き起こしていた T64 圧縮コーデック内のデータ型IDを修正。#9033Artem Zuikov
  • 設定 enable_early_constant_folding を追加し、エラーの原因となる一部のケースでは無効化しました。 #9010 (Artem Zuikov)
  • VIEW に対する述語プッシュダウンオプティマイザを修正し、テストを有効にした #9011 (Winter Zhang)
  • File ストレージからの読み取り時に発生する可能性がある Merge テーブルのセグメンテーションフォルトを修正 #9387 (tavplubix)
  • ATTACH PARTITION FROMREPLACE PARTITIONMOVE TO TABLE においてストレージポリシーのチェックを追加しました。これがないと、再起動後にパーツのデータへアクセスできなくなり、ClickHouse が起動できなくなる可能性がありました。 #9383 (Vladimir Chebotarev)
  • テーブルに TTL が設定されている場合の ALTER クエリを修正。#8800 (Anton Popov)
  • SYSTEM RELOAD ALL DICTIONARIES が実行されている最中に、いずれかの辞書が変更・追加・削除されている場合に発生し得る競合状態を修正しました。 #8801 (Vitaly Baranov)
  • 以前のバージョンでは、Memory データベースエンジンのデータパスが空に設定されていたため、テーブルはデータベースのデータディレクトリ(例: /var/lib/clickhouse/db_name)ではなく、path ディレクトリ(例: /var/lib/clickhouse/)に作成されていました。 #8753 (tavplubix)
  • デフォルトディスクまたはポリシーが存在しないとする誤ったログメッセージを修正しました。 #9530 (Vladimir Chebotarev)
  • 配列型に対する bloom_filter インデックスでの not(has()) を修正。 #9407 (achimbab)
  • Log エンジンを使用するテーブルで、先頭列(複数可)をエイリアスにすることを許可 #9231 (Ivan)
  • 1 つのスレッドで MergeTree テーブルから読み込む際の範囲の順序を修正しました。この問題により、MergeTreeRangeReader による例外発生や誤ったクエリ結果につながる可能性がありました。 #9050 (Anton Popov)
  • reinterpretAsFixedStringString ではなく FixedString を返すように変更しました。 #9052 (Andrew Onyshchuk)
  • ユーザーに、詳細なエラー説明の代わりに Success と表示される誤ったエラーメッセージが極めてまれに返されるケースを回避しました。 #9457 (alexey-milovidov)
  • 行テンプレートが空の場合でも Template フォーマットを使用してクラッシュしないようにしました。 #8785 (Alexander Kuzmenkov)
  • システムテーブル用のメタデータファイルが誤った場所に作成される可能性があった問題を修正しました #8653tavplubix)。#8581 を解決します。
  • キャッシュ辞書における exception_ptr のデータレースを修正 #8303#9379 (Nikita Mikhaylov)
  • クエリ ATTACH TABLE IF NOT EXISTS に対しては例外をスローしないようにしました。以前は、IF NOT EXISTS 句が付いていても、テーブルがすでに存在する場合に例外がスローされていました。 #8967 (Anton Popov)
  • 例外メッセージの閉じ括弧の欠落を修正。 #8811 (alexey-milovidov)
  • インタラクティブモードで clickhouse-client を起動した際に表示されるメッセージ Possible deadlock avoided を抑止しました。 #9455 (alexey-milovidov)
  • base64 エンコードされた値の末尾のパディングが不正な形式になる可能性がある問題を修正。base64 ライブラリを更新。これにより #9491 が解決され、#9492 および #9500 がクローズされました(alexey-milovidov
  • 例外がサフィックスの読み取り後からコミット前までの間に発生するまれなケースで、Kafka 内のデータが失われる問題を防止。 #9378 #9507 を修正。(filimonov)
  • DROP TABLE IF EXISTS で発生する例外を修正 #8663 (Nikita Vasilev)
  • 旧形式の MergeTree テーブルエンジンファミリーに対してユーザーが ALTER MODIFY SETTING を実行しようとした際にクラッシュが発生していた問題を修正。 #9435 (alesapin)
  • JSON関連関数において、Int64に収まらないUInt64の値をサポート。SIMDJSONをmasterブランチに更新。これにより #9209 #9344 を修正(alexey-milovidov
  • 非厳密単調な関数インデックス使用時における反転述語の評価を修正。 #9223 (Alexander Kazakov)
  • GROUP BYIN 定数の畳み込みを行わないように変更 #8868 (Amos Bird)
  • ALTER DELETE ミューテーションによってインデックスの破損が発生するバグを修正しました。これにより #9019 および #8982 が修正されます。さらに、ReplicatedMergeTreeALTER クエリで発生する極めてまれなレースコンディションも修正しました。#9048 (alesapin)
  • 設定 compile_expressions が有効になっている場合、Nullable 型を使用すると LLVMExecutableFunctionunexpected column エラーが発生することがあります #8910 (Guillaume Tassery)
  • Kafka エンジンに対する複数の修正: 1) コンシューマグループのリバランス中に発生していた重複データを修正。2) 複数パーティションから 1 回の poll でデータを取得し、一部だけをコミットした場合にまれに発生していた「穴」を修正(現在は取得したメッセージブロック全体を常に処理・コミットするようになっています)。3) ブロックサイズによるフラッシュ処理を修正(それ以前はタイムアウトによるフラッシュのみが正しく機能していました)。4) より適切なサブスクリプション手順(割り当てフィードバック付き)。5) テストがより高速に動作するように調整(デフォルトのインターバルとタイムアウトを使用)。データがこれまでドキュメントどおりにブロックサイズ単位でフラッシュされていなかったことにより、この PR によってデフォルト設定ではパフォーマンスが低下する可能性があります(最適とはいえない、より頻繁かつ小さいフラッシュが発生するため)。この変更適用後にパフォーマンス上の問題が発生した場合は、テーブルの kafka_max_block_size をより大きな値に増やしてください(例: CREATE TABLE ...Engine=Kafka ... SETTINGS ... kafka_max_block_size=524288)。修正 #7259 #8917 (filimonov)
  • PREWHERE 最適化後に一部のクエリで発生する Parameter out of bound 例外を修正しました。 #8914 (Baudouin Giard)
  • arrayZip 関数の引数で const/非 const が混在していたケースを修正しました。 #8705 (alexey-milovidov)
  • CREATE クエリの実行時に、ストレージエンジンの引数に含まれる定数式を折りたたんで評価するようにしました。データベース名が空の場合は、現在のデータベースに置き換えます。#6508#3492#9262 を修正 (tavplubix)
  • a DEFAULT b, b DEFAULT a のような単純な循環エイリアスを持つカラムを作成または追加することはできなくなりました。 #9603 (alesapin)
  • ALTER TABLE MOVE を使用している場合に、元のパーツを破損させうる二重移動に関するバグを修正しました。 #8680 (Vladimir Chebotarev)
  • interval 識別子がバッククォートなしでも正しくパースされるようにしました。また、interval 識別子をバッククォートまたは二重引用符で囲んだ場合でもクエリを実行できない不具合を修正しました。これにより #9124 が修正されました。#9142alexey-milovidov
  • bitTestAll/bitTestAny 関数のファジングテストと誤動作を修正しました。 #9143 (alexey-milovidov)
  • LIMIT n WITH TIES において、n 行目と等しい行が多数存在する場合にクラッシュや誤った行数が発生しうる問題を修正。 #9464 (tavplubix)
  • insert_quorum を有効にして書き込まれたパーツに対するミューテーションを修正。 #9463 (alesapin)
  • Poco::HTTPServer の破棄時に発生するデータ競合を修正しました。これは、サーバーを起動してすぐにシャットダウンした場合に発生する可能性がありました。 #9468 (Anton Popov)
  • 存在しないテーブルに対して SHOW CREATE TABLE a_table_that_does_not_exist を実行した際に、誤解を招きかねないエラーメッセージが表示されていた不具合を修正。 #8899 (achulkov2)
  • SELECT 句に定数があり、かつ ORDER BY 句と LIMIT 句がある場合の、特定のまれなケースで発生していた Parameters are out of bound 例外を修正しました。 #8892 (Guillaume Tassery)
  • 完了済みのミューテーションに is_done=0 のステータスが設定されてしまうことがあるミューテーションのファイナライゼーションを修正。 #9217 (alesapin)
  • 動作しないため、MergeTree テーブルに対する旧構文での ALTER ADD INDEX の実行を禁止しました。 #8822 (Mikhail Korotov)
  • サーバーの起動中は、LIVE VIEW が依存するテーブルにアクセスしないようにし、サーバーが起動できるようにします。また、LIVE VIEW をデタッチする際には、その依存関係を削除します。LIVE VIEW は実験的な機能です。 #8824 (tavplubix)
  • PREWHERE 実行中に発生する可能性がある MergeTreeRangeReader のセグメンテーションフォールトを修正。 #9106 (Anton Popov)
  • カラム TTL に関連して発生しうるチェックサム不一致を修正。#9451Anton Popov
  • ボリュームが 1 つだけの場合に、TTL ルールによってバックグラウンドでパーツが移動されなくなる不具合を修正しました。 #8672 (Vladimir Chebotarev)
  • Method createColumn() is not implemented for data type Set という問題を修正しました。これにより #7799 が解決されました。#8674alexey-milovidov
  • これにより、MUTATION の最終処理をより頻繁に行うようにしました。 #9427 (alesapin)
  • 定数を 1 減らすことで intDiv を修正 #9351 (hcz)
  • BlockIO におけるレースコンディションが発生する可能性のある問題を修正。 #9356 (Nikolai Kochetov)
  • 誤ったパラメータで作成された Kafka テーブルを使用/削除しようとするとサーバが異常終了するバグを修正しました。 #9513 (filimonov)
  • OS が timer_create 関数に対して誤った結果を返す場合のワークアラウンドを追加しました。 #8837 (alexey-milovidov)
  • min_marks_for_seek パラメータの使用方法に関する不具合を修正しました。Distributed テーブルにシャーディングキーが存在しない場合に未使用のシャードをスキップしようとした際のエラーメッセージを修正しました。 #8908 (Azat Khuzhin)

改善

  • ReplicatedMergeTree* エンジンファミリーに対して、mutation を使用した ALTER MODIFY/DROP クエリを実装しました。これにより、ALTER はメタデータ更新段階でのみブロックし、その後はブロックしません。 #8701 (alesapin)
  • CROSS を、テーブル修飾のない列名を含む WHERE 句付きの INNER JOIN に書き換えられるようにした。 #9512 (Artem Zuikov)
  • SHOW TABLES および SHOW DATABASES クエリで WHERE 句と FROM / IN 句をサポートするようにした #9076 (sundyli)
  • 設定 deduplicate_blocks_in_dependent_materialized_views を追加しました。 #9070 (urykhy)
  • 最近の変更により、MySQL クライアントがバイナリ文字列を 16 進数表記で出力するようになり、人間にとって読めなくなりました(#9032)。ClickHouse での回避策は、文字列カラムを UTF-8 としてマークすることですが、これは常にそうとは限らないものの、通常は当てはまります。#9079Yuriy Baranov
  • sumMap に String および FixedString キーのサポートを追加 #8903 (Baudouin Giard)
  • SummingMergeTree の Map で文字列キーをサポート #8933 (Baudouin Giard)
  • スレッドが例外をスローした場合でも、スレッドプールに対してスレッドの終了を通知するようにしました #8736 (Ding Xiang Fei)
  • clickhouse-benchmarkquery_id を設定可能にしました #9416 (Anton Popov)
  • ALTER TABLE ... PARTITION partition クエリで不正な式が含まれることを許可しないようにしました。これは #7192 #8835 に対応します(alexey-milovidov
  • テーブル system.table_engines は、supports_ttlsupports_sort_order などの機能対応状況に関する情報を提供するようになりました。 #8830 (Max Akhmedov)
  • デフォルトで system.metric_log を有効にします。これには、ProfileEvents と CurrentMetrics の値が collect_interval_milliseconds 間隔(デフォルトでは 1 秒)で収集された行が含まれます。このテーブルは非常に小さく(通常はメガバイトオーダーのサイズ)であり、このデータをデフォルトで収集するのは妥当です。#9225alexey-milovidov
  • グループ内のすべてのスレッドで query profiler を初期化し、例えば insert クエリを完全にプロファイルできるようにしました。これにより #6964#8874 が修正されました (Ivan)
  • 以前の構文が CREATE TEMPORARY TABLE ... と一貫していなかったため、現在は一時的な LIVE VIEWCREATE TEMPORARY LIVE VIEW ... ではなく CREATE LIVE VIEW name WITH TIMEOUT [42] ... で作成するようになりました。 #9131 (tavplubix)
  • system.text_log テーブルに書き込まれるエントリを制限するための text_log.level 設定パラメータを追加 #8809 (Azat Khuzhin)
  • TTL ルールに基づいてダウンロードしたパーツをディスク/ボリュームに配置できるようにした #8598 (Vladimir Chebotarev)
  • 外部 MySQL 辞書向けに、MySQL コネクションプールを辞書間で共有できるようにしました。このオプションにより、MySQL サーバーへの接続数を大幅に削減できます。 #9409 (Clément Rodriguez)
  • clickhouse-benchmark の出力において、補間値ではなく、各分位点に対して最も近いクエリの実行時間を表示するように変更しました。いずれかのクエリの実行時間に実際に対応する値を表示した方が望ましいためです。 #8712 (alexey-milovidov)
  • Kafka へのデータ挿入時にメッセージキーとタイムスタンプを追加できるようにしました。#7198 #8969 を修正(filimonov
  • サーバーをターミナル上で実行している場合、スレッド番号、クエリ ID、ログの優先度を色分けして表示するようにしました。これにより、開発者が相関付けられたログメッセージをより読みやすく確認できるようになります。 #8961 (alexey-milovidov)
  • Ordinary データベースでテーブルをロードする際の例外メッセージを改善しました。 #9527 (alexey-milovidov)
  • 集約関数状態を要素とする配列向けに arraySlice を実装しました。これにより #9388 および #9391 が修正されました(alexey-milovidov
  • IN 演算子の右辺で定数関数や定数配列を使用できるようにしました。 #8813 (Anton Popov)
  • system.replicas のデータ取得中に ZooKeeper の例外が発生した場合、その情報を別の列に表示するようにしました。これは #9137 #9138alexey-milovidov)の実装です。
  • 破棄時に MergeTree のデータパーツをアトミックに削除するように変更。 #8402 (Vladimir Chebotarev)
  • Distributed テーブルで行レベルセキュリティをサポート。 #8926 (Ivan)
  • 設定値に付与されたサフィックス(KB、KiB など)を認識できるようになりました。 #8072 (Mikhail Korotov)
  • 大規模な JOIN の結果を構築する際にメモリ不足 (out of memory) が発生しないようにしました。 #8637 (Artem Zuikov)
  • clickhouse-client のインタラクティブモードでの補完候補にクラスタ名を追加しました。 #8709 (alexey-milovidov)
  • グループ内のすべてのスレッドに対してクエリプロファイラを初期化します。例えば、これにより INSERT クエリの完全なプロファイリングが可能になります #8820 (Ivan)
  • system.query_log テーブルに exception_code カラムを追加しました。 #8770 (Mikhail Korotov)
  • デフォルトのサーバー設定ファイルでポート 9004 の MySQL 互換サーバーを有効にしました。設定例中のパスワード生成コマンドを修正しました。 #8771 (Yuriy Baranov)
  • ファイルシステムが読み取り専用の場合でも、シャットダウン時に異常終了しないようにしました。これにより #9094 #9100 が修正されました(alexey-milovidov
  • HTTP POST クエリで length が必須となる場合の例外メッセージを改善。 #9453 (alexey-milovidov)
  • HDFS および File エンジンならびに hdfs および file テーブル関数に _path_file の仮想列を追加 #8489 (Olga Khvostikova)
  • MATERIALIZED VIEW の内部テーブルに新しいカラムを追加した場合に、そのビューに対する挿入で発生していた Cannot find column エラーを修正しました。 #8766 #8788 (vzakaznikov) #8788 #8806 (Nikolai Kochetov) #8803 (Nikolai Kochetov)
  • ネイティブのクライアント-サーバープロトコルにおける progress の扱いを修正し、(ログと同様に)最終更新の後に progress を送信するようにしました。これは、ネイティブプロトコルを使用している一部のサードパーティーツールにのみ影響する可能性があります。 #9495 (Azat Khuzhin)
  • MySQL プロトコルを使用しているクライアント接続数を追跡するシステムメトリクスを追加。(#9013) #9015 (Eugene Klimov)
  • 今後、HTTP レスポンスには、SELECT timezone() が返すタイムゾーン値と同じ値が設定された X-ClickHouse-Timezone ヘッダーが含まれます。 #9493 (Denis Glazachev)

パフォーマンスの改善

  • IN を使用したインデックス解析のパフォーマンスを改善。#9261 (Anton Popov)
  • Logical Functions において、よりシンプルかつ効率的なコードに変更し、コードをクリーンアップ。#8718 #8728 のフォローアップ。(Alexander Kazakov)
  • C++20 の機能を用いて、より厳密なエイリアシングを保証することで、全体的なパフォーマンスを改善(影響を受けるクエリで 5%〜200% 向上)。#9304 (Amos Bird)
  • 比較関数の内部ループに対して、より厳密なエイリアシングを適用。#9327 (alexey-milovidov)
  • 算術関数の内部ループに対して、より厳密なエイリアシングを適用。#9325 (alexey-milovidov)
  • ColumnVector::replicate() の実装を約 3 倍高速化し、これを通じて ColumnConst::convertToFullColumn() が実装されています。定数を materialize するテストでも有用です。#9293 (Alexander Kazakov)
  • ColumnVector::replicate() に対する別の小さなパフォーマンス改善(materialize 関数および高階関数を高速化)。#9293 に対するさらなる改善。#9442 (Alexander Kazakov)
  • stochasticLinearRegression 集約関数のパフォーマンスを改善。このパッチは Intel によって提供されました。#8652 (alexey-milovidov)
  • reinterpretAsFixedString 関数のパフォーマンスを改善。#9342 (alexey-milovidov)
  • プロセッサパイプラインにおいて、Null フォーマットの場合はクライアントにブロックを送信しないように変更。#8797 (Nikolai Kochetov) #8767 (Alexander Kuzmenkov)

ビルド/テスト/パッケージングの改善

  • Windows Subsystem for Linux 上で例外処理が正しく動作するようになりました。詳細は https://github.com/ClickHouse-Extras/libunwind/pull/3 を参照してください。これにより #6480#9564 が解決されました(sobolevsv)。
  • clickhouse-client の対話的な行編集機能のために readlinereplxx に置き換えました #8416 (Ivan)
  • FunctionsComparison におけるビルド時間を短縮し、テンプレートのインスタンス化回数を削減しました。 #9324 (alexey-milovidov)
  • CI での clang-tidy 連携を追加しました。あわせて #6044 #9566 も参照してください(alexey-milovidov
  • CI で ClickHouse をリンクする際に、gcc の場合でも lld を使用するようになりました。 #9049 (alesapin)
  • THREAD_FUZZER_* 環境変数が設定されている場合に、スレッドスケジューリングをランダム化し、意図的な不具合(グリッチ)を挿入できるようにしました。これによりテストが容易になります。 #9459 (alexey-milovidov)
  • ステートレステストでセキュアソケットを有効にする #9288 (tavplubix)
  • SPLIT_SHARED_LIBRARIES=OFF の堅牢性を向上 #9156 (Azat Khuzhin)
  • CI 環境でサーバーがランダムにハングする場合にも "performance_introspection_and_logging" テストが安定して動作するようにしました。あわせて #9515 および #9528 も参照してください(alexey-milovidov)。
  • スタイルチェックで XML を検証するようにしました。 #9550 (alexey-milovidov)
  • テスト 00738_lock_for_inner_table における競合状態(レースコンディション)を修正しました。このテストは sleep に依存していました。 #9555 (alexey-milovidov)
  • once 型のパフォーマンス テストを削除しました。これは、すべてのパフォーマンス テストを統計的な比較モード(より信頼性が高い)で実行するために必要です。 #9557 (alexey-milovidov)
  • 算術関数のパフォーマンステストを追加しました。 #9326 (alexey-milovidov)
  • sumMap および sumMapWithOverflow 集約関数のパフォーマンス テストを追加しました。#8933 #8947 に対するフォローアップです(alexey-milovidov)。
  • スタイルチェックで ErrorCodes のスタイルを統一。 #9370 (alexey-milovidov)
  • テスト履歴用スクリプトを追加。 #8796 (alesapin)
  • GCC の警告オプション -Wsuggest-override を追加し、override キーワードを使用すべき箇所をすべて特定して修正しました。 #8760 (kreuzerkrieg)
  • Mac OS X では必ず定義されているはずの weak symbol を無視する #9538 (削除されたユーザー)
  • パフォーマンステストにおいて一部のクエリの実行時間を正規化しました。これは、すべてのパフォーマンステストを比較モードで実行するための準備の一環です。 #9565 (alexey-milovidov)
  • pytest を使用したクエリテストをサポートするために一部のテストを修正 #9062 (Ivan)
  • MSan ビルドで SSL を有効化し、ステートレステスト実行時にサーバーが起動に失敗しないようにする #9531 (tavplubix)
  • テスト結果でのデータベース置換処理を修正 #9384 (Ilya Yatsishin)
  • 各種プラットフォーム向けのビルド修正 #9381 (proller) #8755 (proller) #8631 (proller)
  • stateless-with-coverage テスト用の Docker イメージに disks セクションを追加 #9213 (Pavel Kovalenko)
  • gRPC でビルドする際にソースツリー内のファイルを使用しないようにする #9588 (Amos Bird)
  • Context から SessionCleaner を削除することでビルド時間をわずかに短縮。SessionCleaner のコードをより簡素化。 #9232 (alexey-milovidov)
  • clickhouse-test スクリプトにおけるハングしたクエリのチェックを更新 #8858 (Alexander Kazakov)
  • リポジトリから不要なファイルを削除しました。 #8843 (alexey-milovidov)
  • math のパフォーマンステストのタイプを once から loop に変更しました。 #8783 (Nikolai Kochetov)
  • コードベース向けのインタラクティブなコードブラウザ形式の HTML レポートを生成できる Docker イメージを追加。 #8781 (alesapin) Woboq Code Browser を参照。
  • MSan 環境で発生する一部のテスト失敗を抑制。 #8780 (Alexander Kuzmenkov)
  • "exception while insert" テストを高速化。このテストは debug-with-coverage ビルドで頻繁にタイムアウトします。 #8711 (alexey-milovidov)
  • libcxxlibcxxabi を master ブランチに更新しました。#9304 および #9308 に向けた準備です(alexey-milovidov
  • 不安定なテスト 00910_zookeeper_test_alter_compression_codecs を修正。 #9525 (alexey-milovidov)
  • 重複したリンカフラグを整理し、リンカが予期しないシンボルを参照しに行かないようにしました。 #9433 (Amos Bird)
  • テストイメージに clickhouse-odbc ドライバーを追加しました。これにより、ClickHouse 独自の ODBC ドライバーを介した ClickHouse 間の連携をテストできるようになります。 #9348 (filimonov)
  • ユニットテストの複数のバグを修正。 #9047 (alesapin)
  • 存在しない include ディレクトリをすべて検出して排除するために、-Wmissing-include-dirs GCC 警告を有効にしました。これは主に CMake スクリプトのエラーに起因します #8704 (kreuzerkrieg)
  • クエリプロファイラを使用できない場合の理由を記述します。これは #9049 および #9144alexey-milovidov)に対応するものです。
  • OpenSSL を upstream の master に更新しました。TLS 接続が失敗し、OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal errorSSL Exception: error:2400006E:random number generator::error retrieving entropy というメッセージが表示されることがある問題を修正しました。この問題はバージョン 20.1 で発生していました。 #8956 (alexey-milovidov)
  • サーバー用 Dockerfile を更新 #8893 (Ilya Mazaev)
  • build-gcc-from-sources スクリプトの細かな修正 #8774 (Michael Nacharov)
  • number 列を使用していないパフォーマンステストでは、numberszeros に置き換えました。これにより、よりクリーンなテスト結果が得られます。 #9600 (Nikolai Kochetov)
  • Column コンストラクタで initializer_list を使用した際にスタックオーバーフローが発生する問題を修正。 #9367 (Deleted user)
  • librdkafka を v1.3.0 にアップグレードし、Mac OS X でバンドルされた rdkafkagsasl ライブラリを有効にしました。 #9000 (Andrew Onyshchuk)
  • GCC 9.2.0 向けのビルド修正 #9306 (vxider)

ClickHouse リリース v20.1

ClickHouse リリース v20.1.16.120-stable 2020-60-26

バグ修正

  • prewhere 条件で Nullable カラムを使用した場合に発生する、まれなクラッシュを修正しました。#11608 の継続対応です。#11869Nikolai Kochetov)。
  • 高階関数内で arrayJoin を許可しないようにしました。これが原因でプロトコルの同期が破綻する問題が発生していました。この変更により #3933 がクローズされました。#11846alexey-milovidov)。
  • SELECT *, xyz.* のようなクエリが、本来はエラーとなるべきところで成功してしまっていた、予期しない挙動を修正しました。#11753hexiaoting)。
  • Values 入力フォーマットにおける複雑なリテラルの型推論の誤りにより発生していた LOGICAL_ERROR を修正しました。#11732tavplubix)。
  • 定数カラムに対する ORDER BY ... WITH FILL の問題を修正しました。#11697Anton Popov)。
  • XDBC ブリッジとの通信時に適切なタイムアウトを渡すようにしました。最近のバージョンでは、ブリッジの生存確認およびメタ情報の受信時にタイムアウトが考慮されていませんでした。#11690alexey-milovidov)。
  • 大文字・小文字を区別しないフラグ付きの正規表現をサポートしました。これにより #11101#11506 が修正されました。#11649alexey-milovidov)。
  • String に対するブルームフィルタ(データスキップインデックス)を修正しました。#11638Azat Khuzhin)。
  • prewhere 条件で Nullable カラムを使用した場合に発生する、まれなクラッシュを修正しました。(おそらく #11572 と何らかの関連があります)。#11608Nikolai Kochetov)。
  • exception.code() % 256 = 0 の場合に、clickhouse-client の終了コードが誤っていた問題を修正しました。#11601filimonov)。
  • サーバー起動時の「Mark cache size was lowered」というログメッセージにおける些細な誤りを修正しました。この変更により #11399 がクローズされました。#11589alexey-milovidov)。
  • clickhouse-server の Docker コンテナが、サーバーの生存確認において IPv6 を優先して使用するようになりました。#11550Ivan Starkov)。
  • -State 関数を用いた集約の途中で例外がスローされた場合に発生していたメモリリークを修正しました。この変更により #8995 が修正されました。#11496alexey-milovidov)。
  • 'FINAL' 修飾子および 'ORDER BY' 最適化とともに、関数でラップされた主キーを使用した場合の動作を修正しました。#10715Anton Popov)。

ClickHouse リリース v20.1.15.109-stable 2020-06-19

バグ修正

  • ALTER 実行中のテーブル構造に対して取得される過剰なロックを修正。#11790 (alesapin)。

ClickHouse リリース v20.1.14.107-stable 2020-06-11

バグ修正

  • PREWHERE column in (subquery) および ARRAY JOIN を使用したクエリで発生する Size of offsets does not match size of column エラーを修正。#11580 (Nikolai Kochetov)。

ClickHouse リリース v20.1.13.105-stable 2020-06-10

バグ修正

  • min_bytes_to_use_direct_io が有効で、PREWHERE が有効かつ SAMPLE を使用している場合、またはスレッド数が多い場合に発生しうる Data compressed with different methods エラーを修正します。これにより #11539 が修正されます。#11540alexey-milovidov)。
  • コーデックで返される圧縮後サイズを修正。 #11448 (Nikolai Kochetov).
  • 列がリテラル以外の引数を持つ圧縮コーデックを使用している場合に発生するサーバークラッシュを修正。#11365 を修正。#11431alesapin)。
  • point が NaN の場合の pointInPolygon の挙動を修正。#11375 を解決。#11421Alexey Ilyukhov)。
  • 緯度・経度の範囲外の引数が指定された場合の geohashesInBox の挙動を修正しました。 #11403 (Vasily Nemkov).
  • 外部ソートと LIMIT を伴うクエリで発生する可能性がある Pipeline stuck エラーを修正。 #11359 を修正。 #11366Nikolai Kochetov)。
  • quantilesExactWeightedArray でのクラッシュを修正。 #11337 (Nikolai Kochetov)。
  • parallel_view_processing = 1 を設定した場合の MATERIALIZED VIEW への書き込みを、再び並列処理できるようにしました。#10241 を修正。#11330Nikolai Kochetov)。
  • 抽出された JSON に、対応する閉じ括弧のない { または [ を含む文字列がある場合の visitParamExtractRaw の動作を修正。 #11318 (Ewout)。
  • ThreadPool におけるごくまれに発生するレースコンディションを修正。 #11314 (alexey-milovidov)。
  • 変換処理における未初期化メモリ使用の可能性を修正しました。例: SELECT toIntervalSecond(now64())#11311alexey-milovidov)。
  • プライマリキーに Array 型カラムが含まれており、クエリがそのカラムに対して empty または notEmpty 関数でフィルタしている場合に、インデックスの解析が機能しない問題を修正しました。これにより #11286 の問題が解決されます。#11303alexey-milovidov)。
  • クエリ実行速度の推定が不正確になり、クエリが max_network_bandwidthmax_execution_speed、または priority 設定によってスロットルされている場合に min_execution_speed の制限が機能しない、または正しく機能しないバグを修正しました。timeout_before_checking_execution_speed のデフォルト値を 0 以外に変更しました。そうしないと、min_execution_speed および max_execution_speed の設定が効果を持たないためです。これにより #11297 を修正しました。これにより #5732 を修正しました。これにより #6228 を修正しました。操作性の改善: clickhouse-client において、例外メッセージとプログレスバーが連結されて表示されてしまうことを回避しました。#11296 (alexey-milovidov)。
  • Protobuf 形式の不正なデータを読み込む際に発生するクラッシュを修正しました。これにより #5957#11203 が修正されます。#11258Vitaly Baranov)。
  • Array(Array(LowCardinality)) をキャプチャ引数に取る高階関数で発生する可能性のあるエラー「Cannot capture column」を修正。 #11185 (Nikolai Kochetov).
  • バックグラウンドマージ中に変更されるカラム(SummingMergeTree、AggregatingMergeTree、TTL GROUP BY の場合など)に依存するデータスキッピングインデックスは、正しく計算されていませんでした。この問題は、マージ後にインデックスを計算するように処理の順序を変更し、マージ後のデータに対してインデックスが計算されるようにすることで修正されました。 #11162 (Azat Khuzhin).
  • 何もファイナライズされなかった場合には、ミューテーションのファイナライズタスクでのログ出力を行わないようにしました。 #11109 (alesapin).
  • parseDateTime64BestEffort の引数解決に関する不具合を修正しました。 #10925. #11038 (Vasily Nemkov).
  • メソッド getRawData() における生データサイズの誤った値を修正。#10964 (Igr).
  • Distributedテーブルにおけるタプルの後方互換性の問題を修正。 #10889 (Anton Popov).
  • StringHashTable で、キーが存在しない場合に発生していた SIGSEGV を修正。 #10870 (Azat Khuzhin).
  • ReplicatedMergeTree において、あるレプリカが非アクティブになった後もそのレプリカを待ち続けてしまい、OPTIMIZE クエリ内の一部の ALTER がハングする可能性があった不具合を修正しました。 #10849 (tavplubix)。
  • Block::sortColumns() 実行後のカラム順を修正し、実際のユースケース(Buffer エンジン)に影響することを示すテストも追加。#10826 (Azat Khuzhin)。
  • 識別子のクオートを行わないよう指定された場合の ODBC ブリッジの不具合を修正しました。これにより #7984 が解決されます。 #10821 (alexey-milovidov)。
  • DateLUT における UBSan および MSan の報告を修正。 #10798 (alexey-milovidov).
    • キー条件で正しい型変換を行うために src_type を使用するようにしました。これにより #6287 が修正されました。#10791 (Andrew Onyshchuk).
  • parallel_view_processing の動作を修正しました。これにより、例外が発生した場合でも、すべての MATERIALIZED VIEW への挿入処理が最後まで実行されるようになりました。#10241 を修正しました。#10757Nikolai Kochetov)。
  • -State と組み合わせた場合の -OrNull および -OrDefault を修正しました。 #10741 (hcz).
  • 消えてしまう合計値の問題を修正しました。クエリに JOIN や外側の WHERE 条件を持つサブクエリが含まれている場合、合計値がフィルタリングされてしまうことがありました。#10674#10698Nikolai Kochetov)。
  • 1 つのクエリ内で同一の集合に対して IN 演算子を複数回使用している場合の処理を修正しました。 #10686 (Anton Popov).
  • AggregateTransform コンストラクタのパラメータ順を修正。 #10667 (palasonic1).
  • distributed_aggregation_memory_efficient が有効な場合にリモートクエリが並列実行されない問題を修正しました。#10655 を解決。#10664Nikolai Kochetov)。
  • HAVING 句を含むクエリ(つまりクエリ発行サーバー側でのフィルタリングが必要な場合)に対して、式の順序を保持することで分散クエリの述語最適化(enable_optimize_predicate_expression=1)を修正します(これだけで問題は解消されます)。さらに、アグリゲータがインデックスではなくカラム名を使用するように強制します。修正: #10613, #11413#10621Azat Khuzhin)。
  • エラー the BloomFilter false positive must be a double number between 0 and 1 を修正しました #10551#10569Winter Zhang)。
  • デフォルト式の型が列の型と異なる ALIAS 列に対する SELECT を修正。 #10563 (Azat Khuzhin).
    • DateTime64 と String の値の比較を実装しました(DateTime の場合と同様に)。 #10560 (Vasily Nemkov)

ClickHouse リリース v20.1.12.86, 2020-05-26

不具合修正

  • 20.1 より前のバージョンとの間で発生していた二段階集約の非互換性を修正しました。この非互換性は、イニシエーターノードとリモートノードで異なるバージョンの ClickHouse を使用しており、GROUP BY の結果セットのサイズが大きく、かつ単一の String フィールドで集約を行っている場合に発生します。その結果、単一のキーに対してマージされていない複数行が結果に含まれる問題がありました。#10952alexey-milovidov)。
  • SummingMergeTree において、マージ後に発生する可能性があった LowCardinality(FixedString) キー列のデータ破損を修正しました。 #10489 を解決します。 #10721 (Nikolai Kochetov)。
  • バグを修正しました。このバグにより、readonly=2 かつ cancel_http_readonly_queries_on_client_close=1 の場合に、クライアント切断時に HTTP リクエストがハングすることがありました。 #7939#7019#7736#7091 を修正しました。 #10684tavplubix)。
  • SYSTEM DROP DNS CACHE クエリを実行した際に、特定の IP アドレスからの接続が許可されているかを確認するために使用されるキャッシュも同時に削除されてしまうバグを修正しました。 #10608 (tavplubix).
  • このクエリに依存テーブルが含まれている場合に、MATERIALIZED VIEW の内部クエリ内で誤ったスカラー値が返される問題を修正しました。 #10603 (Nikolai Kochetov).
  • すべてのパーツに対するミューテーションが完了しているにもかかわらず、is_done=0 の状態のままハングしてしまう不具合を修正しました。 #10526 (alesapin).
  • UTC からのオフセットが小数のタイムゾーンにおいて、Unix epoch の開始時点で発生していたオーバーフローの問題を修正しました。これにより #9335 が解決されます。#10513alexey-milovidov)。
  • Distributed ストレージの不適切な終了処理を修正しました。 #10491 (Azat Khuzhin).
  • simpleLinearRegression において、大きな整数を扱う際に発生していたオーバーフローを修正しました。 #10474 (hcz).
  • ATTACH DATABASE が失敗した際にメタデータディレクトリが削除される問題を修正しました。 #10442 (Winter Zhang).
  • BloomFilter インデックスを作成する際の引数の数および型を検査する機能を追加しました #9623#10431Winter Zhang)。
  • ARRAY JOINORDER BYLIMIT を含むクエリで不完全な結果が返される可能性があった問題を修正しました。これにより #10226 が解決しました。 #10427alexey-milovidov)。
  • skip_unavailable_shards よりも fallback_to_stale_replicas の使用を推奨します。 #10422 (Azat Khuzhin).
  • Array(Tuple(...)) データ型の誤ったフラット化処理を修正しました。これにより #10259 が修正されました。#10390alexey-milovidov)。
  • HashTable の誤った動作を修正し、バッファから HashMap を読み込もうとした際にコンパイルエラーが発生する原因となっていた問題を修正しました。 #10386 (palasonic1).
  • ConcatProcessor において、リモートクエリの実行中に発生する可能性があった Pipeline stuck エラーを修正しました。 #10381 (Nikolai Kochetov).
  • max_rows_to_group_bygroup_by_overflow_mode = 'break' の組み合わせで発生する Pipeline stuck エラーを修正しました。 #10279 (Nikolai Kochetov).
  • 一部のデータがクォーラム付きで挿入された後に、DROP PARTITIONTTL などで削除された場合に、INSERT がハングしたり、SELECT で誤って例外が発生したりしていた複数のバグを修正しました。これにより #9946 が修正されました。 #10188 (Nikita Mikhaylov)。
  • リモートサーバーで 18.12.17 より前のバージョンが使用され、クエリを開始するサーバーではより新しいバージョンが使用されており、かつ GROUP BY で固定キーと非固定キーの両方を使用し、さらに二段階の GROUP BY メソッドが有効になっている場合に発生する非互換性を修正しました。 #3254 (alexey-milovidov).

ビルド/テスト/パッケージングの改善

  • clickhouse-server の Docker イメージに CA証明書を追加しました。 #10476 (filimonov).

ClickHouse リリース v20.1.10.70, 2020-04-17

バグ修正

  • まれに発生しうる例外 Cannot drain connections: cancel first を修正しました。 #10239 (Nikolai Kochetov).
  • ClickHouse で、ユーザーが ENGINE = Replicated* を使用するテーブルに対して ALTER UPDATE/DELETE を実行しようとした際に 'Unknown function lambda.' というエラーメッセージがスローされる不具合を修正しました。非決定的関数のチェックが、ラムダ式も正しく扱うようになりました。 #10237 (Alexander Kazakov).
  • 曜日が火曜日または木曜日の RFC-2822 形式の文字列に対する parseDateTimeBestEffort の処理を修正しました。これにより #10082 が解決されます。#10214alexey-milovidov)。
  • JOIN の内部にある定数のカラム名が、JOIN の外側にある定数の名前と衝突しないように修正しました。 #10207 (alexey-milovidov).
  • system.numberssystem.zeros のような無限ソースから読み取る際に、本来は LIMIT で停止すべきクエリが終了せずに実行され続けてしまう可能性がある問題を修正。#10206 (Nikolai Kochetov)。
  • 特定のケースにおいて、arrayJoin 関数が使用されている場合の move-to-prewhere 最適化を修正しました。これにより #10092 が解決されました。 #10195alexey-milovidov)。
  • ミューテーションにおける非決定的関数の使用制限を緩和できる allow_nondeterministic_mutations 設定を追加しました。 #10186 (filimonov).
  • Distributed エンジンを使用するテーブルへの INSERT 時に構造が一致しない場合に、ブロックを変換するようになりました。 #10135 (Azat Khuzhin).
  • Distributed テーブルの構造が配下のテーブルと異なる場合に、INSERT 実行時に発生する SIGSEGV を修正。 #10105 (Azat Khuzhin).
  • JOIN および UNION ALL を含むクエリで行が失われる可能性のある問題を修正。#9826#10113 を修正。#10099Nikolai Kochetov)。
  • MySQL データベースエンジン向けに引数チェックを追加し、識別子引数をサポートしました。 #10077 (Winter Zhang).
  • localhost 上の ClickHouse サーバーを辞書ソースとして使用する ClickHouse 辞書に存在したバグを修正しました。辞書とソースの型が互換性を持たない場合に、メモリ破壊が発生する可能性がありました。 #10071 (alesapin).
  • エラー Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform を修正しました。これは、distributed_aggregation_memory_efficient 設定が有効になっていて、分散クエリが異なるシャードから異なるレベルで集約されたデータ(単一レベルおよび二段階の集約が混在している状態)を読み込んだ際に発生していました。 #10063 (Nikolai Kochetov)。
  • 末尾にゼロバイトを含む文字列キーに対する GROUP BY で発生する可能性のあるセグメンテーションフォルトを修正しました(#8636, #8925)。 #10025Alexander Kuzmenkov)。
  • 一部のデータベースに対するクエリを処理する特定の段階で、必要なテーブルが取得されていなかった不具合を修正しました。これにより #9699 を修正します。#9949achulkov2)。
  • JOINTOTALS を併用した場合に発生する 'Not found column in block' エラーを修正しました。 #9839 の不具合に対応。 #9939 (Artem Zuikov).
  • サーバー起動時に ON CLUSTER DDL クエリがフリーズするバグを修正しました。 #9927 (Gagan Arneja).
  • Join テーブルエンジン向けの TRUNCATE の動作を修正(#9917)。#9920Amos Bird)。
  • ALTER クエリで発生していた 'scalar does not exist' エラーを修正 (#9878)。#9904Amos Bird)。
  • ReplicatedMergeTree における drop と optimize の間で発生する競合状態を修正。 #9901 (alesapin).
  • ATTACH PART における DeleteOnDestroy のロジックを修正し、アタッチされたパーツが自動的に削除されてしまう可能性があった問題を解消し、いくつかのテストを追加しました。 #9410 (Vladimir Chebotarev).

ビルド/テスト/パッケージングの改善

ClickHouse リリース v20.1.9.54, 2020-03-28

バグ修正

  • 分散テーブル上のクエリに PREWHEREWHERE があり、かつ SET distributed_product_mode = 'local' が設定されている場合に発生する 'Different expressions with the same alias' エラーを修正。#9871 (Artem Zuikov)。
  • 複合主キーを持つテーブルに対する mutation で発生していた過剰なメモリ消費を修正。これにより #9850 が修正されます。#9860 (alesapin)。
  • INSERT クエリについて、これまでは例外を投げていたところを、イニシエータから受け取った設定値をシャード側の制約に収まるよう補正するように変更。この修正により、異なる制約を持つシャードに対しても INSERT クエリを送信できるようになりました。この変更は、#9447 に対する修正をさらに改善するものです。#9852 (Vitaly Baranov)。
  • クライアント側で発生しうる Got 0 in totals chunk, expected 1 という例外を修正。これは、右側の結合テーブルの行数が 0 の場合の JOIN を伴うクエリで発生していました。例: select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;#9777 を修正。#9823 (Nikolai Kochetov)。
  • 型を変換できない場合に optimize_skip_unused_shards で発生する可能性があった SIGSEGV を修正。#9804 (Azat Khuzhin)。
  • 関数引数のタイムゾーンが正しく使用されていなかったいくつかのケースを修正。#9574 (Vasily Nemkov)。

改善

  • mutation では単一スレッドで単一の順序付けられたパートから読み込むため、mutation からは ORDER BY ステージを削除。また、mutation 内の行の順序がソートキー順に並んでおり、その順序が崩れていないことをチェックする処理を追加。#9886 (alesapin)。

ビルド/テスト/パッケージングの改善

  • 重複したリンカフラグを整理し、リンカが予期しないシンボルを探索しないようにしました。#9433 (Amos Bird)。

ClickHouse リリース v20.1.8.41, 2020-03-20

バグ修正

  • ParallelAggregatingBlockInputStream::Handler::onFinish/onFinishThread 内の未処理例外が原因で、Cannot schedule a task エラーが恒久的に発生しうる問題を修正しました。この修正は #6833 を解決します。#9154Azat Khuzhin
  • ALTER クエリ(mutations)でメモリ消費量が過大になる問題を修正しました。この修正は #9533 および #9670 を解決します。#9754alesapin
  • 外部ディクショナリの DDL におけるバッククォート処理のバグを修正しました。この修正は #9619 を解決します。#9734alesapin

ClickHouse リリース v20.1.7.38, 2020-03-18

バグ修正

  • sumKahansumWithOverflow の内部関数名の誤りを修正しました。これらの関数をリモートクエリで使用した際に、例外が発生していました。 #9636 (Azat Khuzhin)。この問題はすべての ClickHouse リリースに影響していました。
  • 内部レプリケーションを使用する Distributed テーブルに対する ALTER ON CLUSTER を許可するようにしました。これにより #3268 を修正しました。 #9617shinoi2)。この問題はすべての ClickHouse リリースで発生していました。
  • MergeTreeRangeReader において発生しうる例外 Size of filter does not match size of column および Invalid number of rows in Chunk を修正しました。これらは一部のケースで PREWHERE 句の実行中に発生する可能性がありました。#9132 を修正。#9612Anton Popov
  • 問題を修正しました。time + 1 のような単純な算術式で記述した場合に(time + INTERVAL 1 SECOND のような式とは対照的に)、タイムゾーンが保持されていませんでした。この修正は #5743 を解決します。 #9323alexey-milovidov)。この問題はすべての ClickHouse リリースに影響していました。
  • これにより、a DEFAULT b, b DEFAULT a のような単純な循環エイリアスを持つカラムを作成または追加することはできなくなりました。 #9603 (alesapin)
  • base64 エンコードされた値の末尾のパディングが不正な形式になる場合がある不具合を修正しました。base64 ライブラリを更新しました。これにより #9491 が解決され、#9492 #9500 がクローズされました(alexey-milovidov)。
  • Poco::HTTPServer の破棄時に発生するデータレースを修正しました。サーバーが起動してすぐにシャットダウンされた場合に発生する可能性がありました。 #9468 (Anton Popov)
  • LIMIT n WITH TIES で、n 番目の行と同一の行が多数存在する場合にクラッシュや行数の誤りが発生する可能性がある問題を修正。 #9464 (tavplubix)
  • カラム TTL によって発生し得るチェックサム不一致を修正。 #9451 (Anton Popov)
  • 古い形式の MergeTree テーブルエンジンファミリーに対してユーザーが ALTER MODIFY SETTING を実行しようとした際に発生するクラッシュの問題を修正。 #9435 (alesapin)
  • これからは mutations の finalize がより頻繁に実行されるようになりました。 #9427 (alesapin)
  • #8598 によって導入されたレプリケーションプロトコルの非互換性を修正。 #9412 (alesapin)
  • 配列型の bloom_filter インデックスにおける not(has()) の動作を修正。 #9407 (achimbab)
  • haystack がゼロバイトの場合の match 関数および extract 関数の動作を修正しました。haystack が定数のときの動作が不正でした。これにより #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov) が修正されます。

ビルド/テスト/パッケージングの改善

ClickHouse リリース v20.1.6.30, 2020-03-05

バグ修正

  • T64 コーデックで圧縮した際に発生するデータ互換性の問題を修正。
  • 1 つのスレッドで MergeTree テーブルから読み込む際の範囲の順序を修正しました。 #8964 を修正。
  • PREWHERE 実行時に MergeTreeRangeReader でセグメンテーションフォルトが発生する可能性のあった不具合を修正しました。#9064 を解決。
  • reinterpretAsFixedStringString ではなく FixedString を返すように修正しました。 #9052 (oandrew)
  • joinGet が nullable な戻り値型を返せるように修正。 #8919 を修正 #9014 (amosbird)
  • bitTestAll/bitTestAny 関数におけるファズテストと誤った動作を修正。 #9143 (alexey-milovidov)
  • haystack のバイト数が 0 の場合における match および extract 関数の動作を修正しました。haystack が定数のときに動作が誤っていました。#9160 を修正しました。 #9163 (alexey-milovidov)
  • 非厳密単調な関数インデックス使用時における反転述語の評価を修正。#9034 を修正。 #9223 (Akazz)
  • WHERE 句に [NOT] LIKE 演算子がある場合に、CROSSINNER JOIN に書き換えられるようにしました。#9191 を修正しました。
  • Log エンジンのテーブルで、先頭の列(複数可)をエイリアス列として使用できるようにしました。 #9231 (abyss7)
  • IN() 内でのカンマ結合を許可し、#7314 を修正。 #9251 (4ertus2)
  • ALTER MODIFY/ADD クエリのロジックを改善しました。これにより、型を指定せずにカラムを ADD することはできなくなり、MODIFY によるデフォルト式の変更ではカラムの型は変わらず、MODIFY による型の変更でもデフォルト式の値は失われません。 #8669 を修正しました。 #9227 (alesapin)
  • mutation の完了処理を修正し、既に完了している mutation のステータスが is_done=0 になることがある問題を解消。 #9217 (alesapin)
  • system.numbers および system.numbers_mt 向けに「Processors」パイプラインをサポートするようにしました。これにより、max_execution_time が適用されないバグも修正されています。 #7796 (KochetovNicolai)
  • DictCacheKeysRequestedFound メトリクスの誤ったカウント処理を修正。 #9411 (nikitamikhaylov)
  • ATTACH PARTITION FROMREPLACE PARTITIONMOVE TO TABLE でストレージポリシーをチェックする処理を追加しました。これにより、再起動後にパーツのデータへアクセスできなくなり、ClickHouse が起動しなくなる可能性のあった問題を防ぎます。 #9383 (excitoon)
  • MergeTreeIndexSet における UBSan のレポートを修正しました。これにより #9250 が解決されました。 #9365 (alexey-milovidov)
  • BlockIO で発生する可能性のあったデータレースを修正。 #9356 (KochetovNicolai)
  • JSON 関連関数で Int64 に収まらない UInt64 型の数値をサポート。SIMDJSON を master の最新版に更新。これにより #9209 が修正されます。 #9344 (alexey-milovidov)
  • データディレクトリが別のデバイスにマウントされている場合に、空き容量が正しく計算されない問題を修正します。デフォルトディスクでは、data サブディレクトリから空き容量を計算します。これにより #7441 が修正されます。 #9257 (millb)
  • OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error and SSL Exception: error:2400006E:random number generator::error retrieving entropy. というメッセージが表示されて TLS 接続が失敗することがある問題を修正しました。OpenSSL を upstream の master ブランチの最新版に更新しました。 #8956 (alexey-milovidov)
  • CREATE クエリを実行する際、ストレージエンジンの引数に含まれる定数式を畳み込みます。空のデータベース名は現在のデータベースに置き換えます。#6508#3492 を修正します。さらに、ClickHouseDictionarySource におけるローカルアドレスのチェックも修正します。 #9262 (tavplubix)
  • StorageMerge におけるセグメンテーションフォルトを修正。StorageFile から読み取る際に発生する可能性がありました。 #9387 (tabplubix)
  • まれに発生する、サフィックスを読み取った後コミットする前に例外が発生した場合でも、Kafka でデータが失われないようにしました。#9378 の修正。関連: #7175 #9507 (filimonov)
  • 誤ったパラメータで作成された Kafka テーブルを使用または DROP しようとした際にサーバーがクラッシュしてしまうバグを修正しました。 #9494 に対する修正です。#9507 を取り込みました。 #9513 (filimonov)

新機能

  • マテリアライズドビューを持つテーブルへの冪等な挿入の挙動を制御するために、deduplicate_blocks_in_dependent_materialized_views オプションを追加しました。この新機能は、Altinity からの特別なリクエストによりバグ修正リリースに追加されました。 #9070 (urykhy)

ClickHouse リリース v20.1.2.4, 2020-01-22

後方互換性のない変更

  • 設定 merge_tree_uniform_read_distribution を廃止しました。サーバーは依然としてこの設定を認識しますが、効果はありません。 #8308 (alexey-milovidov)
  • 関数 greatCircleDistance の戻り値の型を Float32 に変更しました。これは、計算結果が現在 Float32 であるためです。 #7993 (alexey-milovidov)
  • クエリパラメータは、エスケープ済み形式で表現されることが求められるようになりました。たとえば、文字列 a<tab>b を渡すには a\tb または a\<tab>b と記述する必要があり、それに対応して URL では a%5Ctb または a%5C%09b と記述します。これは、\N として NULL を渡せるようにするために必要な変更です。これにより #7488 が修正されます。 #8517 (alexey-milovidov)
  • ReplicatedMergeTree に対して、use_minimalistic_part_header_in_zookeeper 設定をデフォルトで有効化しました。これにより ZooKeeper に保存されるデータ量が大幅に削減されます。この設定はバージョン 19.1 からサポートされており、すでに半年以上、複数のサービスの本番環境で問題なく利用しています。19.1 より古いバージョンにダウングレードする可能性がある場合は、この設定を無効にしてください。 #6850 (alexey-milovidov)
  • データスキッピングインデックスは本番環境で利用可能な状態となり、デフォルトで有効になりました。allow_experimental_data_skipping_indicesallow_experimental_cross_to_join_conversion および allow_experimental_multiple_joins_emulation 設定は廃止され、何の効果も持たなくなりました。 #7974 (alexey-milovidov)
  • JOIN 演算と整合する StorageJoin 用の新しい ANY JOIN ロジックを追加しました。挙動を変更せずにアップグレードするには、Engine Join テーブルのメタデータに SETTINGS any_join_distinct_right_table_keys = 1 を追加するか、アップグレード後にこれらのテーブルを再作成する必要があります。 #8400 (Artem Zuikov)
  • ログ設定の変更を反映させるには、サーバーの再起動を必須としました。これは、サーバーが削除済みのログファイルにログを書き出してしまうバグ(#8696 を参照)を回避するための一時的なワークアラウンドです。 #8707 (Alexander Kuzmenkov)

新機能

  • system.merges にパートのパスに関する情報を追加しました。 #8043 (Vladimir Chebotarev)
  • ON CLUSTER モードで SYSTEM RELOAD DICTIONARY クエリを実行できる機能を追加しました。 #8288 (Guillaume Tassery)
  • ON CLUSTER モードで CREATE DICTIONARY クエリを実行できる機能を追加しました。 #8163 (alesapin)
  • users.xml 内のユーザープロファイルは、複数のプロファイルを継承できるようになりました。 #8343 (Mikhail f. Shiryaev)
  • すべてのサーバースレッドのスタックトレースを確認できる system.stack_trace テーブルを追加しました。これは、開発者がサーバーの状態を調査するのに役立ちます。これにより #7576 が修正されました。 #8344 (alexey-milovidov)
  • サブ秒精度を指定可能な DateTime64 データ型を追加。 #7170 (Vasily Nemkov)
  • クラスタ内の全ノードを対象にクエリを実行できるテーブル関数 clusterAllReplicas を追加しました。 #8493 (kiran sunkari)
  • 離散特徴量の情報値を計算する集約関数 categoricalInformationValue を追加。 #8117 (hcz)
  • CSVTSVJSONEachRow 形式のデータファイルのパースを並列化し、高速化しました。 #7780 (Alexander Kuzmenkov)
  • バンカーズラウンディングを行う bankerRound 関数を追加。 #8112 (hcz)
  • リージョン名の組み込み辞書で、さらに多くの言語をサポートするようにしました: 'ru', 'en', 'ua', 'uk', 'by', 'kz', 'tr', 'de', 'uz', 'lv', 'lt', 'et', 'pt', 'he', 'vi'. #8189 (alexey-milovidov)
  • ANY JOIN ロジックの一貫性が向上しました。これにより、t1 ANY LEFT JOIN t2t2 ANY RIGHT JOIN t1 と同等になりました。 #7665 (Artem Zuikov)
  • ANY INNER JOIN の従来の挙動を有効にするための設定 any_join_distinct_right_table_keys を追加しました。 #7665 (Artem Zuikov)
  • 新しい SEMI および ANTI JOIN を追加しました。以前の ANY INNER JOIN の動作は、現在は SEMI LEFT JOIN として利用できます。 #7665 (Artem Zuikov)
  • File エンジンおよび file テーブル関数に Distributed フォーマットを追加し、Distributed テーブルへの非同期インサートによって生成された .bin ファイルを読み込めるようにしました。 #8535 (Nikolai Kochetov)
  • runningAccumulate にオプションのリセット列引数を追加し、新しいキー値ごとに集計結果をリセットできるようにしました。 #8326 (Sergey Kononenko)
  • ClickHouse を Prometheus のエンドポイントとして利用できる機能を追加。 #7900 (vdimir)
  • config.xml にセクション <remote_url_allow_hosts> が追加され、リモートテーブルエンジンおよびテーブル関数 URLS3HDFS で許可されるホストを制限できるようになりました。 #7154 (Mikhail Korotov)
  • 球面上の距離を度単位で計算する関数 greatCircleAngle を追加しました。 #8105 (alexey-milovidov)
  • H3 ライブラリと整合するよう、地球半径の値を変更しました。 #8105 (alexey-milovidov)
  • 入力および出力用に JSONCompactEachRowJSONCompactEachRowWithNamesAndTypes フォーマットを追加しました。 #7841 (Mikhail Korotov)
  • ファイル関連のテーブルエンジンおよびテーブル関数(FileS3URLHDFS)に、追加のエンジンパラメータまたはファイル拡張子に応じて gzip ファイルを読み書きできる機能を追加しました。 #7840 (Andrey Bodrov)
  • randomASCII(length) 関数を追加しました。この関数は、ランダムな ASCII 印字可能文字から構成される文字列を生成します。 #8401 (BayoNet)
  • JSON 文字列から未パースの JSON 配列要素をそのまま含む配列を返す関数 JSONExtractArrayRaw を追加。 #8081 (Oleg Matrokhin)
  • 同じ長さの複数の配列を1つのタプルの配列に結合する arrayZip 関数を追加。 #8149 (Winter Zhang)
  • 設定された TTL 式に従ってディスク間でデータを移動できる機能を、*MergeTree テーブルエンジンファミリーに追加。 #8140 (Vladimir Chebotarev)
  • 加重平均を計算するための新しい集約関数 avgWeighted を追加しました。 #7898 (Andrey Bodrov)
  • TSVTSKVCSVJSONEachRow フォーマットでは、並列解析が既定で有効になりました。 #7894 (Nikita Mikhaylov)
  • H3 ライブラリの地理空間関数 h3GetResolutionh3EdgeAngleh3EdgeLengthh3IsValidh3kRing をいくつか追加しました。 #8034 (Konstantin Malanchev)
  • ファイル関連のストレージおよびテーブル関数で、Brotli(br)圧縮をサポートしました。これにより、#8156 が修正されました。#8526alexey-milovidov
  • SimpleAggregationFunction 型に groupBit* 関数を追加しました。 #8485 (Guillaume Tassery)

バグ修正

  • Distributed エンジンを使用するテーブルのリネーム処理を修正。問題 #7868 を修正。#8306 (tavplubix)
  • 辞書で、ClickHouse 以外の SQL 方言では任意の文字列内の属性に EXPRESSION を使用できるようになりました。 #8098 (alesapin)
  • 不具合のあった INSERT SELECT FROM mysql(...) クエリを修正。この変更により #8070 および #7960 が解決される。 #8234 (tavplubix)
  • JSONEachRow からデフォルトの Tuple を挿入する際に発生するエラー "Mismatch column sizes" を修正。 この変更により #5653 が解決されます。 #8606 (tavplubix)
  • これにより、LIMIT BY と併用して WITH TIES を使用した場合に例外がスローされるようになりました。また、LIMIT BY と併用して TOP も使用できるようになりました。これにより #7472 が修正されました。 #7637 (Nikita Mikhaylov)
  • clickhouse-odbc-bridge バイナリにおける最新の glibc バージョンへの意図しない依存を修正しました。 #8046 (Amos Bird)
  • *MergeTree エンジンファミリーの check 関数のバグを修正しました。これにより、最後の granule と最後の mark(non-final)の行数が同じ場合でもチェックが失敗しないようになりました。 #8047 (alesapin)
  • 基礎となる数値型がテーブルで指定された型と同一の場合に、ALTER クエリ実行後の Enum* カラムへの挿入が正しく動作しない問題を修正しました。これにより #7836 が解決されます。 #7908 (Anton Popov)
  • 関数 substring に対して、負の非定数「size」引数を許可しました。本来は許可されるべきところが、誤って禁止されていました。この変更により #4832 が修正されました。#7703alexey-milovidov
  • (O|J)DBC テーブルエンジンに誤った数の引数が渡された場合に発生するパースのバグを修正。 #7709 (alesapin)
  • syslog にログを送信する際、実行中の ClickHouse プロセスのコマンド名を使用するように変更しました。以前のバージョンでは、コマンド名の代わりに空文字列が使用されていました。 #8460 (Michael Nacharov)
  • localhost の許可ホストチェックを修正。この PR では、#8241 で提供された解決策を訂正します。#8342Vitaly Baranov
  • 長い文字列引数を扱う argMin および argMax 関数で、結果が runningAccumulate 関数で使用される場合にまれに発生するクラッシュを修正しました。これにより #8325 および #8341 が解決されました (dinosaur)
  • Buffer エンジンを使用するテーブルにおけるメモリのオーバーコミットを修正。 #8345 (Azat Khuzhin)
  • 引数の1つとして NULL を受け取り、NULL 以外を返すことができる関数における潜在的なバグを修正しました。 #8196 (alexey-milovidov)
  • MergeTree テーブルエンジンのバックグラウンド処理のためのスレッドプールにおけるメトリクス計算を改善。 #8194 (Vladimir Chebotarev)
  • 行レベルのテーブルフィルタがある場合の WHERE 句内での IN 関数の動作を修正。これにより #6687 #8357 を修正 (Ivan)
  • 設定値として指定された整数値が最後まで完全にパースされなかった場合、例外がスローされるようになりました。 #7678 (Mikhail Korotov)
  • 2つを超えるローカルシャードを持つ分散テーブルへのクエリで集約関数を使用した際に例外が発生する問題を修正。 #8164 (小路)
  • Bloom filter が長さ 0 の配列も処理できるようになり、冗長な計算を行わなくなりました。 #8242 (achimbab)
  • クライアントホストが許可されているかを確認する処理を修正し、users.xml で指定された host_regexp とクライアントホストを照合するようにしました。 #8241 (Vitaly Baranov)
  • 複数の JOIN ON 句で誤検知を引き起こしていた列の曖昧さチェックを緩和しました。 #8385 (Artem Zuikov)
  • String データ型の値(UTF-8 検証が必要)を含むデータを JSON または XML 形式で送信または書き込めない場合、あるいは Brotli アルゴリズムで結果データを圧縮する場合やその他の稀なケースにサーバーがクラッシュ(std::terminate)する可能性があった不具合を修正しました。これにより #7603 #8384 が修正されました(alexey-milovidov
  • CI によって検出された StorageDistributedDirectoryMonitor のレースコンディションを修正。これにより #8364 を解決。#8383Nikolai Kochetov
  • *MergeTree テーブルエンジンファミリーにおけるバックグラウンドでのマージ処理が、ストレージポリシーのボリュームの順序をこれまでより正確に保持するようになりました。 #8549 (Vladimir Chebotarev)
  • テーブルエンジン KafkaNative フォーマットで正しく動作するようになりました。これにより #6731 #7337 #8003 が修正されました。 #8016 (filimonov)
  • ヘッダー付きの固定フォーマット(CSVWithNames など)で、テーブルエンジン Kafka に対して EOF に関する例外をスローしていた問題を修正しました。#8016 (filimonov)
  • IN 句の右側でサブクエリからセットを作成する処理に存在したバグを修正しました。これにより、#5767 および #2542 が解決されました。 #7755 (Nikita Mikhaylov)
  • ストレージ File からの読み取り時に発生する可能性のあるクラッシュを修正。 #7756 (Nikolai Kochetov)
  • list 型カラムを含む Parquet 形式ファイルの読み込みを修正しました。 #8334 (maxulan)
  • max_parallel_replicas > 1 の場合に、サンプリングキーに依存した PREWHERE 条件を含む分散クエリで発生する Not found column エラーを修正。 #7913 (Nikolai Kochetov)
  • テーブルのエイリアスに依存する PREWHERE 句を使用しているクエリで、主キー条件によって結果セットが空になった場合に発生していた Not found column エラーを修正しました。 #7911 (Nikolai Kochetov)
  • Nullable 型の引数を取る場合の関数 randrandConstant の戻り値の型を修正しました。これらの関数は常に UInt32 を返し、Nullable(UInt32) を返すことはなくなりました。 #8204 (Nikolai Kochetov)
  • WITH FILL 式に対する述語プッシュダウンを無効化しました。これにより #7784 が修正されました。 #7789 (Winter Zhang)
  • FINAL 句使用時に SummingMergeTree テーブルで count() の結果が誤っていた問題を修正。 #3280 #7786 (Nikita Mikhaylov)
  • リモートサーバーからの定数関数で誤った結果が返される可能性があった問題を修正しました。これは、version()uptime() など、サーバーごとに異なる定数値を返す関数を含むクエリで発生していました。この修正により #7666 が解決されました。#7689Nikolai Kochetov
  • 誤った結果を引き起こしていた push-down predicate 最適化の複雑なバグを修正しました。これにより、push-down predicate 最適化に関する多くの問題が解決されます。 #8503 (Winter Zhang)
  • CREATE TABLE .. AS dictionary クエリで発生するクラッシュを修正。 #8508 (Azat Khuzhin)
  • .g4 ファイル内の ClickHouse 構文をいくつか改善しました。 #8294 (taiyang-li)
  • Join エンジンを使用するテーブルとの JOIN においてクラッシュを引き起こしていたバグを修正しました。これにより、#7556 #8254 #7915 #8100 が修正されます。 #8298 (Artem Zuikov)
  • CREATE DATABASE 時に発生していた不要な辞書の再読み込みを修正。 #7916 (Azat Khuzhin)
  • StorageFile および StorageHDFS からの読み取り時のストリーム数の上限を設定しました。#7650 を修正。 #7981 (alesapin)
  • ALTER ... MODIFY ... CODEC クエリで、ユーザーがデフォルト式と CODEC の両方を指定した場合に発生するバグを修正。Issue 8593 を修正。 #8614 (alesapin)
  • SimpleAggregateFunction(LowCardinality) 型の列のバックグラウンドマージ時に発生するエラーを修正。 #8613 (Nikolai Kochetov)
  • 関数 toDateTime64 の型チェックを修正しました。 #8375 (Vasily Nemkov)
  • Join エンジンを使用し、未サポートの join_use_nulls 設定を有効にした状態での LEFT または FULL JOIN でも、サーバーがクラッシュしなくなりました。 #8479 (Artem Zuikov)
  • DROP DICTIONARY IF EXISTS db.dict クエリは、db が存在しない場合でも例外をスローしなくなりました。 #8185 (Vitaly Baranov)
  • テーブル関数(filemysqlremote)で、削除済みの IStorage オブジェクトへの参照を使用していたことに起因してクラッシュが発生し得る問題を修正。テーブル関数への挿入時に指定されたカラムのパースが誤っていた問題を修正。 #7762 (tavplubix)
  • clickhouse-server を起動する前に、ネットワークが起動していることを確認します。これにより #7507 が修正されます。 #8570 (Zhichang Yu)
  • セキュア接続時のタイムアウト処理を修正し、クエリが無期限にハングしないようにしました。これにより #8126 が解決されました。#8128alexey-milovidov
  • clickhouse-copier の同時ワーカー間で発生していた不要な競合を修正。 #7816 (Ding Xiang Fei)
  • mutations は、対応する mutation version が現在の mutation version より大きい場合でも、アタッチされたパーツをスキップしないようになりました。 #7812 (Zhichang Yu) #8250 (alesapin)
  • 別のディスクへの移動後およびサーバー再起動後に発生する *MergeTree データパーツの冗長なコピーを無視するようにしました。 #7810 (Vladimir Chebotarev)
  • LowCardinalityを含むJOINキーを使用したFULL JOIN時のクラッシュを修正。 #8252 (Artem Zuikov)
  • INSERT INTO tbl (x, y, x) のように、INSERT クエリ内で同じカラム名を複数回使用することは禁止されました。これにより #5465#7681 が修正されました。#7685alesapin
  • 不明な CPU 向けに物理 CPU コア数を検出するためのフォールバックを追加しました(論理 CPU コア数を使用)。これにより #5239 を修正しました。#7726alexey-milovidov
  • マテリアライズド列およびエイリアス列で発生する There's no column エラーを修正。 #8210 (Artem Zuikov)
  • TABLE または DICTIONARY 修飾子なしで EXISTS クエリが使用された場合(EXISTS t のようなもの)に発生していたサーバークラッシュを修正しました。これにより、#8172 が修正されます。この不具合はバージョン 19.17 から発生していました。#8213 (alexey-milovidov)
  • SimpleAggregateFunction 列使用時にまれに "Sizes of columns does not match" エラーが発生するバグを修正。 #7790 (Boris Granveaud)
  • allow_databases が空のユーザーにすべてのデータベースへのアクセス権が与えられていたバグを修正(allow_dictionaries も同様)。 #7793 (DeifyTheGod)
  • サーバーがクライアントとの接続をすでに切断していた場合に発生するクライアントクラッシュを修正。 #8071 (Azat Khuzhin)
  • プライマリキーのプレフィックスと、それに続く非プライマリキー列を組み合わせてソートする場合の ORDER BY の動作を修正。 #7759 (Anton Popov)
  • テーブル内に修飾された列が存在するかどうかを確認します。これにより #6836 が修正されます。#7758 (Artem Zuikov)
  • マージ完了直後に実行された ALTER MOVE が、指定したパーツではなくそのスーパー パーツを移動してしまう問題を修正。 #8103 を修正。 #8104Vladimir Chebotarev
  • 列数の異なる UNION を使用した場合にサーバーがクラッシュする可能性のあった問題を修正。 #7279 を修正。 #7929Nikolai Kochetov
  • 負のサイズ指定時の substr 関数の結果部分文字列のサイズを修正しました。 #8589 (Nikolai Kochetov)
  • これにより、バックグラウンドスレッドプール内の空きスレッドが十分にない場合、サーバーは MergeTree のパーツのミューテーションを実行しなくなりました。 #8588 (tavplubix)
  • UNION ALL AST のフォーマットに関する軽微な誤記を修正。 #7999 (litao91)
  • 負の数に対する誤ったブルームフィルタの結果を修正しました。これにより #8317 を解決しました。 #8566 (Winter Zhang)
  • decompress におけるバッファオーバーフローの可能性を修正しました。悪意のあるユーザーが、バッファ範囲外の読み取りを引き起こすよう細工された圧縮データを渡すことができてしまう不具合がありました。この問題は Yandex の情報セキュリティチームの Eldar Zaitov 氏によって発見されました。 #8404 (alexey-milovidov)
  • arrayIntersect において、整数オーバーフローにより誤った結果が返される問題を修正。 #7777 (Nikolai Kochetov)
  • OPTIMIZE TABLE クエリは、オフラインのレプリカが操作を実行するのを待機しなくなりました。 #8314 (javi santana)
  • Replicated*MergeTree テーブルの ALTER TTL パーサーを修正。 #8318 (Vladimir Chebotarev)
  • サーバーとクライアント間の通信を修正し、クエリ失敗後でもサーバーが一時テーブルの情報を読み取れるようにしました。 #8084 (Azat Khuzhin)
  • 集約ビットマップとスカラーのビットマップの積集合を求める際に発生する bitmapAnd 関数のエラーを修正。 #8082 (Yue Huang)
  • ZooKeeper Programmer's Guide に従って ZXid の定義を見直し、clickhouse-cluster-copier のバグを修正しました。 #8088 (Ding Xiang Fei)
  • odbc テーブル関数が external_table_functions_use_nulls 設定に従うようになりました。 #7506 (Vasily Nemkov)
  • まれに発生するデータレースを引き起こしていたバグを修正しました。 #8143 (Alexander Kazakov)
  • SYSTEM RELOAD DICTIONARY は、update_field を無視して辞書を完全に再読み込みするようになりました。これにより #7440 が修正されました。 #8037Vitaly Baranov
  • CREATE クエリで辞書の存在を確認できるようにした。 #8032 (alesapin)
  • Values フォーマットにおける Float* のパース処理を修正しました。これにより #7817 が解決されました。 #7870 (tavplubix)
  • *MergeTree テーブルエンジンファミリーの一部のバックグラウンド処理で領域を予約できない場合に発生していたクラッシュを修正しました。 #7873 (Vladimir Chebotarev)
  • SimpleAggregateFunction(LowCardinality) カラムを含むテーブルでマージ操作がクラッシュする問題を修正しました。これにより #8515 が解決されています。#8522Azat Khuzhin
  • ICU のすべてのロケールに対するサポートを復元し、定数式に照合順序を適用できるようにしました。また、system.collations テーブルに言語名を追加しました。 #8051 (alesapin)
  • 最小有効期間がゼロの外部辞書(LIFETIME(MIN 0 MAX N)LIFETIME(N))がバックグラウンドで更新されない問題を修正。 #7983 (alesapin)
  • ClickHouse をソースとする external dictionary がクエリにサブクエリを含む場合に発生するクラッシュを修正。 #8351 (Nikolai Kochetov)
  • エンジン URL を使用するテーブルでのファイル拡張子の誤った解析を修正しました。これにより #8157 が解決されます。 #8419 (Andrey Bodrov)
  • キーを持たない *MergeTree テーブルに対する CHECK TABLE クエリを修正。 #7543 の不具合を修正。 #7979 (alesapin)
  • Float64 の MySQL 型への変換処理を修正しました。 #8079 (Yuriy Baranov)
  • テーブルがサーバークラッシュにより完全には削除されなかった場合、サーバーはそのテーブルの復元とロードを試みます。 #8176 (tavplubix)
  • 存在しないファイルに対して挿入を行う際に、テーブル関数 file がクラッシュする問題を修正しました。この場合はファイルを作成してから挿入を処理するようになりました。 #8177 (Olga Khvostikova)
  • trace_log が有効になっている場合に発生し得るまれなデッドロックを修正しました。 #7838 (filimonov)
  • DDL クエリから作成された RangeHashed 外部ディクショナリで、Date 以外の型も扱えるようにしました。 7899 を修正。 #8275alesapin
  • now64() が別の関数の結果を引数として呼び出された場合に発生するクラッシュを修正。 #8270 (Vasily Nemkov)
  • MySQL ワイヤプロトコル経由の接続におけるクライアント IP アドレス検出のバグを修正しました。 #7743 (Dmitry Muzyka)
  • arraySplit 関数における空配列の処理を修正しました。これにより #7708 が解決されました。#7747 (hcz)
  • 別の実行中の clickhouse-serverpid-file が削除される可能性があった問題を修正しました。 #8487 (Weiqing Xu)
  • invalidate_query を持つディクショナリのリロード処理を修正しました。これにより、以前の更新試行で更新が停止し、いくつかの例外が発生していました。 #8029 (alesapin)
  • 関数 arrayReduce における二重解放("double free")を引き起こす可能性のある不具合と、メモリリークを引き起こす可能性のある集約関数コンビネータ Resample の不具合を修正しました。集約関数 aggThrow を追加しました。この関数はテスト用途で使用できます。 #8446 (alexey-milovidov)

改善

  • S3 テーブルエンジン使用時のログ出力を改善しました。 #8251 (Grigory Pervakov)
  • clickhouse-local を引数なしで呼び出した場合にヘルプメッセージを出力するようにした。これにより #5335 が修正された。 #8230 (Andrey Nagorny)
  • ALTER UPDATE/DELETE クエリの完了を同期的に待てるようにする設定 mutations_sync を追加しました。 #8237 (alesapin)
  • config.xml 内で、format_schema_path と同様の方法で相対パスの user_files_path を設定できるようにしました。 #7632 (hcz)
  • -OrZero 接尾辞を持つ変換関数において、不正な型に対して例外をスローするように変更。 #7880 (Andrey Konyaev)
  • 分散クエリでシャードにデータを送信する際のヘッダー形式を簡素化しました。 #8044 (Vitaly Baranov)
  • Live View テーブルエンジンのリファクタリング。 #8519 (vzakaznikov)
  • DDL クエリから作成された外部辞書に対して追加チェックを行うようにしました。 #8127 (alesapin)
  • FINALSAMPLE を同時に使用した場合(例: select count() from table final sample 1/2)に発生する Column ... already exists エラーを修正。#5186 を解決。 #7907 (Nikolai Kochetov)
  • joinGet 関数の最初の引数としてテーブル識別子を指定できるようになりました。 #7707 (Amos Bird)
  • Kafka テーブルを対象とするサブクエリで MaterializedView を使用できるようにしました。 #8197 (filimonov)
  • ディスク間でのバックグラウンド移動処理は、専用のスレッドプールで実行されるようになりました。 #7670 (Vladimir Chebotarev)
  • SYSTEM RELOAD DICTIONARY は同期的に実行されるようになりました。 #8240 (Vitaly Baranov)
  • スタックトレースは、仮想メモリアドレス(オブジェクトファイルがロードされた位置)ではなく、物理アドレス(オブジェクトファイル内のオフセット)を表示するようになりました。これにより、バイナリがポジションインディペンデントで ASLR が有効な場合でも addr2line を使用できるようになります。この変更により #8360 が修正されました。#8387alexey-milovidov
  • 行レベルセキュリティフィルタの新しい構文 <table name='table_name'>...</table> に対応しました。 #5779 を修正。 #8381 (Ivan)
  • cityHash 関数が Decimal 型および UUID 型でも動作するようになりました。これにより #5184 が修正されました。 #7693 (Mikhail Korotov)
  • アダプティブな粒度の実装により不要になったため、システムログから固定インデックス粒度(1024)を削除しました。 #7698 (alexey-milovidov)
  • ClickHouse が SSL なしでコンパイルされている場合に、MySQL 互換サーバーを有効化しました。 #7852 (Yuriy Baranov)
  • サーバー側で分散バッチのチェックサムを計算するようになり、バッチ内のデータが破損している場合に、より詳細なエラーが得られるようになりました。 #7914 (Azat Khuzhin)
  • MySQL データベースエンジンで DROP DATABASEDETACH TABLEDROP TABLEATTACH TABLE をサポートしました。 #8202 (Winter Zhang)
  • S3 テーブル関数およびテーブルエンジンに認証を追加しました。 #7623 (Vladimir Chebotarev)
  • 未定義のディスク上にあるデータパーツが見落とされないようにするため、異なるディスク上に存在する MergeTree の余分なパーツを検査するチェックを追加しました。 #8118 (Vladimir Chebotarev)
  • Mac クライアントおよびサーバーでの SSL サポートを有効化。 #8297 (Ivan)
  • ClickHouse は、MySQL Federated サーバーとして動作できるようになりました(https://dev.mysql.com/doc/refman/5.7/en/federated-create-server.html を参照)。 #7717 (Maxim Fedotov)
  • clickhouse-client は、マルチクエリがオンでかつマルチラインがオフのときにのみ bracketed-paste を有効にするようになりました。これにより #7757 が修正されました。#7761 (Amos Bird)
  • if 関数が Array(Decimal) をサポートするようになりました。 #7721 (Artem Zuikov)
  • arrayDifferencearrayCumSumarrayCumSumNegative 関数で Decimal 型をサポート。 #7724 (Artem Zuikov)
  • system.dictionaries テーブルに lifetime 列を追加しました。 #6820 #7727 (kekekekule)
  • *MergeTree テーブルエンジンにおける、異なるディスク上の既存パーツのチェック処理を改善しました。 #7660 に対応します。 #8440Vladimir Chebotarev
  • S3 とのやり取りに AWS SDK を統合し、すべての S3 機能を追加設定なしで利用できるようにしました。 #8011 (Pavel Kovalenko)
  • Live View テーブルでサブクエリがサポートされるようになりました。 #7792 (vzakaznikov)
  • TTL 式で Date または DateTime 列が使用されているかどうかを確認するチェックが削除されました。 #7920 (Vladimir Chebotarev)
  • ディスク情報が system.detached_parts テーブルに追加されました。 #7833 (Vladimir Chebotarev)
  • max_(table|partition)_size_to_drop の設定値は、再起動なしで変更できるようになりました。 #7779 (Grigory Pervakov)
  • エラーメッセージの使い勝手をわずかに改善しました。Stack trace: の下にある行を削除しないようにユーザーへ注意を促します。 #7897 (alexey-milovidov)
  • #7935 以降、Kafka エンジンからのメッセージをさまざまなフォーマットでより適切に読み取れるように改善。 #8035 (Ivan)
  • sha2_password 認証プラグインをサポートしていない MySQL クライアントとの互換性を改善しました。 #8036 (Yuriy Baranov)
  • MySQL 互換サーバーでより多様な列型をサポートしました。 #7975 (Yuriy Baranov)
  • MergeTree テーブルを基盤とする MergeBuffer、および Materilized View ストレージに対する ORDER BY の最適化を実装しました。 #8130 (Anton Popov)
  • 今後は常に getrandom の POSIX 実装を使用し、3.17 未満の古いカーネルとの互換性を向上させます。 #7940 (Amos Bird)
  • MOVE TTL ルールで、移動先が有効かどうかをより厳密にチェックするようにしました。 #8410 (Vladimir Chebotarev)
  • Distributed テーブルエンジンにおける破損した挿入バッチの検出を改善。 #7933 (Azat Khuzhin)
  • 将来のミューテーション処理対象となるパーツ名の配列を格納するカラムを system.mutations テーブルに追加。 #8179 (alesapin)
  • プロセッサ用の並列マージソートの最適化。 #8552 (Nikolai Kochetov)
  • 設定項目 mark_cache_min_lifetime は現在は廃止されており、効果はありません。以前のバージョンでは、mark_cache_min_lifetime 秒間データを保持するために、マークキャッシュがメモリ上で mark_cache_size を超えて増加する場合がありました。これは混乱を招き、想定以上のメモリ使用量につながっており、特にメモリ制約の厳しいシステムでは問題となっていました。このリリースをインストールした後にパフォーマンスの低下が見られる場合は、mark_cache_size を増やしてください。 #8484 (alexey-milovidov)
  • tid を全体で使用できるようにするための準備。これは #7477 に必要です。#8276alexey-milovidov

パフォーマンスの改善

  • プロセッサーパイプラインでのパフォーマンス最適化。 #7988 (Nikolai Kochetov)
  • キャッシュ辞書における期限切れキーの非ブロッキング更新(古いエントリの読み取りを許可)。 #8303 (Nikita Mikhaylov)
  • 使用可能なレジスタを 1 つ増やすため、ClickHouse 全体を -fno-omit-frame-pointer オプションを付けずにコンパイルするようにしました。 #8097 (Amos Bird)
  • greatCircleDistance 関数を高速化し、そのパフォーマンス検証用テストを追加。 #7307 (Olga Khvostikova)
  • 関数 roundDown のパフォーマンスを改善しました。 #8465 (alexey-milovidov)
  • DateTime64 データ型に対する maxminargMinargMax の性能を改善しました。 #8199 (Vasily Nemkov)
  • LIMIT を指定しない場合、または大きな LIMIT と外部ソートを行う場合のソート処理のパフォーマンスを改善。 #8545 (alexey-milovidov)
  • 浮動小数点数のフォーマット処理のパフォーマンスを最大6倍高速化しました。 #8542 (alexey-milovidov)
  • modulo 関数のパフォーマンスを改善しました。 #7750 (Amos Bird)
  • 単一カラムキーでの ORDER BY とマージの最適化。 #8335 (alexey-milovidov)
  • arrayReduce-Array および -State コンビネータの実装を改善。 #7710 (Amos Bird)
  • これにより、PREWHERE は少なくとも WHERE と同等の効率で動作するように最適化されているはずです。 #7769 (Amos Bird)
  • round および roundBankers における負の数の取り扱いを改善しました。 #8229 (hcz)
  • DoubleDeltaGorilla コーデックのデコード性能をおよそ 30~40% 向上しました。これにより #7082 が修正されました。 #8019 (Vasily Nemkov)
  • base64 関連関数のパフォーマンスを改善しました。 #8444 (alexey-milovidov)
  • 関数 geoDistance を追加しました。これは greatCircleDistance と似ていますが、WGS-84 楕円体モデルに基づく近似計算を行います。両方の関数のパフォーマンスはほぼ同等です。 #8086 (alexey-milovidov)
  • Decimal データ型向けの min および max 集約関数の高速化。 #8144 (Artem Zuikov)
  • arrayReduce の処理をベクトル化しました。 #7608 (Amos Bird)
  • if チェーンは multiIf として最適化されるようになりました。 #8355 (kamalov-ruslan)
  • 19.15 で発生した Kafka テーブルエンジンのパフォーマンス低下を修正します。これにより #7261 が修正されます。 #7935 (filimonov)
  • Debian パッケージの gcc がデフォルトで有効にしている場合がある「pie」コード生成を削除しました。 #8483 (alexey-milovidov)
  • データ形式の並列パース #6553 (Nikita Mikhaylov)
  • 式を含む Values 用の最適化パーサをデフォルトで有効にしました(input_format_values_deduce_templates_of_expressions=1)。 #8231 (tavplubix)

ビルド/テスト/パッケージングの改善

  • ARM 向けおよび最小モードでのビルドを修正。 #8304 (proller)
  • std::atexit が呼び出されない場合に clickhouse-server のカバレッジファイルのフラッシュ処理を追加しました。また、カバレッジ付きのステートレスなテストにおけるロギングをわずかに改善しました。 #8267 (alesapin)
  • contrib 内の LLVM ライブラリを更新しました。OS パッケージ提供の LLVM の使用は避けるようにしました。 #8258 (alexey-milovidov)
  • バンドル版 curl のビルドを完全にサイレントにする。 #8232 #8203 (Pavel Kovalenko)
  • いくつかの MemorySanitizer 警告を修正。 #8235 (Alexander Kuzmenkov)
  • CMakeLists.txtadd_warning および no_warning マクロを使用するように変更。 #8604 (Ivan)
  • 統合テストを改善するために、Minio による S3 互換オブジェクトストレージ(https://min.io/)のサポートを追加しました。 #7863 #7875 (Pavel Kovalenko)
  • libc ヘッダーを contrib にインポートしました。これにより、さまざまなシステム間でビルドをより一貫したものにできます(x86_64-linux-gnu のみ)。 #5773 (alexey-milovidov)
  • 一部のライブラリから -fPIC を削除しました。 #8464 (alexey-milovidov)
  • curl 用の CMakeLists.txt をクリーンアップ。詳細は https://github.com/ClickHouse/ClickHouse/pull/8011#issuecomment-569478910 および #8459 を参照 (alexey-milovidov)
  • CapNProto ライブラリでのサイレント警告。 #8220 (alexey-milovidov)
  • 短い文字列用に最適化されたハッシュテーブルのパフォーマンステストを追加。 #7679 (Amos Bird)
  • これにより、MADV_FREE が利用できない場合でも、ClickHouse を AArch64 上でビルドできるようになりました。これによって #8027 が解決されました。 #8243 (Amos Bird)
  • zlib-ng を更新して MemorySanitizer 関連の問題を修正しました。 #7182 #8206 (Alexander Kuzmenkov)
  • 非 Linux システムでは内部 MySQL ライブラリを有効化します。OS パッケージの利用は非常に不安定で、通常はまったく動作しないためです。これにより #5765 が修正されます。#8426alexey-milovidov
  • libc++ を有効にした後に、一部のシステムでビルドが通らない問題を修正しました。この変更は #8374 に取って代わるものです。 #8380 (alexey-milovidov)
  • Field メソッドをより型安全にし、より多くのエラーを検出できるようにしました。 #7386 #8209 (Alexander Kuzmenkov)
  • libc-headers サブモジュールに不足していたファイルを追加しました。 #8507 (alexey-milovidov)
  • パフォーマンステストの出力で誤っていた JSON のクォートを修正。 #8497 (Nikolai Kochetov)
  • std::exceptionPoco::Exception に対してもスタックトレースが表示されるようになりました。以前のバージョンでは DB::Exception の場合にのみ表示されていました。これにより診断性が向上します。 #8501 (alexey-milovidov)
  • 最新の glibc バージョン向けに clock_gettimeclock_nanosleep を移植しました。 #8054 (Amos Bird)
  • 開発者向けサンプル設定で part_log を有効化。 #8609 (alexey-milovidov)
  • 01036_no_superfluous_dict_reload_on_create_database* におけるリロードの非同期処理の挙動を修正。#8111Azat Khuzhin
  • コーデックのパフォーマンステストを修正。 #8615 (Vasily Nemkov)
  • .tgz ビルド用のインストールスクリプトとそのドキュメントを追加。 #8612 #8591 (alesapin)
  • 古い ZSTD テストを削除しました(2016 年に作成されたもので、ZSTD の 1.0 以前のバージョンに存在したバグを再現するためのものです)。これにより、#8618 が解決されました。 #8619alexey-milovidov
  • Mac OS Catalina におけるビルドを修正。 #8600 (meo)
  • コーデックの性能テストで使用する行数を増やし、結果の差がより明確に表れるようにしました。 #8574 (Vasily Nemkov)
  • デバッグビルドでは、LOGICAL_ERROR 例外をアサーション失敗として扱うようにし、気付きやすくします。 #8475 (Alexander Kuzmenkov)
  • フォーマット関連のパフォーマンステストの再現性を高めました。 #8477 (alexey-milovidov)
  • MemorySanitizer の不具合を修正するために lz4 を更新。#8181 (Alexander Kuzmenkov)
  • 例外処理時に発生する既知の MemorySanitizer の誤検知を抑制。 #8182 (Alexander Kuzmenkov)
  • build/docker/build.sh 内の gccg++ をバージョン 9 に更新 #7766 (TLightSky)
  • PREWHERE の方が WHERE よりも遅いことを検証するパフォーマンステストケースを追加。 #7768 (Amos Bird)
  • 不安定なテスト 1 件の修正に向けた進捗。 #8621 (alexey-milovidov)
  • libunwind 由来のデータに対する MemorySanitizer の報告を回避。 #8539 (alexey-milovidov)
  • libc++ を最新版に更新しました。 #8324 (alexey-milovidov)
  • ICU ライブラリをソースコードからビルドするようにしました。これにより #6460 が解決します。 #8219 (alexey-milovidov)
  • libressl から openssl に切り替えました。この変更により、ClickHouse は TLS 1.3 と SNI をサポートします。これにより #8171 が修正されました。#8218 (alexey-milovidov)
  • SSL で chacha20_poly1305 を使用した際に発生していた UBSan レポートの問題を修正(https://yandex.ru/ への接続時に発生)。 #8214 (alexey-milovidov)
  • .deb ベースの Linux ディストリビューション向けにデフォルトパスワードファイルのパーミッションを修正。 #8075 (proller)
  • clickhouse-test における clickhouse-server の PID 取得方法を改善しました。 #8063 (Alexander Kazakov)
  • contrib/googletest を v1.10.0 に更新しました。 #8587 (Alexander Burmak)
  • base64 ライブラリでの ThreadSanitizer レポートを修正しました。また、このライブラリを最新バージョンに更新しましたが、これは特に重要ではありません。この変更により #8397 が修正されました。 #8403 (alexey-milovidov)
  • プロセッサ用の 00600_replace_running_query を修正。 #8272 (Nikolai Kochetov)
  • CMakeLists.txt を簡素化するために tcmalloc のサポートを削除しました。 #8310 (alexey-milovidov)
  • リリース向けの gcc ビルドでは、libstdc++ の代わりに libc++ を使用するようになりました。これまで libc++ は clang の場合にのみ使用されていました。これにより、ビルド構成の一貫性と移植性が向上します。 #8311 (alexey-milovidov)
  • MemorySanitizer を使用したビルドで ICU ライブラリを有効にしました。 #8222 (alexey-milovidov)
  • CapNProto ライブラリからの警告を抑制する。 #8224 (alexey-milovidov)
  • tcmalloc 向けの特別なコードパスを削除しました。もはやサポートされていないためです。 #8225 (alexey-milovidov)
  • CI のカバレッジタスクでは、カバレッジレポートを保存できるよう、サーバーを正常終了させるようにしました。これにより、最近発生していた不完全なカバレッジレポートの問題を修正しました。 #8142 (alesapin)
  • すべてのコーデックについて、Float64 および UInt64 値に対するパフォーマンス テストを実施。#8349Vasily Nemkov
  • termcap は現在では強く非推奨であり、さまざまな問題の原因となります(例: 「up」cap が欠けている、複数行の代わりに ^J がエコーされる など)。terminfo または同梱の ncurses を使用してください。 #7737 (Amos Bird)
  • test_storage_s3 統合テストを修正。 #7734 (Nikolai Kochetov)
  • ディスクに実際に書き込むことなく、指定したフォーマットのファイルにブロックを挿入できるようにする StorageFile(&lt;format&gt;, null) をサポートしました。これはパフォーマンス テストに必要です。 #8455 (Amos Bird)
  • 機能テストに引数 --print-time を追加し、テストごとの実行時間を表示するようにしました。 #8001 (Nikolai Kochetov)
  • RPN を評価する際の KeyCondition にアサートを追加しました。これにより gcc-9 の警告が解消されます。 #8279 (alexey-milovidov)
  • CI ビルドで CMake オプションを出力するようにした。 #8273 (Alexander Kuzmenkov)
  • 一部のサイズが大きいライブラリについてはデバッグ情報を生成しないようにしました。 #8271 (alexey-milovidov)
  • log_to_console.xml がインタラクティブかどうかに関係なく、常に stderr にログを出力するようにしました。 #8395 (Alexander Kuzmenkov)
  • clickhouse-performance-test ツールから未使用の機能をいくつか削除しました。 #8555 (alexey-milovidov)
  • 対応する clang-X バージョンを持つ lld-X も検索するようになりました。 #8092 (alesapin)
  • Parquet のビルド処理を改善。 #8421 (maxulan)
  • GCC 警告をさらに追加 #8221 (kreuzerkrieg)
  • Arch Linux 用パッケージで、クライアントだけでなく ClickHouse サーバーも実行できるようになりました。 #8534 (Vladimir Chebotarev)
  • プロセッサを使用したテストを修正。ごく小さなパフォーマンスの改善。 #7672 (Nikolai Kochetov)
  • contrib/protobuf を更新。 #8256 (Matwey V. Kornilov)
  • 新年の祝いに C++20 への移行を準備中。「C++ のフォースが ClickHouse とともにありますように。」#8447 (Amos Bird)

実験的機能

  • 実験的な設定 min_bytes_to_use_mmap_io を追加しました。これにより、カーネルからユーザー空間へのデータコピーを行わずに大きなファイルを読み取ることができます。この設定はデフォルトでは無効になっています。mmap/munmap は低速であるため、推奨されるしきい値は約 64 MB です。 #8520 (alexey-milovidov)
  • アクセス制御システムの一部としてクォータを再設計しました。新しいテーブル system.quotas、新しい関数 currentQuotacurrentQuotaKey、新しい SQL 構文 CREATE QUOTAALTER QUOTADROP QUOTASHOW QUOTA を追加しました。 #7257 (Vitaly Baranov)
  • 例外をスローする代わりに、警告を出して不明な設定をスキップできるようにしました。 #7653 (Vitaly Baranov)
  • アクセス制御システムの一部として行ポリシーを再設計しました。新しいテーブル system.row_policies、新しい関数 currentRowPolicies()、新しい SQL 構文 CREATE POLICYALTER POLICYDROP POLICYSHOW CREATE POLICYSHOW POLICIES を追加しました。 #7808 (Vitaly Baranov)

セキュリティ修正

  • File テーブルエンジンを使用するテーブルで、ディレクトリ構造を読み取れてしまう可能性があった問題を修正しました。これにより #8536 が解決されます。 #8537 (alexey-milovidov)

2019年の変更履歴