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

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).
  • wide パーツ から compact パーツ へのマージを制限しました。vertical merge の場合、結果のパーツが壊れる原因になっていました。#18381 (Anton Popov).
  • system.settings_profile_elements テーブルの内容の生成を修正しました。この PR は #18231 を修正します。#18379 (Vitaly Baranov).
  • 二段階集約の使用時に、コンビネータ Distinct を持つ集約関数で発生する可能性があったクラッシュを修正しました。#17682 を修正しました。#18365 (Anton Popov).
  • クエリ MODIFY COLUMN ... REMOVE TTL で、実際にはカラムの有効期限 (TTL) が削除されない不具合を修正しました。#18130 (alesapin).

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

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

バグ修正

  • デュアル IPv4/IPv6 スタックのマシンで、サーバーから clickhouse-odbc-bridge プロセスに到達できない問題を修正しました。- 不正なクエリを使用した ODBC Dictionary の更新や、それによってクラッシュが発生する問題を修正しました。おそらく #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).
  • MaterializeMySQL で MySQL のプレフィックス索引の変換がサポートされていなかったため、一部のテーブルが MySQL から ClickHouse に同期されない問題を修正しました。これにより #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 がクローズされます。#16578 (Abi Palagashvili).
  • ALTER TABLE ... DROP|DETACH PART 'part_name' クエリを導入しました。#15511 (nvartolomei).
  • 新しい ALTER UPDATE/DELETE IN PARTITION 構文を追加しました。#13403 (Vladimir Chebotarev).
  • JSON 入力/出力フォーマットの使用時に、名前付きタプルを JSONオブジェクトとしてフォーマットできるようにしました。これは output_format_json_named_tuples_as_objects 設定で制御され、デフォルトでは無効です。#17175 (Alexander Kuzmenkov).
  • TSV および CSV フォーマットで、デフォルトで enum の値をその ID として入力できるようにしました。#16834 (Kruglov Pavel).
  • ネストされた型が String の場合に、Nullable、LowCardinality、Array、Tuple で COLLATE をサポートしました。また、ColumnString.cpp 内の collation 関連コードもリファクタリングしました。#16273 (Kruglov Pavel).
  • 新しい tcpPort 関数は、このサーバーが待ち受けている TCP ポートを返します。#17134 (Ivan).
  • 新しい数学関数 acoshasinhatan2atanhcoshhypotlog1psinh を追加しました。#16636 (Konstantin Malanchev).
  • 異なるレプリカ間でマージを分散できるようにしました。execute_merges_on_single_replica_time_threshold MergeTree setting を導入しています。#16424 (filimonov).
  • SQL 標準との互換性のために、aggregate_functions_null_for_empty 設定を追加しました。このオプションはクエリ内のすべての集約関数を書き換え、それらに -OrNull 接尾辞を追加します。10273 を実装しました。#16123 (flynn).
  • DateTime と DateTime64 のパースを更新し、文字列の Date リテラルフォーマットを受け付けるようにしました。#16040 (Maksim Kita).
  • clickhouse-client--history_file パラメーターを使って history file の path を変更できるようにしました。#15960 (Maksim Kita).

バグ修正

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

改善

  • 有効期限 (TTL)、mutation、または折りたたみマージアルゴリズムによる処理後に空になったパーツを削除します。 #16895 (Anton Popov).
  • 分散テーブルでの非同期送信におけるディレクトリ名の compact フォーマットを有効化しました: 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).
  • すべてのスレッドを同時に動作させるのに十分なメモリがない場合は、並列パースを無効にします。また、パースする各部分は独立した文字列の集合 (1つ以上) である必要があるため、非常に巨大な行 (> min_chunk_bytes_for_parallel_parsing) を insert しようとすると、“Memory limit exceeded” のような例外が発生することがあります。 #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).
  • distributed DDL の設定がない場合の例外メッセージを改善しました。これにより、#5075 が修正されます。#16769 (Nikita Mikhaylov).
  • ユーザビリティの改善: CREATE TABLE クエリ内で CODEC 式の位置が誤っている場合に、構文エラーメッセージでより適切な提案が表示されるようになりました。これにより #12493 が修正されました。 #16768 (alexey-milovidov) 。
  • Distributed engine の起動時に、非同期 INSERT 用の空のディレクトリを削除する。 #16729 (Azat Khuzhin).
  • プロキシとして nginx サーバーを使って S3 を利用する場合の回避策。Nginx は現在、http://domain.com?delete のような空の path を持つ URL を受け付けませんが、標準の aws-sdk-cpp はこのような URL を生成します。このコミットでは、こうした場合に http://domain.com/?delete のように path に ”/” を含む URL を生成する、パッチ適用済みの aws-sdk-cpp バージョンを使用しています。#16709 (ianton-ru).
  • reinterpretAs* 関数が、同じサイズの整数型と浮動小数点型に対して動作するようになりました。16640 を実装。#16657 (flynn).
  • これで、<auxiliary_zookeepers> 設定は config.xml で変更でき、サーバーを再起動せずに再読み込みできるようになりました。#16627 (Amos Bird) 。
  • リモートリソースへの https 接続で SNI をサポートしました。これにより、SNI を必要とする Cloudflare サーバーへの接続が可能になります。これにより #10055 が修正されます。 #16252 (alexey-milovidov)。
  • SNI が必要な clickhouse-server のセキュアな endpoint に接続できるようになりました。これは、clickhouse-server が TLS proxy の背後でホストされている場合に可能です。 #16938 (filimonov).
  • materialized view のループが作成された場合に発生する可能性があるスタックオーバーフローを修正しました。これにより #15732 はクローズされます。#16048 (alexey-milovidov).
  • MergeTreeテーブルエンジンファミリーにおけるバックグラウンドタスク処理の実装を簡素化しました。ユーザーから見て変更はありません。 #15983 (alesapin).
  • MaterializeMySQL (実験的機能) の改善。MySQL の同期ユーザーに誤った権限が設定されている場合、必要な正しい同期権限を示す例外をスローするようにしました。#15977 (TCeason).
  • indexOf() で BloomFilter を使用するようにしました。 #14977 (achimbab).

パフォーマンス改善

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

実験的機能

  • EmbeddedRocksDB テーブルエンジンを追加 (辞書に使用可能) 。#15073 (sundyli) 。

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

  • テストカバレッジのビルド用イメージを改善しました。#17233 (alesapin).
  • 埋め込みの timezone データをバージョン 2020d に更新しました (あわせて cctz も最新の master に更新) 。#17204 (filimonov).
  • Poco の UBSan レポートを修正しました。この修正により #12719 をクローズします。#16765 (alexey-milovidov).
  • UBSan で 3rd-party ライブラリをインストルメントしないようにしました。#16764 (alexey-milovidov).
  • cache 辞書の 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 を修正しました。#19884 (Maksim Kita).
  • system.text_log が有効になっている場合、デッドロックが発生する可能性がありました。これにより #19874 を修正しました。#19875 (alexey-milovidov).
  • 以前のバージョンでは、関数 arrayEnumerateUniq に想定外の引数を与えると、クラッシュや無限ループが発生する可能性がありました。これにより #19787 が修正されました。#19788 (alexey-milovidov).
  • 算術型と文字列型を厳密に比較した際に発生するスタックオーバーフローを修正しました。#19773 (tavplubix) 。
  • bitmapAndnot 関数のセグメンテーションフォルトを修正しました。#19668 を修正しています。#19713 (Maksim Kita).
  • 一部の関数では、大きな整数を使用するとセグメンテーション違反が発生する可能性があります。大きな整数は実験的な機能です。これにより #19667 をクローズします。 #19672 (alexey-milovidov).
  • LowCardinality 引数に対する関数 neighbor の誤った結果を修正しました。#10333 を修正します。#19617 (Nikolai Kochetov).
  • disconnect 後に Connection で発生する CompressedWriteBuffer の use-after-free を修正しました。 #19599 (Azat Khuzhin).
  • DROP/DETACH TABLE table ON CLUSTER cluster SYNC クエリがハングする問題を修正しました。#19568 を修正。#19572 (tavplubix).
  • CREATE DICTIONARY クエリの id expression を修正しました。 #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 を修正するものです。#19472 (alexey-milovidov) 。
  • いずれかのファイルに空のデータブロックがある場合、Distributed バッチを破損扱いにするようにしました。 #19449 (Azat Khuzhin).
  • Uber H3 ライブラリにおけるバッファオーバーフローの可能性を修正しました。https://github.com/uber/h3/issues/392 を参照してください。これにより #19219 をクローズします。#19383 (alexey-milovidov).
  • system.parts _stateカラムを修正しました (順序が誤っていたため、このカラムをクエリするとLOGICAL_ERRORが発生していました) 。 #19346 (Azat Khuzhin).
  • Cannot convert column now64() because it is constant but values of constants are different in source and result エラーを修正しました。#7156 の続きです。#19316 (Nikolai Kochetov).
  • 同時実行された ALTER クエリと DROP クエリの処理中に、ReplicatedMergeTree テーブルがハングすることがある不具合を修正しました。#19237 (alesapin).
  • ORC フォーマットのファイルで無限に読み続ける問題を修正しました (この問題は #10580 で導入されました) 。#19095 を修正します。#19134 (Nikolai Kochetov) 。
  • LowCardinality(Nullable(...)) から圧縮コーデックを読み取れず、例外 Attempt to read after EOF がスローされると ClickHouse が起動できない不具合を修正しました。#18340 を修正します。#19101 (alesapin).
  • Template または CustomSeparated フォーマットを使用して HTTP インターフェイス経由でデータを挿入する際に発生する There is no checkpoint エラーを修正しました。 #19021 を修正。 #19072 (tavplubix).
  • 旧構文で作成された MergeTree テーブルに対する MODIFY TTL クエリを制限しました。以前はこのクエリは成功していましたが、実際には何の効果もありませんでした。 #19064 (Anton Popov).
  • groupUniqArrayEnum 型の引数に対して正しい型を返すよう修正しました。これにより #17875 をクローズしました。#19019 (alexey-milovidov).
  • LowCardinality 引数で関数 ignore を使用した際に発生する可能性がある error Expected single dictionary argument for function を修正しました。#14275 を修正。#19016 (Nikolai Kochetov) 。
  • TinyLog engine テーブルへの LowCardinality カラムの挿入に関する不具合を修正しました。 #18629#19010 (Nikolai Kochetov) 。
  • optimize_move_functions_out_of_any を無効化しました。最適化が常に正しいとは限らないためです。これにより #18051 がクローズされます。これにより #18973 がクローズされます。#18981 (alexey-milovidov).
  • シャットダウン時に発生するごくまれなデッドロックを修正しました。 #18977 (tavplubix).
  • 一部のエスケープされたテキスト (ALTER ... UPDATE e = CAST('foo', 'Enum8(\'foo\' = 1') のようなもの) を含む mutation が誤ってシリアライズされるバグを修正しました。#18878 を修正。#18944 (alesapin)。
  • Attach パーティションでミューテーションがリセットされるようになりました。#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 エラーを修正しました。これにより、関数 CAST は nullable な文字列から decimal をパースできない場合に NULL を返すようになりました。#7690 を修正しました。#18718 (Winter Zhang).
  • 引数サイズの不一致がある Logger を修正しました。 #18717 (sundyli).
  • FixedString データ型のサポートを追加しました。MySQL から ClickHouse へデータをレプリケートする際に、「Code: 50, e.displayText() = DB::Exception: Unsupported type FixedString(1)」という例外が発生していました。このパッチでバグ #18450 を修正しました。また、#6556 も修正しました。#18553 (awesomeleo).
  • RIGHT または FULL JOIN を含むサブクエリの後で ORDER BY を使用した際に発生する可能性のある Pipeline stuck エラーを修正しました。#18550 (Nikolai Kochetov) 。
  • 対応するmutationをkillした後にALTERクエリがハングすることがある不具合を修正しました。thread fuzzer によって発見されました。#18518 (alesapin).
  • マージ中のAIOによる書き込みを無効にしました。これは、マージ中にごくまれに主キーカラムでデータ破損が発生するおそれがあるためです。 #18481 (alesapin).
  • 結果を計算できない場合、解析段階ではサブクエリの定数畳み込みを無効にしました。#18446 (Azat Khuzhin) 。
  • Nullable(String) の引数で toType(...) 関数 (toDatetoUInt32 など) を実行した際に発生する value is too short エラーを修正しました。現在、このような関数はパースエラー時に例外をスローするのではなく、NULL を返します。#7673 を修正。#18445 (tavplubix) 。
  • wide パーツから compact パーツへのマージを制限しました。vertical merge の場合、結果のパーツが破損する問題が発生していました。#18381 (Anton Popov) 。
  • system.settings_profile_elements テーブルへのデータ投入処理を修正しました。この PR で #18231 を修正しました。#18379 (Vitaly Baranov) 。
  • 誤ったクエリ結果を引き起こしていた、定数引数を持つ二項関数の索引解析を修正しました。これにより #18364 を修正しました。#18373 (Amos Bird).
  • 二段階集約の使用時に、Distinct コンビネータ付きの集約関数で発生する可能性があるクラッシュを修正しました。#17682 を修正。#18365 (Anton Popov) 。
  • SELECT count() FROM table は、table から任意の1つのカラムを選択できれば実行できるようになりました。この PR で #10639 を修正しました。#18233 (Vitaly Baranov).
  • SELECT JOIN では、join される各 table に対して SELECT 権限が必要になりました。この PR で #17654 を修正しました。#18232 (Vitaly Baranov).
  • read backoff 発生時に MergeTree* から読み取る際、クエリ結果が不完全になる可能性がある問題を修正しました (logs 内のメッセージ <Debug> MergeTreeReadPool: Will lower number of threads) 。この問題は #16423 で導入されました。#18137 を修正しました。#18216 (Nikolai Kochetov) 。
  • クエリ MODIFY COLUMN ... REMOVE TTL で、実際にはカラムの有効期限 (TTL) が削除されない不具合を修正しました。 #18130 (alesapin).
  • predicate オプティマイザでの非決定論的関数に関する問題を修正しました。これにより #17244 が修正されます。#17273 (Winter Zhang)。
  • MOVE または REPLACE PARTITION の後、またはまれに DETACHDROP PARTITION の後に、存在しないデータパートを待ち続けて mutation がハングすることがありました。修正済みです。 #15537 (tavplubix).

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

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

バグ修正

  • デュアル IPv4/IPv6 stack を備えたマシンで、server から clickhouse-odbc-bridge プロセスに到達できない問題を修正しました。また、不正なクエリを使用して ODBC Dictionary の更新を実行した際にクラッシュが発生することがある問題も修正しました。これにより、#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) 。
  • MaterializeMySQL が MySQL のプレフィックス索引の変換をサポートしていなかったために、MySQL から ClickHouse へ一部のテーブルが同期されない問題を修正しました。これにより、#15187 および #17912 を修正しました。 #17944 (Winter Zhang).
  • クエリにARRAY JOINが含まれている場合に、クエリ最適化によって誤った結果が返される問題を修正しました。#17887 (sundyli).
  • topK 集約関数で発生する可能性があるセグメンテーションフォールトを修正しました。これにより #17404 がクローズされます。#17845 (Maksim Kita).
  • in_memory_parts_enable_wal が無効になっている場合、WAL からパーツを復元しないようにしました。#17802 (detailyang).
  • ClickHouse が MySQL サーバーとの接続を再開できない問題を修正しました。#17681 (Alexander Kazakov).
  • optimize_trivial_count_query のパーティション条件における挙動の不整合を修正しました。 #17644 (Azat Khuzhin).
  • server がデーモンモードで実行されている場合に system.stack_trace テーブルが空になる不具合を修正しました。#17630 (Amos Bird).
  • MergeTree テーブルで、例外 fmt::v7::format_error がバックグラウンドでログに記録されることがある不具合を修正しました。これにより #17613 が修正されます。#17615 (alexey-milovidov)。
  • clickhouse-client を対話型モードで複数行クエリに使用した際、単一行コメントが誤ってクエリ末尾まで続いてしまう不具合を修正しました。これにより #13654 が修正されます。#17565 (alexey-milovidov).
  • ごくまれに、server が接続を受け付けなくなる問題を修正しました。 #17542 (alexey-milovidov).
  • 対応するミューテーションが別のレプリカで停止された場合に、ALTER クエリがハングする問題を修正しました。これにより #16953 が解決されます。#17499 (alesapin).
  • ClickHouse によって mark cache のサイズが過小評価される不具合を修正しました。これは、marks を含む非常に小さなファイルが大量にある場合に発生する可能性があります。#17496 (alesapin).
  • 設定 optimize_redundant_functions_in_order_by を有効にした場合の ORDER BY を修正しました。#17471 (Anton Popov).
  • 不適切な最適化により発生する可能性があった、DISTINCT 後の重複を修正しました。これにより #17294 が修正されます。#17296 (li chengxiang)。#17439 (Nikolai Kochetov)。
  • LowCardinality 型の JOIN テーブルの読み取り時に発生していたクラッシュを修正しました。これにより #17228 が修正されます。#17397 (Nikolai Kochetov)。
  • サブクエリに const カラムが含まれる場合に set 索引が無効化される問題を修正しました。これにより #17246 が修正されます。 #17249 (Amos Bird).
  • 索引比較の型が異なる場合に、誤った索引解析が行われる可能性があった問題を修正しました。これにより #17122 を修正します。#17145 (Amos Bird).
  • ColumnConst の比較に起因するクラッシュを修正しました。これにより #17088 が修正されます。 #17135 (Amos Bird).
  • 非リーダーの ReplicatedMergeTreeTablesON CLUSTER クエリが無期限にハングすることがある不具合を修正しました。 #17089 (alesapin).
  • fuzzer によって検出された関数 fuzzBits のバグを修正しました。これにより #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 を修正しました。 #16956 (Anton Popov).
  • 設定 optimize_aggregators_of_group_by_keys を有効にした場合の、JOIN を伴う GROUP BY の最適化を修正しました。これにより #12604 が修正されました。#16951 (Anton Popov).
  • インストールスクリプトで、設定フォルダー内に常にサブディレクトリが作成されるようにしました。これは、カスタム設定を使用する Docker ビルドにのみ関係します。#16936 (filimonov).
  • ORDER BY を含むクエリで発生する可能性がある Illegal type of argument エラーを修正しました。これにより #16580 が修正されます。#16928 (Nikolai Kochetov)。
  • WriteBufferFromS3 にデータが書き込まれていない場合、マルチパートアップロードを中止する。 #16840 (Pavel Kovalenko).
  • 引数を指定せずに any を使用した際にクラッシュする不具合を修正しました。これにより #16803 が修正されます。#16826 (Amos Bird).
  • MySQLプロトコル経由のINSERTクエリで、ClickHouseが影響を受けた行数ではなく常に0を返していた不具合を修正しました。これにより、#16605 が修正されます。#16715 (Winter Zhang) 。
  • TDigest が無制御に増大する問題を修正しました。#16680 (hrissan) 。
  • 集約関数で接尾辞 if を使用した際に発生していたリモートクエリの失敗を修正しました。これにより #16574#16231#16610 を修正しました (Winter Zhang) 。
  • 最適化された単純な count クエリおよび system.tables において、select_sequential_consistency が原因で発生していた挙動の不一致を修正しました。#16309 (Hao Chen).
  • 存在しないカラムを ColumnTransformer で置換しようとすると、エラーをスローするようにしました。 #16183 (hexiaoting).

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

バグ修正

  • クエリプロファイラが有効で、かつ一部の関数で (おそらく) 壊れた非同期 unwind テーブルを含む glibc バージョンの OS に ClickHouse がインストールされている場合に、まれに何のメッセージもなくクラッシュする問題を修正しました。これにより #15301 が修正されます。これにより #13098 が修正されます。 #16846 (alexey-milovidov).

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

後方互換性を持たない変更

  • distributed_ddl 設定セクションで profile を指定していると、そのプロファイルがサーバー起動時に default プロファイルの設定を上書きしてしまうことがありました。これを修正し、分散 DDL クエリの設定がグローバルなサーバー設定に影響しないようにしました。#16635 (tavplubix).
  • キー (ソートキー、主キー、パーティションキーなど) で、比較できないデータ型 (AggregateFunction など) が使えないように制限しました。#16601 (alesapin).
  • ANALYZE クエリと AST クエリを削除し、enable_debug_queries 設定を廃止しました。これは、この機能がフル機能の EXPLAIN クエリに統合されたためです。#16536 (Ivan).
  • 集約関数 boundingRatiorankCorrretentiontimeSeriesGroupSumtimeSeriesGroupRateSumwindowFunnel は、誤って大文字と小文字を区別しない扱いになっていました。今回、設計どおりこれらの関数名は大文字と小文字を区別するよう修正されました。大文字と小文字を区別しないのは、SQL 標準で規定されている関数、他の DBMS との互換性のために作られた関数、またはそれに類する関数に限られます。#16407 (alexey-milovidov).
  • rankCorr 関数は、データが不十分な場合に nan を返すようになりました。#16124. #16135 (hexiaoting).
  • 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 を追加しました。#15845 (Maksim 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 関数 - error の変数名を返します (query&#95;log などの解析に便利です) 。system.errors テーブル - error の発生回数を表示します (system_events_show_zero_values に従います) 。#16438 (Azat Khuzhin).
  • 名前付きタプルを展開して SELECT リストに新しいカラムを追加できる特別な関数 untuple を追加しました。#16242 (Nikolai KochetovAmos Bird) 。
  • これで、識別子をクエリパラメータで指定できるようになりました。これらのパラメータは、テーブルオブジェクト名やカラム名として使用できます。#16594 (Amos Bird).
  • MergeTree BloomFilter 索引で、大きな整数型 (UInt256、Int128、Int256) および UUID データ型がサポートされました。大きな整数型は実験的機能です。#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 を参照してください。#16154 (nvartolomei) 。
  • clickhouse-client に新しいオプション print_query_id を追加しました。これにより、クライアントが生成した現在のクエリIDを含む任意の文字列を出力できるようになります。あわせて、clickhouse-client でクエリIDをデフォルトで表示するようにしました。#15809 (Amos Bird) 。
  • tid および logTrace 関数を追加しました。これにより #9434 がクローズされました。#15803 (flynn).
  • 時間差を人間にとって読みやすい文字列にフォーマットする関数 formatReadableTimeDelta を追加 … #15497 (Filipe Caixeta).
  • マルチディスク構成におけるボリューム向けに disable_merges オプションを追加しました。 #13956 (Vladimir Chebotarev).

実験的機能

  • 新しい関数 encryptaes_encrypt_mysqldecryptaes_decrypt_mysql を追加しました。これらの関数は処理が遅いため、実験的機能と見なされています。#11844 (Vasily Nemkov).

バグ修正

  • system.distribution_queue の data_path 内のパスワードをマスクする。#16727 (Azat Khuzhin).
  • transform_null_in 設定が有効な場合の、複数のカラムおよびタプルに対する IN 演算子の不具合を修正しました。#15310 を修正しました。#16722 (Anton 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 Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine を使用する際に発生するバグを修正しました。MaterializeMySQL は実験的機能です。#16504 (TCeason).
  • Decimal を使った round 関数に細工された特定の引数を与えると、整数のゼロ除算が発生していました。これにより #13338 を修正します。#16451 (alexey-milovidov).
  • Distributed に対する DROP TABLE を修正しました (INSERT との競合状態が発生する問題) 。#16409 (Azat Khuzhin) 。
  • レプリケーションキュー内の非常に大きなエントリの処理を修正しました。テーブル構造が極端に大きい (1 MB近く) 場合、ALTERクエリに非常に大きなエントリが現れることがあります。これにより #16307 が修正されます。 #16332 (alexey-milovidov).
  • フィルタリング用の Set が作成されていなかったため、返されるデータの一部が欠落する可能性があった不整合な動作を修正しました。 #16308 (Nikita Mikhaylov).
  • sharding_key 内の dictGet (および、関数コンテキストが永続的に保持される場合などの類似箇所) を修正しました。 #16205 (Azat Khuzhin).
  • clickhouse-localOPTIMIZE コマンドを実行しようとした際に発生する例外を修正しました。#16076 を修正。#16192 (filimonov).
  • #15780 のリグレッションを修正しました。たとえば、indexOf([1, 2, 3], toLowCardinality(1)) は現在禁止されていますが、本来は許可されるべきです。 #16038 (Mike).
  • MySQLデータベースに関するバグを修正しました。データベースエンジンとして使用される MySQL server が停止していると、一部のクエリで不要な例外が発生していました。これは、それらのクエリが停止中の server からテーブルを取得しようとしていたためです。たとえば、クエリ SELECT ... FROM system.parts は MergeTree テーブルに対してのみ動作すべきであり、MySQLデータベースにはまったくアクセスしないはずです。#16032 (Kruglov Pavel).
  • ALTER MODIFY COLUMN ... DEFAULT ... において、カラム型と互換性のないデフォルト値が指定されている場合に例外がスローされるようになりました。#15854 を修正しました。#15858 (alesapin).
  • IPv4CIDRToRange/IPv6CIDRToRange 関数が const の IP カラムの値を受け付けるよう修正しました。#15856 (vladimir-golovchenko) 。

改善

  • Postgres などとの互換性のため、INTERVAL '1 hour'INTERVAL 1 HOUR と同等に扱うようにしました。これにより #15637 を修正しました。#15978 (flynn).
  • CSV、TSV、および JSON 入力フォーマットで、enum 値を数値 ID でパースできるようにしました。#15685 (vivarum).
  • JBODアーキテクチャおよびMergeTreeストレージにおける読み取りタスクのスケジューリングを改善しました。読み取りスレッド数の下限として機能する新しい設定 read_backoff_min_concurrency を追加しました。 #16423 (Amos Bird).
  • Avro フォーマットで不足していた LowCardinality のサポートを追加しました。#16521 (Mike).
  • proxy として動作する nginx server で S3 を使用するための回避策。現在の Nginx は、http://domain.com?delete のような空の path を持つ URL を受け付けませんが、素の aws-sdk-cpp はこの種の URL を生成します。このコミットでは、こうした場合に http://domain.com/?delete のように path として ”/” を含む URL を生成する、パッチ適用済みの aws-sdk-cpp バージョンを使用しています。#16814 (ianton-ru).
  • 入力データのパースエラーに関する診断を改善しました。Cannot read all data エラーで行番号が表示されるようにしました。#16644 (alexey-milovidov).
  • minMapmaxMap の動作を改善し、より適切なものにしました。結果内のゼロ値がスキップされなくなります。#16087 を修正しました。#16631 (Ildus Kurbangaliev) 。
  • 実行時のZooKeeper設定の更新を改善しました。#16630 (sundyli).
  • SETTINGS句をできるだけ早い段階で適用するようにしました。これにより、クエリ内で変更できる設定が増えます。これで #3178 を解決します。#16619 (alexey-milovidov)。
  • 現在、event_time_microseconds フィールドは UInt64 ではなく Decimal64 に保存されるようになりました。#16617 (Nikita Mikhaylov) 。
  • これで、APPLY カラムトランスフォーマーでパラメータ付き関数を使用できるようになりました。#16589 (Amos Bird) 。
  • 削除済みテーブルのデータを削除するバックグラウンドタスクのスケジューリングを改善しました。Atomic データベースでは、実際にテーブルのデータディレクトリが存在しない場合、テーブルのデータディレクトリへの壊れたシンボリックリンクは作成されません。#16584 (tavplubix).
  • WITH セクション内のサブクエリ (CTE) は、名前を使って WITH セクション内の先行するサブクエリを参照できます。#16575 (Amos Bird).
  • system.query_thread_log に current_database を追加。#16558 (Azat Khuzhin) 。
  • 現在のインスタンスで、すでにコミット済みまたは outdated なパーツを detached ディレクトリに fetch できるようにしました。これは、別のクラスターからテーブルを移行する際に、分片のマッピングが N 対 1 になる場合に便利です。また、現在の fetchPartition の実装とも整合しています。 #16538 (Amos Bird).
  • RabbitMQ に複数の改善を加えました。#16263 の不具合を修正しました。あわせて、イベントループの寿命を短縮しました。より効率的なキュー設定を追加しました。#16426 (Kseniia Sumarokova).
  • quantileDeterministic 関数のデバッグアサーションを修正しました。以前のバージョンでは、バグはなかったものの、ネットワーク経由で最大2倍のデータが転送される可能性もありました。#15683 を修正します。#16410 (alexey-milovidov).
  • TablesToDropQueueSize メトリックを追加しました。これは、バックグラウンドでのデータ削除を待機中の削除済みテーブル数に相当します。#16364 (tavplubix).
  • クライアント側で接続が切断された場合の診断が改善されました。以前のバージョンでは、Attempt to read after EOF および Broken 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 を解決しました。#16284 (alesapin).
  • システムに tmp フォルダが存在しない場合 (chroot、設定ミスなど) 、clickhouse-local は現在のディレクトリに一時的なサブフォルダを作成します。#16280 (filimonov)。
  • ネストされたデータ型 (named tuple など) をサブタイプとしてサポートするようにしました。#15587 を修正しました。#16262 (Ivan).
  • DROP DATABASE での database_atomic_wait_for_drop_and_detach_synchronously/NO DELAY/SYNC のサポート。 #16127 (Azat Khuzhin).
  • allow_nondeterministic_optimize_skip_unused_shards を追加しました (rand()dictGet() などの非決定論的な関数を分片キーで使用できるようにするため) 。 #16105 (Azat Khuzhin).
  • HTTP 経由のクエリに対する memory_profiler_step/max_untracked_memory を修正 (テストを含む) 。xml 設定でこの値をグローバルに調整しても効果がない問題も修正。これは、これらの設定が実際には適用されず、デフォルト値 (4MB) だけが使用されているためです。HTTP クエリの最上位の ThreadStatus に対する query_id も修正 (query_id の読み取り後に QueryScope を初期化することで対応) 。#16101 (Azat Khuzhin) 。
  • これにより、クラスター設定の <internal_replication> にかかわらず、ALTER ... ON CLUSTER クエリを実行できるようになりました。#16075 (alesapin) 。
  • 補完候補の読み込みが原因で、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 を修正しました。#15813 (alexey-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).
  • hash table を事前割り当てすることで、hashed/sparse_hashed Dictionary の読み込みを高速化しました。#15454 (Azat Khuzhin).
  • これにより、単純な count 最適化が少し複雑になりました。パーティション式そのものを含む predicates も最適化できるようになりました。また、max_parallel_replicas > 1 のときに誤った count を返していた #11092 も修正します。#15074 (Amos Bird).

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

  • stateless tests 向けの flaky チェックを追加しました。これにより、マージ前に不安定になる可能性がある functional tests を事前に検出できます。#16238 (alesapin).
  • amalgamation ではなく、croaring の適切なバージョンを使用するようにしました。#16285 (sundyli).
  • ya.make ビルドシステム (Arcadia) 向けのビルドファイル生成を改善しました。#16700 (alexey-milovidov).
  • MaterializeMySQL データベースエンジン向けに、MySQL BinLog ファイルのチェックツールを追加しました。MaterializeMySQL は実験的機能です。#16223 (Winter Zhang).
  • 実行可能でないファイルに実行可能ビットが付いていないかをチェックするようにしました。Windows 由来の実行可能ファイルが誤ってコミットされることがよくあります。#15843 (alexey-milovidov).
  • headers 内の #pragma once をチェックするようにしました。#15818 (alexey-milovidov).
  • libhdfs3 内の不適切なコードスタイル &vector[idx] を修正しました。これにより、libcxx のデバッグビルドが修正されます。関連項目: https://github.com/ClickHouse-Extras/libhdfs3/pull/8#15815 (Amos Bird).
  • Mac OS で、ある雑多な Example ツール 1 つのビルドを修正しました。なお、CI では Mac OS 上で Examples はビルドしておらず (ビルドしているのは ClickHouse binary のみです) 、再度壊れない保証はまったくありません。これにより #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 Dictionary の更新を実行した際にクラッシュすることがある問題も修正しました。これにより、#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).
  • MaterializeMySQL で MySQL のプレフィックス索引の変換がサポートされていなかったために、一部のテーブルが MySQL から ClickHouse に同期されない問題を修正しました。これにより、 #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 を対話型モードで複数行クエリとともに使用した際、1 行コメントが誤ってクエリの末尾まで続くように解釈されていた不具合を修正しました。これにより #13654 を修正しました。#17565 (alexey-milovidov) 。
  • ごくまれに、サーバーが接続を受け付けなくなる問題を修正しました。 #17542 (alexey-milovidov).
  • 対応するmutationが別のレプリカで中止された際に、ALTERクエリがハングする不具合を修正しました。これにより #16953 が修正されました。 #17499 (alesapin).
  • ClickHouse によって mark cache のサイズが過小評価される不具合を修正しました。marks を含む非常に小さなファイルが大量にある場合に発生する可能性があります。#17496 (alesapin) 。
  • 設定 optimize_redundant_functions_in_order_by が有効な場合の ORDER BY を修正しました。#17471 (Anton Popov) 。
  • 不適切な最適化により発生する可能性があった、DISTINCT 後の重複を修正しました。#17294#17296 (li chengxiang)。#17439 (Nikolai Kochetov)。
  • LowCardinality 型の JOIN テーブルの読み取り時に発生するクラッシュを修正しました。これにより #17228 を修正しました。#17397 (Nikolai Kochetov) 。
  • サブクエリに const カラムがある場合に set 索引が無効化される問題を修正しました。これにより、#17246 が修正されます。 #17249 (Amos Bird).
  • クラッシュの原因となっていた ColumnConst の比較を修正しました。これにより #17088 も修正されました。 #17135 (Amos Bird).
  • ON CLUSTER クエリが非リーダーの ReplicatedMergeTreeTables で無期限にハングしたままになることがある不具合を修正しました。#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 が修正されます。 #16956 (Anton Popov).
  • 有効な設定 optimize_aggregators_of_group_by_keys と JOIN を伴う GROUP BY の最適化を修正しました。これにより #12604 が解消されます。#16951 (Anton Popov).
  • インストールスクリプトが設定フォルダー内に常にサブディレクトリを作成するよう修正しました。これは、カスタム設定を使用する Docker ビルドにのみ該当します。#16936 (filimonov).
  • ORDER BY を含むクエリで発生する可能性がある Illegal type of argument エラーを修正しました。これにより、#16580 も解決されます。#16928 (Nikolai Kochetov).
  • WriteBufferFromS3 にデータが書き込まれていない場合、multipart upload を中止する。 #16840 (Pavel Kovalenko).
  • 引数を指定せずに any を使用した場合にクラッシュする問題を修正しました。これにより #16803 が修正されます。#16826 (Amos Bird).
  • MySQLプロトコル経由のINSERTクエリで、ClickHouseが影響を受けた行数ではなく常に0を返していた不具合を修正しました。これにより #16605 が修正されました。#16715 (Winter Zhang).
  • TDigest が無制限に増大する問題を修正しました。#16680 (hrissan).
  • 集約関数で接尾辞 if を使用した際に発生していたリモートクエリの失敗を修正しました。これにより #16574#16231 が修正されます #16610 (Winter Zhang) 。

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

バグ修正

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

改善

  • nginxサーバーをプロキシとして S3 を使用する際の回避策。現在の Nginx は、http://domain.com?delete のような空のパスを持つ URL を受け付けませんが、通常の aws-sdk-cpp はこの種の URL を生成します。このコミットでは、このような場合に http://domain.com/?delete のようにパスとして ”/” を含む URL を生成する、パッチ適用済みの aws-sdk-cpp バージョンを使用しています。#16813 (ianton-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).
  • バックグラウンドプールおよびレプリケーションキュー内の有効期限 (TTL) 付き merges の数を制御するための MergeTree settings (max_replicated_merges_with_ttl_in_queue および max_number_of_merges_with_ttl_in_pool) を追加しました。この変更により、古いバージョンとの互換性が失われるのは delete TTL を使用している場合だけです。それ以外では、レプリケーションの互換性は維持されます。非互換性の問題は、すべての分片レプリカを同時に更新するか、すべてのレプリカの更新が完了するまで SYSTEM STOP TTL MERGES を実行することで回避できます。レプリケーションキューに非互換のエントリが入ってしまった場合は、まず SYSTEM STOP TTL MERGES を実行し、その後、非互換な TTL merge が割り当てられたパーティションに対して ALTER TABLE ... DETACH PARTITION ... を実行してください。その後、1 つのレプリカで再度 Attach してください。#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).
  • データの永続性をさらに確保するための設定です。non-replicated 構成で役立ちます。#11948 (Anton Popov).
  • 重複したブロックが、ローカルには存在しない (レプリカから取得されていない) レプリカに書き込まれた場合は、それを無視せずローカルにも書き込むことで、正常にレプリケートされた場合と同じ効果が得られるようにしました。 #11684 (alexey-milovidov).
  • クエリコンテキストで名前付きサブクエリを導入する WITH <identifier> AS (subquery) ... をサポートするようになりました。これにより #2416 がクローズされます。これにより #4967 がクローズされます。#14771 (Amos Bird)。
  • 同じレベルにある他の SELECT クエリに最初の SELECT の WITH ステートメントを伝播し、WITH ステートメント内の別名をサブクエリ内から参照可能にする enable_global_with_statement 設定を導入しました。 #15451 (Amos Bird).
  • 安全なクラスター間クエリ実行 (現在のクエリユーザーとして initial_user を使用) 。 #13156 (Azat Khuzhin). #15551 (Azat Khuzhin).
  • カラムのプロパティとテーブル TTL を削除できるようになりました。クエリ ALTER TABLE MODIFY COLUMN col_name REMOVE what_to_remove および ALTER 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 がクローズされます。#15443 (flynn).
  • クエリ難読化ツールを追加しました。これにより、テスト向けにより多くのクエリを共有できるようになります。これにより #15268 をクローズしました。 #15321 (alexey-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 表現を設定できるようになりました。これは、デフォルトで \N に設定されている output_format_tsv_null_representation 設定で制御されます。これにより #9375 をクローズします。この設定が制御するのは出力フォーマットのみであり、TSV 入力フォーマットでサポートされる NULL 表現は \N のみである点に注意してください。#14586 (Kruglov Pavel).
  • MaterializeMySQL で Decimal 型に対応しました。MaterializeMySQL は実験的な機能です。#14535 (Winter Zhang) 。
  • SHOW DATABASES LIKE 'xxx' を新機能として追加。#14521 (hexiaoting) 。
  • 任意の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) 。
  • system.text_logsystem.trace_logsystem.query_log、および system.query_thread_log テーブルに event_time_microseconds フィールドを追加しました。#14760 (Bharat Nallan) 。
  • event_time_microsecondssystem.asynchronous_metric_log および system.metric_log テーブルに追加しました。 #14514 (Bharat Nallan).
  • system.query_log および system.query_thread_log テーブルに query_start_time_microseconds フィールドを追加。#14252 (Bharat Nallan) 。

バグ修正

  • 制限値にかかわらずメモリが過剰に割り当てられてしまうことがある問題を修正しました。この修正により #14560 をクローズしました。 #16206 (alexey-milovidov).
  • 実行可能な Dictionary ソースのハングを修正しました。以前のバージョンでは、一部のフォーマット (例: JSONEachRow) の使用時に、子プロセスが少なくとも何らかの出力を返すまではデータが子プロセスに渡されませんでした。これにより #1697 をクローズします。これにより #2455 をクローズします。#14525 (alexey-milovidov).
  • 関数 dictGet で例外が発生した場合の二重解放を修正しました。これは、Dictionary の読み込み時にエラーが発生していた場合に起こる可能性がありました。 #16429 (Nikolai Kochetov).
  • totals/rollup/cube 修飾子および GROUP BY キーに対する min/max 関数を含む GROUP BY の不具合を修正しました。 #16393 を修正します。 #16397 (Anton Popov).
  • prefer_localhost_replica=0 と internal_replication 使用時の非同期 Distributed INSERT を修正しました。#16358 (Azat Khuzhin) 。
  • メモリリークを引き起こすおそれのある、TwoLevelStringHashTable 実装内の重大な誤りを修正しました。#16264 (Amos Bird).
  • ラムダ式内での誤った集約により、一部のケースで発生していたセグメンテーションフォルトを修正しました。#16082 (Anton Popov) 。
  • ReplicatedVersionedCollapsingMergeTree に対する ALTER MODIFY ... ORDER BY クエリのハングを修正しました。これにより #15980 が解消されます。#16011 (alesapin).
  • MaterializeMySQL (実験的機能) : collate名およびcharset名のパーサーを修正し、文字列型で length = 0 をサポートしました。#16008 (Winter Zhang) 。
  • 複合キーを持つ辞書で direct レイアウトが使用可能になりました。 #16007 (Anton Popov).
  • 一定期間アクティビティがない状態の後にレプリケーションエラーが発生した際、レプリカが 5〜10 分間ハングする問題を防止しました。#15987 (filimonov).
  • MaterializedView への挿入時または MaterializedView からの選択時に、ターゲットテーブルを同時に削除した場合にまれに発生していたセグメンテーションフォルトを修正しました (Atomic データベースエンジン向け) 。 #15984 (tavplubix).
  • 設定プロファイルのパースにおける曖昧さを修正しました: CREATE USER ... SETTINGS profile readonly は、readonly 制約を持つ profile という設定ではなく、readonly という名前のプロファイルを使用しているものとして扱われるようになりました。これにより #15628 が修正されました。#15982 (Vitaly Baranov).
  • MaterializeMySQL (実験的機能) : データベースの作成に失敗した際に発生するクラッシュを修正しました。 #15954 (Winter Zhang).
  • テーブルが同時にリネームされる際に DROP TABLE IF EXISTSTable ... does not exist エラーで失敗する問題を修正しました (Atomic データベースエンジン) 。複数のテーブルを対象とする一部の DDL クエリ (DROP DATABASERENAME TABLE など) を同時実行したときに、まれに発生していたデッドロックを修正しました。また、DROP/DETACH TABLE を同時実行したときに DROP/DETACH DATABASETable ... does not exist で失敗する問題を修正しました。#15934 (tavplubix).
  • クエリに WHEREPREWHEREGLOBAL IN が含まれる場合に、Distributed テーブルに対するクエリで誤って空の結果が返る不具合を修正しました。#15792#15933 (Nikolai Kochetov) 。
  • #12513 を修正しました: クエリが再解析された際に、同じエイリアスを持つ差分式で問題が発生する不具合。 #15886 (Winter Zhang).
  • RBAC 実装でごくまれに発生しうるデッドロックを修正しました。 #15875 (Vitaly Baranov).
  • ALTER MODIFY COLUMN クエリの後に実行された SELECT ... ORDER BY DESC クエリで発生していた Block structure mismatch 例外を修正しました。#15800 を修正。#15852 (alesapin).
  • MaterializeMySQL (実験的機能) : select count() の不正確な結果を修正しました。#15767 (tavplubix).
  • 仮想カラムのみを選択するクエリの一部のケースを修正しました。従来は、Not found column _nothing in block 例外がスローされることがありました。#12298 を修正しました。 #15756 (Anton Popov).
  • Atomic データベースで内部テーブルを持つ materialized view の削除を修正しました (MV の内部テーブルに対する再帰的な DROP TABLE によって worker スレッドがハングし、その結果、以降のすべての DROP TABLE もハングしていました) 。 #15743 (Azat Khuzhin).
  • 最初の試行に失敗した場合でも、パートを別のディスク/ボリュームに移動できるようにしました。 #15723 (Pavel Kovalenko).
  • MV のクエリに ARRAY JOIN が含まれている場合に、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 を修正しました。#15662 (Nikolai Kochetov).
  • S3 を使用した MergeTree への insert 時の適切なエラー処理。S3 上の MergeTree は実験的機能です。#15657 (Pavel Kovalenko) 。
  • S3 table function の不具合を修正しました: URL から取得したリージョンが S3 クライアントの設定に適用されていませんでした。#15646 (Vladimir Chebotarev).
  • クエリプランの ReadFromStorage step におけるリソースの破棄順序を修正しました。まれにクラッシュが発生する可能性がありました。おそらく #15610 に関連しています。#15645 (Nikolai 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 が修正されます。#15557 (alexey-milovidov).
  • イニシエーターにデータベースが存在しない場合に、IN および分散テーブルを含むクエリで Database <db> does not exist. というエラーが発生する問題を修正しました。#15538 (Artem Zuikov).
  • mutation が、MOVE または REPLACE PARTITION の後、あるいはまれに DETACH または DROP PARTITION の後に、存在しない part を待ち続けてハングすることがありました。これは修正されました。#15537 (tavplubix) 。
  • 同じパターンで LIKE を実行すると、ILIKE 演算子が大文字と小文字を区別しない動作をしなくなる不具合を修正しました。#15536 (alesapin).
  • データに存在しないカラムであり、かつ同じくデータに存在しない他のカラムに依存しているカラムを選択した際に発生する Missing columns エラーを修正しました。#15530 を修正しています。#15532 (alesapin).
  • 無視する代わりに、単一のパラメータが ReplicatedMergeTree に渡された場合はエラーを出すようにしました。 #15516 (nvartolomei).
  • DDLWorker におけるイベント購読のバグを修正しました。これにより、まれに ON CLUSTER でクエリがハングする問題が発生する可能性がありました。導入バージョン #13450#15477 (alesapin).
  • boundingRatio 集約関数の第2引数の型が不正な場合に、適切なエラーを返すようにしました。#15407 (detailyang).
  • #15365 を修正: MySQL engine のデータベースをアタッチすると例外がスローされる (クエリコンテキストなし) 。#15384 (Winter Zhang) 。
  • SELECTクエリ内でカラムトランスフォーマーが複数回出現する場合の問題を修正しました。#15378 (Amos Bird) 。
  • S3 ストレージの圧縮の不具合を修正しました。#15376 (Vladimir Chebotarev).
  • 空の time_zone 引数に関するエラーにより SELECT toStartOfDay(today()) のようなクエリが失敗する不具合を修正しました。#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).
  • joinGetLowCardinality 型と併用した際にインスタンスがクラッシュする問題を修正しました。これにより #15214 が修正されます。#15220 (Amos Bird)。
  • ALTERクエリ後、新しい構造のデータをBufferに挿入できなくなるBufferテーブルエンジンのバグを修正しました。#15117 を修正します。#15192 (alesapin).
  • MySQLのカラム定義パケット内にあるDecimalフィールドのサイズを調整。 #15152 (maqroll).
  • join_algorithm='auto' における Data compressed with different methods の問題を修正しました。join_algorithm='partial_merge' では、左側のtableのjoinキーの型として LowCardinality が維持されるようにしました。#15088 (Artem Zuikov).
  • jemalloc を更新し、affinity mask 使用時の 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 が修正されます。#15033 (Amos Bird) 。
  • 関数 bar が細工された引数を指定して呼び出された場合、バッファオーバーフローが発生する可能性がありました。これにより #13926 が修正されました。#15028 (alexey-milovidov) 。
  • Mac OS 上の Docker で clickhouse-server を実行している際に、Atomic データベースで DDL クエリを実行すると発生する Cannot rename ... errno: 22, strerror: Invalid argument エラーを修正しました。 #15024 (tavplubix).
  • メモリ制限を超過して HashJoin から MergeJoin へ切り替える必要がある場合に、join&#95;algorith=&#39;auto&#39; を指定した RIGHT または FULL JOIN で発生するクラッシュを修正しました。#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 関数を含むサブクエリで predicate push down が機能するように修正しました。#14847 を修正しました。#14937 (filimonov).
  • 各論理コアごとの CPU 周波数を system.asynchronous_metrics で公開するようにしました。これにより #14923 が修正されます。#14924 (Alexander Kuzmenkov).
  • MaterializeMySQL (実験的機能) : .metadata.tmp File exists エラーを修正しました。#14898 (Winter Zhang) 。
  • extractAllGroups 関数の一部の呼び出しで “Memory limit exceeded” エラーが発生する可能性がある問題を修正しました。これにより #13383 が修正されます。 #14889 (alexey-milovidov).
  • ファイルディスクリプタを使って StorageFile に INSERT しようとした際に発生する SIGSEGV を修正しました。#14887 (Azat Khuzhin).
  • cache Dictionary におけるセグメンテーション違反を修正しました。#14837#14879 (Nikita Mikhaylov).
  • MaterializeMySQL (実験的機能) : MySQL の binlog イベントのパースに関する不具合を修正しました。この不具合により、MaterializeMySQL データベースエンジンで Attempt to read after eof および Packet payload is not fully read エラーが発生していました。#14852 (Winter Zhang) 。
  • まれに、クエリ対象のカラムに、同じく DEFAULT を持ちながら SELECT クエリには含まれず、ディスク上にも存在しない別のカラムに依存する DEFAULT 式がある場合、SELECT クエリでエラーが発生する問題を修正しました。#14531 を部分的に修正します。#14845 (alesapin).
  • 設定ファイルを ZK から取得する必要がある場合 (from_zk の include オプションを使用) 、起動時にサーバーが ZooKeeper との通信中にハングすることがある問題を修正しました。これにより #14814 が修正されます。#14843 (Alexander Kuzmenkov) 。
  • 符号付き型に対する、縮小を伴う Int -> Int CAST での単調性検出の誤りを修正しました。これにより、クエリ結果が誤る可能性がありました。このバグは #14513 で明らかになりました。#14783 (Amos Bird).
  • Replace カラム変換子で、識別子が複製したASTに置き換えられるようになりました。これにより #14695 が修正されます。 #14734 (Amos Bird).
  • ALTER ... MODIFY QUERY の実行時に、materialized view のメタデータでデフォルトのデータベース名が欠落していた問題を修正しました。#14664 (tavplubix) 。
  • 代入式と定数値 (UPDATE x = 42 など) を含む Nullable カラムに対する ALTER UPDATE ミューテーションで、カラムの値が不正になったり、セグメンテーション違反が発生したりする不具合を修正しました。#13634#14045#14646 (alesapin) 。
  • 結果カラムの小数スケールの誤りによって発生していた 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 エラーを修正しました。 #14696 (BohuTANG).

改善

  • 新規作成されるデータベースで、Atomic データベースエンジンがデフォルトで有効になりました。#15003 (tavplubix) 。
  • サブタイプを持つカラムで、DeltaT64 などの専用コーデックを指定できるようにしました。#12551 を実装し、#11397#4609 を修正しました。#15089 (alesapin).
  • 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 の version カラムの型を変更できるようになりました。 #15442 (alesapin).
  • レプリケートテーブルの作成時に、zookeeper_path 内の {database}{table}{uuid} マクロを展開するようにしました。サーバー再起動後に zookeeper_path が破損するおそれがある場合は、RENAME TABLE を許可しません。#6917 を修正しました。#15348 (tavplubix) 。
  • 関数 now で、タイムゾーンを指定する引数が使えるようになりました。これにより 15264 がクローズされました。#15285 (flynn).
  • /docker-entrypoint-initdb.d/ 内のすべてのスクリプトの実行が完了するまで、ClickHouse server への接続を許可しないようにしました。 #15244 (Aleksei Kozharin).
  • EXPLAIN PLAN クエリに optimize 設定が追加されました。これを有効にすると、クエリプランレベルの最適化が適用されます。デフォルトで有効です。 #15201 (Nikolai Kochetov).
  • CAST の引数の数が正しくない場合に、適切な例外メッセージを表示するようにしました。これにより #13992 がクローズされます。 #15029 (alexey-milovidov).
  • データパートの挿入時に TTL move を無効にするオプションを追加しました。 #15000 (Pavel Kovalenko).
  • ミューテーションの実行時にはキー制約を無視するようにしました。このプルリクエストがないと、force_index_by_date = 1 または force_primary_key = 1 の場合にミューテーションを実行できません。 #14973 (Amos Bird).
  • 以前の削除の試行が ZooKeeper セッションの有効期限切れにより失敗していた場合でも、レプリケートテーブルを削除できるようにしました。これにより #11891 が修正されます。 #14926 (alexey-milovidov).
  • 分散テーブルに対して SETTINGS 付きの SELECT を実行した際に、設定の制約違反が過剰に発生する問題を修正しました。#14876 (Amos Bird) 。
  • load_balancing_first_offset クエリ設定を追加し、最初のレプリカを明示的に指定できるようにしました。これは FIRST_OR_RANDOM ロードバランシング戦略と組み合わせて使用し、レプリカの負荷を制御できます。 #14867 (Amos Bird).
  • EXPLAIN の結果に SETJOIN のサブクエリを表示するようにしました。#14856 (Nikolai Kochetov) 。
  • storage Distributed でマルチボリュームのストレージ構成を使用可能にしました。#14839 (Pavel Kovalenko) 。
  • query_start_timequery_start_time_microseconds を、同じ timespec から生成するようにしました。#14831 (Bharat 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).
  • distributed DDL を並列に実行できるようにしました。#14684 (Azat Khuzhin) 。
  • QueryMemoryLimitExceeded イベントカウンターを追加しました。これにより #14589 がクローズされます。#14647 (fastio).
  • クエリのフォーマットにおける末尾の空白をいくつか修正しました。 #14595 (Azat Khuzhin).
  • ClickHouse では、partition expr と key expr は異なる方法で扱われます。Partition expr は関連するカラムを含む minmax index の構築に使用される一方、primary key expr は expr として保存されます。場合によっては、ユーザーが partition by i / 1000 のように、より粗い粒度でテーブルをパーティション化することがあります。しかし、二項演算子は単調ではないため、この PR はその問題の修正を試みています。ほかのユースケースにも役立つ可能性があります。#14513 (Amos Bird).
  • DiskS3 のアクセスチェックを省略するオプションを追加しました。s3 ディスクは実験的機能です。#14497 (Pavel Kovalenko).
  • 進行中の S3 リクエストがある場合のserverのシャットダウン処理を高速化しました。 #14496 (Pavel Kovalenko).
  • SYSTEM RELOAD CONFIG は、リロードに失敗した場合に例外をスローし、従来の users.xml を引き続き使用するようになりました。バックグラウンドでの定期的なリロードでも、リロードに失敗した場合は従来の users.xml を引き続き使用します。#14492 (Vitaly Baranov) 。
  • clickhouse-client のスクリプトモードで、VALUES フォーマットのインラインデータを含む INSERT について、改行に加え、セミコロンもデータ終端としてサポートしました。#12288 をクローズしました。#13192 (Alexander Kuzmenkov) 。
  • compact パーツでカスタムコーデックがサポートされました。 #12183 (Anton Popov).

パフォーマンス改善

  • 小さなパーツではデフォルトで compact パーツを有効化しました。これにより、頻繁な insert をやや効率的に (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).
  • vertical merge の一時データの保存に、一時ディスクを明示的に使用するようにしました。 #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).
  • リンク時最適化により、ClickHouse バイナリが小さくなりました。

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

  • 現在、ClickHouse の本番ビルドには clang-11 を使用しています。#15239 (alesapin).
  • 現在、CI での ClickHouse のビルドには clang-11 を使用しています。#14846 (alesapin) 。
  • バイナリのビルド (Linux、Darwin、AArch64、FreeDSD) を 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パスマネージャーを使用します。 #15608 (Danila Kutenin) 。
  • いずれの C++ 翻訳単位も、ビルド時間が 10 分を超えたり、メモリ使用量が 10 GB を超えたりしないようにしました。これにより、#14925 が修正されます。#15060 (alexey-milovidov).
  • テスト実行とプロファイル実行を分割することで、性能テストの安定性を高め、より実態に即したものにしました。 #15027 (alexey-milovidov).
  • パフォーマンステストの信頼性向上を図りました。これは、madvise を使用して、プロセスの実行可能メモリを実行中に transparent huge pages を使うよう動的に再マップすることで実現しており、パフォーマンステストの不安定さの主な原因である iTLB ミスの回数を減らせる可能性があります。#14685 (alexey-milovidov).
  • python3 に移行しました。これにより #14886 がクローズされました。#15007 (Azat Khuzhin).
  • サーバーが応答しない場合に functional tests を即座に失敗させるようにしました。これにより #15262 をクローズします。#15267 (alexey-milovidov)。
  • 設定ファイルなしでAArch64版のclickhouse-serverを実行できるようにしました。これにより #15174 への対応が容易になります。 #15266 (alexey-milovidov).
  • CI Dockerイメージの改善: ZooKeeperを廃止し、テスト設定のインストール用スクリプトを1本化しました。 #15215 (alesapin).
  • fast test スクリプトでの CMake オプションの受け渡しを修正。#14711 のerrorを修正。#15155 (alesapin).
  • 1つのコマンドでハードウェアベンチマークを実行できるスクリプトを追加しました。#15115 (alexey-milovidov) 。
  • 大規模なテスト test_dictionaries_all_layouts_and_sources を、より小さなテストに分割しました。#15110 (Nikita Mikhaylov) 。
  • base64 の MSan レポートを修正した可能性があります (AVX-512 を搭載したサーバー上) 。これにより #14006 が修正されます。#15030 (alexey-milovidov).
  • すべてのインテグレーションテスト用 *.py ファイル内のコードを整形し、整理しました。 #14864 (Bharat Nallan).
  • CIで見つかった、MaterializeMySQL の空のトランザクションに関する不安定だったテストケースを修正しました。 #14854 (Winter Zhang).
  • ビルドの高速化を少し試みました。 #14808 (alexey-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) 。#14555 (Artem 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 を修正しました。#16988 (Anton 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 を修正しました。#17664 (tavplubix).
  • clickhouse-client を対話型モードで複数行のクエリに使用した際、1 行コメントが誤ってクエリの末尾まで続いてしまう問題を修正しました。これにより #13654 が修正されます。#17565 (alexey-milovidov).
  • ごくまれにサーバーが接続を受け付けなくなる問題を修正しました。 #17542 (alexey-milovidov).
  • 対応するmutationが別のレプリカで停止された場合に、ALTERクエリがハングする問題を修正しました。#16953#17499 (alesapin)。
  • ClickHouse による mark cache サイズの見積もりが過小になる不具合を修正しました。marks を含む非常に小さなファイルが多数ある場合に発生する可能性があります。 #17496 (alesapin).
  • 設定 optimize_redundant_functions_in_order_by を有効にした場合の ORDER BY を修正しました。#17471 (Anton Popov).
  • 不適切な最適化により、DISTINCT の後に重複が発生する可能性があった問題を修正しました。#17294 を修正します。#17296 (li chengxiang)。#17439 (Nikolai Kochetov)。
  • LowCardinality 型の JOIN テーブルの読み取り時に発生するクラッシュを修正しました。#17228 を修正。#17397 (Nikolai Kochetov).
  • サブクエリに const カラムがある場合に Set 索引が無効化される不具合を修正しました。これにより #17246 が修正されます。 #17249 (Amos Bird).
  • クラッシュの原因となる ColumnConst の比較を修正しました。これにより #17088 が修正されました。 #17135 (Amos Bird).
  • some_tableAS table_function() で作成されている場合に、CREATE TABLE ... AS some_table クエリでクラッシュする問題を修正しました。Fixes #16944#17072 (tavplubix) 。
  • 関数 fuzzBits のバグ修正。関連 issue: #16980#17051 (hexiaoting).
  • 実行中にキャンセルされる可能性があるリモートクエリ (LIMIT を含むクエリなど) で、不要なネットワークエラーが発生しないようにしました。 #17006 (Azat Khuzhin).
  • 軽微な改良。 #16866 (tavplubix).
  • MySQLプロトコル経由のINSERTクエリで、影響を受けた行数が返されるようになりました。以前はClickHouseが常に0を返していましたが、この問題を修正しました。#16605 を修正しました。 #16715 (Winter Zhang).

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

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

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

改善

  • SNI を必要とする clickhouse-server のセキュアな endpoint に接続できるようになりました。これは、clickhouse-server が TLS proxy の背後でホストされている場合に利用できます。#16938 (filimonov).
  • 条件付き集約関数 (たとえば avgIfsumIfmaxIf) は、対象の行が存在せず、Nullable の argument を使用している場合、NULL を返すようになりました。#13964 (Winter Zhang).

バグ修正

  • リーダーでない ReplicatedMergeTreeTables で、ON CLUSTER クエリが永久にハングする可能性がある不具合を修正しました。 #17089 (alesapin).
  • エラー時に format_avro_schema_registry_url の IP を再解決するようにしました。 #16985 (filimonov).
  • SELECT に変更対象のカラムに対する WHERE 式が含まれており、ALTER がまだ完了していない場合に、ALTER TABLE ... MODIFY COLUMN ... NewType の後で server がクラッシュする可能性がある不具合を修正しました。 #16968 (Amos Bird).
  • インストールスクリプトが config フォルダー内に常にサブディレクトリを作成するようにしました。これは、カスタム config を使用する Docker ビルドでのみ関係します。 #16936 (filimonov).
  • ORDER BY を含むクエリで発生する可能性がある Illegal type of argument エラーを修正しました。 #16580 を修正。 #16928 (Nikolai Kochetov).
  • WriteBufferFromS3 にデータがまったく書き込まれなかった場合は、multipart upload を中止するようにしました。 #16840 (Pavel Kovalenko).
  • 引数なしで any を使用したときにクラッシュする不具合を修正しました。これは #16803 への対応です。 cc @azat. #16826 (Amos Bird).
  • transform_null_in setting が有効な場合の、複数カラムおよび tuples に対する IN operator を修正しました。 #15310 を修正。 #16722 (Anton Popov).
  • これにより、max_threads>0 かつ ORDER BY に expression がある場合の optimize_read_in_order/optimize_aggregation_in_order が修正されます。 #16637 (Azat Khuzhin).
  • #16574 および #16231 を修正し、‘if’ 接尾辞 集約関数 を使用した際にリモートクエリが失敗する不具合を修正しました。 #16610 (Winter Zhang).
  • 例外発生時にクエリがより早く終了するようになりました。例外が発生した場合は、リモートレプリカでの実行をキャンセルします。 #15578 (Azat Khuzhin).

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

バグ修正

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

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

バグ修正

  • 関数 dictGet で例外が発生した場合の二重解放を修正しました。これは、Dictionary の読み込み時にエラーが発生した場合に起こり得ました。#16429 (Nikolai Kochetov) 。
  • totals/ロールアップ/cube 修飾子を伴う GROUP BY と、GROUP BY キーに対する min/max 関数の不具合を修正しました。#16393#16397 (Anton 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).
  • MaterializedView への insert または MaterializedView からの SELECT 中に、ターゲットテーブルを同時に drop した場合にまれに発生していたセグメンテーションフォルトを修正しました (Atomic データベースエンジン) 。#15984 (tavplubix).
  • settings profiles のパースにおける曖昧さを修正しました: CREATE USER ... SETTINGS profile readonly は、readonly 制約を持つ profile という名前の設定ではなく、readonly という名前の profile を使用しているものと見なされるようになりました。これにより #15628 が修正されました。#15982 (Vitaly Baranov).
  • データベースの作成に失敗した際にクラッシュする不具合を修正しました。 #15954 (Winter Zhang) 。
  • テーブルが同時にリネームされている場合に、DROP TABLE IF EXISTSTable ... does not exist エラーで失敗する問題を修正しました (Atomic データベースエンジン) 。複数のテーブルを伴う一部の DDL クエリ (DROP DATABASERENAME TABLE など) を同時実行した際に、まれにデッドロックが発生する問題を修正しました。DROP/DETACH TABLE を同時実行した際に、DROP/DETACH DATABASETable ... does not exist エラーで失敗する問題を修正しました。#15934 (tavplubix).
  • Distributed テーブルに対するクエリで、WHEREPREWHEREGLOBAL IN が含まれる場合に、誤って空の結果が返される問題を修正しました。#15792#15933 (Nikolai Kochetov).
  • RBACで発生する可能性のあるデッドロックを修正しました。#15875 (Vitaly Baranov).
  • ALTER MODIFY COLUMN クエリの後に実行された SELECT ... ORDER BY DESC クエリで発生していた Block structure mismatch 例外を修正しました。#15800 を修正。#15852 (alesapin) 。
  • MaterializeMySQL における select count() の不正確な問題を修正しました。 #15767 (tavplubix).
  • 仮想カラムのみが選択されるクエリの一部のケースを修正しました。これまでは、Not found column _nothing in block という例外がスローされることがありました。#12298 を修正しました。#15756 (Anton Popov) 。
  • max_replicated_logs_to_keep 設定のデフォルト値が低すぎた問題を修正しました。これにより、レプリカが過度に失われやすくなる可能性がありました。あわせて、クローン元として最新のレプリカを選択することで、失われたレプリカの復旧プロセスも改善しました。また、失われたレプリカから古いパーツを削除せず、代わりに detach するようにしました。#15701 (tavplubix).
  • Bufferテーブルの構造が宛先テーブルと異なる場合に、そのBufferテーブルの読み取り時に発生していたエラーCannot add simple transform to empty Pipeを修正しました。この問題は、クエリに対して宛先テーブルが空の結果を返した場合に発生する可能性がありました。#15529#15662 (Nikolai Kochetov).
  • S3 table function の globs に関する不具合を修正しました。URL から取得した Region が 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 に関連しています。#15645 (Nikolai 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 を修正しました。#15557 (alexey-milovidov).
  • AggregatingInOrderTransform/optimize_aggregation_in_order におけるメモリ使用量を大幅に低減しました。#15543 (Azat Khuzhin) 。
  • Mutation が、MOVE または REPLACE PARTITION の後、あるいはまれに DETACH または DROP PARTITION の後に、存在しない part を待ち続けてハングすることがありました。この問題を修正しました。#15537 (tavplubix).
  • 同じ patternLIKE を実行した場合に、ILIKE 演算子が大文字と小文字を区別しない動作をしなくなる不具合を修正しました。#15536 (alesapin).
  • データに存在しない、かつ同様にデータに存在しない他のカラムに依存するカラムを選択した際に発生する Missing columns エラーを修正しました。#15530#15532 (alesapin).
  • DDLWorker のイベントサブスクリプションに関する不具合を修正しました。この不具合により、まれに ON CLUSTER のクエリがハングすることがありました。導入バージョン #13450#15477 (alesapin).
  • 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).
  • ALTER クエリ後に新しい構造のデータを Buffer に挿入できなくなる Buffer テーブルエンジンのバグを修正しました。 #15117 を修正しました。 #15192 (alesapin).
  • mysqlのカラム定義パケット内にあるdecimalsフィールドのサイズを調整。 #15152 (maqroll).
  • Mac OS上のDockerでclickhouse-serverを実行している環境で、AtomicデータベースにおけるDDLクエリの実行時に発生するCannot rename ... errno: 22, strerror: Invalid argumentエラーを修正しました。#15024 (tavplubix) 。
  • サブクエリに finalizeAggregation 関数が含まれる場合でも predicate push down が機能するように修正しました。#14847 を修正しました。#14937 (filimonov) 。
  • 設定ファイルを ZK から取得する必要がある場合 (from_zk の include オプションを使用) 、ZooKeeper との通信中にサーバーが起動時にハングすることがある問題を修正しました。これにより #14814 が修正されます。#14843 (Alexander Kuzmenkov).

改善

  • ALTERクエリで、VersionedCollapsingMergeTree のバージョンカラムの型を変更できるようになりました。#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 の再起動時に新しいバージョンで起動するようにします) 。

新機能

  • 選択カラムのリスト (* または COLUMNS(...) の後) に適用できるカラム変換子 EXCEPTREPLACEAPPLY を追加しました。たとえば、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).

バグ修正

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

実験的機能

  • 指定したSELECTクエリに基づいてランダムなデータベースを生成するための db-generator ツールを追加しました。ユーザーからのバグ報告が不完全な場合でも、問題の再現に役立つ可能性があります。 #14442 (Nikita Mikhaylov) #10973 (ZeDRoman).

改善

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

パフォーマンス改善

  • GROUP BY sharding_key を伴う Distributed に対する LIMIT/LIMIT BY/ORDER BY を含むクエリの最適化 (optimize_skip_unused_shards および optimize_distributed_group_by_sharding_key 有効時) 。#10373 (Azat Khuzhin).
  • 複数の JOIN および IN に対する Set の作成を並列化しました。これにより、複数の異なる IN subquery 式を含むクエリのパフォーマンスがわずかに向上する場合があります。#14412 (Nikolai Kochetov).
  • 各 consumer に独立した thread を割り当てることで、Kafka エンジンのパフォーマンスを改善しました。あわせて、ストリーミングエンジン (Kafka など) 専用の thread pool を分離しました。#13939 (fastio).

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

  • Functions からデバッグ情報を削除し、デバッグビルド時のバイナリサイズを削減しました。これは、非常に古いリンカーを使用している Yandex のある社内プロジェクトでのみ必要です。#14549 (alexey-milovidov).
  • clang 11 でのビルドに向けた準備を行いました。#14455 (alexey-milovidov).
  • バックポートスクリプトのロジックを修正しました。以前のバージョンでは、色が完全な赤のラベルであれば何でもトリガーされていました。これは奇妙でした。#14433 (alexey-milovidov).
  • 結合テストではデフォルトのベース設定を使用するようになりました。設定の変更はすべて、各インスタンスに対して main_configs、user_configs、dictionaries パラメータで明示的に行います。#13647 (Ilya Yatsishin).

ClickHouse リリース 20.8

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

バグ修正

  • 単項関数および Nullable 型に対する *If combinator の不具合を修正しました。#18806 (Azat Khuzhin).
  • wide パーツ から compact パーツ へのマージを制限しました。vertical merge の場合、結果パーツの破損につながっていました。#18381 (Anton Popov).

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

バグ修正

  • マージ中の AIO による書き込みを無効化しました。マージ時にプライマリのキーカラムでごくまれにデータ破損が発生する可能性があるためです。#18481 (alesapin).
  • Nullable(String) 型の引数で toType(...) 関数 (toDatetoUInt32 など) を実行した際に発生する value is too short エラーを修正しました。現在は、このような関数はパースエラー時に例外を送出するのではなく、NULL を返します。#7673 を修正しました。#18445 (tavplubix).
  • 二段階集約の使用時に、combinator Distinct を伴う aggregate functions で発生しうるクラッシュを修正しました。#17682 を修正しました。#18365 (Anton Popov).

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

バグ修正

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

ClickHouse リリース v20.8.6.6-lts (2020-11-13)

バグ修正

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

ClickHouse リリース v20.8.5.45-lts、2020-10-29

バグ修正

  • 関数 dictGet で例外発生時に起こる二重解放を修正しました。これは、Dictionary の読み込み時にエラーがある場合に発生する可能性がありました。#16429 (Nikolai Kochetov) 。
  • totals/ロールアップ/cube 修飾子、および GROUP BY キーに対する min/max 関数を含む GROUP BY の不具合を修正しました。#16393 を修正しました。#16397 (Anton Popov) 。
  • prefer_localhost_replica=0 および internal_replication の場合の非同期 Distributed INSERT を修正しました。 #16358 (Azat Khuzhin).
  • GROUP BY で文字列キーを使用する際に発生する可能性のあるメモリリークを修正しました。原因は TwoLevelStringHashTable 実装上のエラーです。#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).
  • MaterializedView への insert または MaterializedView からの select と、ターゲットテーブルの drop を同時に実行した際に発生する、まれな segfault を修正しました (Atomic データベースエンジン向け) 。#15984 (tavplubix).
  • 設定プロファイルのパースにおける曖昧さを修正しました。CREATE USER ... SETTINGS profile readonly は、readonly 制約付きの profile という名前の設定ではなく、readonly という名前のプロファイルを使用しているものとして扱われるようになりました。これにより #15628 が修正されました。#15982 (Vitaly Baranov).
  • データベースの作成に失敗した際に発生するクラッシュを修正しました。#15954 (Winter Zhang).
  • テーブル名が同時実行で変更された際に、DROP TABLE IF EXISTSTable ... does not exist エラーで失敗する問題を修正しました (Atomic データベースエンジン) 。複数のテーブルを対象とする一部の DDL クエリ (DROP DATABASERENAME TABLE など) を同時実行した際に発生するまれなデッドロックを修正しました。DROP/DETACH TABLE の同時実行時に、DROP/DETACH DATABASETable ... does not exist で失敗する問題を修正しました。#15934 (tavplubix).
  • WHEREPREWHEREGLOBAL IN を含むクエリで、Distributed テーブルに対するクエリ結果が誤って空になる問題を修正しました。#15792 を修正しました。#15933 (Nikolai Kochetov) 。
  • RBAC におけるデッドロックの可能性を解消しました。#15875 (Vitaly Baranov) 。
  • ALTER MODIFY COLUMN クエリの後に実行された SELECT ... ORDER BY DESC クエリで発生する例外 Block structure mismatch を修正しました。#15800 を修正。#15852 (alesapin)。
  • 仮想カラムのみを選択するクエリの一部のケースを修正しました。以前は、Not found column _nothing in block 例外がスローされることがありました。#12298 を修正しました。#15756 (Anton 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 を修正しました。#15662 (Nikolai Kochetov).
  • S3 table function のグロブに関する不具合を修正しました。URL から取得したリージョンが S3 クライアントの設定に適用されていませんでした。#15646 (Vladimir Chebotarev).
  • 読み取り専用テーブルをデタッチする際に、ReadonlyReplica Metric をデクリメントするようにしました。これにより #15598 を修正しました。#15592 (sundyli).
  • 無視する代わりに、単一のパラメータが ReplicatedMergeTree に渡された場合はエラーを出すようにしました。#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 に関連しています。#15645 (Nikolai 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 を修正しました。#15557 (alexey-milovidov).
  • AggregatingInOrderTransform/optimize_aggregation_in_order でのメモリ使用量を大幅に削減しました。 #15543 (Azat Khuzhin).
  • MOVE または REPLACE PARTITION の後、またはまれに DETACHDROP PARTITION の後に、存在しない part を待ち続けて Mutation がハングすることがありました。この問題は修正されました。#15537 (tavplubix) 。
  • 同じパターンでLIKEを実行した後に、ILIKE演算子が大文字と小文字を区別するようになってしまう不具合を修正しました。 #15536 (alesapin).
  • データ内に存在せず、しかも同様にデータ内に存在しない他のカラムに依存するカラムを選択した際に発生する Missing columns エラーを修正しました。#15530 を修正。 #15532 (alesapin).
  • 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 も修正されます。#15220 (Amos Bird)。
  • ALTER クエリ後に、新しい構造のデータを Buffer に挿入できない Buffer テーブルエンジンのバグを修正しました。#15117 を修正しました。#15192 (alesapin)。
  • MySQL のカラム定義パケット内の decimals フィールドのサイズを調整。 #15152 (maqroll).
  • String と FixedString の間では、すでにパディングを考慮した比較を使用しています (https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333) 。この PR では同じロジックをフィールド比較にも適用し、FixedString を主キーとして使用する場合の問題を修正しています。これにより #14908 が修正されます。#15033 (Amos Bird) 。
  • 関数 bar が細工された引数を指定して呼び出された場合、バッファオーバーフローが発生する可能性がありました。これにより #13926 が修正されました。#15028 (alexey-milovidov).
  • Mac OS 上の Docker で clickhouse-server を実行している際に、Atomic データベースで DDL クエリを実行すると発生する Cannot rename ... errno: 22, strerror: Invalid argument エラーを修正しました。 #15024 (tavplubix) 。
  • これで、設定 number_of_free_entries_in_pool_to_execute_mutationnumber_of_free_entries_in_pool_to_lower_max_size_of_mergebackground_pool_size と同じ値に設定できるようになりました。#14975 (alesapin).
  • サブクエリに finalizeAggregation 関数が含まれる場合でも、述語のプッシュダウンが機能するように修正しました。#14847 を修正。#14937 (filimonov).
  • system.asynchronous_metrics で、論理コアごとの CPU 周波数を公開するようにしました。これにより、#14923 が修正されます。#14924 (Alexander Kuzmenkov).
  • MaterializeMySQL データベースエンジンの使用時に発生していた .metadata.tmp File exists エラーを修正しました。#14898 (Winter Zhang) 。
  • 設定ファイルを ZK から取得する必要がある場合 (from_zk の include オプションを使用) 、起動時に ZooKeeper との通信中にサーバーがハングすることがある問題を修正しました。これにより #14814 が解消されます。#14843 (Alexander Kuzmenkov) 。
  • 符号付き型における縮小 Int -> Int CAST の単調性検出の誤りを修正しました。この不具合により、クエリ結果が誤る可能性がありました。このバグは #14513 で報告されました。#14783 (Amos Bird).
  • Nullable カラムの誤ったソート順を修正しました。これにより #14344 が修正されます。 #14495 (Nikita Mikhaylov).

改善

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

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

バグ修正

  • extractAllGroups 関数の一部の呼び出しで “Memory limit exceeded” エラーが発生することがある問題を修正しました。これにより #13383 が修正されます。#14889 (alexey-milovidov)。
  • StorageFile(fd) への INSERT の試行時に発生する SIGSEGV を修正しました。#14887 (Azat Khuzhin)。
  • クエリ対象のカラムに、別のカラムに依存する DEFAULT 式があり、その別のカラムにも DEFAULT が設定されていて、さらに SELECT クエリに含まれずディスク上にも存在しない場合に、まれに発生するエラーを修正しました。#14531 を部分的に修正します。#14845 (alesapin)。
  • ALTER ... MODIFY QUERY の実行時に、materialized view のメタデータでデフォルトのデータベース名が欠落していた問題を修正しました。#14664 (tavplubix)。
  • 代入式に Nullable カラムと定数値 (たとえば UPDATE x = 42) を含む ALTER UPDATE mutation によって、カラムの値が不正になる、または segfault が発生するバグを修正しました。#13634#14045 を修正します。#14646 (alesapin)。
  • 結果カラムの decimal scale が誤っていたことにより発生していた、Decimal の乗算結果の誤りを修正しました。#14603 (Artem Zuikov)。
  • lc->isNullable()ls->getDictionaryPtr()->isNullable() も正しい結果を返さなかったため、チェッカーを追加しました。#14591 (myrrc)。
  • StorageReplicatedMergeTree エンジンの CreateQuery 中に Zookeeper 例外が発生した場合、データディレクトリをクリーンアップするようにしました。#14563 (Bharat Nallan)。
  • combinator -Resample を持つ関数で、非常に大きなパラメータによる overflow の結果として発生することがあった、まれな segfault を修正しました。#14562 (Anton Popov)。

改善

  • S3 リクエストの処理中でも、サーバーのシャットダウン処理を高速化しました。 #14858 (Pavel Kovalenko).
  • Distributed ストレージで、マルチボリュームのストレージ構成を使用できるようにしました。 #14839 (Pavel Kovalenko).
  • S3 リクエストの処理中でも、サーバーのシャットダウン処理を高速化しました。 #14496 (Pavel Kovalenko).
  • compact パーツでカスタムコーデックをサポートしました。 #12183 (Anton 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 に変更されたため、falsetrue はサポートされなくなりました。サーバー設定にこれらの値が含まれている場合、サーバーは起動しません。代わりに、それぞれ 01 に置き換えてください。 #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 に対応する別名を持つ quantileExactLowquantileExactHigh の実装を追加しました。#13818 (Bharat Nallan)。
  • 日付/時刻の値を指定した単位で切り詰める date_trunc 関数を追加しました。#13888 (Vladimir Golovchenko)。
  • メイン設定に新しいオプションセクション <user_directories> を追加しました。#13425 (Vitaly Baranov)。
  • テーブルの SAMPLE 句を変更できる ALTER SAMPLE BY ステートメントを追加しました。#13280 (Amos Bird)。
  • 関数 position が、オプションの引数 start_pos をサポートするようになりました。#13237 (vdimir)。

バグ修正

  • クライアントの対話型モードで、進捗バーによって表示中のデータが上書きされてしまう問題を修正しました。これにより、#12562#13369#13584、および #12964 を修正しました。#13691 (alexey-milovidov).
  • 複数のカラムでソートする際に、LowCardinality カラムのソート順が誤っていた問題を修正しました。これにより #13958 が修正されました。#14223 (Nikita Mikhaylov).
  • topK 集約関数で Array サイズのオーバーフローをチェックするようにしました。このチェックがないと、ユーザーが細工したパラメーターを含むクエリを送信し、サーバーがクラッシュする可能性があります。これにより #14452 をクローズします。#14467 (alexey-milovidov).
  • テーブルに単一のパートしかないパーティションがある場合に、マージの割り当てが誤って行われる可能性がある不具合を修正しました。#14444 (alesapin).
  • PipelineExecutor 自体で例外が発生した場合、クエリの実行を停止するようにしました。これにより、まれに発生する可能性のあるクエリのハングを防げます。#14334 の続きです。#14402 #14334 (Nikolai Kochetov).
  • AS table_function で作成されたテーブルに対する ALTER クエリの実行時に発生するクラッシュを修正しました。#14212 を修正します。#14326 (alesapin).
  • REFRESH コマンド使用時に ALTER LIVE VIEW クエリで発生する例外を修正しました。Live view は実験的機能です。#14320 (Bharat Nallan) 。
  • インタープリターがネストされたクエリにおける QueryPlan のライフタイム (EXPLAIN PIPELINE graph=1 向け) を修正しました。 #14315 (Azat Khuzhin).
  • 一部の外部ソースからスキーマを取得する際に clickhouse-odbc-bridge で発生するセグメンテーション違反を修正しました。この PR では #13861 を修正しています。#14267 (Vitaly Baranov) 。
  • #12277 で導入された mark inclusion search で発生していたクラッシュを修正しました。#14225 (Amos Bird) 。
  • named tupleを含むテーブルの作成を修正しました。これにより、#13027 が修正されました。#14143 (alexey-milovidov).
  • 最小の負の10進数のフォーマットを修正しました。これにより、#14111 の問題が修正されます。#14119 (Alexander Kuzmenkov).
  • DistributedFilesToInsert メトリクスを修正しました (本来ゼロになるべきでないときにゼロになっていた問題) 。 #14095 (Azat Khuzhin).
  • ポリゴンに const 2d array を使用した場合の pointInPolygon の不具合を修正しました。#14079 (Alexey Ilyukhov).
  • Poco::Exception: no space left on device の追加情報内の誤ったマウントポイントを修正しました。#14050 (tavplubix).
  • グローバル以外のレベルで実行した際の GRANT ALL ステートメントを修正しました。#13987 (Vitaly Baranov) 。
  • engine を伴う create table が table function として受理されないよう、パーサーを修正しました。 #13940 (hcz).
  • optimize_duplicate_order_by_and_distinct 設定が有効な場合に、DISTINCT キーワードを含む SELECT クエリおよび UNION ALL を含むサブクエリで誤った結果が返される問題を修正しました。 #13925 (Artem Zuikov).
  • Distributed テーブルの名前変更時に起こり得るデッドロックを修正しました。#13922 (tavplubix) 。
  • 複数のカラムでソートした際に FixedString カラムで発生していた誤ったソートを修正しました。#13182 を修正。 #13887 (Nikolai Kochetov).
  • (デフォルト以外のパラメータ使用時に) topK/topKWeighted のマージ結果が不正確になる可能性がある不具合を修正しました。 #13817 (Azat Khuzhin).
  • NULL との比較時に、SET 型の INDEX を持つ MergeTree テーブルの読み取りが失敗する不具合を修正しました。これにより #13686 が修正されます。#13793 (Amos Bird)。
  • ラムダ内で arrayJoin がキャプチャされる問題を修正 (LOGICAL_ERROR) 。 #13792 (Azat Khuzhin).
  • 関数 rangestep のオーバーフローチェックを追加しました。 #13790 (Azat Khuzhin).
  • DROP DATABASECREATE TABLE を同時実行した際に発生する Directory not empty エラーを修正しました。#13756 (alexey-milovidov).
  • h3KRing 関数に範囲チェックを追加しました。これにより #13633 を修正しました。#13752 (alexey-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 と set enable_optimize_predicate_expression=1 を使用した JOIN で発生するクラッシュを修正しました。 #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 が、ときどき source に存在する値ではなくデフォルト値を返してしまう不具合を修正しました。 #13624 (Nikita Mikhaylov).
  • compact パーツにおけるセカンダリ索引の破損を修正しました。compact パーツは実験的な機能です。#13538 (Anton Popov).
  • 単一のレプリカで実行する必要があるクエリについて、ON CLUSTER のタイムアウトが早すぎる問題を修正しました。#6704#7228#13361#11884#13450 (alesapin)。
  • 関数 netloc の誤ったコードを修正。これにより #13335 を修正しました。#13446 (alexey-milovidov).
  • StorageMemory で競合状態が発生する可能性がある問題を修正しました。#13416 (Nikolai Kochetov).
  • HTTPプロトコルにおける TSV/CSVWithNames フォーマットで、ヘッダーの欠落や過剰出力を修正しました。これにより #12504 が修正されました。#13343 (Azat Khuzhin).
  • データベース名またはテーブル名にドットが含まれている場合の、users.xml からの行ポリシーのパースを修正しました。これにより #5779#12527 が修正されます。#13199 (Vitaly Baranov).
  • redis Dictionary への接続が一度切断された後にアクセスできなくなる問題を修正しました。これは cache および direct の Dictionary レイアウトで発生する可能性があります。#13082 (Anton Popov).
  • ClickHouseDictionarySource を使用してリモートテーブルをクエリする際の、誤った認証アクセスチェックを削除しました。 #12756 (sundyli).
  • 一部のケースで、共通部分式除去においてサブクエリを適切に区別するようにしました。 #8333. #8367 (Amos Bird).

改善

  • ALIAS カラム型では CODEC を指定できないようにしました。#13911 を修正しました。#14263 (Bharat Nallan).
  • Dictionary の更新が完了するのを待つ際は、ハードコードされた値ではなく、query_wait_timeout_milliseconds 設定で指定されたタイムアウトを使用します。 #14105 (Nikita Mikhaylov).
  • 誤って index_granularity_bytes の値が極端に低いテーブルを作成してしまうのを防ぐための min_index_granularity_bytes 設定を追加しました。 #14139 (Bharat Nallan).
  • これにより、異なる ZooKeeper を使用するクラスターからパーティションを fetch できるようになりました: ALTER TABLE table_name FETCH PARTITION partition_expr FROM 'zk-name:/path-in-zookeeper'。これは、新しいクラスターへデータを移行する際に役立ちます。#14155 (Amos Bird).
  • 非常に小さなブロックを大量に使って構築された場合のMemoryテーブルのパフォーマンスがわずかに向上しました (その可能性は低いです) 。アイデアの考案者: Mark Papadakis#14043 をクローズしました。#14056 (alexey-milovidov)。
  • 条件付き集計関数 (例: avgIfsumIfmaxIf) は、該当する行がなく、引数に Nullable を使用している場合、NULL を返すようになりました。#13964 (Winter Zhang).
  • -Resample combinator の上限を 1M に引き上げました。#13947 (Mikhail f. Shiryaev) 。
  • 異常に小さく破損したメッセージを受信すると Kafka テーブルエンジンがメッセージ処理を停止してしまう原因となっていた、AvroConfluent フォーマットのエラーを修正しました。 #13941 (Gervasio Varela).
  • 長いクエリに対して誤ったエラーが返される問題を修正しました。正しいクエリであっても、Max query size exceeded ではなく別の構文エラーが発生することがありました。#13928 (Nikolai Kochetov).
  • TabSeparated フォーマットの NULL 値に対するエラーメッセージを改善しました。 #13906 (jiang tao).
  • Function arrayCompact は、配列要素の型が Float32/Float64 の場合、NaN をビット単位で比較するようになりました。以前のバージョンでは、配列要素の型が Float32/Float64 の場合、NaN は常に等しくないものとされ、Nullable(Float64) のようなより複雑な型の場合は常に等しいものとされていました。これにより #13857 が解決されます。 #13868 (alexey-milovidov).
  • lgamma 関数のデータ競合を修正しました。この競合は tsan でのみ検出されたもので、実際の副作用は発生していませんでした。#13842 (Nikolai Kochetov).
  • Arrayがフィールドとして操作される場合、極端に遅いクエリは回避し、代わりに例外をスローします。 #13753 (alexey-milovidov).
  • Redis の Dictionary ソース向けに requirepass 認証を追加しました。#13688 (Ivan Torgashov).
  • MergeTree Write-Ahead-Log (WAL) のダンプツールを追加しました。WAL は実験的な機能です。 #13640 (BohuTANG).
  • 以前のバージョンでは、lcm 関数に細工された特定の引数を与えて呼び出すと、デバッグビルドでアサーション違反が発生する可能性がありました。これは #13368 を修正するものです。#13510 (alexey-milovidov).
  • より多くのケースで toDate/toDateTime 関数の単調性をサポートしました。単調性の情報は索引解析に使用されるため、より複雑なクエリでも索引を利用できるようになります。入力引数がより自然に飽和されるようになり、単調性が改善されました。#13497 (Amos Bird).
  • カスタム設定で複合識別子をサポートしました。カスタム設定は、ClickHouse のコードベースを他のコードベースと連携させるためのインテグレーションポイントです (ClickHouse 自体にはメリットはありません) #13496 (Vitaly Baranov).
  • DiskLocal から DiskS3 へパーツを並列に移動できるようになりました。DiskS3 は実験的な機能です。#13459 (Pavel Kovalenko).
  • mixed granularity パーツをデフォルトで有効にしました。 #13449 (alesapin).
  • S3 リダイレクトにおけるリモートホストの適切な検証 (セキュリティ関連) 。#13404 (Vladimir Chebotarev) 。
  • QueryTimeMicrosecondsSelectQueryTimeMicrosecondsInsertQueryTimeMicroseconds が system.events に追加されました。#13336 (ianton-ru) 。
  • Decimal の負の指数が大きすぎる場合のデバッグアサーションを修正しました。#13188 を修正。 #13228 (alexey-milovidov).
  • DiskS3 向けに cache レイヤーを追加しました (ローカルディスク上の mark ファイルと索引ファイルを cache します) 。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)) と右辺が定数の argument に対して、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 型と、それらに関連する関数を追加しました。さらに Decimal を Decimal256 (精度は最大 76 桁) まで拡張しました。これらの新しい型は、設定 allow_experimental_bigint_types で有効になります。動作は極めて低速で、品質もよくありません。実装も未完成です。この機能は使用しないでください。#13097 (Artem Zuikov).

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

  • 単一のバイナリしかない場合に便利な clickhouse install スクリプトが追加されました。#13528 (alexey-milovidov).
  • 設定ファイルなしで clickhouse バイナリを実行できるようにしました。#13515 (alexey-milovidov).
  • codespell を使用して、コード内のタイプミスをチェックするようにしました。#13513 #13511 (alexey-milovidov).
  • .sh テスト用のリンターとして、CI で Shellcheck を有効にしました。これにより #13168 をクローズしました。#13530 #13529 (alexey-milovidov).
  • 自動再構成ではなく、構成処理を失敗させる CMake オプションを追加しました。デフォルトで有効です。#13687 (Konstantin).
  • system.build_options の TZDATA_VERSION で、埋め込み tzdata のバージョンを参照できるようにしました。 #13648 (filimonov).
  • ビルド時の system.time_zones テーブル生成を改善しました。#14209 をクローズしました。#14215 (filimonov) 。
  • パッケージリポジトリの最新の tzdata を使用して ClickHouse をビルド。 #13623 (alexey-milovidov).
  • skip_list.json で JavaScript 形式のコメントを書けるようにしました。 #14159 (alesapin).
  • GPLコードのコピー&ペーストがないことを確認してください。#13514 (alexey-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).
  • LDAP ユーザー認証スイートを更新し、RBAC と連携して正しく動作することを確認しました。 #13656 (vzakaznikov) 。
  • contrib/aws から -DENABLE_CURL_CLIENT を削除しました。#13628 (Vladimir Chebotarev) 。
  • ClickHouse ノードのヘルスチェックのタイムアウトを延長し、正常でないコンテナーが見つかった場合に docker-compose のログをダンプできるようにしました。#13612 (vzakaznikov).
  • #10977 が無効であることを確認。#13539 (Amos Bird).
  • robot-clickhouse からの PR を除外。 #13489 (Nikita Mikhaylov).
  • Dockerfiles を結合テストから docker/test ディレクトリに移動しました。docker_compose ファイルは runner Docker コンテナー内で利用できます。Docker イメージは結合テストではなく、CI でビルドされます。#13448 (Ilya Yatsishin).

ClickHouse リリース 20.7

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

後方互換性を持たない変更

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

新機能

  • 多数の Polygon (世界地図) を含む辞書に対して、座標からリージョンを見つける効率的な「リバースジオコーディング」ルックアップを提供する Polygon 辞書型を追加しました。低い 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-Database および X-ClickHouse-Format を追加しました。#12981 (hcz).
  • SimpleAggregateFunctionminMap および maxMap 関数のサポートを追加しました。#12662 (Ildus Kurbangaliev).
  • ディスク上のデータを変更する ALTER クエリの実行を制限する設定 allow_non_metadata_alters を追加しました。デフォルトでは無効です。#11547 をクローズしました。#12635 (alesapin).
  • 任意の expression を指定したフォーマットで文字列に変換できる 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 を修正。#13450 (alesapin)。
  • #12277 で導入された mark の包含検索で発生するクラッシュを修正しました。#14225 (Amos Bird) 。
  • サーバークラッシュにつながる可能性がある、cache レイアウトの外部辞書におけるレースコンディションを修正しました。 #12566 (alesapin).
  • クライアントの対話型モードで、進捗バーによって表示中のデータが上書きされる問題を修正しました。これにより #12562#13369#13584、および #12964 が修正されます。 #13691 (alexey-milovidov).
  • 複数のカラムに対して ORDER BY を使用した際に、LowCardinality カラムのソート順が誤っていた問題を修正しました。これにより、#13958 が修正されます。#14223 (Nikita Mikhaylov)。
  • cache-dictionary で query_wait_timeout_milliseconds 設定より誤って優先されていたハードコードされたタイムアウトを削除しました。 #14105 (Nikita Mikhaylov).
  • Poco::Exception: no space left on device の追加情報内の誤ったマウントポイントを修正しました。#14050 (tavplubix).
  • サブクエリにも DISTINCT があり、optimize_duplicate_order_by_and_distinct 設定が有効な場合に、DISTINCT キーワードを含む SELECT クエリで発生する誤ったクエリ最適化を修正しました。#13925 (Artem Zuikov) 。
  • Distributed テーブルの名前変更時に起こり得るデッドロックを修正しました。#13922 (tavplubix) 。
  • ORDER BY で複数のカラムを使用した際に FixedString カラムのソートが正しく行われない問題を修正しました。#13182#13887 (Nikolai Kochetov)。
  • topK/topKWeighted 集計で、精度が低下する可能性のある問題を修正しました (デフォルト以外のパラメータを使用した場合) 。 #13817 (Azat Khuzhin).
  • NULL と比較した場合に、SET 型の INDEX を持つ MergeTree テーブルの読み取りが失敗する問題を修正しました。これにより、#13686 が修正されます。#13793 (Amos Bird).
  • 関数range()のstepパラメータで発生するオーバーフローを修正しました。#13790 (Azat Khuzhin) 。
  • DROP DATABASECREATE TABLE を同時実行した際に発生していた Directory not empty エラーを修正しました。#13756 (alexey-milovidov) 。
  • h3KRing 関数に範囲チェックを追加しました。これにより、#13633 が修正されます。#13752 (alexey-milovidov).
  • DETACH とバックグラウンドマージの間で発生する競合状態を修正しました。DETACH 後にパーツが復活してしまう場合がありました。これは #8602 の続きで、同 issue では問題自体は修正されなかったものの、この問題を示す、非常にまれなケースで失敗し始めるテストが導入されました。#13746 (alexey-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 が、source に存在する値ではなくデフォルト値を返してしまうことがあった問題を修正しました。#13624 (Nikita Mikhaylov) 。
  • compact パーツにおけるセカンダリ索引の破損を修正しました (compact パーツは実験的な機能です) 。#13538 (Anton Popov).
  • 関数 netloc 内の誤ったコードを修正しました。これにより #13335 が修正されます。#13446 (alexey-milovidov).
  • 引数としてunix timestampが渡された場合に発生するparseDateTimeBestEffort関数のエラーを修正しました。これにより、#13362が修正されます。#13441 (alexey-milovidov) 。
  • NULL 要素を含むタプルの比較で、無効な返り値の型が返される問題を修正しました。#12461 を修正しました。#13420 (Nikolai Kochetov).
  • SET optimize_move_functions_out_of_any = 1 および any() 内の別名により、誤った最適化で aggregate function any(x) is found inside another aggregate function in query エラーが発生していた問題を修正しました。#13419 (Artem Zuikov).
  • StorageMemory で発生する可能性のある競合状態を修正しました。#13416 (Nikolai Kochetov) 。
  • クエリが0行を返した場合に、Arrow および Parquet フォーマットで出力が空になる問題を修正しました。空の出力はこれらのフォーマットでは有効ではないためです。 #13399 (hcz).
  • 定数カラムと、ORDER BY 句で主キーのプレフィックスを使用する select クエリを修正しました。 #13396 (Anton Popov).
  • clickhouse-local 向けの PrettyCompactMonoBlock を修正しました。PrettyCompactMonoBlock 使用時の extremes/totals を修正しました。#7746 を修正。#13394 (Azat Khuzhin).
  • system.text_log のデッドロックを修正しました。#12452 (alexey-milovidov) 。これは #12339 の一環です。これにより #12325 も修正されます。#13386 (Nikita Mikhaylov) 。
  • File(TSVWithNames*) を修正しました (ヘッダーが複数回書き込まれていた問題) 。clickhouse-local --format CSVWithNames* も修正しました (ヘッダーが欠落しており、#12197 以降は動作していませんでした) 。また、行数が 0 の場合の clickhouse-local --format CSVWithNames* も修正しました (ヘッダーが欠落していました) 。#13343 (Azat Khuzhin).
  • 関数 groupArrayMovingSum が空の state をデシリアライズした際に発生するセグメンテーション違反を修正しました。#13339 を修正しました。 #13341 (alesapin).
  • JOIN ON 句で arrayJoin() 関数を使用した場合に、エラーを返すようにしました。#13330 (Artem Zuikov) 。
  • LEFT ASOF JOINjoin_use_nulls=1 を使用した場合に発生するクラッシュを修正しました。#13291 (Artem Zuikov).
  • 遅延したレプリカからのクエリで発生する可能性があるエラー Totals having transform was already added to pipeline を修正しました。#13290 (Nikolai Kochetov) 。
  • ユーザーが関数 h3ToChildren に意図的に細工された引数を渡した場合、サーバーがクラッシュする可能性がありました。これにより #13275 が修正されます。#13277 (alexey-milovidov).
  • NaN 値を含む Float 型に対して uniqExacttopKsumDistinct および同様の集約関数を呼び出した際に、パフォーマンスが低下する可能性があり、結果がわずかに不正確になる問題を修正しました。また、debug build で assert が発生することもありました。この修正で #12491 も解決されます。#13254 (alexey-milovidov)。
  • 主キーに単調関数を含む式があり、クエリに型の異なる定数との比較が含まれている場合の KeyCondition のアサーションを修正しました。これにより #12465 が修正されます。#13251 (alexey-milovidov).
  • 関数 roundUpToPowerOfTwoOrZero() で、MSB がセットされている数値については入力された数値をそのまま返すようにしました。これにより、配列サイズのオーバーフロー時に発生しうる潜在的なエラーを防ぎます。 #13234 (Azat Khuzhin).
  • リテラル NULL ではない nullable constexpr を cond に指定した場合の関数 if の不具合を修正しました。#12463 を修正。#13226 (alexey-milovidov)。
  • 配列要素が Nullable で、配列の添字も Nullable である場合に arrayElement 関数で発生するアサートを修正しました。これにより #12172 が解消されます。#13224 (alexey-milovidov).
  • 定数引数を伴う DateTime64 変換関数の不具合を修正しました。 #13205 (Azat Khuzhin).
  • users.xml で、データベース名またはテーブル名にドットが含まれている場合の行ポリシーのパースを修正しました。これにより #5779#12527 を修正しました。#13199 (Vitaly Baranov) 。
  • 接続が一度切断された後に redis Dictionary へアクセスできなくなる問題を修正しました。この問題は、cache および direct の Dictionary レイアウトで発生する可能性があります。#13082 (Anton Popov).
  • 関数使用時の誤った索引解析を修正しました。これにより、MergeTree テーブルの読み取り時に一部のデータパーツがスキップされる可能性がありました。#13060 を修正。#12406 を修正。#13081 (Anton Popov).
  • クエリのスコープ内では決定論的だが、now()now64()randConstant() のようにクエリ間では決定論的でない関数を使用するリモートクエリで発生する error Cannot convert column because it is constant but values of constants are different in source and result を修正しました。#11327#13075 (Nikolai Kochetov)。
  • ORDER BY にタプルがあり、LIMIT が小さいクエリで発生する可能性のあったクラッシュを修正しました。#12623 を修正しました。 #13009 (Nikolai Kochetov).
  • UNION および JOIN を含むクエリで発生する Block structure mismatch エラーを修正しました。#12602 を修正します。#12989 (Nikolai Kochetov) 。
  • merge_with_ttl_timeout のロジックを修正しました。これは、有効期限 (TTL) の影響が1つの時間間隔内で複数のパーティションに及ぶ場合に、正常に動作していませんでした。 (著者: @excitoon) 。 #12982 (Alexander Kazakov).
  • DDLクエリから作成された range hashed Dictionary で発生するカラムの重複を修正しました。これにより #10605 を解消しています。#12857 (alesapin).
  • ローカルレプリカからのSELECTにおけるスレッド数への不要な制限を修正しました。 #12840 (Nikolai Kochetov).
  • ALTER DELETEALTER MODIFY COLUMN のクエリが単一の mutation として同時に実行された場合に発生する、まれなバグを修正しました。このバグにより count.txt 内の行数が正しくなくなり、その結果 part 内のデータも不正になっていました。あわせて、ALTER RENAME COLUMNALTER ADD COLUMN を同時に実行した際に発生する小さなバグも修正しました。#12760 (alesapin).
  • リモートテーブルにクエリを実行する際に、clickhouse Dictionary ソースで誤った認証情報が使用される問題を修正しました。#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(<lambda>)) の場合に、誤った最適化 optimize_move_functions_out_of_any=1 を修正しました。#12664 (Artem Zuikov) 。
  • #10572 を修正し、const 式での bloom filter 索引の不具合を修正しました。#12659 (Winter Zhang) 。
  • broker が利用できない場合などに StorageKafka で発生する SIGSEGV を修正しました。#12658 (Azat Khuzhin).
  • Array(UUID) 引数を受け取る関数 if のサポートを追加しました。これにより #11066 が修正されました。#12648 (alexey-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 を修正。#12613 (Nikolai Kochetov).
  • 関数 any の結果に付けたエイリアスが、クエリ最適化中に失われることがある問題を修正しました。 #12593 (Anton Popov).
  • DROP TABLE時に、分散テーブルのデータ (非同期 INSERT のブロック) を削除する。 #12556 (Azat Khuzhin).
  • これにより、ファイル checksums.txt が存在しない場合、ClickHouse はパーツのチェックサムを再計算するようになりました。#9827 以降、この不具合が発生していました。#12545 (alesapin).
  • enable_mixed_granularity_parts=1 の場合に、ALTER DELETE クエリ後に古いパーツが破損する不具合を修正しました。#12536#12543 (alesapin).
  • データの重複を引き起こす可能性があった live view テーブルの競合状態を修正しました。LIVE VIEW は実験的な機能です。#12519 (vzakaznikov).
  • AggregateFunction(avg, ...) の値のバイナリフォーマットにおける後方互換性を修正しました。これにより #12342 に対応しました。#12486 (alexey-milovidov).
  • 辞書キーの式で JOIN する場合に、dictionary を使った JOIN がクラッシュする問題を修正しました: t JOIN dict ON expr(dict.id) = t.id。このケースでは、dictionary JOIN の最適化を無効にしました。#12458 (Artem Zuikov) 。
  • 非常に大きな LIMIT または OFFSET が指定された場合に発生するオーバーフローを修正しました。これにより #10470 を修正しました。これにより #11372 を修正しました。#12427 (alexey-milovidov).
  • kafka: バッチの途中にエラーのあるメッセージが含まれている場合に発生する SIGSEGV を修正。 #12302 (Azat Khuzhin).

改善

  • ZooKeeper 内に保持するログの量を削減しました。サーバー/テーブル/insert が多い環境でレプリカがオフラインになった場合に、ZooKeeper ノードが過度に増加するのを防ぎます。 #13100 (alexey-milovidov).
  • ALTER またはミューテーション中にエラーが発生した場合、例外がクライアントに返されるようになりました。#11329 をクローズしました。#12666 (alesapin)。
  • QueryTimeMicrosecondsSelectQueryTimeMicrosecondsInsertQueryTimeMicrosecondssystem.events に、また system.metricsprocessesquery&#95;log などにも追加しました。#13028 (ianton-ru).
  • SelectedRowsSelectedBytes が、system.events に加えて system.metrics、processes、query_log などにも追加されました。 #12638 (ianton-ru).
  • system.query_logcurrent_database の情報を追加しました。#12652 (Amos Bird) 。
  • TabSeparatedRaw を入力フォーマットとして許可しました。#12009 (hcz)。
  • 現在、joinGet は複数キーでのルックアップをサポートしています。#12418 (Amos Bird).
  • *Map集約関数が、NULL を含む Array でも動作するようになりました。#13157 を修正しました。#13225 (alexey-milovidov).
  • DateTime 値のパース時に、その timezone で負の unix timestamp になる場合 (たとえば、Moscow の 1970-01-01 00:00:00) の overflow を回避し、代わりに 0 に飽和させるようにしました。これにより #3470 を修正します。これにより #4172 を修正します。#12443 (alexey-milovidov).
  • AvroConfluent: Kafka の tombstone レコードをスキップ - 破損したレコードのスキップをサポート #13203 (Andrew Onyshchuk).
  • 長いクエリで誤ったエラーが返される問題を修正しました。正しいクエリであっても、Max query size exceeded ではなく別の構文エラーが返されることがありました。#13928 (Nikolai Kochetov).
  • lgamma 関数のデータ競合を修正しました。この競合が検出されたのは tsan のみで、実際の不具合は発生していませんでした。#13842 (Nikolai Kochetov) 。
  • ATTACH/ALTER/CREATE QUOTAステートメントでの ‘Week’ interval のフォーマットを修正しました。#13417 (vladimir-golovchenko).
  • compact パーツの処理時に見つかった破損パーツも報告されるようになりました。compact パーツは実験的機能です。#13282 (Amos Bird).
  • geohashesInBox の assert を修正しました。これにより #12554 が修正されます。#13229 (alexey-milovidov) 。
  • parseDateTimeBestEffort 内の assert を修正しました。これにより #12649 に対応しました。#13227 (alexey-milovidov) 。
  • Processors/PipelineExecutor における軽微な最適化: 適切な場合にループを途中で抜けるようにしました。 #13058 (Mark Papadakis).
  • TABLEキーワードを省略した TRUNCATE TABLE 構文をサポートしました。#12653 (Winter Zhang) 。
  • デフォルトで explain クエリのフォーマットが上書きされてしまう問題を修正しました。これにより #12541 が修正されます。#12541 (BohuTANG).
  • より標準的な方法でJOINのKindとTypeを指定できるようになりました: SEMI LEFT JOIN ではなく LEFT SEMI JOIN。現時点ではどちらも有効です。#12520 (Artem Zuikov).
  • multiple_joins_rewriter_version のデフォルト値が 2 に変更されました。これにより、カラム名を認識できる新しい複数 JOIN リライターが有効になります。#12469 (Artem Zuikov) 。
  • S3ストレージへのリクエストに関するメトリクスを複数追加。 #12464 (ianton-ru).
  • --secure 引数を使用する場合に、clickhouse-benchmark で正しいデフォルトのセキュアポートを使うようにしました。これにより #11044 を修正しました。#12440 (alexey-milovidov).
  • LogTinyLogStripeLog エンジンでの挿入エラーをロールバックするようにしました。以前のバージョンでは、挿入エラーが発生するとテーブルの状態に不整合が生じていました (これはドキュメントに記載されているとおりの動作であり、これらのテーブルエンジンでは正常です) 。これにより #12402 が修正されます。#12426 (alexey-milovidov).
  • Atomic データベースエンジンで RENAME DATABASERENAME DICTIONARY を実装しました。- ReplicatedMergeTree の ZooKeeper パス内で使用できる暗黙的な {uuid} マクロを追加しました。これは CREATE ... ON CLUSTER ... クエリで動作します。使用するには、show_table_uuid_in_table_create_query_if_not_niltrue に設定してください。- ReplicatedMergeTree エンジンの引数を省略可能にしました。デフォルトでは /clickhouse/tables/{uuid}/{shard}/{replica} が使用されます。#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#12382 (alexey-milovidov).
  • 各クエリの実行後に履歴ファイルから補完を再読み込みしないようにしました (ほかのクライアントセッションとの履歴の重複を避けるため) 。#13086 (Azat Khuzhin).

パフォーマンス改善

  • 一部の操作で、メモリ使用量を最大 2 倍削減しました。#12424 (alexey-milovidov).
  • PK の範囲に完全一致するクエリに対する PK ルックアップを最適化しました。#12277 (Ivan Babrou).
  • LowCardinality を使用する非常に短いクエリをわずかに最適化しました。#14129 (Anton Popov).
  • UInt8/UInt16 キーによる集約のパフォーマンスをわずかに改善しました。#13091 および #13055 (alexey-milovidov).
  • クエリプラン内の LIMIT ステップを push down しました (サブクエリ内) 。#13016 (Nikolai Kochetov).
  • #11564 で説明されているとおり、パーツ上の主キールックアップと skipping index のステージを並列化しました。#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 句が含まれる場合でも、predicate pushdown を許可しました。これにより #12293 が修正されます #12663 (Winter Zhang).
  • compact パーツからの読み取り性能を改善しました。compact パーツは実験的機能です。#12492 (Anton Popov).
  • DiskS3 におけるストリーミング最適化の実装を試みました。DiskS3 は実験的機能です。#12434 (Vladimir Chebotarev).

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

  • sh テストの lint に shellcheck を使用するようにしました。#13200 #13207 (alexey-milovidov).
  • GitHubフックでプルリクエストにラベルを付けるスクリプトを追加。 #13183 (alesapin).
  • 再帰的なサブモジュールの一部を削除。 #13378 を参照してください。 #13379 (alexey-milovidov) 。
  • すべてのサブモジュールが正しい URL を参照していることを確認しました。#13379 の続きです。これにより #13378 を修正します。#13397 (alexey-milovidov)。
  • クエリ内から参照できる、ユーザーが宣言した設定のサポートが追加されました。これは、ClickHouse engine が別のシステムのコンポーネントとして使用される場合に必要です。#13013 (Vitaly Baranov) 。
  • TestFlows における INSERT 権限の RBAC 機能のテストを追加しました。SELECT のテスト対象となるテーブルを拡充しました。新しいテーブルエンジンのテストに対応するため、Requirements を追加しました。#13340 (MyroTk).
  • ストレステスト中のサーバー再起動時に発生するタイムアウトエラーを修正しました。 #13321 (alesapin).
  • これで fast test は、再試行しながら server の起動を待つようになりました。 #13284 (alesapin).
  • 関数 materialize() (ClickHouse のテスト用関数) は、期待どおり NULL に対して動作し、NULL を非定数カラムに変換します。 #13212 (alexey-milovidov).
  • AArch64 での libunwind のビルドを修正しました。これにより #13204 が修正されます。#13208 (alexey-milovidov).
  • テストの不安定化を防ぐため、zkutil gtest の再試行回数をさらに増やしました。 #13165 (alexey-milovidov).
  • RBAC TestFlows の小さな修正。 #13152 (vzakaznikov).
  • 00960_live_view_watch_events_live.py のテストを修正しました。#13108 (vzakaznikov).
  • ドキュメントのデプロイスクリプトにおけるキャッシュ削除を改善しました。#13107 (alesapin) 。
  • 一部の単独テストを gtest に書き直しました。テストから不要な include を削除しました。#13073 (Nikita Mikhaylov).
  • TestFlows で SELECT 権限の RBAC 機能を検証するテストを追加しました。#13061 (Ritaank Tiwari).
  • fast test チェックで一部のテストを再実行。#12992 (alesapin) 。
  • “rdkafka” ライブラリのMSanエラーを修正しました。これにより #12990 をクローズしました。rdkafka をバージョン 1.5 (master) に更新しました。#12991 (alexey-milovidov)。
  • AVX-512 を備えたサーバーでテストを実行した場合に発生する、base64 の UBSan レポートを修正しました。これにより #12318 が修正されます。著者: @qoega。 #12441 (alexey-milovidov).
  • HDFSライブラリのUBSanレポートを修正。これにより #12330 をクローズしました。#12453 (alexey-milovidov).
  • 古いバージョンのバックアップを新しいバージョンで復元できることを確認しました。これにより #8979 がクローズされます。#12959 (alesapin).
  • 結合テスト内で helper_container イメージをビルドしないようにしました。Docker コンテナは CI でビルドし、結合テストではビルド済みの helper_container を使用するようにしました。 #12953 (Ilya Yatsishin).
  • 主キーカラムに対する ALTER TABLE CLEAR COLUMN クエリのテストを追加しました。 #12951 (alesapin).
  • testflows テストのタイムアウト時間を延長しました。#12949 (vzakaznikov) 。
  • Mac OS X 上でのテストのビルドを修正しました。これで #12767 はクローズされます。#12772 (alexey-milovidov).
  • Connector-ODBC を mysql-connector-odbc-8.0.21 にアップデートしました。 #12739 (Ilya Yatsishin).
  • TestFlows に RBAC の構文テストを追加しました。#12642 (vzakaznikov).
  • TestKeeper のパフォーマンスを改善しました。これにより、レプリケートテーブルを多用するテストを高速化できます。 #12505 (alexey-milovidov).
  • ここでは、ストレステストの実行後にserverが起動できることを確認します。これにより #12473 が修正されます。#12496 (alesapin)。
  • fmtlib を master (7.0.1) に更新。#12446 (alexey-milovidov) 。
  • Fast test向けのDockerイメージを追加しました。#12294 (alesapin) 。
  • 結合テスト向けの設定パスを見直し。#12285 (Ilya Yatsishin).
  • スタックフレームが大きくなりすぎないよう制御するコンパイラオプションを追加しました。これにより、スタックサイズの小さいファイバーでコードを実行しやすくなります。#11524 (alexey-milovidov).
  • gitignore-filesを更新。#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 が修正されました。#11873 (Nikolai Kochetov)。
  • ストレージ RabbitMQ を追加しました。#11069 (Kseniia Sumarokova)。
  • PostgreSQL 互換の ILIKE 演算子を実装しました。#11710 を参照してください。#12125 (Mike)。
  • SET join_algorithm = 'partial_merge' で RIGHT JOIN および FULL JOIN をサポートしました。許可される strictness は ALL のみです (ANY、SEMI、ANTI、ASOF は不可) 。#12118 (Artem Zuikov)。
  • 単一の値に基づいて aggregation を初期化する関数 initializeAggregation を追加しました。#12109 (Guillaume Tassery)。
  • ALTER TABLE ... [ADD|MODIFY] COLUMN ... FIRST をサポートしました。#4006#12073 (Winter Zhang)。
  • 関数 parseDateTimeBestEffortUS を追加しました。#12028 (flynn)。
  • 出力フォーマット ORC をサポートしました (従来は入力のみのサポートでした) 。#11662 (Kruglov Pavel)。

バグ修正

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

改善

  • SEMI LEFT JOIN ではなく LEFT SEMI JOIN のように、JOIN の kind と type をより標準的な書き方で指定できるようになりました。現時点ではどちらも正しい構文です。#12520 (Artem Zuikov).
  • Buffer engine に 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 replacement query のインテグレーションテストを追加しました。#12314 (BohuTANG).
  • MySQL client/driver 向けに、長時間実行中のクエリをキャンセルするための KILL QUERY [connection_id] を追加しました。issue #12038#12152 (BohuTANG).
  • formatDateTime function で、%g (2 桁の ISO 年) および %G (4 桁の ISO 年) の substitutions をサポートしました。#12136 (vivarum).
  • system.disks に type カラムを追加しました。#12115 (ianton-ru).
  • REVOKE コマンドを改善しました。これにより、取り消すアクセスに対してのみ grant/admin option が必要になりました。たとえば、REVOKE ALL ON *.* FROM user1 を実行する際、grant option 付きで完全なアクセス権が付与されている必要はなくなりました。REVOKE ALL FROM user1 コマンドも追加しました。これは user1 に付与されたすべてのロールを取り消します。#12083 (Vitaly Baranov).
  • load_balancing にレプリカ優先度を追加しました (ロードバランシングの優先順位を手動で設定するため) 。#11995 (Azat Khuzhin).
  • S3 メタデータ内の path を相対パスに変更し、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 ベースのクエリファジングモードを実装しました。ファジングで最近見つかった問題の一覧は、このラベルを参照してください。その大半はこのツールで見つかり、一部は SQLancer と 00746_sql_fuzzy.pl で見つかりました。#12111 (Alexander Kuzmenkov).
  • Testflows フレームワークに基づく新しい種類のテストを追加しました。#12090 (vzakaznikov).
  • S3 HTTPS インテグレーションテストを追加しました。#12412 (Pavel Kovalenko).
  • sanitizer の trap メッセージを別スレッドからログに記録するようにしました。これにより、thread sanitizer 下で起こりうるデッドロックを防止できます。#12313 (alexey-milovidov).
  • 機能テストとストレステストを、古いバージョンの clickhouse-test スクリプトでも実行できるようになりました。#12287 (alesapin).
  • orc のビルド中に行われる奇妙なファイル作成を削除しました。#12258 (Nikita Mikhaylov).
  • 共通の Docker Compose ファイルをインテグレーション用 Docker コンテナーに配置しました。#12168 (Ilya Yatsishin).
  • CodeQL による警告を修正しました。CodeQL は、すでに使用している clang-tidyPVS-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).
  • clickhouse-server Docker イメージ内の CVE を検出する Anchore Container Analysis セキュリティ解析ツールによる定期チェックを追加しました。あわせて、Dockerfile がビルド可能であることも確認します。これは masterDockerfile へのプルリクエストに対して毎日実行されます。#12102 (Ivan Blinkov).
  • CWE を検出する GitHub CodeQL セキュリティ解析ツールによる日次チェックを追加しました。#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 を修正。#13081 (Anton 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) 。
  • const式を使用したブルームフィルタ索引の不具合を修正しました。これにより、#10572 が修正されます。 #12659 (Winter Zhang).
  • ブローカーが利用できない場合など、StorageKafka で発生していた SIGSEGV を修正しました。#12658 (Azat Khuzhin) 。
  • 関数 ifArray(UUID) 型の引数をサポートするようになりました。これにより #11066 が修正されました。#12648 (alexey-milovidov).
  • 関数 any に別名がなかった問題を修正しました。 #12593 (Anton Popov).
  • cache レイアウトを使用する外部辞書における race condition を修正しました。この問題により、サーバーがクラッシュする可能性がありました。 #12566 (alesapin).
  • DROP TABLE 時に、分散テーブルのデータ (非同期 INSERT のブロック) を削除する。 #12556 (Azat Khuzhin).
  • enable_mixed_granularity_parts=1 のときに ALTER DELETE クエリの後で古いパーツが破損する不具合を修正しました。#12536#12543 (alesapin)。
  • 引数の数が不正な場合の関数 in の例外メッセージを改善しました。 #12529 (Anton Popov).
  • データの重複を引き起こす可能性があった live view テーブルでの race condition を修正しました。 #12519 (vzakaznikov).
  • compact パーツの読み取り時に発生していたパフォーマンスの問題を修正しました。#12492 (Anton Popov) 。
  • AggregateFunction(avg, ...) の値のバイナリ形式における後方互換性の問題を修正しました。これにより #12342 が修正されます。#12486 (alexey-milovidov)。
  • text_log が有効になっている場合に発生していたデッドロックを修正しました。#12452 (alexey-milovidov).
  • 非常に大きな LIMIT または OFFSET が指定された場合に発生するオーバーフローを修正しました。これにより #10470 が修正されます。これにより #11372 が修正されます。#12427 (alexey-milovidov).
  • StorageMerge で発生する可能性がある segfault を修正しました。#12054 をクローズしました。#12401 (tavplubix).
  • #12098 を解決するため、#11079 で導入された変更を元に戻しました。#12397 (Mike).
  • 索引付きテーブルの WHERE 条件で負の定数または浮動小数点定数を使用した場合に例外が発生しないようにしました。これにより #11905 を修正しました。#12384 (alexey-milovidov).
  • 依存するDEFAULT式がある場合でも、カラムをCLEARできるようにしました。これにより、#12333を修正しました。#12378 (alexey-milovidov) 。
  • -State および Nullable 引数を持つ集約関数での TOTALS/ROLLUP/CUBE を修正しました。これにより #12163 が修正されます。#12376 (alexey-milovidov).
  • Kafka Engine で、バッチの途中にエラーを含むメッセージがある場合に発生していた SIGSEGV を修正しました。#12302 (Azat Khuzhin).
  • SummingMergeTree エンジンがパーティションキーのカラムを合計する際の挙動を修正しました。合計対象のカラムを明示的に指定した場合に、それがパーティションキーのカラムと重複すると例外をスローするようにしました。これにより #7867 を修正しました。#12173 (Nikita Mikhaylov).
  • 別名が存在する場合に、外部DBMS (例: MySQL、ODBC) へ送信するクエリの変換を修正しました。これにより #12032 が修正されました。#12151 (alexey-milovidov).
  • ReplicatedVersionedCollapsingMergeTree テーブルにおいて、ZooKeeper 内のテーブルメタデータが不正になる不具合を修正しました。#12093 を修正しました。#12121 (alesapin) 。
  • VIEW からの SELECT におけるスレッド数への不要な制限を修正しました。#11937 を修正しました。#12085 (Nikolai Kochetov) 。
  • join_algorithm=partial_merge を使用した LowCardinality 型の JOIN で発生していたクラッシュを修正しました。#12035 (Artem Zuikov) 。
  • 条件にNULLが含まれる場合の if() の誤った結果を修正しました。#11807 (Artem Zuikov).

パフォーマンス改善

  • リテラルを含む IN 演算子で索引が使用されず、v19.3 頃から発生していたパフォーマンス低下を修正しました。これにより #10574 を修正しています。#12062 (nvartolomei).

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

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

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

後方互換性を持たない変更

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

新機能

  • テーブル内のデータを自動的に粗粒度化してロールアップするためのTTL DELETE WHEREおよびTTL GROUP BY#10537 (expl0si0nn).
  • PostgreSQL wire protocolの実装。#10242 (Movses).
  • ユーザー、ロール、権限、設定プロファイル、クォータ、行ポリシー用のシステムテーブルを追加し、SHOW USER、SHOW [CURRENT|ENABLED] ROLES、SHOW SETTINGS PROFILES コマンドを追加しました。#10387 (Vitaly Baranov) 。
  • ODBC table function への書き込みをサポートしました #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 を外部 Dictionary ソースとしてサポートしました。 #4978 (favstovol).
  • データを保存・キャッシュすることなく、各クエリごとにすべてのデータをソースから直接読み込む新しいレイアウト direct を追加しました。#10622 (Artem Streltsov) 。
  • 辞書に、クエリ実行中にローカルへ何も保存しない新しい complex_key_direct レイアウトを追加しました。 #10850 (Artem Streltsov).
  • MySQL 形式のグローバル変数構文 (スタブ) のサポートを追加しました。これは MySQL プロトコルとの互換性のために必要です。#11832 (alexey-milovidov) 。
  • replxx を使用して、clickhouse-client に構文ハイライト機能を追加しました。#11422 (Tagir Kuskarov) 。
  • minMap および maxMap 関数が追加されました。#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))) 。#11260 (filimonov).
  • 関数 randomFixedString を追加。#10866 (Andrei Nekrashevich) 。
  • 指定した確率で文字列内のビットをランダムに反転させる関数 fuzzBits を追加しました。#11237 (Andrei Nekrashevich) 。
  • 比較演算子、IN、および VALUES セクションで、数値を定数文字列と比較できるようになりました。#11647 (alexey-milovidov) 。
  • round_robin の load_balancing モードを追加しました。#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).
  • SYSTEM {FLUSH DISTRIBUTED,STOP/START DISTRIBUTED SEND} での ON CLUSTER のサポート。 #11415 (Azat Khuzhin).
  • system.distribution_queue テーブルを追加。 #11394 (Azat Khuzhin).
  • Kafka のすべてのフォーマット設定をサポートし、一部の設定をテーブルレベルで利用できるようにし、パフォーマンス向上のためにデフォルト値を調整しました。#11388 (filimonov).
  • port 関数 (URL からポート番号を抽出するための関数) を追加しました。#11120 (Azat Khuzhin).
  • これで dictGet* 関数でテーブル名を指定できるようになりました。#11050 (Vitaly Baranov) 。
  • clickhouse-format ツールで、-n 引数を指定すると複数のクエリをフォーマットできるようになりました。#10852 (Darío).
  • DiskS3 のプロキシリゾルバを設定できるようになりました。 #10744 (Pavel Kovalenko) 。
  • pointInPolygon が非定数のポリゴンでも動作するようになりました。pointInPolygon は第2引数として Array(Array(Tuple(…, …)))、つまりポリゴンと穴の配列を受け取れるようになりました。#10623 (Alexey Ilyukhov) #11421 (Alexey Ilyukhov).
  • move TTL 機能の内部情報を確認できるよう、system.partsmove_ttl_info を追加しました。#10591 (Vladimir Chebotarev) 。
  • プロキシ経由でS3を利用できるようになりました。 #10576 (Pavel Kovalenko).
  • データ型の別名として NCHARNVARCHAR を追加しました。#11025 (alexey-milovidov) 。
  • #7224 を修正し、system.events テーブルに FailedQueryFailedSelectQueryFailedInsertQuery メトリクスを追加しました。#11151 (Nikita Orlov) 。
  • system.asynchronous_metricsjemalloc の統計情報をさらに追加し、それらの値が常に最新のものになるようにしました。#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).
  • 改行、空白、および/またはカンマで区切られた JSONオブジェクトのシーケンスを受け付ける新しい入力フォーマット JSONAsString を追加しました。#10607 (Kruglov Pavel) 。
  • 4 MiB より細かい粒度でメモリプロファイリングを行えるようにしました。ランダムなメモリ割り当て/解放を捉えるためのサンプリングメモリプロファイラを追加しました。 #10598 (alexey-milovidov).
  • SimpleAggregateFunctionsumMap にも対応しました。#10000 (Ildus Kurbangaliev) 。
  • 分散テーブルエンジンでALTER RENAME COLUMNをサポートしました。#10727 の続きです。#10747 を修正しました。#10887 (alesapin) 。

バグ修正

  • Decimal の解析時の UBSan レポートを修正しました。これにより #7540 が修正されました。#10512 (alexey-milovidov).
  • DateTime64 のパース時に発生する可能性のある浮動小数点例外を修正しました。これにより #11374 も修正されます。#11875 (alexey-milovidov).
  • prewhere 条件で Nullable カラムを使用した場合にまれに発生するクラッシュを修正しました。 #11895 #11608 #11869 (Nikolai Kochetov).
  • 高階関数内で arrayJoin を許可しないようにしました。これにより、プロトコル同期が壊れる問題を防ぎます。#3933 を修正しました。#11846 (alexey-milovidov).
  • 定数 String と FixedString の比較結果が誤っていた問題を修正しました。これにより #11393 が修正されます。このバグはバージョン 20.4 で発生しました。#11828 (alexey-milovidov).
  • if の条件に NULL が含まれる場合に誤った結果になる問題を修正しました。#11807 (Artem Zuikov) 。
  • クエリで使用するスレッド数が多すぎる不具合を修正しました。 #11788 (Nikolai Kochetov) 。
  • SELECT ... FROM merge_tree_table ...WITH <scalar サブクエリ> ... を使用した際に発生していた Scalar does not exist 例外を修正しました #11621#11767 (Amos Bird).
  • SELECT *, xyz.* のようなクエリで、本来はエラーになるべきなのに成功してしまっていた不具合を修正しました。 #11753 (hexiaoting).
  • メタデータの ALTER 中に、レプリカからのフェッチがキャンセルされるようになりました。#11744 (alesapin) 。
  • 等価性を確認する前に、ZooKeeper に保存されたメタデータをパースします。#11739 (Azat Khuzhin) 。
  • Values入力フォーマットで、複合リテラルの型推論が誤っていたために発生していたLOGICAL_ERRORを修正しました。#11732 (tavplubix) 。
  • constカラムでの ORDER BY ... WITH FILL の不具合を修正しました。#11697 (Anton Popov).
  • SYSTEM SYNC REPLICA における、ごくまれに発生する race condition を修正しました。レプリケートテーブルの作成と同時に、別の接続から別のクライアントがそのテーブルに対して SYSTEM SYNC REPLICA コマンドを実行すると (通常、別のクライアントがテーブルの作成を把握している必要があるため、このケースが発生する可能性は低いですが) 、nullptr の逆参照が発生することがありました。#11691 (alexey-milovidov).
  • XDBC bridge との通信時に、適切なタイムアウトを渡すようにしました。最近、bridge の生存確認やメタ情報の受信時にタイムアウトが正しく反映されていませんでした。#11690 (alexey-milovidov).
  • 別名を含む ORDER BY ステートメントと併用した場合の LIMIT n WITH TIES の動作を修正しました。 #11689 (Anton Popov).
  • 並列 FINAL を使用する SELECT クエリで Pipeline stuck が発生する可能性がある問題を修正しました。#11636 を修正。#11682 (Nikolai Kochetov) 。
  • system.mutations が不正な状態になる原因となっていたエラーを修正しました。このエラーにより、ミューテーション全体がすでに完了したように表示されていても、server はレプリケーションキューにまだ MUTATE_PART task を保持したままで、それらの実行を試みることがありました。これにより #11611 を修正します。#11681 (alesapin).
  • CREATE USER クエリの構文ハイライトを修正しました。#11664 (alexey-milovidov) 。
  • 大文字小文字を区別しないフラグ付きの正規表現のサポートを追加しました。これにより、#11101#11506 が修正されました。#11649 (alexey-milovidov)。
  • 行レベルセキュリティが設定されている場合、単純な count クエリ最適化を無効化しました。以前のバージョンでは、ユーザーはフィルタ後の件数ではなく、テーブル内のレコード総数を取得していました。これにより #11352 が修正されます。 #11644 (alexey-milovidov).
  • String 型のブルームフィルタ (データスキッピングインデックス) の不具合を修正しました。 #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 を修正しました。#11592 (alexey-milovidov).
  • サーバー起動時の”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).
  • SHOW CREATE TABLE でまれに発生するセグメンテーションフォルトを修正しました。#11490 を修正。#11579 (tavplubix) 。
  • HTTP session 内のすべてのクエリで同じ 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 を修正します。 #11496 (alexey-milovidov).
  • SELECT (max_threads>1) には複数のストリームがある一方、INSERT には 1 つしかない (max_insert_threads==0) 場合に発生する INSERT SELECT FINALPipeline stuck 例外を修正しました。#11455 (Azat Khuzhin) 。
  • select count() from t, u のようなクエリで誤った結果が返される問題を修正しました。 #11454 (Artem Zuikov).
  • codec の圧縮サイズが返るように修正しました。#11448 (Nikolai Kochetov) 。
  • カラムに非リテラル引数を持つ圧縮コーデックがある場合に、サーバーがクラッシュする問題を修正しました。#11365 を修正。#11431 (alesapin) 。
  • テーブルが正常に作成されていない場合に、MergeTree のシャットダウン時に未初期化メモリを読み取る可能性がある問題を修正しました。 #11420 (alexey-milovidov).
  • LowCarinality(T)Nullable(T) に対する JOIN で発生するクラッシュを修正しました。#11380#11414 (Artem Zuikov) 。
  • USING に誤ったキーを指定した場合のエラーコードを修正しました。#11373#11404 (Artem Zuikov) 。
  • 緯度/経度の範囲外の引数が指定された場合の geohashesInBox を修正しました。#11403 (Vasily Nemkov).
  • joinGet() 関数のエラーメッセージを改善しました。#11389 (Artem Zuikov).
  • 外部ソートと limit を伴うクエリで発生する可能性がある Pipeline stuck エラーを修正しました。#11359#11366 (Nikolai Kochetov).
  • ReplicatedMergeTree でのパーツ送信時の不要なロックを削除。 #11354 (alesapin).
  • マルチラインモードの clickhouse-client で \G (縦方向出力) が正しくサポートされるよう修正しました。これにより #9933 をクローズしました。#11350 (alexey-milovidov).
  • Lazy データベースの使用時に発生する可能性のあるセグメンテーションフォールトを修正しました。 #11348 (alexey-milovidov) 。
  • Joinテーブルエンジンに対する直接SELECT (JOINなし) で発生するクラッシュと、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 が修正されます。#11303 (alexey-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 が修正されます。#11278 (Vitaly Baranov).
  • Protobuf 形式で不正なデータを読み込む際に発生するクラッシュを修正しました。これにより #5957 および #11203 が修正されます。#11258 (Vitaly Baranov).
  • cache Dictionary が、通常の値ではなくデフォルト値を返してしまうことがある不具合を修正しました (期限切れのキーしか存在しない場合) 。これは文字列フィールドにのみ影響します。 #11233 (Nikita Mikhaylov).
  • 内部クエリに定数を含む VIEW の読み取り時に発生するエラー Block structure mismatch in QueryPipeline を修正しました。#11181 を修正。#11205 (Nikolai Kochetov) 。
  • 発生する可能性のある例外 Invalid status for associated output を修正しました。#11200 (Nikolai Kochetov).
  • 今後は、CREATE クエリで primary.idx が定義されているかどうかをチェックするようになりました。#11199 (alesapin).
  • Array(Array(LowCardinality)) をキャプチャする引数を持つ高階関数で発生する可能性がある Cannot capture column エラーを修正しました。#11185 (Nikolai Kochetov).
  • S3 のグロブ処理で、キーが 1000 個を超える場合や一部のバックエンドで失敗することがあった問題を修正しました。#11179 (Vladimir Chebotarev).
  • データスキッピングインデックスが、バックグラウンドマージ中に変更されるカラム (SummingMergeTree、AggregatingMergeTree、TTL GROUP BY の場合) に依存している場合、誤って計算されていました。この問題は、索引の計算をマージ後に移動し、マージ済みデータに対して索引が計算されるようにすることで修正されました。 #11162 (Azat Khuzhin).
  • table engine=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/DROPRENAME を行えるようになりました。同時に MODIFYRENAME を行った場合の例外メッセージも、よりわかりやすくなりました。#10669 を部分的に修正しています。 #11037 (alesapin).
  • S3 URLのパースを修正しました。#11036 (Vladimir Chebotarev) 。
  • LIMIT がある場合の 2 レベル GROUP BY におけるメモリ使用量の追跡を修正しました。#11022 (Azat Khuzhin) 。
  • テーブルの作成が正常に完了しなかった場合に、MergeTree でごくまれに発生する可能性がある use-after-free エラーを修正しました。#10986 (alexey-milovidov).
  • Atomic データベースのメタデータ (rename の相対パス) とデータ (symlink の相対パス) の処理を修正しました。#10980 (Azat Khuzhin).
  • ALTERDROP DATABASE クエリを同時実行した際に、Atomicデータベースエンジンで発生するサーバークラッシュを修正しました。 #10968 (tavplubix).
  • getRawData() メソッドにおける生データのサイズの誤りを修正しました。 #10964 (Igr).
  • 20.1以前のバージョンとの間にあった二段階集約の非互換性を修正しました。この非互換性は、イニシエーターノードとリモートノードで異なるバージョンの ClickHouse を使用しており、GROUP BY の結果サイズが大きく、かつ単一の String フィールドで集約を実行する場合に発生します。その結果、結果内で1つのキーに対して未マージの複数の行が生じます。 #10952 (alexey-milovidov).
  • DistributedBlockOutputStream によって、書きかけのファイルが送信されるのを防止しました。 #10940 (Azat Khuzhin).
  • SELECT count(notNullIn(NULL, [])) で発生するクラッシュを修正。#10920 (Nikolai Kochetov) 。
  • table engine=Kafka のテーブルを DROP する際 (またはサーバーの再起動時) に、ときどき発生していたハングを修正。#10910 (filimonov) 。
  • a TO b, c TO a のように、複数指定した ALTER RENAME を実行できるようになりました。#10895 (alesapin).
  • 同じカラムについて、複数のスレッドから集約関数の state の結果を取得する際に発生しうる競合状態を修正しました。私が確認した限り、これが発生する唯一のケースは、quanite* 関数の AggregateFunction state を格納する Memory エンジンのテーブルを読み取る際に、finalizeAggregation 関数を使用した場合です。#10890 (Nikolai Kochetov).
  • 分散テーブルにおけるタプルの後方互換性の問題を修正しました。#10889 (Anton Popov) 。
  • StringHashTable 内で、該当するキーが存在しない場合に発生する SIGSEGV を修正。 #10870 (Azat Khuzhin).
  • LiveView テーブルが Atomic エンジンのデータベースから削除された後に WATCH がハングする問題を修正しました。#10859 (tavplubix).
  • ReplicatedMergeTreeで、非アクティブになったレプリカを待ち続けることで、一部のOPTIMIZEクエリに対するALTERがハングする可能性がある不具合を修正しました。#10849 (tavplubix).
  • CONSTRAINT 式で参照されているカラム名が変更された場合、制約も更新されるようになりました。#10844 を修正しました。#10847 (alesapin).
  • cache Dictionaryで未初期化メモリが読み取られる可能性がある問題を修正しました。 #10834 (alexey-milovidov).
  • Block::sortColumns() 後のカラム順を修正 (あわせて、これが実際のユースケースである Buffer engine に影響することを示すテストも追加) 。 #10826 (Azat Khuzhin).
  • 識別子のクォートが不要な場合に ODBC bridge で発生する問題を修正しました。これにより #7984 が修正されます。#10821 (alexey-milovidov).
  • DateLUT で報告されていた UBSan と MSan の問題を修正しました。#10798 (alexey-milovidov) 。
  • キー条件で正しい型変換を行うために、src_type を使用するようにしました。#6287 を修正しました。#10791 (Andrew Onyshchuk).
  • 古い libunwind のパッチを削除しました。 https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 これにより、clang builds で -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 を修正します。#10734 (Nikolai Kochetov)。
  • マージ後に発生する可能性があった、SummingMergeTreeLowCardinality(FixedString) キーカラムにおけるデータ破損を修正しました。#10489#10721 (Nikolai Kochetov).
  • 関数でラップされた主キーを使用した場合の、‘FINAL’修飾子および’ORDER BY’最適化に関する問題を修正しました。#10715 (Anton Popov).
  • 関数 h3EdgeAngle におけるバッファオーバーフローの可能性を修正しました。 #10711 (alexey-milovidov).
  • 表示されなくなる totals を修正しました。クエリに外部の WHERE 条件を持つ join またはサブクエリがある場合、totals がフィルタリングされることがありました。#10674 を修正しました。#10698 (Nikolai 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 を修正します。#10684 (tavplubix) 。
  • AggregateTransform コンストラクタのパラメーターの順序を修正しました。#10667 (palasonic1) 。
  • distributed_aggregation_memory_efficient が有効な場合に、リモートクエリが並列実行されない不具合を修正しました。#10655 を修正。#10664 (Nikolai Kochetov).
  • LIMIT を含むクエリで、行数が誤って計算される可能性がある問題を修正しました。 #10566#10709#10660 (Nikolai Kochetov) 。
  • テーブルに大量のパーツがある場合に、同時実行のALTERがロックされる不具合を修正しました。 #10659 (alesapin).
  • テーブルの起動前にサーバーがシャットダウンした場合に、StorageBuffer で発生する nullptr のデリファレンスを修正しました。 #10641 (alexey-milovidov).
  • 式の順序を保持することで、HAVING 句を含むクエリ (つまり、イニシエーターサーバーでのフィルタリングが必要な場合) における分散クエリの述語最適化 (enable_optimize_predicate_expression=1) を修正しました (これで修正に十分です) 。また、アグリゲーターが索引ではなくカラム名を使用するようにしました。修正: #10613, #11413. #10621 (Azat Khuzhin).
  • LowCardinality での optimize_skip_unused_shards の問題を修正しました。 #10611 (Azat Khuzhin).
  • serverの起動時に例外が発生した場合に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#10569 (Winter Zhang).
  • デフォルト式の型がカラム型と異なる ALIAS カラムに対する SELECT を修正しました。#10563 (Azat Khuzhin) 。
  • DateTime64 と String 値の比較を、DateTime と同様に実装しました。 #10560 (Vasily Nemkov).
  • compact パーツを別の compact パーツにマージした後、一部のケースで発生する可能性がある索引の破損を修正しました。 #10531 (Anton Popov).
  • GROUP BY sharding_key の最適化をデフォルトで無効にし (optimize_distributed_group_by_sharding_key は導入されていたものの、sharding_key の解析が厄介なため、デフォルトで無効化されていました。単純な例として、sharding key 内の if があります) 、WITH ROLLUP/CUBE/TOTALS でこれが正しく動作するよう修正しました。#10516 (Azat Khuzhin).
  • 修正: #10263 (その PR の後、INSERT による dist send が、INSERT のたびに遅延するようになっていました) 修正: #8756 (その PR により、以下の条件がすべて満たされる場合に分散送信が壊れます (現時点では、おそらくまれな構成です) : internal_replication == false、複数のローカル分片 (ハードリンク用コードが有効になる) 、および distributed_storage_policy (これにより EXDEVlink(2) が失敗します) ) 。 #10486 (Azat Khuzhin).
  • “max_rows_to_sort” の制限に関するエラーを修正しました。#10268 (alexey-milovidov).
  • 外部辞書を読み込む任意の関数の呼び出しごとに、Dictionary の取得とアクセス権の確認を一度だけ行うようにしました。 #10928 (Vitaly Baranov).

改善

  • ALTER MODIFY TTL クエリの後、古いデータにも TTL を適用します。この動作は設定 materialize_ttl_after_modify で制御されており、デフォルトで有効になっています。#11042 (Anton Popov).
  • 文字列リテラル、VALUES、および各種テキストフォーマットで C スタイルの backslash エスケープをパースする際 (これは SQL 標準の拡張機能で、ClickHouse と MySQL に特有のものです) 、未知のエスケープシーケンス (たとえば \%\w) が見つかった場合は backslash をそのまま保持するようになりました。これにより、LIKEmatch 正規表現をより便利に使えるようになり (name LIKE 'used\\_cars' ではなく name LIKE 'used\_cars' と書くだけで十分です) 、同時に互換性も向上します。これにより #10922 が修正されます。#11208 (alexey-milovidov).
  • Decimal 値の読み取り時に、小数点以下の余分な桁を切り捨てるようにしました。この動作により、MySQL および PostgreSQL との互換性が向上します。これにより #10202 を修正しました。#11831 (alexey-milovidov).
  • ZooKeeper 内のメタデータがすでに削除されて存在しない場合でも、レプリケートテーブルを DROP できるようにしました (これは、テスト用に TestKeeper を使用していてサーバーが再起動された場合にも当てはまります) 。また、ZooKeeper との通信でエラーが発生している場合でも、レプリケートテーブルを RENAME できるようにしました。これにより #10720 を修正しました。 #11652 (alexey-milovidov)。
  • 文字列から decimal を読み取る際の診断を若干改善しました。これで #10202 をクローズします。#11829 (alexey-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 addressで待ち受けできない場合 (たとえば Docker 内で IPv6 が利用できない場合) 、server log には error ではなく warning を出力するようにしました。なお、server が列挙されたすべてのアドレスで待ち受けできない場合は、従来どおり起動を拒否します。これにより #4406 を修正しました。 #11687 (alexey-milovidov).
  • Docker image の起動時に、デフォルトのユーザーとデータベースが作成されるようになりました。 #10637 (Paramtamtam).
  • 複数行のクエリをサーバーログに出力する際、各行が結合されます。これを、複数行の文字列リテラル、識別子、単一行コメントの場合でも正しく動作するようにしました。これにより #3853 が修正されます。#11686 (alexey-milovidov).
  • コマンドで複数の名前を指定できるようになりました: CREATE USER、CREATE ROLE、ALTER USER、SHOW CREATE USER、SHOW GRANTS など。#11670 (Vitaly Baranov).
  • クロスレプリケーション クラスターにおける distributed DDL (UPDATE/DELETE/DROP PARTITION) のサポートを追加しました。 #11508 (frank lee).
  • ユーザーが明示的に値を指定した場合、clickhouse-clientclickhouse-benchmark ではコマンドラインからパスワードを消去するようにしました。これにより、ps などのツールによるパスワードの露出を防ぎます。 #11665 (alexey-milovidov).
  • ELF ファイルのデバッグ情報が実行中のバイナリに対応していない場合は、それを使用しないようにしました。これは、スタックトレースに誤った関数名やソースコード上の位置が表示されるのを防ぐために必要です。これにより #7514 が修正されます。 #11657 (alexey-milovidov).
  • parseDateTimeBestEffortOrNull/Zero 関数で値を完全に解析できなかった場合に、NULL/zero を返すようにしました。これにより #7876 を修正しました。#11653 (alexey-milovidov).
  • リクエストされたURLで空のパラメータをスキップするようにしました。これは、http://localhost:8123/?&a=b または http://localhost:8123/?a=b&&c=d のように記述した場合に発生することがあります。これにより #10749 をクローズします。#11651 (alexey-milovidov).
  • groupArrayArray および groupUniqArrayArraySimpleAggregateFunction として使用可能にしました。#11650 (Volodymyr Kuznetsov).
  • 他の型の索引条件を解析する際、暗黙的な変換により定数文字列との比較を可能にしました。これにより #11630 が解消される可能性があります。#11648 (alexey-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).
  • live view テーブルで PREWHERE をサポートしました。 #11495 (vzakaznikov).
  • ユーザーが特定のアドレスからの接続を許可されているかどうかの確認に使用される DNS キャッシュが自動的に更新されるようになりました。#11487 (tavplubix).
  • 同時実行の merges が実行されている場合でも、OPTIMIZE FINAL は merge を強制的に実行します。これにより #11309 および #11322 がクローズされます。#11346 (alexey-milovidov).
  • clickhouse-clientで、キャンセルされたクエリの出力を抑制するようにしました。以前のバージョンでは、クエリをキャンセルするためにCtrl+Cを押しても、結果が端末に表示され続けることがありました。これにより#9473がクローズされました。#11342 (alexey-milovidov) 。
  • 履歴ファイルは各クエリの実行後に更新されるようになり、複数のクライアントが1つの履歴ファイルを使用してもレースコンディションは発生しなくなりました。これにより #9897 が修正されました。#11453 (Tagir Kuskarov).
  • 設定の再読み込み時のログメッセージを改善しました。 #11341 (alexey-milovidov).
  • 一部のケースで、clickhouse-client または clickhouse-format でフォーマットしたクエリから末尾の空白を削除します。#11325 (alexey-milovidov).
  • 設定 “output_format_pretty_max_value_width” を追加しました。値がこれより長い場合は、ターミナルで大きすぎる値が出力されないよう切り詰められます。これにより #11140 がクローズされます。#11324 (alexey-milovidov).
  • メモリマッピング不足時の例外メッセージを改善しました。これにより #11027 をクローズしました。 #11316 (alexey-milovidov).
  • ASOF JOIN で (U)Int8、(U)Int16、Date をサポートしました。 #11301 (Artem Zuikov).
  • Kafkaテーブルで kafka_client_id parameter をサポートしました。また、ClickHouse が Kafka と通信する際に使用するデフォルトの client.id を、より詳細で使いやすいものに変更しました。#11252 (filimonov).
  • 例外発生時でも DistributedFilesToInsert Metric の値が保持されるようになりました。以前のバージョンでは、ファイルを送信しようとする時点で値が設定されていましたが、例外が発生して未送信のファイルが残っていても、値は 0 になっていました。現在は、filesystem 上で保留中のファイル数に対応しています。 #11220 (alexey-milovidov).
  • 複数語のデータ型名 (DOUBLE PRECISIONCHAR VARYING など) のサポートを追加し、SQL との互換性を向上させました。#11214 (Павел Потемкин) 。
  • 一部のデータ型に別名を追加しました。 #10856 (Павел Потемкин).
  • クエリログはデフォルトで有効になりました。#11184 (Ivan Blinkov) 。
  • system.users テーブルおよび SHOW CREATE USER クエリの実行時に、認証タイプが表示されるようになりました。#11080 (Vitaly Baranov).
  • Memory データベースエンジンで、明示的に DROP DATABASE を実行した際にデータを削除するようにしました。#10557 を修正。#11021 (tavplubix) 。
  • 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 に挿入されるブロックにのみ適用されます。これにより、MV へのプッシュ時にブロックをまとめる動作を制御し、過剰なメモリ使用量を回避できます。#10858 (Azat Khuzhin) 。
  • サーバーのシャットダウン時にレプリケーションキューで発生する例外を解消しました。#10819 を修正。#10841 (alesapin) 。
  • 数値誤差によって varSampvarPop が負の値を返したり、stddevSampstddevPop が負の分散をもとに計算されたりしないようにしました。これにより #10532 を修正しました。#10829 (alexey-milovidov).
  • DNS の例外メッセージを改善しました。これにより #10813 が修正されます。#10828 (alexey-milovidov) 。
  • 一部のパースエラーが発生した場合のHTTPレスポンスコードを 400 Bad Request に変更しました。これにより #10636 を修正しました。 #10640 (alexey-milovidov).
  • clickhouse-client が clickhouse-server より新しい場合に、メッセージを表示するようにしました。#10627 (alexey-milovidov).
  • INSERT INTO [db.]table WATCH クエリに対応しました。#10498 (vzakaznikov) 。
  • clickhouse-client で quota_key を渡せるようになりました。これにより #10227 をクローズしました。#10270 (alexey-milovidov).

パフォーマンス改善

  • 複数のレプリカで、マージ、ミューテーション、パーティションの削除、move、replace を同時に割り当てられるようにしました。これで #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 による INSERT、または小さなブロックが生成される場合 (parallel parsing でよく見られるケース) の clickhouse-client を使った INSERT クエリのパフォーマンスを改善しました。これにより #11275 を修正しました。DEFAULT フィールドで CONSTRAINT が機能していなかった問題を修正しました。これにより #11273 を修正しました。TEMPORARY テーブルで CONSTRAINT が無視されていた問題を修正しました。これにより #11274 を修正しました。#11276 (alexey-milovidov).
  • SELECT セクション内で、GROUP BY キーに対する min/max/any 集約関数を省略する最適化です。optimize_aggregators_of_group_by_keys 設定で有効になります。#11667 (xPoSx). #11806 (Azat Khuzhin).
  • any 関数からすべての演算を移動する新しい最適化。optimize_move_functions_out_of_any を有効にすると利用できます #11529 (Ruslan).
  • Prettyフォーマットを使用する対話型モードでのclickhouse-clientのパフォーマンスを改善しました。以前のバージョンでは、UTF-8 string の表示幅の計算にかなりの時間がかかることがありました。これにより #11323 を修正しました。#11323 (alexey-milovidov).
  • ORDER BY を含み、LIMIT が小さい (max_block_size 未満の) クエリのパフォーマンスを改善しました。#11171 (Albert Kidrachev) 。
  • 最適な関数実装を選択して振り分けるために、ランタイムの CPU 検出を追加しました。複数ターゲット向けのコード生成をサポートしました。これにより #1017 をクローズします。 #10058 (DimasKovas).
  • デフォルトで ClickHouse バイナリの mlock を有効にしました。これにより、IO 負荷が高い状況で ClickHouse 実行ファイルがページアウトされるのを防ぎます。#11139 (alexey-milovidov).
  • sum 集約関数を使用し、GROUP BY キーを使わないクエリは数倍高速に実行できるようになりました。#10992 (alexey-milovidov).
  • 冗長なデータ移動の一部を削減し、単純なキーに対する ORDER BY で使用されるラディックスソートを改善しました。#10981 (Arslan Gumerov) 。
  • MergeJoin で左側テーブルのより大きなパーツをソートするようにしました。左側のブロックをメモリ上にバッファするようにしました。左側のブロックのバッファサイズを管理するための partial_merge_join_left_table_buffer_bytes 設定を追加しました。 #10601 (Artem Zuikov) 。
  • サブクエリ内の重複する ORDER BY と DISTINCT を削除するようにしました。この最適化は optimize_duplicate_order_by_and_distinct で有効になります #10067 (Mikhail Malafeev) 。
  • この機能により、optimize_group_by_function_keys を有効にすると、GROUP BY 句内の他のキーに対する関数が除去されます #10051 (xPoSx).
  • 集約関数から算術演算を切り出す新しい最適化が追加されました。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 のデフォルト設定を調整しました。 #11388 (filimonov).

実験的機能

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

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

  • 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 クエリの後も mutations が引き続き機能することを確認するテストを追加しました。#11820 (alexey-milovidov) 。
  • 名前に “fail” という substring を含むテストは許可しないようにしました。ブラウザーでテスト結果を確認する際、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 build では 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 から不要なタイムアウトを削除しました。#11343 (alesapin).
  • clickhouse-test でハングしたクエリをより適切に検出するよう改善。 #11321 (alexey-milovidov).
  • server がデバッグビルド、またはサニタイザ付きでビルドされている場合に警告を出す。 #11304 (alexey-milovidov).
  • 現在、clickhouse-test はテストの実行前に server が稼働しているかどうかを確認します。 #11285 (alesapin).
  • 潜在的に不安定なテスト 00731_long_merge_tree_select_opened_files.sh を修正しました。このテストが頻繁に失敗するわけではありませんが、ThreadFuzzer を使った実験中に、このテストに潜在的な競合状態があることが判明しました: #9814 例については link を参照してください。#11270 (alexey-milovidov).
  • curl の呼び出しがタイムアウトした場合、CI でテストを再実行します。これは、当社の CI インフラストラクチャでよく発生する 10 秒以上のシステムハングによって起こる可能性があります。これにより #11267 を修正します。#11268 (alexey-milovidov).
  • @donmikel による Join table engine のテストを追加しました。これで #9158 をクローズします。#11265 (alexey-milovidov).
  • ユニットテスト内の重大ではないいくつかのエラーを修正しました。#11262 (alesapin).
  • これで、cctz ライブラリのリンカーコマンドの一部が、ほかのライブラリと混在しなくなります。 #11213 (alesapin).
  • /programs/server をプログラム本体とライブラリに分割。 #11186 (Ivan).
  • protobuf と gRPC のビルドスクリプトを改良しました。#11172 (Vitaly Baranov) 。
  • 動作していなかった性能テストを有効にしました。#11158 (alexey-milovidov).
  • CH インスタンスを起動する前に、テスト用のルート S3 バケットを作成する。 #11142 (Pavel Kovalenko).
  • 非定数Polygon向けのパフォーマンステストを追加しました。#11141 (alexey-milovidov).
  • 00979_live_view_watch_continuous_aggregates テストを修正しました。#11024 (vzakaznikov) 。
  • 結合テストで tmpfs 上の zookeeper を実行できるようにしました。#11002 (alesapin).
  • 指数バックオフを用いて odbc-bridge の待機を行うようにしました。従来の 200 ms の待機時間では、CI 環境では不十分でした。 #10990 (alexey-milovidov).
  • 非決定論的なテストを修正。#10989 (alexey-milovidov) 。
  • 空の外部データ用のテストを追加しました。#10926 (alexey-milovidov) 。
  • データベースは各テストごとに再作成されます。これにより、テスト間の分離が向上します。 #10902 (alexey-milovidov).
  • カラム関連のコードにアサートをさらに追加しました。 #10833 (alexey-milovidov).
  • サニタイザとの連携が改善されました。サニタイザの失敗メッセージに query&#95;id の情報が表示されるようになりました。#10832 (alexey-milovidov).
  • “Split build smoke test” チェックにおける明らかなレースコンディションを修正。 #10820 (alexey-milovidov).
  • MergeTreeIndexFullText における (誤検知の) MSan レポートを修正しました。この問題は最初に #9968 で報告されました。#10801 (alexey-milovidov).
  • MariaDB Client library 向けの MSan サプレッションを追加しました。#10800 (alexey-milovidov).
  • GRPC make で protobuf ファイルを見つけられなかったため、正しいリンクを追加して Makefile を修正しました。 #10794 (mnkonkova).
  • base、utils、programs で追加の警告 (-Weverything) を有効にしました。なお、コードの大部分ではすでに有効になっています。#10779 (alexey-milovidov).
  • ライブラリからの警告の抑制が、#10396 で誤って public として宣言されていました。#10776 (alexey-milovidov) 。
  • #10396 で誤って削除されていたパッチを復元しました。#10774 (alexey-milovidov) 。
  • パフォーマンステストのエラーを修正 (その2) 。 #10773 (alexey-milovidov).
  • パフォーマンステストで発生していたエラーを修正しました。 #10766 (alexey-milovidov).
  • クロスビルドで clang-10 コンパイラを使用するよう更新しました。#10724 (Ivan) 。
  • 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 への 0 の加算) を修正しました。#10638 (alexey-milovidov).
  • コンパイル時の tzdata 処理で、ld (bfd) リンカーへの外部呼び出しを削除しました。#10634 (alesapin).
  • ブロブ (リソース) のリンクに lld を使用できるようにしました。 #10632 (alexey-milovidov).
  • LZ4 ライブラリでの UBSan レポートを修正しました。#10631 (alexey-milovidov) 。関連項目: https://github.com/lz4/lz4/issues/857
  • LZ4をdevブランチの最新版に更新しました。#10630 (alexey-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 buildsでThinLTOを有効化。#10435 の続き。 #10585 (Amos Bird).
  • ファザーを追加し、oss-fuzzとの統合に向けた準備を進めました。 #10546 (kyprizel).
  • FreeBSDのビルドを修正しました。#10150 (Ivan) 。
  • pytestフレームワークを使用するクエリテスト用の新しいビルドを追加しました。#10039 (Ivan) 。

ClickHouse リリース v20.4

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

バグ修正

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

パフォーマンス改善

  • リテラルを含む IN 演算子で索引が使用されず、v19.3 頃に導入されたパフォーマンス低下を修正しました。 #10574#12062 (nvartolomei).

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

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

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

バグ修正

  • Nullable カラムを prewhere 条件で使用した際に発生する、まれなクラッシュを修正しました。#11608 の続きです。#11869 (Nikolai Kochetov).
  • 高階関数内では arrayJoin を許可しないようにしました。これにより、プロトコル同期が破損していました。これで #3933 をクローズします。#11846 (alexey-milovidov) 。
  • FixedString と定数の String の比較で誤った結果になる不具合を修正しました。これにより #11393 を修正しています。この不具合はバージョン 20.4 で発生しました。 #11828 (alexey-milovidov).
  • 条件にNULLが含まれるif()で誤った結果が返される問題を修正しました。#11807 (Artem Zuikov) 。
  • クエリで使用されるスレッド数が多すぎる問題を修正しました。 #11788 (Nikolai Kochetov).
  • 本来はエラーになるべき SELECT *, xyz.* のようなクエリが成功してしまう不具合を修正しました。 #11753 (hexiaoting).
  • これにより、メタデータの ALTER 中はレプリケーションのフェッチがキャンセルされるようになりました。#11744 (alesapin).
  • Values入力フォーマットにおける複雑なリテラルに対する型推論の誤りが原因で発生していたLOGICAL_ERRORを修正しました。 #11732 (tavplubix).
  • constカラムに対するORDER BY ... WITH FILLの不具合を修正しました。#11697 (Anton Popov).
  • XDBC bridge との通信時に、適切なタイムアウトを渡すようにしました。最近、bridge の生存確認およびメタ情報の受信時に、タイムアウトが適切に反映されていませんでした。#11690 (alexey-milovidov).
  • 別名を含む ORDER BY ステートメントと併用した場合の LIMIT n WITH TIES の動作を修正しました。#11689 (Anton Popov).
  • system.mutations が不正な状態になる原因となっていた error を修正しました。これまでは、mutation 全体はすでに完了したように表示されていても、server の replication queue に MUTATE_PART task が残っており、その実行を試みることがありました。これにより #11611 を修正しました。#11681 (alesapin).
  • 大文字・小文字を区別しないフラグ付きの正規表現のサポートを追加しました。これにより #11101 および #11506 が修正されました。 #11649 (alexey-milovidov).
  • 行レベルセキュリティが設定されている場合、自明な count クエリ最適化を無効化しました。以前のバージョンでは、ユーザーはフィルタリング後の件数ではなく、テーブル内のレコード総数を取得していました。これにより #11352 を修正しました。 #11644 (alexey-milovidov).
  • String 型向けのブルームフィルタ (データスキッピングインデックス) を修正しました。#11638 (Azat Khuzhin) 。
  • Nullable カラムを prewhere 条件で使用した際に発生する、まれなクラッシュを修正しました。 (おそらく #11572 と何らかの関連があります) 。#11608 (Nikolai Kochetov) 。
  • サンプリング付きでBufferテーブルを読み取るクエリで発生するエラーBlock structure mismatchを修正しました。 #11602 (Nikolai Kochetov).
  • exception.code() % 256 = 0 の場合に、clickhouse-client の誤った終了コードを修正しました。 #11601 (filimonov).
  • server の起動時に表示される “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) 。
  • SHOW CREATE TABLEでまれに発生していたセグメンテーションフォルトを修正しました。#11490 を修正します。 #11579 (tavplubix).
  • HTTP セッション内のすべてのクエリで同じ query_id が使われていた問題を修正しました。#11578 (tavplubix).
  • 今後、clickhouse-server の Docker コンテナでは、server の稼働確認時に IPv6 が優先されます。 #11550 (Ivan Starkov) 。
  • <node> の shard_num/replica_num を修正 (use_compact_format_in_distributed_parts_names を壊していた問題) 。#11528 (Azat Khuzhin) 。
  • テーブルの削除中に例外が発生する可能性のある競合状態を修正しました。少し厄介ですが、危険性はまったくありません。説明が必要であれば、Telegram で声をかけてください。 #11523 (alesapin).
  • -State 関数を使った集約の途中で例外が発生した際のメモリリークを修正しました。これにより #8995 も修正されます。 #11496 (alexey-milovidov).
  • データスキッピングインデックスが、バックグラウンドマージ中に変更されるカラム (SummingMergeTree、AggregatingMergeTree、および TTL GROUP BY の場合) に依存している場合、正しく計算されていませんでした。この問題は、索引の計算をマージ後に行うように変更し、マージ済みデータに対して索引が計算されるようにすることで修正されました。 #11162 (Azat Khuzhin).
  • 古い libunwind パッチを削除しました。https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 これにより、clang builds で -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 が修正されます。#11540 (alexey-milovidov).
  • コーデックの返す圧縮サイズを修正しました。#11448 (Nikolai Kochetov) 。
  • カラムに非リテラル引数を持つ圧縮コーデックがある場合に、サーバーがクラッシュする問題を修正しました。 #11365#11431 (alesapin).
  • 点に nan を指定した場合の pointInPolygon の不具合を修正しました。#11375 を修正。#11421 (Alexey Ilyukhov).
  • テーブルが正常に作成されなかった場合に、MergeTree のシャットダウン時に未初期化メモリを読み取る可能性がある問題を修正しました。 #11420 (alexey-milovidov).
  • 緯度/経度の範囲外の引数が指定された geohashesInBox を修正しました。#11403 (Vasily Nemkov).
  • 外部ソートと limit を伴うクエリで発生する可能性のある Pipeline stuck エラーを修正しました。#11359#11366 (Nikolai Kochetov)。
  • ReplicatedMergeTree でのパーツ送信時の不要なロックを削除しました。 #11354 (alesapin).
  • 複数行モードの clickhouse-client における \G (縦表示) のサポートを修正しました。これにより #9933 をクローズします。#11350 (alexey-milovidov).
  • Lazy データベースの使用時に発生する可能性があるセグメンテーションフォルトを修正しました。#11348 (alexey-milovidov).
  • 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 が修正されます。 #11303 (alexey-milovidov).
  • max_network_bandwidthmax_execution_speedpriority の設定によってクエリがスロットリングされている場合に、クエリ速度の推定が不正確になり、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 が修正されます。#11278 (Vitaly Baranov).
  • Protobuf formatで不正なデータを読み込む際に発生するクラッシュを修正しました。これにより、#5957#11203 を修正しました。 #11258 (Vitaly Baranov).
  • cache-dictionary が、本来の値ではなくデフォルト値を返してしまうことがある不具合を修正しました (期限切れのキーしかない場合) 。この修正の影響を受けるのは String フィールドのみです。#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).
  • 常に適用されていた制限ベースの再スケジュールに関連する、Kafka のパフォーマンス問題を修正しました。 #11149 (filimonov).
  • table engine=Kafka の DROP 中 (またはサーバー再起動時) に、ときどき発生していたハングを修正しました。#11145 (filimonov).
  • 単純なクエリに対してスレッドを過剰に確保していた問題を修正しました (スレッド数を削減するための最適化が、pipeline の変更後に一部機能しなくなっていました) 。 #11114 (Azat Khuzhin).
  • HAVING 句を含むクエリ (つまり、イニシエーターサーバー側でのフィルタリングが必要な場合) における分散クエリの述語最適化 (enable_optimize_predicate_expression=1) を、式の順序を保持することで修正し (これで十分です) 、さらにアグリゲーターが索引ではなくカラム名を使用するようにしました。修正: #10613, #11413#10621 (Azat 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 のファイナライズタスクのログ出力を削除しました。 #11109 (alesapin).
  • registerDiskS3 のメモリリークを修正しました。 #11074 (Pavel Kovalenko).
  • Kafkaエンジンテーブルの停止時にデータが失われる可能性があった問題を修正しました。 #11048 (filimonov).
  • parseDateTime64BestEffort の引数の解決に関するバグを修正しました。#11038 (Vasily Nemkov).
  • テーブルの作成に失敗した場合に、MergeTree でごくまれに発生する可能性がある use-after-free エラーを修正しました。 #10986, #10970 (alexey-milovidov).
  • Atomicデータベースにおける、メタデータ (rename時の相対パス) およびデータ (symlink時の相対パス) の処理を修正しました。#10980 (Azat Khuzhin) 。
  • Atomic データベースエンジンで ALTER クエリと DROP DATABASE クエリを同時実行した際に発生するサーバークラッシュを修正しました。#10968 (tavplubix).
  • getRawData() メソッドで生データサイズが誤っていた問題を修正しました。 #10964 (Igr).
  • 20.1 以前のバージョン間における二段階集約の非互換性を修正しました。この非互換性は、イニシエーターノードとリモートノードで異なるバージョンの ClickHouse が使用されており、GROUP BY の結果サイズが大きく、単一の String フィールドで集約が行われる場合に発生します。その結果、結果内で 1 つの key に対して未マージの複数の行が生じます。 #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).
  • 同じカラムについて、複数スレッドから集約関数の state の結果を取得した際に発生しうる競合状態を修正しました。これは、quantile* 関数の AggregateFunction state を保持する Memory engine のテーブルを読み取る際に finalizeAggregation 関数を使用した場合にのみ発生します。#10890 (Nikolai Kochetov).
  • 分散テーブルでのタプルの後方互換性に関する問題を修正しました。 #10889 (Anton Popov).
  • 該当するキーが存在しない場合に StringHashTable で発生する SIGSEGV を修正しました。 #10870 (Azat Khuzhin).
  • Atomic エンジンのデータベースから LiveView テーブルが drop された後に WATCH がハングする問題を修正しました。#10859 (tavplubix).
  • OPTIMIZE クエリに対する一部の ALTER が、レプリカが非アクティブになった後もそのレプリカを待ち続けてハングする可能性があった ReplicatedMergeTree のバグを修正しました。 #10849 (tavplubix).
  • CONSTRAINT 式で参照されているカラム名が変更された場合に、制約も更新されるようになりました。#10844 を修正しました。#10847 (alesapin).
  • cache-dictionary における、未初期化メモリを読み取る可能性がある問題を修正しました。 #10834 (alexey-milovidov).
  • Block::sortColumns() 実行後のカラム順を修正しました。#10826 (Azat Khuzhin).
  • 識別子のクォートが不要な場合に ODBC ブリッジで発生していた問題を修正しました。#7984 を修正します。#10821 (alexey-milovidov).
  • DateLUT における UBSanMSan の検出結果に関する問題を修正しました。#10798 (alexey-milovidov).
  • キー条件における誤った型変換を修正しました。 #6287 を修正。 #10791 (Andrew Onyshchuk)。
  • parallel_view_processing の動作を修正しました。これにより、例外が発生した場合でも、MATERIALIZED VIEW へのすべての挿入が確実に完了するようになりました。#10241 を修正しました。#10757 (Nikolai 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 解析の難しさからデフォルトで無効化されていました。単純な例としては、sharding key 内の if があります) 、WITH ROLLUP/CUBE/TOTALS に対してもこれを修正しました。#10516 (Azat Khuzhin).
  • #10263 を修正しました。#10486 (Azat Khuzhin) 。
  • max_rows_to_sort 設定に関するテストを追加しました。#10268 (alexey-milovidov) 。
  • bloom filter 索引の作成に対する後方互換性を追加しました。 #10551#10569 (Winter Zhang)。

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

後方互換性を持たない変更

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

新機能

  • ClickHouse から Zookeeper へのセキュアな接続のサポートを追加 #10184 (Konstantin Lebedev)
  • カスタム HTTP ハンドラーをサポートしました。詳細は #5436 を参照してください。#7572 (Winter Zhang)
  • MessagePackの入力/出力フォーマットを追加。#9889 (Kruglov Pavel)
  • Regexp入力フォーマットを追加。 #9196 (Kruglov Pavel)
  • Markdownドキュメントにテーブルを埋め込むための出力フォーマット Markdown を追加しました。 #10317 (Kruglov Pavel)
  • Dictionaries のカスタム Settings セクションのサポートを追加しました。あわせて、#2829 の問題も修正しています。#10137 (Artem Streltsov)
  • CREATE DICTIONARY の DDL クエリでカスタム設定をサポートしました #10465 (Artem 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 は Dictionary ソースのタイムアウトを ClickHouse 側で制御します。cache 辞書の設定に、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 上の Distributed に対してクエリを実行できるようにしました (distributed_group_by_no_merge なし) … #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アドレスからの接続を許可されているかどうかの確認に使用されるcacheも削除するようになりました #10608 (tavplubix)
  • 1 つのクエリ内で、同一のセットに対して複数の IN 演算子を使用した場合の不具合を修正しました。#10539 #10686 (Anton Popov)
  • ネストされた型でgenerateRandomがクラッシュする問題を修正しました。#10583 を修正。#10734 (Nikolai Kochetov)
  • マージ後に発生する可能性があった、SummingMergeTreeLowCardinality(FixedString) キーカラムにおけるデータ破損を修正しました。#10489 を修正します。#10721 (Nikolai Kochetov)
  • aggregation_memory_efficient_merge_threads 設定に関するロジックを修正しました。 #10667 (palasonic1)
  • 消えてしまう totals の問題を修正しました。クエリに JOIN または外側の WHERE 条件を持つサブクエリがある場合、totals がフィルタリングされることがありました。#10674 #10698 を修正しました (Nikolai Kochetov)
  • distributed_aggregation_memory_efficient 有効時にリモートクエリが並列実行されない問題を修正しました。#10655 #10664 (Nikolai Kochetov)
  • LIMIT を使用したクエリで、行数が誤っている可能性がある不具合を修正しました。#10566#10709 #10660 (Nikolai Kochetov)
  • compact パーツを別の compact パーツにマージした後、一部のケースで発生する可能性がある索引の破損を修正しました。 #10531 (Anton Popov)
  • mutation ですべてのパーツの処理が完了しているにもかかわらず、is_done=0 のままハングする問題を修正しました。#10526 (alesapin)
  • UTC からのオフセットに端数があるタイムゾーンで、Unix epoch の開始時に発生するオーバーフローを修正しました。 #9335 を修正。 #10513 (alexey-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 が失敗してもメタデータディレクトリを削除しない #10442 (Winter Zhang)
  • system tzdata への依存をなくしました。CentOS 8 で Africa/Casablanca タイムゾーンの読み込みを修正しました。#10211 #10425 (alexey-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 #10427 (Vadim Plakhtinskiy)
  • DETACH/ATTACH 後、dictionary 名にデータベース名を追加。system.dictionaries テーブルと SYSTEM RELOAD クエリを修正 #10415 (Azat Khuzhin)
  • プロセッサのパイプラインにおいて extremes の結果が誤る可能性がある問題を修正しました。#10131 (Nikolai Kochetov)
  • 設定 distributed_group_by_no_merge が有効な場合に発生する可能性のあるセグメンテーションフォールトを修正しました (#10131 により 20.3.7.46 で導入) 。#10399 (Nikolai 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)
  • システムテーブルに、未ロードのディクショナリに関する情報を表示するようにしました。 #10234 (Vitaly Baranov)
  • table の起動前に server がシャットダウンされていた場合に発生する、StorageBuffer での nullptr のデリファレンスを修正しました。 #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_size および max_parser_depth を適宜調整してください。#10295 (alexey-milovidov)
  • 複数のJOINで count(*) を使用できるようにしました。#9853 #10291 を修正しました。(Artem Zuikov)
  • max_rows_to_group_bygroup_by_overflow_mode = 'break' の使用時に発生するエラー Pipeline stuck を修正しました。 #10279 (Nikolai Kochetov)
  • DDLクエリを使用して range_hashed Dictionary を作成する際に発生する ‘Cannot add column’ エラーを修正しました。#10093#10235 (alesapin)
  • まれに発生しうる例外 Cannot drain connections: cancel first を修正しました。#10239 (Nikolai Kochetov)
  • ENGINE = Replicated* のテーブルに対して ALTER UPDATE/DELETE を実行しようとした際に、ClickHouse が “Unknown function lambda.” というエラーメッセージを返していた不具合を修正しました。非決定論的関数のチェックで、ラムダ式が正しく処理されるようになりました。#10237 (Alexander Kazakov)
  • Lazy engine のデータベースで SELECT ... FROM system.tables を実行したときに発生する、StorageSystemTables の比較的まれなセグメンテーションフォルトを修正しました。 #10209 (Alexander Kazakov)
  • system.numberssystem.zeros のような無限ソースの読み取り時に、本来は LIMIT で停止すべきクエリが無限に実行されてしまう可能性がある問題を修正しました。 #10206 (Nikolai Kochetov)
  • Date型に対する “generateRandom” 関数を修正しました。これにより #9973 が解決されます。旧式のパーティション化を使用する MergeTree テーブルに 2106 年の日付を挿入した際、パーティション名が 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 設定により、ミューテーションでの非決定論的関数の使用制限を緩和できるようになりました。#10186 (filimonov)
  • Dictionary に対して DROP TABLE が実行される問題を修正 #10165 (Azat Khuzhin)
  • INSERT で分散テーブルに挿入する際、構造が一致しない場合はブロックを変換する #10135 (Azat Khuzhin)
  • 挿入されたブロックがパーティションキーに基づいてパーツに分割された場合、行数が誤って記録されていました (すべてのパーツにまたがる合計として) 。#10138 (alexey-milovidov)
  • MySQL Database Engine に、いくつかの引数チェックと識別子引数のサポートを追加 #10077 (Winter Zhang)
  • 新しいレプリカの作成時に、index_granularity_bytes のチェックが誤っていた問題を修正しました。 #10098#10121 (alesapin)
  • テーブルにスキップインデックスが含まれている場合の CHECK TABLE クエリのバグを修正しました。 #10068 (alesapin)
  • ネストされたテーブルの分片が1つしかない場合のDistributed-over-Distributedを修正 #9997 (Azat Khuzhin)
  • JOINUNION ALL を含むクエリで、行が失われる可能性がある不具合を修正しました。#9826#10113 を修正。… #10099 (Nikolai Kochetov)
  • ローカルの ClickHouse server を参照元として使用する場合の Dictionary のバグを修正しました。Dictionary と参照元の型に互換性がないと、メモリ破損が発生する可能性がありました。 #10071 (alesapin)
  • /table/replicas/replica_name/metadata ノードが存在しない古い ClickHouse バージョンから更新した際のレプリケートテーブルの起動処理を修正しました。#10037 を修正。#10095 (alesapin)
  • エラー Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform を修正しました。これは、設定 distributed_aggregation_memory_efficient が有効な状態で、分散クエリが異なる分片から単一集約と二段階集約が混在する集約データを読み込んだ場合に発生していました。 #10063 (Nikolai Kochetov)
  • 起動時に、materialized view を含むデータベースの Attach 失敗時に発生するデッドロックを修正 #10054 (Azat Khuzhin)
  • 末尾にゼロバイトが含まれる文字列キーで GROUP BY を行った際に発生する可能性があったセグメンテーションフォールトを修正しました (#8636, #8925) 。 … #10025 (Alexander Kuzmenkov)
  • alias が修飾付きカラム名を上書きしてしまう可能性がある場合に、分散クエリが誤った結果を返す問題を修正しました。修正: #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 table engine での TRUNCATE を修正 (#9917). #9920 (Amos Bird)
  • ReplicatedMergeTree における drop と optimize の間で発生する競合状態を修正しました。 #9901 (alesapin)
  • optimize_skip_unused_shards が設定されている場合の Distributed における DISTINCT の不具合を修正しました。#9808 (Azat Khuzhin)
  • ALTERにおける “scalar does not exist” エラーを修正 (#9878). … #9904 (Amos Bird)
  • distributed_product_mode=\'local\' における修飾名に関するerrorを修正しました。#4756 #9891 (Artem Zuikov)
  • INSERT クエリでは、分片がイニシエーターから渡された設定値を、例外を投げるのではなく自身の制約に収まるようにクランプするようになりました。この修正により、異なる制約を持つ分片にも INSERT クエリを送信できるようになります。この変更は修正 #9447 をさらに改善するものです。 #9852 (Vitaly Baranov)
  • Kafka ブローカーへのオフセットのコミット時に再試行を追加しました。これは、offsets.commit.timeout.ms の間に __consumer_offsets トピックで利用可能なレプリカ数が不足していると、コミットが拒否されることがあるためです #9884 (filimonov)
  • 基になるテーブルの仮想カラムがWHEREで使用される場合のDistributed engineの挙動を修正 #9847 (Azat Khuzhin)
  • 関数のargumentのtimezoneが正しく使われていなかった一部のケースを修正しました。 #9574 (Vasily Nemkov)
  • クエリで分散テーブルに対して PREWHERE と WHERE の両方を使用し、`SET distributed_product_mode = ‘local’“ を指定した場合に発生する ‘Different expressions with the same alias’ エラーを修正しました。 #9871 (Artem Zuikov)
  • 複合主キーを持つテーブルにおける mutations の過剰なメモリ消費を修正しました。これにより #9850 を修正します。#9860 (alesapin)
  • 設定 allow_introspection_functions に基づくイントロスペクション関数の権限計算を修正しました。#9840 (Vitaly Baranov)
  • max_distributed_connections を修正 (プロセッサ使用時/未使用時) #9673 (Azat Khuzhin)
  • クライアントで発生する可能性がある例外 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)
  • テーブルリスト外 (つまり WHERE 句内) に COMMA JOIN があるサブクエリで発生する ‘COMMA から CROSS JOIN への書き換えが有効になっていないか、クエリを書き換えられません’ エラーを修正しました。#9782 #9830 (Artem Zuikov)
  • optimize_skip_unused_shards が設定されていて、キーの式を対応するフィールド型に変換できない場合にサーバーがクラッシュする問題を修正 #9804 (Azat Khuzhin)
  • splitByString における空文字列の処理を修正しました。#9767 (hcz)
  • compact パーツに対する ALTER TABLE DELETE COLUMN クエリの不具合を修正しました。 #9779 (alesapin)
  • HTTP 経由のクエリで (プロセッサパイプライン使用時に) rows_before_limit_at_least が欠落する問題を修正しました。#9730 #9757 (Nikolai Kochetov)
  • ALTER クエリ (ミューテーション) における過剰なメモリ消費を修正しました。これにより #9533#9670 を修正しました。#9754 (alesapin)
  • 恒久的に “Cannot schedule a task” エラーが発生する可能性がある問題を修正しました。 #9154 (Azat Khuzhin)
  • external dictionaries の DDL におけるバッククオート処理のバグを修正しました。#9619 を修正しています。#9734 (alesapin)
  • text_log 内のデータ競合を修正しました。実際のバグに対応するものではありません。#9726 (alexey-milovidov)
  • 以前のバージョンでユーザーがミューテーションを実行しているとレプリケーションが機能しなくなる不具合を修正しました。これにより #9645 が修正されます。 #9652 (alesapin)
  • sumKahansumWithOverflow の誤った内部関数名を修正しました。これにより、リモートクエリでこれらの関数を使用した際に例外が発生していました。 #9636 (Azat Khuzhin)
  • use_compact_format_in_distributed_parts_names 設定を追加し、Distributed テーブルへの INSERT クエリ用ファイルを、よりコンパクトなフォーマットで書き込めるようにしました。これにより #9647 を修正しました。#9653 (alesapin)
  • 結合キーに LowCardinality を使用した RIGHT JOIN および 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)
  • 内部レプリケーションを使用する分散テーブルで 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)
  • distributed/buffer のスケジュールプール向けに、タスク数/メモリのメトリクスを追加 #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)
  • TSVで、先頭のカラムの値にBOMが含まれない場合に、BOMをパースできるようにしました。これにより #10301 #10424 を修正しました (alexey-milovidov)
  • Avroのネストされたフィールドのinsertをサポート #10354 (Andrew Onyshchuk)
  • 同じ型が指定されている場合、データ非変更モードでカラムの変更を許可するようにしました。 #10382 (Vladimir Chebotarev)
  • GROUP BY の分片キーに対する distributed_group_by_no_merge の自動設定 (optimize_skip_unused_shards が設定されている場合) #10341 (Azat Khuzhin)
  • GROUP BY sharding_key を含む Distributed テーブルに対する、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 Burmak, Svyatoslav Tkhon Il Pak, #9642 #10359 (alexey-milovidov)
  • 分散送信にバックグラウンドスレッドプール (background_schedule_pool_size) を使用 #10263 (Azat Khuzhin)
  • バックグラウンドでのバッファフラッシュにバックグラウンドスレッドプールを使用。 #10315 (Azat Khuzhin)
  • 不完全に書き込まれたパーツを削除する特殊なケースの1つに対応しました。これにより #9940 が修正されます。 #10221 (alexey-milovidov)
  • GROUP BY の最適化では、そのような関数を手動で列挙する代わりに isInjective() を使用します。#10342 (Azat Khuzhin)
  • クライアントが接続直後に RST パケットを送信した場合、log にエラーメッセージを出力しないようにしました。これは、keepalived と VRRP を使用する IPVS バランサーで一般的な動作です。これにより #1851 #10274 を修正します (alexey-milovidov)
  • 浮動小数点型で +inf をパースできるようにしました。これにより #1839 がクローズされます #10272 (alexey-milovidov)
  • Nested 型に対応した generateRandom テーブル関数を実装しました。これにより #9903 が解決されました #10219 (alexey-milovidov)
  • MySQL互換インターフェイスに max_allowed_packed を追加し、一部のクライアントが MySQL プロトコル経由で ClickHouse と通信できるようにしました。 #10199 (BohuTANG)
  • GLOBAL IN でリテラルを使用可能に (すなわち SELECT * FROM remote('localhost', system.one) WHERE dummy global in (0)) #10196 (Azat Khuzhin)
  • clickhouse-client の対話型モードに関するさまざまな細かな問題を修正 #10194 (alexey-milovidov)
  • 不要な Dictionaries の読み込みを回避 (system.tables、DROP/SHOW CREATE TABLE) #10164 (Azat Khuzhin)
  • RWLock の更新: getLock()timeout パラメーターを追加し、実装をフェーズフェアになるように作り直しました #10073 (Alexander Kazakov)
  • mysql-connector-java(JDBC) とのネイティブな互換性を強化 #10021 (BohuTANG)
  • 関数 toString は単調関数と見なされ、引数が String または LowCardinality(String) で、恒真式となる場合に適用しても、索引解析に使用できます。 #10110 (Amos Bird)
  • {CREATE|DROP} USER/ROLE/ROW POLICY/SETTINGS PROFILE/QUOTAGRANT コマンドで ON CLUSTER 句をサポートしました。 #9811 (Vitaly Baranov)
  • S3 URI のバーチャルホスト形式のサポート追加 #9998 (Pavel Kovalenko)
  • 引数のないディクショナリでは、DDLクエリ内でレイアウトタイプを丸括弧なしで指定できるようになりました。#10057 を修正しました。 #10064 (alesapin)
  • ファイルパスで先頭にゼロを含む数値範囲を使用できるようにしました #9989 (Olga Khvostikova)
  • CROSS JOIN のメモリ使用量を改善。 #10029 (Artem Zuikov)
  • リモートテーブルの構造を取得する際、skip_unavailable_shards が設定されている場合は、クラスター内のすべての分片への接続を試みるようにしました。 #7278 (nvartolomei)
  • system.tables テーブルに total_rows/total_bytes を追加しました。#9919 (Azat Khuzhin)
  • システムログテーブルでは、デフォルトでポリモーフィックなパーツを使用するようになりました。 #9905 (Anton Popov)
  • system.settings/merge_tree_settings に type カラムを追加 #9909 (Azat Khuzhin)
  • サーバー起動時のできるだけ早い段階で、利用可能なCPU命令を確認するようにしました。 #9888 (alexey-milovidov)
  • 単一スレッドで単一のソート済み part から読み取るため、mutations から ORDER BY ステージを削除しました。あわせて、mutation 内の行が sorting key の順序で並んでおり、その順序が崩れていないことを確認するチェックも追加しました。#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 データパーツについて、カラムサイズの計算が 1 回だけになりました。 #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)
  • MergeTree における DiskS3 の完全サポートを追加 #9646 (Pavel Kovalenko)
  • splitByString を拡張し、区切り文字に空文字列も使えるようにしました。#9742 (hcz)
  • system.trace_logtimestamp_ns カラムを追加しました。これにはトレースイベントの高精度タイムスタンプが含まれ、スレッドプロファイル (“flame charts”) のタイムラインを作成できるようになります。 #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 演算子の右辺に明示的に定義した Set があり、左辺が Tuple のクエリのパフォーマンスを改善しました。#10385 (Anton Popov)
  • HashJoin で使用するハッシュテーブルのメモリ使用量を削減しました。#10416 (Artem Zuikov)
  • StorageDictionary 上で特別な HashJoin をサポートしました。dictGet() 関数を JOIN に書き換えられるようにしました。これ自体に後方互換性の問題はありませんが、一部の環境では #8400 が表面化する可能性があります。#10133 (Artem Zuikov)
  • ターゲットテーブルが対応している場合、materialized view の並列挿入を有効にしました。#10052 (vxider)
  • 単調関数に対する索引解析のパフォーマンスを改善しました。#9607#10026 (Anton Popov)
  • ブルームフィルタでのトークン化を高速化するために、SSE2 または SSE4.2 の SIMD イントリンシックを使用するようにしました。#9968 (Vasily Nemkov)
  • IN 演算子の右辺に明示的に定義した Set を含むクエリのパフォーマンスを改善しました。これにより、バージョン 20.3 で発生していたパフォーマンス低下を修正しました。#9740 (Anton Popov)
  • clickhouse-copier は、各パーティションを複数に分割し、それぞれを独立してコピーするようになりました。#9075 (Nikita Mikhaylov)
  • aggregation メソッドをさらに追加しました。たとえば、TPC-H query 1 では FixedHashMap<UInt16, AggregateDataPtr> が選択されるようになり、25% のパフォーマンス向上が得られます。#9829 (Amos Bird)
  • pre-limit transform で、複数の streams に対して単一の行カウンターを使用するようにしました。これにより、limit はあるものの order by がないクエリ (select f(x) from (select x from t limit 1000000000) など) で pipeline streams を統合せずに済み、その後の処理で複数のスレッドを使えるようになります。#9602 (Nikolai Kochetov)

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

  • ClickHouse-Extras の AWS SDK ライブラリをフォークしたものを使用 #10527 (Pavel Kovalenko)
  • 新しい ALTER RENAME COLUMN クエリ向けの結合テストを追加しました。 #10654 (vzakaznikov)
  • 誤った引数で関数 now64 を呼び出した際に発生する可能性がある、符号付き整数オーバーフローを修正しました。これにより #8973 #10511 が修正されました。(alexey-milovidov)
  • Oss-fuzz と互換性のあるビルド設定にするため、fuzzer と sanitizer の設定を分割しました。#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)
  • materialized view に対する並列 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 の根本原因を修正しました #10256 (alexey-milovidov)
  • Distributed 上の live view テーブルの初期サポート #10179 (vzakaznikov)
  • MergeTreeIndexFullText における MSan の (誤検知による) レポートを修正しました。この問題は #9968 で最初に発生しました。#10801 (alexey-milovidov)
  • clickhouse-docker-util #10151 (filimonov)
  • pdqsortを最新版に更新 #10171 (Ivan)
  • libdivide を v3.0 にアップデート #10169 (Ivan)
  • 有効な polymorphic パーツに対するチェックを追加しました。 #10086 (Anton Popov)
  • FreeBSD向けのクロスコンパイルビルドを追加しました。これにより #9465 #9643 を修正しました (Ivan)
  • #6924 のパフォーマンステストを追加 #6980 (filimonov)
  • パフォーマンステスト向上のため、File エンジンで /dev/null をサポート #8455 (Amos Bird)
  • /dbms 内のすべてのフォルダを一つ上の階層に移動 #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)
  • backport スクリプトで vX.X-conflicts タグをサポートするようにしました。 #9705 (Nikolai Kochetov)
  • バックポートスクリプトの auto-label を修正しました。#9685 (Nikolai Kochetov)
  • Darwin のクロスビルドで libc++ を使用し、ネイティブビルドとの整合性を確保しました。 #9665 (Hui Wang)
  • 不安定なテスト 01017_uniqCombined_memory_usage を修正しました。#7236 の続きです。#9667 (alexey-milovidov)
  • macOSネイティブのClangコンパイラ向けビルドを修正 #9649 (Ivan)
  • pthread_mutex_lockpthread_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 (および同様の箇所、つまり関数のコンテキストが永続的に保持される場合) を修正しました。 #16205 (Azat Khuzhin).
  • クエリに WHEREPREWHEREGLOBAL IN が含まれる場合に、Distributed table からのクエリ結果が誤って空になる問題を修正しました。#15792 の修正です。 #15933 (Nikolai Kochetov).
  • TSV/CSVWithNames フォーマットでヘッダーが欠落したり過剰に出力されたりする問題を修正しました。これにより #12504 も修正されます。 #13343 (Azat Khuzhin).

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

バグ修正

  • MOVE または REPLACE PARTITION の後、またはまれに DETACHDROP PARTITION の後に、存在しないパートを待ち続けてミューテーションが停止することがありました。修正しました。#15724, #15537 (tavplubix).
  • 同じ MySQL エンジンのテーブルに対する大量のサブクエリを含むクエリが停止する問題を修正しました。以前は、1 つのクエリ内で同じ MySQL テーブルに対するサブクエリが 16 個を超えると、永久に停止していました。#15299 (Anton Popov).
  • クエリに Merge テーブルへの JOIN がある場合に、GROUP BY で Unknown identifier が発生する問題を修正しました。#15242 (Artem Zuikov).
  • サブクエリに finalizeAggregation 関数が含まれている場合でも、述語プッシュダウンが機能するよう修正しました。#14847 を修正しました。#14937 (filimonov).
  • 同時実行の ALTER ... REPLACE/MOVE PARTITION ... クエリによってデッドロックが発生することがありました。修正しました。#13626 (tavplubix).

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

バグ修正

  • クエリ対象のカラムに、別のカラムに依存する DEFAULT 式があり、その依存先のカラムも DEFAULT を持ち、さらに SELECT クエリに含まれずディスク上にも存在しない場合に、SELECT クエリでまれに発生する error を修正しました。#14531 を部分的に修正します。#14845 (alesapin).
  • 代入式に Nullable カラムと定数値 (UPDATE x = 42 など) を含む ALTER UPDATE mutation で、カラムの値が不正になったり、セグメンテーション違反が発生したりする不具合を修正しました。#13634#14045 を修正しました。#14646 (alesapin).
  • 結果カラムの decimal scale が誤っていたことで発生していた、Decimal の乗算結果の誤りを修正しました。#14603 (Artem Zuikov).

改善

  • compact パーツでカスタムコーデックがサポートされました。 #12183 (Anton Popov).

ClickHouse リリース v20.3.18.10-lts、2020-09-08

バグ修正

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

改善

  • 長いクエリに対して誤ったエラーが返される問題を修正しました。正しいクエリであっても、Max query size exceeded ではなく別の構文エラーが返されることがありました。#13928 (Nikolai Kochetov).
  • parseDateTimeBestEffortOrNull/Zero 関数で値を完全に解析できなかった場合に、NULL/ゼロを返すようにしました。これにより #7876 を修正します。#11653 (alexey-milovidov).

パフォーマンス改善

  • LowCardinality を使用するごく短いクエリを若干最適化しました。#14129 (Anton 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 timestamp が引数として渡された場合に発生するエラーを修正しました。これにより #13362 も修正されます。#13441 (alexey-milovidov).
  • NaN 値を含む Float 型に対して呼び出された uniqExacttopKsumDistinct および同様の集約関数で、パフォーマンスが低下する可能性があり、結果がわずかに不正確になる問題を修正しました。また、デバッグビルドでアサートがトリガーされることもありました。これにより #12491 が修正されます。#13254 (alexey-milovidov).
  • リテラルな NULL ではない Nullable constexpr を cond に持つ if 関数を修正しました。#12463 を修正します。#13226 (alexey-milovidov).
  • 配列要素と配列の添字の両方が Nullable である場合に arrayElement 関数で発生していた assert を修正しました。これにより #12172 が修正されます。#13224 (alexey-milovidov).
  • ローカルレプリカからのSELECTにおけるスレッド数の不要な制限を修正しました。#12840 (Nikolai Kochetov).
  • WITH TOTALS クエリで、データに余分な overflow 行が現れる可能性があった問題を修正しました。#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) 。
  • const式を含む bloom filter 索引の不具合を修正しました。#10572#12659 (Winter Zhang).
  • ブローカーが利用できない場合を含め、StorageKafka で発生する SIGSEGV を修正しました。 #12658 (Azat Khuzhin).
  • サーバークラッシュにつながる可能性があった、cache レイアウトの外部辞書におけるレースコンディションを修正しました。 #12566 (alesapin).
  • enable_mixed_granularity_parts=1 の場合に、ALTER DELETE クエリ実行後、古いパーツが壊れる不具合を修正しました。#12536 を修正しています。#12543 (alesapin).
  • 引数の数が不正な関数 in に対する例外メッセージを改善しました。 #12529 (Anton Popov).
  • compact パーツの読み取り時に発生していたパフォーマンスの問題を修正しました。#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 へのクエリ時にデータベース名で絞り込む場合のような、システムテーブル内の「索引」カラムでデータを絞り込む式があり、その式が Nullable 型を返す場合でも、「bad cast」例外が発生しないようにしました。これにより #12166 を修正しました。#12305 (alexey-milovidov).
  • TrieDictionary の読み込みに失敗した際に、エラーが表示されるようにしました。#12290 (Vitaly Baranov) 。
  • 関数 arrayFill は、空の配列に対して正しく動作せず、クラッシュを引き起こす可能性がありました。これは #12263 の修正です。#12279 (alexey-milovidov).
  • LowCardinality 型に対する共通型への変換を実装しました。これにより、LowCardinality のカラムとその他のカラムを持つテーブルに対して UNION ALL を実行できるようになります。これにより #8212 が修正されます。これにより #4342 が修正されます。#12275 (alexey-milovidov)。
  • StorageFile で、複数回の連続した insert 時に、一部の特殊な型の header が複数回書き込まれてしまう不具合を修正しました。これにより #6155 が修正されました。#12197 (Nikita Mikhaylov)。
  • 0 または 1 以外の UInt8 値に対する論理関数を修正しました。#12196 (Alexander Kazakov) 。
  • GROUP BY で単射関数を除去する際の dictGet の引数チェックを修正しました。#12179 (Azat Khuzhin) 。
  • 条件が NULL と評価された場合にレコードが削除されてしまう ALTER DELETE の誤ったロジックを修正しました。これにより #9088 が修正され、#12106 はクローズされます。#12153 (alexey-milovidov).
  • 別名がある場合に、外部DBMS (例: MySQL、ODBC) に送信するクエリの変換処理を修正しました。これにより、#12032 が修正されました。#12151 (alexey-milovidov)。
  • 整数除算における潜在的なオーバーフローを修正しました。これにより #12119 の問題も修正されます。 #12140 (alexey-milovidov).
  • greatCircleDistancegeoDistance における潜在的な無限ループを修正しました。これにより #12117 の問題が修正されます。#12137 (alexey-milovidov).
  • システムログ (system.query_log、metric_log など) または engine=Buffer の基になるテーブルにアタッチされた、JOIN またはサブクエリを含む materialized view で There is no query 例外が発生する問題を回避しました。#12120 (filimonov).
  • スレッド総数の上限設定の誤りにより、UNION を含む SELECT の性能が低下していた問題を修正しました。#12030 を修正しました。#12103 (Nikolai Kochetov).
  • -StateResample コンビネータで発生するセグメンテーションフォルトを修正しました。#12092 (Anton Popov) 。
  • VIEW からの SELECT において、スレッド数が不必要に制限される問題を修正しました。#11937#12085 (Nikolai Kochetov) 。
  • PREWHERE に誤った型を使用した場合に発生する可能性があるクラッシュを修正しました。#12053#12060 を修正。#12060 (Nikolai Kochetov) 。
  • LowCardinality 型における関数 defaultValueOfArgumentType のエラー Expected single dictionary argument for function を修正しました。#11808#12056 (Nikolai Kochetov)。
  • Tuple(LowCardinality) 引数を持つ高階関数で発生していたエラー Cannot capture column を修正しました。#9766 を修正。#12055 (Nikolai Kochetov).
  • データベースの読み込み時にテーブルメタデータを並列に解析するようにし、テーブル数が多い場合のサーバー起動の遅さを改善しました。 #12045 (tavplubix).
  • Enum 型に対して topK 集約関数が Enum を返すようにしました。これにより #3740 を修正しました。#12043 (alexey-milovidov).
  • 制約が定数式である場合のチェックを修正しました。これにより、#11360 を修正しました。#12042 (alexey-milovidov).
  • Nullable カラムとのタプル比較が誤っていた問題を修正しました。 #11985#12039 (Nikolai Kochetov) 。
  • サイズの異なる FixedString 型の引数を指定して関数 if を呼び出した際に、誤った結果が返されたりクラッシュしたりする可能性があった問題を修正しました。これにより #11362 を修正しました。#12021 (alexey-milovidov).
  • 返される式が関数 neighbor のみのクエリでは、その関数をオフセット -9223372036854775808 で呼び出すと、結果が空になる場合がありました。これにより #11367 が修正されます。#12019 (alexey-milovidov).
  • クラッシュにつながる可能性があった generateRandom における配列サイズのオーバーフローを修正しました。これにより #11371 が修正されます。 #12013 (alexey-milovidov).
  • 潜在的な浮動小数点例外の問題を修正しました。これにより #11378 をクローズします。#12005 (alexey-milovidov).
  • server の起動時のログメッセージ内の誤った設定名を修正しました。 #11997 (alexey-milovidov).
  • Values フォーマットにおける Query parameter was not set を修正しました。#11918 を修正しています。#11936 (tavplubix).
  • クエリ (パラメータ化クエリ) 内の置換に対する別名を保持するようにしました。これにより、#11914 が修正されます。 #11916 (alexey-milovidov).
  • DateTime64 のパース時に発生する可能性がある浮動小数点例外を修正しました。これにより #11374 も修正されます。 #11875 (alexey-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

バグ修正

  • prewhere条件でNullableカラムを使用した際に発生する、まれなクラッシュを修正しました。#11608 の続きです。#11869 (Nikolai 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 が不正な状態になる原因となっていた error を修正しました。ミューテーション全体はすでに完了したように見えていても、server の replication queue に MUTATE_PART task が残っており、引き続きそれを実行しようとすることがありました。これにより #11611 を修正しています。#11681 (alesapin).
  • 大文字・小文字を区別しないフラグ付きの正規表現のサポートを追加しました。これにより、#11101#11506 が修正されました。#11649 (alexey-milovidov)。
  • 行レベルセキュリティが設定されている場合、単純な count クエリ最適化を無効化しました。以前のバージョンでは、ユーザーはフィルタ後の件数ではなく、テーブル内のレコード総数を取得していました。これにより #11352 を修正します。 #11644 (alexey-milovidov).
  • String向けのブルームフィルタ (データスキッピングインデックス) を修正しました。 #11638 (Azat Khuzhin).
  • Nullable カラムを prewhere 条件で使用した際に発生する、まれなクラッシュを修正しました。 (おそらく #11572 と何らかの関係があります) 。#11608 (Nikolai Kochetov) 。
  • Buffer テーブルをサンプリング付きで読み取るクエリで発生するエラー Block structure mismatch を修正しました。 #11602 (Nikolai Kochetov).
  • exception.code() % 256 = 0 のときに clickhouse-client の終了コードが誤っていた問題を修正しました。#11601 (filimonov) 。
  • serverの起動時に表示される “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-server Dockerコンテナは、サーバーの生存確認で IPv6 を優先するようになりました。 #11550 (Ivan Starkov).
  • <node> の shard_num/replica_num を修正しました (これにより use_compact_format_in_distributed_parts_names が機能しなくなる問題を修正) 。 #11528 (Azat Khuzhin).
  • -State 関数を伴う集約の途中で例外が発生した場合のメモリリークを修正しました。これにより #8995 も修正されます。#11496 (alexey-milovidov).
  • エイリアスが修飾付きカラム名を上書きしてしまう場合に、分散クエリで誤った結果が返される問題を修正しました。#9672 #9714#9972 (Artem Zuikov).

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

新機能

  • ClickHouse が Dictionary ソースのタイムアウトを ClickHouse 側で制御するようになりました。cache 辞書設定に 2 つの新しい設定が追加されました。strict_max_lifetime_seconds はデフォルトで max_lifetimequery_wait_timeout_milliseconds はデフォルトで 1 分です。最初の設定は、allow_read_expired_keys 設定と組み合わせる場合にも有用です (古すぎるキーの読み取りを禁止できます) 。 #10337 (Nikita Mikhaylov).

バグ修正

  • min_bytes_to_use_direct_io が有効で、PREWHERE が有効な状態で、SAMPLE または多数のスレッドを使用している場合に発生することがある Data compressed with different methods エラーを修正しました。これにより #11539 が修正されます。#11540 (alexey-milovidov).
  • codecの圧縮サイズが返されるよう修正しました。#11448 (Nikolai Kochetov) 。
  • カラムに非リテラルの引数を持つ圧縮コーデックがある場合に発生するサーバーのクラッシュを修正しました。 #11365 を修正。 #11431 (alesapin).
  • 点がnanの場合のpointInPolygonを修正。 #11375 を修正。 #11421 (Alexey Ilyukhov).
  • LowCarinality(T) と Nullable(T) を対象とした JOIN で発生するクラッシュを修正しました。 #11380. #11414 (Artem Zuikov).
  • 不正な USING キーに対するエラーコードを修正しました。 #11373. #11404 (Artem Zuikov).
  • 緯度/経度の範囲外の引数が指定された場合の geohashesInBox の不具合を修正しました。 #11403 (Vasily Nemkov).
  • joinGet() 関数のエラーメッセージを改善しました。#11389 (Artem Zuikov).
  • 外部ソートと limit を伴うクエリで発生する可能性がある Pipeline stuck エラーを修正しました。#11359 を修正しました。#11366 (Nikolai Kochetov) 。
  • ReplicatedMergeTree でのパーツ送信時の不要なロックを削除しました。 #11354 (alesapin).
  • 複数行モードの clickhouse-client における \G (縦向き出力) のサポートの不具合を修正しました。これにより #9933 はクローズされます。#11350 (alexey-milovidov).
  • StorageJoin からの直接 SELECT (JOIN なし) で発生するクラッシュと、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).
  • 変換時に未初期化メモリが使用される可能性がある問題を修正しました。例: SELECT toIntervalSecond(now64())#11311 (alexey-milovidov) 。
  • テーブルの主キーにArrayカラムがあり、クエリが empty または notEmpty 関数でこのカラムを絞り込んでいる場合に、索引解析が機能しない問題を修正しました。これにより #11286 が修正されます。 #11303 (alexey-milovidov).
  • クエリが max_network_bandwidthmax_execution_speed、または priority の設定によってレート制限されている場合に、クエリ速度の推定が不正確になり、min_execution_speed の制限が効かない、または正しく機能しないことがある不具合を修正しました。また、timeout_before_checking_execution_speed のデフォルト値を 0 以外に変更しました。これまでは 0 のままだと、min_execution_speedmax_execution_speed の設定が効かなかったためです。これにより #11297 を修正しました。これにより #5732 を修正しました。これにより #6228 を修正しました。ユーザビリティの改善: clickhouse-client で例外メッセージとプログレスバーが連結されないようにしました。 #11296 (alexey-milovidov).
  • Protobufフォーマットの不正なデータを読み込む際にクラッシュする問題を修正しました。これにより #5957 および #11203 が修正されます。#11258 (Vitaly Baranov).
  • cache-dictionary が通常の値ではなくデフォルト値を返してしまう不具合を修正しました (期限切れのキーしか存在しない場合) 。これは文字列フィールドにのみ影響します。#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 句を含むクエリ (つまり、サーバーのイニシエーター側でのフィルタリングが必要な場合) について、分散クエリの predicate 最適化 (enable_optimize_predicate_expression=1) を、式の順序を維持することで修正しました (これで十分に修正されます) 。また、アグリゲーターが索引ではなくカラム名を使うよう強制するようにしました。修正: #10613, #11413. #10621 (Azat Khuzhin).
  • オフセットのコミットに失敗したまれなケースで、Kafka から重複データを取得してしまう可能性を低減するため、コミットの再試行ロジックを導入しました。 #9884 (filimonov).

パフォーマンス改善

  • external dictionaries を読み取る関数は、呼び出しごとに Dictionary の取得とアクセス権の確認を一度だけ行うようになりました。 #10928 (Vitaly Baranov).

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

  • 複数の不安定な結合テストを修正しました。 #11355 (alesapin).

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

バグ修正

  • 何も確定されなかった場合、mutation finalization task のログ出力を削除しました。 #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) 。
  • 非アクティブになったレプリカを待ち続けてハングする可能性があった、ALTER および OPTIMIZE の一部のクエリに関する ReplicatedMergeTree のバグを修正しました。#10849 (tavplubix) 。
  • Block::sortColumns() 後のカラム順序を修正しました。#10826 (Azat Khuzhin) 。
  • 識別子のクォートが不要な場合に ODBC ブリッジで発生していた問題を修正しました。#7984 を修正しました。#10821 (alexey-milovidov).
  • DateLUT で報告されていた UBSan および MSan の問題を修正しました。 #10798 (alexey-milovidov).
  • key conditions における誤った型変換を修正しました。#6287 に対応しました。 #10791 (Andrew Onyshchuk)
  • parallel_view_processing の動作を修正しました。これにより、例外が発生した場合でも、MATERIALIZED VIEW へのすべての挿入が漏れなく完了するようになりました。#10241 を修正しました。#10757 (Nikolai Kochetov).
  • -State と組み合わせた際の combinator -OrNull および -OrDefault を修正しました。 #10741 (hcz).
  • ネストされた型で generateRandom がクラッシュする問題を修正しました。#10583 を修正。#10734 (Nikolai Kochetov).
  • マージ後に発生する可能性があった、SummingMergeTreeLowCardinality(FixedString) キーカラムのデータ破損を修正しました。#10489 を修正。#10721 (Nikolai Kochetov) 。
  • 関数 h3EdgeAngle におけるバッファオーバーフローの可能性を修正しました。 #10711 (alexey-milovidov).
  • 消えてしまう totals を修正しました。クエリに外部の WHERE 条件を持つ join またはサブクエリがある場合、totals がフィルタリングされることがありました。#10674 を修正しました。#10698 (Nikolai Kochetov).
  • 1つのクエリ内で同一のセットに対して IN 演算子を複数回使用した際の不具合を修正しました。#10686 (Anton Popov).
  • readonly=2 かつ cancel_http_readonly_queries_on_client_close=1 の場合に、クライアントが接続を閉じた際に HTTP リクエストがハングしたままになる不具合を修正しました。#7939#7019#7736#7091 を修正します。#10684 (tavplubix) 。
  • AggregateTransform コンストラクタの引数の順序を修正しました。#10667 (palasonic1).
  • distributed_aggregation_memory_efficient が有効な場合にリモートクエリが並列実行されない不具合を修正しました。#10655 を修正します。#10664 (Nikolai Kochetov).
  • LIMIT を含むクエリで、行数が誤って計算される可能性がある問題を修正しました。#10566#10709 を修正しました。#10660 (Nikolai Kochetov)。
  • テーブルに多数のパーツがある場合に、同時実行のALTERがロックされる不具合を修正しました。#10659 (alesapin).
  • SYSTEM DROP DNS CACHE クエリで、一部のIPアドレスからユーザーの接続が許可されているかどうかの確認に使われるcacheまで削除してしまう不具合を修正しました。#10608 (tavplubix).
  • MATERIALIZED VIEW の内部クエリに依存テーブルが含まれている場合に、その内部クエリ内で誤ったスカラー結果となる問題を修正しました。#10603 (Nikolai Kochetov).
  • デフォルト式の型がカラムの型と異なる ALIAS カラムに対する SELECT を修正しました。#10563 (Azat Khuzhin).
  • DateTime64 と String 値の比較を実装しました。#10560 (Vasily Nemkov) 。
  • compact パーツを別の compact パーツへマージした後、一部のケースで発生する可能性がある索引の破損を修正しました。 #10531 (Anton Popov).
  • mutation がすべてのパーツの処理を終えたにもかかわらず、is_done=0 のまま停止していた問題を修正しました。 #10526 (alesapin).
  • UTC からのオフセットが整数時間でないタイムゾーンで、Unixエポック開始時に発生していたオーバーフローを修正しました。これにより #9335 を修正しました。#10513 (alexey-milovidov).
  • Distributed ストレージの不適切なシャットダウンの問題を修正しました。#10491 (Azat Khuzhin).
  • 大きな整数に対する simpleLinearRegression の数値オーバーフローを修正しました。#10474 (hcz).

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

バグ修正

  • エラー 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) 。#10399 (Nikolai Kochetov)
  • Array(Tuple(...)) データ型の誤ったフラット化を修正しました。これにより、#10259 #10390 を修正しています。(alexey-milovidov)
  • Aggregator におけるディスク予約を廃止しました。これにより、ディスク容量の予約に関する不具合が修正され、正常に完了できるはずの大規模な外部集約が失敗することがある問題を解消しました #10375 (Azat Khuzhin)
  • ReplicatedMergeTree における DROPOPTIMIZE の競合を修正しました。同時実行の OPTIMIZE クエリがある場合、DROP によって ZooKeeper のレプリカパスに不要なデータが残ることがありました。#10312 (tavplubix)
  • カラムのデフォルト値を変更した後、サーバーがテーブルをアタッチできなくなるバグを修正しました。#10441 (alesapin)
  • テーブルの読み込み前にデータベースの attach が失敗した場合、metadata ディレクトリを削除しないようにしました。 #10442 (Winter Zhang)
  • 一部のデータがクォーラム付きで挿入された後、何らかの理由で削除された場合 (DROP PARTITION、有効期限 (TTL)) に、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#10422 (Azat Khuzhin)
  • ARRAY JOIN、ORDER BY、LIMIT を含むクエリで不完全な結果が返ることがある問題を修正しました。これにより、#10226 が修正されます。著者: Vadim Plakhtinskiy#10427 (alexey-milovidov)
  • BloomFilter 索引の作成時に、引数の数と型を確認する #9623 #10431 (Winter Zhang)

パフォーマンスの改善

  • IN 演算子の右辺で明示的に定義された集合と左辺のタプルを含むクエリのパフォーマンスを改善しました。これにより、バージョン 20.3 で発生していた性能低下が修正されました。 #9740, #10385 (Anton Popov)

ClickHouse リリース v20.3.7.46、2020-04-17

バグ修正

  • カンマ区切りと名前付き join が混在するクエリで発生する 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 設定により、mutation での非決定論的関数の使用制限を緩和できるようにしました。#10186 (filimonov).

ClickHouse リリース v20.3.6.40、2020-04-16

新機能

  • 関数 isConstant を追加しました。この関数は、引数が定数式かどうかを判定し、1 または 0 を返します。開発、デバッグ、デモンストレーションを目的とした関数です。#10198 (alexey-milovidov).

バグ修正

  • max_rows_to_group_by および group_by_overflow_mode = 'break' 使用時に発生する Pipeline stuck エラーを修正しました。#10279 (Nikolai Kochetov) 。
  • まれに発生する例外 Cannot drain connections: cancel first を修正しました。#10239 (Nikolai Kochetov)。
  • ENGINE = Replicated* のテーブルに対してユーザーが ALTER UPDATE/DELETE を実行しようとした際に、ClickHouse が “Unknown function lambda.” というエラーメッセージを出していたバグを修正しました。非決定論的関数のチェックで、lambda 式が正しく扱われるようになりました。#10237 (Alexander Kazakov) 。
  • Date 型の “generateRandom” 関数を修正しました。これにより #9973 が修正されます。古い形式のパーティション化を使用する MergeTree テーブルに 2106 年の日付を挿入した際、パーティション名が 1970 年になってしまうエッジケースを修正しました。#10218 (alexey-milovidov).
  • View のテーブル定義が SELECT クエリと一致しない場合に、型を変換するようにしました。これにより #10180#10022 が修正されます。#10217 (alexey-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).
  • プロセッサパイプラインにおいて、extremes の結果が誤る可能性がある問題を修正しました。#10131 (Nikolai Kochetov).
  • compact パーツに対する一部の ALTER の問題を修正しました。#10130 (Anton Popov).
  • 新しいレプリカの作成時に、誤った index_granularity_bytes のチェックを修正しました。#10098#10121 (alesapin).
  • Distributed テーブルの構造が基になるテーブルと異なる場合に、Distributed テーブルへの INSERT で発生する SIGSEGV を修正しました。 #10105 (Azat Khuzhin).
  • JOIN および UNION ALL を含むクエリで発生する可能性のある行欠損を修正しました。 #9826#10113 を修正。 #10099 (Nikolai Kochetov).
  • 古い ClickHouse バージョンから更新する際、/table/replicas/replica_name/metadata ノードが存在しない場合にレプリケートテーブルが起動しない問題を修正しました。#10037#10095 (alesapin).
  • MySQLデータベースエンジン向けに、いくつかの引数チェックを追加し、識別子の引数をサポートしました。 #10077 (Winter Zhang).
  • localhost の ClickHouse server から取得する ClickHouse Dictionary ソースのバグを修正しました。このバグにより、Dictionary と Dictionary ソースの型に互換性がない場合、メモリ破損が発生する可能性がありました。#10071 (alesapin).
  • skip indices を含むテーブルで 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) 。#10025 (Alexander Kuzmenkov) 。
  • リモートクエリの実行に使用されるスレッド数を修正しました (20.3以降での性能低下) 。この問題は、Distributed テーブルに対するクエリがローカル分片とリモート分片で同時に実行された場合に発生していました。#9965 を修正しました。 #9971 (Nikolai Kochetov).
  • 一部のデータベースに対するクエリの処理段階の1つで、必要なテーブルが取得されなかった不具合を修正しました。#9699 を修正しています。#9949 (achulkov2).
  • JOINTOTALS とともに使用された場合に発生する ‘Not found column in block’ エラーを修正しました。#9839#9939 (Artem 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 table engine の TRUNCATE を修正しました (#9917) 。#9920 (Amos Bird) 。
  • ALTERでの”scalar does not exist”エラーを修正しました (#9878) 。#9904 (Amos Bird) 。
  • ReplicatedMergeTree における drop と optimize 間の競合状態を修正しました。 #9901 (alesapin).
  • distributed_product_mode='local' における修飾名のエラーを修正しました。#4756 を修正。#9891 (Artem Zuikov) 。
  • 設定 ‘allow_introspection_functions’ に基づくイントロスペクション関数の権限計算の不具合を修正しました。 #9840 (Vitaly Baranov).

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

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

バグ修正

  • クエリが分散テーブルに対する PREWHERE と WHERE を含み、SET distributed_product_mode = 'local'`` が設定されている場合に発生する Different expressions with the same alias` エラーを修正しました。#9871 (Artem Zuikov).
  • 複合主キーを持つテーブルで mutation による過剰なメモリ消費を修正しました。これにより #9850 も修正されます。#9860 (alesapin).
  • INSERT クエリで、分片はイニシエーターから受け取った設定を例外を投げる代わりに分片側の制約内に収めるようになりました。この修正により、異なる制約を持つ分片にも INSERT クエリを送信できるようになります。この変更は #9447 の修正を改善するものです。#9852 (Vitaly Baranov).
  • テーブルリスト外 (つまり WHERE 内) に COMMA JOIN を含むサブクエリで発生する COMMA to CROSS JOIN rewriter is not enabled or cannot rewrite query エラーを修正しました。#9782 を修正します。#9830 (Artem Zuikov).
  • クライアントで発生する可能性があった例外 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 を修正します。#9823 (Nikolai Kochetov).
  • 型を変換できない場合に optimize_skip_unused_shards で発生する SIGSEGV を修正しました。#9804 (Azat Khuzhin).
  • compact パーツに対して ALTER TABLE DELETE COLUMN クエリが正しく動作しない問題を修正しました。#9779 (alesapin).
  • max_distributed_connections の問題を修正しました (Processors あり/なしの両方) 。#9673 (Azat Khuzhin).
  • 関数の引数のタイムゾーンが適切に使われていなかったいくつかのケースを修正しました。#9574 (Vasily Nemkov).

改善

  • 単一スレッドで単一のソート済みパートから読み取るため、mutation から ORDER BY ステージを削除しました。あわせて、mutation 内の行の順序がソートキー順になっており、その順序が崩れていないことを確認するチェックも追加しました。 #9886 (alesapin).

ClickHouse リリース v20.3.4.10 (2020-03-20)

バグ修正

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

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

バグ修正

  • このリリースには、20.1.7.38 に含まれるすべてのバグ修正も含まれています
  • 以前のバージョンでユーザーが mutation を実行していた場合にレプリケーションが動作しなくなる不具合を修正しました。これにより #9645 が修正されます。#9652 (alesapin)。これにより、バージョン 20.3 は再び後方互換性を持つようになります。
  • use_compact_format_in_distributed_parts_names 設定を追加しました。これにより、Distributed テーブルに対する INSERT クエリのファイルを、よりコンパクトなフォーマットで書き込めるようになります。これにより #9647 が修正されます。#9653 (alesapin)。これにより、バージョン 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では、新しいフォーマットを段階的に有効化できる設定を導入する予定です。
  • mutation コマンド用のレプリケーションログエントリのフォーマットが変更されました。新しいバージョンをインストールする前に、既存の mutation の処理が完了するまで待つ必要があります。
  • ソフト割り当て上限を N バイト超えるごとに、スタックトレースを system.trace_log にダンプするシンプルなメモリプロファイラを実装しました #8765 (Ivan) #9472 (alexey-milovidov)。system.trace_log のカラム名が timer_type から trace_type に変更されました。これに伴い、サードパーティのパフォーマンス解析ツールやフレームグラフ処理ツールの修正が必要になります。
  • 内部のスレッド番号ではなく、すべての箇所で OS のスレッド ID を使用するようにしました。これにより #7477 が修正されます。古い clickhouse-client は、設定 send_logs_level が有効な場合、server から送信される logs を受信できません。これは、構造化された log messages の名前と types が変更されたためです。一方、異なる server バージョン間では、互いに異なる types の logs を送信できる場合があります。send_logs_level 設定を使用していない場合は、気にする必要はありません。#8954 (alexey-milovidov)
  • indexHint 関数を削除 #9542 (alexey-milovidov)
  • findClusterIndexfindClusterValue 関数を削除しました。これにより #8641 を修正します。これらの関数を使用していた場合は、clickhouse-feedback@yandex-team.com までメールでご連絡ください #9543 (alexey-milovidov)
  • 現在、デフォルト式として SELECT サブクエリを使用してカラムを作成したり追加したりすることはできません。 #9481 (alesapin)
  • JOIN 内のサブクエリで別名が必須になりました。 #9274 (Artem Zuikov)
  • ALTER MODIFY/ADD クエリのロジックを改善しました。これにより、型を指定せずにカラムを ADD することはできなくなり、MODIFY でデフォルト式を変更してもカラムの型は変わらず、MODIFY で型を変更してもデフォルト式の値は失われません。#8669 を修正しました。#9227 (alesapin)
  • ロギング設定の変更を反映するには、サーバーの再起動が必要です。これは、サーバーが削除されたログファイルにログを出力してしまう不具合を回避するための一時的な措置です (#8696 を参照) 。#8707 (Alexander 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) で期限切れになったデータの削除を強制する mutation が実行され、すべてのパーツにおける有効期限 (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 関数を追加しました。reservoir sampling アルゴリズムを使用します。#8286 (Amos Bird)
  • これで、システムメトリクスで cache/complex_key_cache 辞書の更新キューのサイズを監視できるようになりました。#9413 (Nikita Mikhaylov)
  • 設定 output_format_csv_crlf_end_of_line を 1 にすると、CSV出力フォーマットで行区切り文字として CRLF を使用できるようになりました #8934 #8935 #8963 (Mikhail Korotov)
  • H3 API の関数をさらに実装: h3GetBaseCell, h3HexAreaM2, h3IndexesAreNeighbors, h3ToChildren, h3ToString および stringToH3 #8938 (Nico Mandery)
  • 新しい設定: 最大スタックサイズを制御し、大規模で複雑なクエリを扱えるようにする max_parser_depth が導入されました。これにより #6681#7668 が修正されました。#8647 (Maxim 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.zeros および system.zeros_mt、ならびにテーブル関数 zeros()zeros_mt() を追加しました。これらのテーブル (およびテーブル関数) には、名前が zero、型が UInt8 の単一のカラムが含まれます。このカラムには 0 が格納されます。これは、テスト用途で多数の行を生成する最速の方法として必要です。これにより #6604 #9593 が修正されました (Nikolai Kochetov)

実験的機能

  • MergeTree ファミリーのテーブルで、すべてのカラムを 1 つのファイルに格納する新しい compact パーツフォーマットを追加しました。これにより、小規模で頻繁な insert のパフォーマンス向上が期待できます。従来のフォーマット (カラムごとに 1 ファイル) は現在 wide パーツと呼ばれます。データの保存フォーマットは、設定 min_bytes_for_wide_part および min_rows_for_wide_part によって制御されます。 #8290 (Anton Popov)
  • LogTinyLogStripeLog テーブルでの S3 storage のサポート。 #8862 (Pavel Kovalenko)

バグ修正

  • log messages内の不統一な空白を修正しました。 #9322 (alexey-milovidov)
  • 名前のない Tuple の Array が、table の作成時に Nested 構造にフラット化される不具合を修正しました。 #8866 (achulkov2)
  • File テーブルまたは file テーブル関数で、glob パターンに一致するファイル数が多すぎる場合に “Too many open files” エラーが発生することがある問題を修正しました。ファイルは遅延オープンされるようになりました。これにより #8857 #8861 が修正されます (alexey-milovidov)
  • DROP TEMPORARY TABLE は一時テーブルだけを削除するようになりました。 #8907 (Vitaly Baranov)
  • サーバーのシャットダウン時、またはテーブルのDETACH/ATTACH時に、outdated パーティションを削除します。#8602 (Guillaume Tassery)
  • デフォルトディスクが data サブディレクトリを基準に空き容量を計算する方法を修正しました。data ディレクトリが別のデバイスにマウントされている場合に、空き容量が正しく計算されない問題 (まれなケース) を修正しました。これにより #7441 #9257 が修正されます (Mikhail Korotov)
  • 内部に IN () を含むカンマ (CROSS) JOIN を許可しました。#9251 (Artem Zuikov)
  • WHERE句に [NOT] LIKE 演算子がある場合に、CROSS を INNER JOIN に書き換えられるようにしました。#9229 (Artem Zuikov)
  • distributed_aggregation_memory_efficient 設定が有効な場合の GROUP BY 後に、誤った結果が返される可能性がある問題を修正しました。#9134#9289 (Nikolai Kochetov)
  • cache 辞書のメトリクスで、見つかったキーがミスとしてカウントされていました。 #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)
  • segfault または Inconsistent number of columns got from MergeTreeRangeReader 例外を引き起こす可能性があった PREWHERE 最適化の不具合を修正しました。 #9024 (Anton Popov)
  • 実際にはタイムアウトに達していないにもかかわらず、セキュア接続でランダムに発生し、クエリプロファイラが有効な場合に起きる予期しない Timeout exceeded while reading from socket 例外を修正しました。さらに、connect_timeout_with_failover_secure_ms 設定 (既定値は 100ms) を追加しました。これは connect_timeout_with_failover_ms と似ていますが、セキュア接続に使用されます (SSL ハンドシェイクは通常の TCP connection より遅いためです) #9026 (tavplubix)
  • parts_to_do=0 かつ is_done=0 の状態で mutation がハングしたままになることがある、mutations の完了処理のバグを修正しました。 #9022 (alesapin)
  • partial_merge_join 設定で、新しい ANY JOIN ロジックを使用できるようになりました。これにより、partial_merge_join=1ANY|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 内で timestamp が更新されない不具合を修正しました。LIVE VIEW は実験的な機能です。#8644 (vxider) #8625 (vxider)
  • 古い有効期限 (TTL) 式を削除できなかった ALTER MODIFY TTL の不具合を修正しました。 #8422 (Vladimir Chebotarev)
  • MergeTreeIndexSet の UBSan 報告を修正しました。これにより、#9250 #9365 が修正されました (alexey-milovidov)
  • match 関数および extract 関数で、検索対象文字列にゼロバイトが含まれる場合の挙動を修正しました。検索対象文字列が定数の場合、挙動が誤っていました。これにより #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov) を修正しました
  • Apache Avro のサードパーティ製ライブラリで、デストラクタから例外を送出しないようにした。 #9066 (Andrew Onyshchuk)
  • データに欠落が生じる可能性があるため、Kafka からポーリングしたバッチが部分的にコミットされないよう修正しました。 #8876 (filimonov)
  • Nullable の戻り値型における joinGet の問題を修正しました。 #8919 #9014 (Amos Bird)
  • T64 コーデックで圧縮した際のデータ互換性の問題を修正しました。 #9016 (Artem Zuikov) 影響を受けるバージョンで圧縮/展開の誤りを引き起こしていた T64 圧縮コーデックのデータ型 ID を修正しました。 #9033 (Artem 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)
  • Array 型の bloom_filter 索引における not(has()) の問題を修正しました。 #9407 (achimbab)
  • Log エンジンのテーブルで、先頭のカラムをエイリアスとして指定できるようにしました #9231 (Ivan)
  • 1つのスレッドで MergeTree テーブルを読み取る際の範囲の順序を修正しました。これにより、MergeTreeRangeReader で例外が発生したり、クエリ結果が誤ったりする可能性がありました。#9050 (Anton Popov)
  • reinterpretAsFixedStringString ではなく FixedString を返すように変更しました。#9052 (Andrew Onyshchuk)
  • ユーザーに誤ったerrorメッセージ (詳細なエラー内容ではなくSuccess) が表示される、ごくまれなケースを回避しました。 #9457 (alexey-milovidov)
  • 空の行テンプレートで Template フォーマットを使用してもクラッシュしなくなりました。#8785 (Alexander Kuzmenkov)
  • システムテーブルのメタデータファイルが誤った場所に作成される可能性があった問題を修正 #8653 (tavplubix)。#8581 を修正。
  • cache dictionary の 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 BY 内で IN の定数畳み込みを行わないように修正 #8868 (Amos Bird)
  • ALTER DELETE ミューテーションで索引の破損を引き起こすバグを修正しました。これにより、#9019#8982 が修正されます。さらに、ReplicatedMergeTreeALTER クエリでごくまれに発生する競合状態も修正しました。#9048 (alesapin)
  • 設定 compile_expressions が有効な場合、Nullable 型の使用時に LLVMExecutableFunctionunexpected column が発生することがあります #8910 (Guillaume Tassery)
  • Kafka エンジンに対する複数の修正: 1) コンシューマグループのリバランス中に発生していた重複を修正。2) 1 回の poll で複数のパーティションからデータを取得し、それを部分的に commit した際にまれに発生していた ‘欠落’ を修正 (現在は、poll されたメッセージのブロック全体を常に処理 / commit します) 。3) ブロックサイズによる flush を修正 (それ以前は timeout による flushing しか正しく機能していませんでした) 。4) より適切な subscription 手順に改善 (assignment のフィードバック付き) 。5) テストの実行を高速化 (デフォルトの intervals と timeouts を使用) 。以前はデータがブロックサイズでは flush されておらず (ドキュメントどおりであるべきなのに) 、この PR によりデフォルト設定ではパフォーマンスがいくらか低下する可能性があります (flush の頻度が上がり、より小さい単位で行われるため、効率が下がります) 。この変更後にパフォーマンスの問題が発生した場合は、テーブルの 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 性が混在している場合の問題を修正しました。#8705 (alexey-milovidov)
  • CREATE クエリの実行時に、ストレージエンジンの引数内にある定数式を畳み込みます。空のデータベース名を現在のデータベース名に置き換えます。#6508#3492#9262 を修正しました (tavplubix)
  • これにより、a DEFAULT b, b DEFAULT a のような単純な循環別名を持つカラムは作成または追加できなくなりました。 #9603 (alesapin)
  • 元のパートを破損する可能性がある、move の二重実行に関するバグを修正しました。これは ALTER TABLE MOVE を使用している場合に該当します #8680 (Vladimir Chebotarev)
  • バッククォートなしでも interval 識別子を正しく解析できるようにしました。また、interval 識別子をバッククォートまたは二重引用符で囲んでいてもクエリを実行できない問題を修正しました。これにより #9124 を修正します。#9142 (alexey-milovidov)
  • fuzzテストと、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)
  • ORDER BY 句と LIMIT 句があり、SELECT 句に定数が含まれるごくまれなケースで発生していた Parameters are out of bound 例外を修正しました。#8892 (Guillaume Tassery)
  • mutation の完了処理を修正。すでに完了した mutation でも、ステータスが 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) によって発生する可能性のあるチェックサムの不一致を修正しました。 #9451 (Anton Popov)
  • ボリュームが 1 つしかない場合に、TTL ルールによってパーツがバックグラウンドで移動されない不具合を修正しました。 #8672 (Vladimir Chebotarev)
  • Method createColumn() is not implemented for data type Set の問題を修正しました。これにより #7799 も修正されました。 #8674 (alexey-milovidov)
  • mutation の完了をより頻繁に試みるようにしました。 #9427 (alesapin)
  • -1 定数に対する intDiv の修正 #9351 (hcz)
  • BlockIO における race condition の可能性を修正しました。#9356 (Nikolai Kochetov)
  • 誤ったパラメータで作成されたKafkaテーブルを使用またはdropしようとした際にサーバーが停止する不具合を修正しました。 #9513 (filimonov)
  • OS が timer_create 関数に対して誤った結果を返す場合の回避策を追加しました。 #8837 (alexey-milovidov)
  • min_marks_for_seek パラメータの使用に関する不具合を修正しました。Distributed テーブルにシャーディングキーが存在しない状態で未使用の分片をスキップしようとした際のエラーメッセージを修正しました。#8908 (Azat Khuzhin)

改善

  • ReplicatedMergeTree* エンジンファミリーに対して、mutations をベースに ALTER MODIFY/DROP クエリを実装しました。これにより、ALTERS はメタデータ更新の段階でのみブロックされ、それ以降はブロックされなくなりました。#8701 (alesapin)
  • WHERE 句に修飾子のない名前が含まれている場合に、CROSS を 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としてマークすることです。これは常に当てはまるわけではありませんが、通常はそうです。#9079 (Yuriy Baranov)
  • sumMap で String および FixedString のキーをサポート #8903 (Baudouin Giard)
  • SummingMergeTree のマップで文字列キーをサポート #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を有効にしました。これには、“collect_interval_milliseconds”で指定した間隔 (デフォルトは1秒) で収集された ProfileEvents と CurrentMetrics の値を持つ行が含まれます。このテーブルは非常に小さく (通常は数メガバイト程度) 、このデータをデフォルトで収集するのは妥当です。#9225 (alexey-milovidov)
  • グループ内のすべてのスレッドでクエリプロファイラを初期化するようにし、たとえば insert クエリを完全にプロファイルできるようにしました。#6964 #8874 を修正しました (Ivan) 。
  • 一時 LIVE VIEW は、CREATE TEMPORARY LIVE VIEW ... ではなく、CREATE LIVE VIEW name WITH TIMEOUT [42] ... で作成するようになりました。これは、従来の構文が CREATE TEMPORARY TABLE ... と整合していなかったためです #9131 (tavplubix)
  • system.text_log テーブルに送られるエントリを制限するための text_log.level 設定パラメーターを追加 #8809 (Azat Khuzhin)
  • ダウンロードした part を、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)
  • aggregate function の state を持つ配列向けに arraySlice を実装しました。これにより #9388 #9391 が修正されます (alexey-milovidov)
  • IN 演算子の右辺で、定数関数および定数Arrayを使用できるようになりました。#8813 (Anton Popov)
  • system.replicas のデータ取得中に ZooKeeper の例外が発生した場合、それを別のカラムに表示するようにしました。これは #9137 #9138 の実装です (alexey-milovidov)
  • destroy時にMergeTreeのデータパーツをアトミックに削除するようにしました。#8402 (Vladimir Chebotarev)
  • 分散テーブルで行レベルセキュリティをサポートしました。 #8926 (Ivan)
  • 設定値で接尾辞 (KB、KiB など) を認識できるようになりました。 #8072 (Mikhail Korotov)
  • 大規模なJOINの結果構築時にメモリ不足が発生するのを防止しました。#8637 (Artem Zuikov)
  • clickhouse-client の対話型モードで、補完候補にクラスター名を追加しました。 #8709 (alexey-milovidov)
  • グループ内のすべてのスレッドでクエリプロファイラを初期化するようにし、たとえば insert クエリを完全にプロファイルできるようになりました #8820 (Ivan)
  • system.query_log テーブルに exception_code カラムを追加しました。#8770 (Mikhail Korotov)
  • デフォルトのサーバー構成ファイルで、MySQL 互換サーバーをポート 9004 で有効にしました。設定内の例にあるパスワード生成コマンドを修正しました。#8771 (Yuriy Baranov)
  • filesystem が読み取り専用の場合でも、シャットダウン時に異常終了しないようにしました。これにより #9094 を修正しました #9100 (alexey-milovidov)
  • HTTP POSTクエリで長さの指定が必要な場合の例外メッセージを改善しました。 #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 を送信するようにしました (logs と同様) 。これは、ネイティブプロトコルを使用する一部のサードパーティーツールにのみ影響する可能性があります。#9495 (Azat Khuzhin)
  • MySQLプロトコルを使用するクライアント接続数を追跡するシステムメトリクスを追加しました (#9013) 。 #9015 (Eugene Klimov)
  • 今後、HTTP レスポンスでは、X-ClickHouse-Timezone ヘッダーに SELECT 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() が実装されています。また、定数をマテリアライズする際のテストでも役立ちます。 #9293 (Alexander Kazakov)
  • ColumnVector::replicate() に対して、さらに小規模なパフォーマンス改善を行いました (これにより materialize 関数と高階関数が高速化されます) 。#9293 の追加改善です #9442 (Alexander Kazakov)
  • stochasticLinearRegression aggregate function のパフォーマンスを改善しました。このパッチは Intel による提供です。 #8652 (alexey-milovidov)
  • reinterpretAsFixedString 関数のパフォーマンスを改善しました。 #9342 (alexey-milovidov)
  • プロセッサパイプラインで、Null フォーマットの場合はクライアントに blocks を送信しないようにしました。 #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)
  • stateless testsでセキュアなソケットを有効化 #9288 (tavplubix)
  • SPLIT_SHARED_LIBRARIES=OFF の堅牢性を向上 #9156 (Azat Khuzhin)
  • サーバーがランダムにハングしても “performance_introspection_and_logging” テストが確実に動作するようにしました。これは CI 環境で発生することがあります。関連項目 #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)
  • stateless tests の実行時にサーバーが起動に失敗しないよう、MSan ビルドで SSL を有効化しました #9531 (tavplubix)
  • テスト結果内のdatabase置換を修正 #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 perftests のタイプを 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)
  • GCC の警告 -Wmissing-include-dirs を有効にし、存在しないインクルードをすべて排除しました。主に CMake スクリプトのエラーによるものです #8704 (kreuzerkrieg)
  • クエリプロファイラが機能しない理由を記述。これは #9049 #9144 に対応するものです (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 connection が失敗することがある問題を修正しました。この問題はバージョン 20.1 に存在していました。#8956 (alexey-milovidov)
  • サーバー用の Dockerfile を更新 #8893 (Ilya Mazaev)
  • build-gcc-from-sources スクリプトに関する軽微な修正 #8774 (Michael Nacharov)
  • number カラムが使われていない perftests で、numberszeros に置き換えました。これにより、テスト結果がよりクリーンになります。#9600 (Nikolai Kochetov)
  • Column コンストラクタで initializer_list を使用した際に発生するスタックオーバーフローの問題を修正しました。 #9367 (Deleted user)
  • librdkafka を v1.3.0 にアップグレードしました。Mac OS X で、バンドル版の rdkafka および gsasl ライブラリを有効化しました。#9000 (Andrew Onyshchuk)
  • GCC 9.2.0 でのビルド修正 #9306 (vxider)

ClickHouse リリース v20.1

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

バグ修正

  • prewhere 条件で Nullable カラムを使用したことで発生する、まれなクラッシュを修正しました。#11608 の続きです。#11869 (Nikolai Kochetov)。
  • 高階関数内で arrayJoin を使用できないようにしました。これにより、プロトコル同期の破損が発生していました。これで #3933 をクローズします。#11846 (alexey-milovidov)。
  • 本来はエラーになるべき SELECT *, xyz.* のようなクエリが成功してしまう問題を修正しました。#11753 (hexiaoting)。
  • Values input format で複雑なリテラルの型推論が誤っていたことによって発生する LOGICAL_ERROR を修正しました。#11732 (tavplubix)。
  • const カラムに対する ORDER BY ... WITH FILL の問題を修正しました。#11697 (Anton Popov)。
  • XDBC bridge と通信する際に、適切なタイムアウトを渡すようにしました。最近、bridge の生存確認やメタ情報の受信時にタイムアウトが反映されていませんでした。#11690 (alexey-milovidov)。
  • 大文字と小文字を区別しないフラグ付き正規表現のサポートを追加しました。これにより #11101#11506 を修正します。#11649 (alexey-milovidov)。
  • String に対するブルームフィルタ (データスキッピングインデックス) の問題を修正しました。#11638 (Azat Khuzhin)。
  • prewhere 条件で Nullable カラムを使用したことで発生する、まれなクラッシュを修正しました。 (おそらく何らかの形で #11572 と関連しています) 。#11608 (Nikolai Kochetov)。
  • exception.code() % 256 = 0 の場合に clickhouse-client の終了コードが誤っていた問題を修正しました。#11601 (filimonov)。
  • サーバー起動時の「Mark cache size was lowered」というログメッセージ内の軽微な誤りを修正しました。これで #11399 をクローズします。#11589 (alexey-milovidov)。
  • clickhouse-server の docker コンテナーが、サーバーの稼働確認時に IPv6 を優先するようになりました。#11550 (Ivan Starkov)。
  • -State 関数を使った aggregation の途中で例外が発生した場合のメモリリークを修正しました。これにより #8995 を修正します。#11496 (alexey-milovidov)。
  • FINAL 修飾子および ORDER BY 最適化において、関数でラップされた主キーの使用に関する問題を修正しました。#10715 (Anton 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 が修正されます。#11540 (alexey-milovidov).
  • codecs が返す圧縮サイズを修正しました。 #11448 (Nikolai Kochetov).
  • カラムに、リテラル以外の引数を持つ圧縮コーデックが設定されている場合にサーバーがクラッシュする不具合を修正しました。 #11365 を修正。 #11431 (alesapin).
  • 点に nan を指定した場合の pointInPolygon を修正しました。#11375 を修正。#11421 (Alexey Ilyukhov).
  • 緯度/経度の範囲外の引数が指定された場合に geohashesInBox を修正しました。#11403 (Vasily Nemkov).
  • 外部ソートとlimitを伴うクエリで発生する可能性のあるPipeline stuckエラーを修正しました。#11359#11366 (Nikolai Kochetov)。
  • quantilesExactWeightedArray で発生するクラッシュを修正しました。#11337 (Nikolai Kochetov) 。
  • 設定 parallel_view_processing = 1 を指定した MATERIALIZED VIEW への書き込みが、再び並列で行われるようになりました。#10241 を修正しました。#11330 (Nikolai 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 の制限が機能しない、または正しく機能しないことがある不具合を修正しました。さらに、timeout_before_checking_execution_speed のデフォルト値を 0 以外に変更しました。これが 0 のままだと、min_execution_speed および max_execution_speed 設定が効かないためです。これにより #11297 を修正しました。これにより #5732 を修正しました。これにより #6228 を修正しました。使い勝手の改善: clickhouse-client で、例外メッセージが進捗バーと連結されないようにしました。#11296 (alexey-milovidov)。
  • Protobuf フォーマットの不正な形式のデータの読み込み時に発生するクラッシュを修正しました。これにより #5957 および #11203 を修正しました。#11258 (Vitaly Baranov).
  • 高階関数で、キャプチャされた引数が Array(Array(LowCardinality)) の場合に発生することがあるエラー Cannot capture column を修正しました。#11185 (Nikolai Kochetov) 。
  • データスキッピングインデックスが、バックグラウンドマージ中に変更されるカラム (SummingMergeTree、AggregatingMergeTree、および TTL GROUP BY の場合) に依存している場合、誤って計算されていました。この問題は、索引の計算をマージ後に行うように変更し、マージ後のデータに対して索引が計算されるようにすることで修正されました。 #11162 (Azat Khuzhin).
  • mutation の最終化タスクで、何も最終化されなかった場合のログ出力を削除しました。#11109 (alesapin).
  • parseDateTime64BestEffort の引数の解決に関する不具合を修正しました。#10925#11038 (Vasily Nemkov) 。
  • getRawData() メソッドの生データサイズの誤りを修正しました。 #10964 (Igr).
  • 分散テーブルのタプルに関する後方互換性の問題を修正しました。 #10889 (Anton Popov).
  • StringHashTable での SIGSEGV を修正 (該当するキーが存在しない場合) 。#10870 (Azat Khuzhin).
  • ReplicatedMergeTree で、非アクティブになったレプリカの応答待ちにより、一部の OPTIMIZE クエリに対する ALTER がハングする可能性があるバグを修正しました。 #10849 (tavplubix).
  • Block::sortColumns() 後のカラムの順序を修正 (実際のユースケースである Buffer engine に影響することを示すテストも追加) 。#10826 (Azat Khuzhin).
  • 識別子のクォートが不要な場合に発生する ODBC bridge の問題を修正しました。これにより #7984 を修正しました。#10821 (alexey-milovidov).
  • DateLUT の UBSan および MSan のレポートを修正しました。 #10798 (alexey-milovidov).
    • キー条件で正しく型変換できるよう、src_type を使用するようにしました。#6287 を修正しました。#10791 (Andrew Onyshchuk).
  • parallel_view_processing の動作を修正しました。例外が発生した場合でも、MATERIALIZED VIEW へのすべての挿入処理が確実に完了するようになりました。#10241 を修正しました。 #10757 (Nikolai Kochetov).
  • combinator の -OrNull および -OrDefault について、-State と組み合わせた場合の問題を修正しました。#10741 (hcz).
  • 消えてしまう totals の問題を修正しました。クエリに外部 WHERE 条件を伴う join またはサブクエリがある場合、totals がフィルタされることがありました。#10674 を修正しました。#10698 (Nikolai Kochetov).
  • 1 つのクエリ内で、同一のセットに対する IN 演算子の複数回の使用を修正しました。 #10686 (Anton Popov).
  • AggregateTransform コンストラクタのパラメータの順序を修正しました。 #10667 (palasonic1) 。
  • distributed_aggregation_memory_efficient が有効な場合に、リモートクエリが並列実行されない問題を修正しました。#10655#10664 (Nikolai Kochetov).
  • 式の順序を保持することで、HAVING 句を含むクエリ (つまり、サーバーのイニシエーター側でのフィルタリングが必要な場合) における、分散クエリの述語最適化 (enable_optimize_predicate_expression=1) を修正しました (これで十分に修正できます) 。また、アグリゲーターが索引ではなくカラム名を使用するよう強制しました。修正: #10613, #11413#10621 (Azat Khuzhin).
  • エラー the BloomFilter false positive must be a double number between 0 and 1 を修正しました。#10551#10569 (Winter 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 フィールドで集約を実行する場合に発生します。これにより、結果内で単一のキーに対して未マージの行が複数生じます。#10952 (alexey-milovidov).
  • マージ後に発生する可能性があった、SummingMergeTreeLowCardinality(FixedString) キー・カラムにおけるデータ破損を修正しました。#10489 を修正します。#10721 (Nikolai Kochetov).
  • readonly=2 かつ cancel_http_readonly_queries_on_client_close=1 の場合に、クライアントの切断時に http リクエストがハングしたままになる不具合を修正しました。#7939#7019#7736#7091 を修正します。#10684 (tavplubix) 。
  • SYSTEM DROP DNS CACHE クエリの実行時に、一部の IP アドレスからのユーザー接続が許可されているかどうかの確認に使用される cache まで削除されてしまう不具合を修正しました。 #10608 (tavplubix).
  • 依存テーブルを含むクエリで、MATERIALIZED VIEW の内部クエリ内の誤ったスカラー結果を修正しました。 #10603 (Nikolai Kochetov).
  • mutation がすべてのパーツの処理を完了しているにもかかわらず、is_done=0 のままハングする問題を修正しました。#10526 (alesapin) 。
  • UTC からのオフセットが端数を含むタイムゾーンにおいて、Unix epoch の開始時点で発生していたオーバーフローを修正しました。これにより #9335 も解消されます。 #10513 (alexey-milovidov).
  • Distributedストレージの不適切な停止処理を修正しました。#10491 (Azat Khuzhin) 。
  • 大きな整数に対する simpleLinearRegression の数値オーバーフローを修正しました。 #10474 (hcz).
  • データベースのアタッチが失敗した際にメタデータディレクトリが削除される問題を修正しました。#10442 (Winter Zhang) 。
  • BloomFilter 索引の作成時に、引数の数と型の検証を追加しました #9623#10431 (Winter Zhang)。
  • ARRAY JOINORDER BYLIMIT を含むクエリが不完全な結果を返すことがある問題を修正しました。これにより #10226 の問題が解消されます。#10427 (alexey-milovidov).
  • skip_unavailable_shards ではなく、fallback_to_stale_replicas を使用してください。#10422 (Azat Khuzhin) 。
  • Array(Tuple(...)) データ型の誤ったフラット化を修正しました。これにより #10259 を修正しました。#10390 (alexey-milovidov).
  • バッファからHashMapを読み取ろうとした際にコンパイルエラーが発生していた HashTable の不正な挙動を修正しました。 #10386 (palasonic1) 。
  • リモートクエリで発生する可能性があった ConcatProcessorPipeline stuck エラーを修正しました。#10381 (Nikolai Kochetov).
  • max_rows_to_group_bygroup_by_overflow_mode = 'break' の組み合わせで発生する Pipeline stuck エラーを修正しました。#10279 (Nikolai Kochetov) 。
  • 一部のデータがクォーラムで挿入された後、何らかの理由で削除され (DROP PARTITION、有効期限 (TTL)) 、その結果 INSERT が停止したり、SELECT で誤検知の例外が発生したりする不具合をいくつか修正しました。これにより #9946 が修正されます。#10188 (Nikita Mikhaylov).
  • リモートサーバーで 18.12.17 より前のバージョンが使用され、クエリを開始するサーバーでそれ以降の新しいバージョンが使用されている場合に、固定キーと非固定キーの両方を含む GROUP BY を実行し、かつ 2 レベルの 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).
  • ENGINE = Replicated* のテーブルに対してユーザーが ALTER UPDATE/DELETE を実行しようとした際、ClickHouse が 'Unknown function lambda.' エラーを返していた不具合を修正しました。非決定論的関数のチェックで、lambda 式が正しく処理されるようになりました。#10237 (Alexander Kazakov).
  • 曜日が火曜日または木曜日のRFC-2822形式の文字列に対するparseDateTimeBestEffortの不具合を修正しました。これにより、#10082が修正されます。 #10214 (alexey-milovidov).
  • JOIN 内の定数のカラム名が、JOIN 外の定数名と衝突する可能性がある問題を修正しました。#10207 (alexey-milovidov) 。
  • system.numberssystem.zeros のような無限ソースから読み取る際に、本来は LIMIT で停止すべきクエリが無限に実行されてしまう可能性がある問題を修正しました。 #10206 (Nikolai Kochetov).
  • arrayJoin 関数が存在する場合の move-to-prewhere 最適化を修正しました (特定のケース) 。これにより #10092 が修正されました。#10195 (alexey-milovidov) 。
  • allow_nondeterministic_mutations 設定により、ミューテーションで非決定論的関数を使用する際の制限を緩和できるようにしました。 #10186 (filimonov).
  • Distributed エンジンのテーブルに INSERT する際、構造が一致しない場合はブロックを変換します。#10135 (Azat Khuzhin).
  • 基盤となるテーブルと構造が異なる場合に、Distributed テーブルへの INSERT 時に発生する SIGSEGV を修正しました。 #10105 (Azat Khuzhin).
  • JOINUNION ALL を含むクエリで発生する可能性がある行の欠落を修正しました。#9826#10113 を修正。#10099 (Nikolai Kochetov) 。
  • MySQLデータベースエンジンに引数チェックを追加し、識別子引数をサポートするようにしました。 #10077 (Winter Zhang).
  • localhost 上の ClickHouse server をソースとする ClickHouse Dictionary のバグを修正しました。Dictionary とソースの型に互換性がない場合、このバグによりメモリ破損が発生する可能性があります。 #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) 。#10025 (Alexander Kuzmenkov).
  • 一部のデータベースに対するクエリの処理段階の一つで、必要なテーブルが取得されない不具合を修正しました。#9699#9949 (achulkov2)。
  • JOINTOTALS とともに使用された場合に発生する 'Not found column in block' エラーを修正しました。#9839#9939 (Artem Zuikov)。
  • サーバー起動時に ON CLUSTER DDLクエリが停止する不具合を修正しました。#9927 (Gagan Arneja).
  • Join table engine の TRUNCATE を修正しました (#9917) 。#9920 (Amos Bird) 。
  • ALTERクエリにおける'scalar does not exist'エラーを修正 (#9878). #9904 (Amos Bird).
  • ReplicatedMergeTree における drop と optimize の競合状態を修正しました。 #9901 (alesapin) 。
  • ATTACH PART における DeleteOnDestroy のロジックを修正し、アタッチされた part が自動的に削除されてしまう可能性がある問題を解消しました。あわせて、いくつかのテストも追加しました。 #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 例外を修正しました。これは、右側の JOIN 対象テーブルの行数が 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 から 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 が修正されます。 #9154 (Azat Khuzhin)
  • ALTER クエリ (mutation) でメモリ消費が過大になる問題を修正しました。これにより #9533 および #9670 が修正されます。 #9754 (alesapin)
  • external dictionaries の DDL におけるバッククォート処理のバグを修正しました。これにより #9619 が修正されます。 #9734 (alesapin)

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

バグ修正

  • sumKahan および sumWithOverflow の内部関数名の誤りを修正しました。これにより、リモートクエリでこれらの関数を使用すると例外が発生していました。#9636 (Azat Khuzhin)。この問題は、すべての ClickHouse リリースに存在していました。
  • 内部レプリケーションを使用するDistributedテーブルでALTER ON CLUSTERを許可しました。これにより、#3268が修正されます。#9617 (shinoi2) 。この問題は、これまでのすべての ClickHouse リリースに存在していました。
  • MergeTreeRangeReader で発生する可能性がある Size of filter does not match size of column および Invalid number of rows in Chunk 例外を修正しました。これらの例外は、一部のケースで PREWHERE の実行中に発生することがありました。#9132 を修正しています。 #9612 (Anton Popov)
  • 次の問題を修正しました: time + 1 のような単純な算術式を記述した場合 (time + INTERVAL 1 SECOND のような式とは異なり) 、timezone が保持されませんでした。これにより #5743 が修正されます。#9323 (alexey-milovidov)。この問題はすべての ClickHouse リリースに存在していました。
  • 現在、a DEFAULT b, b DEFAULT a のような単純な循環別名を使ったカラムは、作成も追加もできなくなりました。#9603 (alesapin)
  • base64 エンコードされた値の末尾のパディングが不正になることがある問題を修正しました。base64 ライブラリを更新しました。これにより #9491 が修正され、#9492 がクローズされます #9500 (alexey-milovidov)
  • Poco::HTTPServer の破棄時に発生するデータ競合を修正しました。これは、サーバーの起動直後にシャットダウンした場合に発生する可能性がありました。 #9468 (Anton Popov)
  • n 番目の行と同じ値を持つ行が多数ある場合に、LIMIT n WITH TIES でクラッシュしたり、行数が誤ったりする可能性がある問題を修正しました。 #9464 (tavplubix)
  • カラムTTLに起因する可能性のあるチェックサムの不一致を修正しました。 #9451 (Anton Popov)
  • ユーザーが旧形式の MergeTree テーブルエンジンファミリーに対して ALTER MODIFY SETTING を実行しようとした際に発生するクラッシュを修正しました。 #9435 (alesapin)
  • 今後は mutation の完了処理をこれまでより頻繁に試みます。 #9427 (alesapin)
  • #8598 で導入されたレプリケーションプロトコルの非互換性を修正しました。#9412 (alesapin)
  • Array型向けの 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 codec圧縮時のデータ非互換性を修正。 #9039 (abyss7)
  • 1 つのスレッドで MergeTree テーブルから読み取る際の範囲の順序を修正しました。 #8964 の修正です。 #9050 (CurtizJ)
  • PREWHERE の実行中に MergeTreeRangeReader で発生する可能性があるセグメンテーション違反を修正しました。#9064 の修正です。 #9106 (CurtizJ)
  • reinterpretAsFixedStringString ではなく FixedString を返すよう修正。 #9052 (oandrew)
  • Nullable な戻り値型を返す joinGet の不具合を修正しました。#8919 を修正 #9014 (amosbird)
  • ファズテストと、bitTestAll/bitTestAny関数の誤った動作を修正しました。 #9143 (alexey-milovidov)
  • haystack にゼロバイトが含まれる場合の match 関数と extract 関数の挙動を修正しました。haystack が定数の場合、挙動が誤っていました。#9160 を修正しました #9163 (alexey-milovidov)
  • 厳密単調でない関数索引を使用した場合の、反転述語の実行を修正しました。#9034 #9223 (Akazz)
  • WHERE 句に [NOT] LIKE 演算子がある場合に、CROSSINNER JOIN に書き換えられるようにしました。#9191 を修正しました #9229 (4ertus2)
  • Logエンジンのテーブルで、先頭のカラム (複数可) をエイリアスにできるようにしました。 #9231 (abyss7)
  • 内部で IN() を含むカンマ join を許可。 #7314 を修正。 #9251 (4ertus2)
  • ALTER MODIFY/ADD クエリのロジックを改善しました。これにより、型を指定せずにカラムを ADD することはできなくなり、MODIFY でデフォルト式を変更してもカラムの型は変わらず、MODIFY で型を変更してもデフォルト式の値は失われません。#8669 を修正しました。 #9227 (alesapin)
  • mutations の完了処理を修正。すでに完了している 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 において、ストレージポリシーのチェックを追加しました。これがないと、再起動後に part のデータにアクセスできなくなり、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 (tabplubix)
  • StorageFile からの読み取り時に発生する可能性がある StorageMerge のセグメンテーション違反を修正。 #9387 (tabplubix)
  • まれに、接尾辞の読み取り後、コミット前に例外が発生した場合に、Kafka でデータが失われるのを防ぐようにしました。#9378 を修正。関連: #7175 #9507 (filimonov)
  • 誤ったパラメータで作成された Kafka テーブルに対して use / drop を実行しようとした際に、サーバーが異常終了する不具合を修正しました。#9494 を修正。#9507 を取り込みました。 #9513 (filimonov)

新機能

  • materialized view を持つテーブルに対する冪等な insert の挙動を制御する 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)
  • クエリパラメータは “escaped” 形式で表現することが前提になりました。たとえば、文字列 a<tab>b を渡すには a\tb または a\<tab>b と記述し、URL ではそれぞれ a%5Ctb または a%5C%09b とする必要があります。これは、NULL を \N として渡せるようにするためです。これにより #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_conversionallow_experimental_multiple_joins_emulation は現在では廃止されており、何の効果もありません。#7974 (alexey-milovidov)
  • JOIN 操作と整合する、新しい StorageJoinANY JOIN ロジックを追加しました。動作を変えずにアップグレードするには、Engine Join tables のメタデータに 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 内のユーザーのprofileが、複数のprofileを継承できるようになりました。#8343 (Mikhail f. Shiryaev)
  • すべてのサーバースレッドのスタックトレースを確認できる system.stack_trace テーブルを追加しました。これにより、開発者はサーバーの状態を詳しく調査できます。これにより #7576 が修正されます。 #8344 (alexey-milovidov)
  • 設定可能な秒未満の精度を持つ DateTime64 データ型を追加しました。#7170 (Vasily Nemkov)
  • クラスター内のすべてのノードに対してクエリを実行できる table function clusterAllReplicas を追加しました。 #8493 (kiran sunkari)
  • 離散特徴量の情報価値を計算する集約関数 categoricalInformationValue を追加しました。#8117 (hcz)
  • CSVTSVJSONEachRow フォーマットのデータファイルを並列にパースすることで、高速化しました。#7780 (Alexander Kuzmenkov)
  • 偶数丸めを行う関数 bankerRound を追加しました。#8112 (hcz)
  • 地域名用の組み込みDictionaryで、‘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)
  • 新たに SEMIANTI JOIN を追加しました。従来の ANY INNER JOIN の挙動は、SEMI LEFT JOIN として利用できるようになりました。 #7665 (Artem Zuikov)
  • 非同期 insert により Distributed テーブルに対して生成された .bin ファイルを読み取れる Distributed フォーマットを、File エンジンおよび file テーブル関数向けに追加しました。 #8535 (Nikolai Kochetov)
  • runningAccumulate に、省略可能な reset 用のカラム引数を追加しました。これにより、新しいキー値ごとに集約結果をリセットできます。#8326 (Sergey Kononenko)
  • ClickHouse を Prometheus エンドポイントとして利用できるようにしました。 #7900 (vdimir)
  • config.xml に、リモートテーブルエンジンおよびテーブル関数 URLS3HDFS で許可するホストを制限する <remote_url_allow_hosts> セクションを追加しました。 #7154 (Mikhail Korotov)
  • 球面上の距離を度単位で計算する関数 greatCircleAngle を追加しました。#8105 (alexey-milovidov)
  • H3 ライブラリに合わせて、地球半径を変更しました。 #8105 (alexey-milovidov)
  • 入出力用の JSONCompactEachRow および JSONCompactEachRowWithNamesAndTypes フォーマットを追加しました。 #7841 (Mikhail Korotov)
  • 追加のエンジンパラメータまたはファイル拡張子に基づいて gzip ファイルを読み書きできるようにする機能が、ファイル関連のテーブルエンジンおよびテーブル関数 (File, S3, URL, HDFS) に追加されました。#7840 (Andrey Bodrov)
  • ASCII の表示可能文字をランダムに組み合わせた文字列を生成する randomASCII(length) 関数を追加しました。#8401 (BayoNet)
  • 未解析の JSON array の各要素からなる配列を JSON 文字列から返す関数 JSONExtractArrayRaw を追加しました。#8081 (Oleg Matrokhin)
  • 同じ長さの複数の配列を1つのタプル配列にまとめられる arrayZip 関数を追加しました。#8149 (Winter Zhang)
  • 設定された TTL 式に従ってディスク間でデータを移動する機能を、*MergeTree テーブルエンジンファミリーに追加しました。#8140 (Vladimir Chebotarev)
  • 重み付き平均を計算できる新しい集約関数 avgWeighted を追加しました。#7898 (Andrey Bodrov)
  • 現在、TSVTSKVCSVJSONEachRow フォーマットでは、並列パースがデフォルトで有効になっています。#7894 (Nikita Mikhaylov)
  • H3 ライブラリの Geo 関数 h3GetResolutionh3EdgeAngleh3EdgeLengthh3IsValidh3kRing をいくつか追加しました。#8034 (Konstantin Malanchev)
  • ファイル関連のストレージおよびテーブル関数で、brotli (br) 圧縮をサポートしました。これにより #8156 が修正されました。#8526 (alexey-milovidov)
  • SimpleAggregationFunction 型用の groupBit* 関数を追加しました。 #8485 (Guillaume Tassery)

バグ修正

  • Distributed engine の table 名変更に関する不具合を修正しました。#7868 を修正。#8306 (tavplubix)
  • これで、ClickHouse SQL 以外の 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 が解決されます。#7703 (alexey-milovidov)
  • 引数の数が誤っている場合に発生する (O|J)DBC テーブルエンジンのパースの不具合を修正しました。#7709 (alesapin)
  • syslog にログを送信する際、実行中の clickhouse プロセスのコマンド名を使用するようにしました。以前のバージョンでは、コマンド名の代わりに空文字列を使用していました。#8460 (Michael Nacharov)
  • localhost の許可ホストのチェックを修正しました。この PR では、#8241 で導入された修正を修正しています。#8342 (Vitaly Baranov)
  • runningAccumulate関数で結果を使用する際に、長い文字列引数に対するargMin関数およびargMax関数でまれに発生していたクラッシュを修正しました。これにより #8325 #8341 が修正されます。(dinosaur)
  • Bufferエンジンを使用するテーブルにおけるメモリオーバーコミットを修正しました。 #8345 (Azat Khuzhin)
  • NULL を引数の 1 つに取り、非 NULL を返す関数における潜在的なバグを修正しました。#8196 (alexey-milovidov)
  • バックグラウンドプロセス用のMergeTreeテーブルエンジンのスレッドプールにおけるメトリクス計算を改善しました。#8194 (Vladimir Chebotarev)
  • 行レベルのテーブルフィルターがある場合のWHEREステートメント内のIN関数を修正。#6687 #8357 (Ivan)
  • 設定値の整数が最後まで完全にパースされない場合、例外がスローされるようになりました。 #7678 (Mikhail Korotov)
  • 2 つを超えるローカル分片を持つ分散テーブルに対するクエリで集約関数を使用した際に発生する例外を修正しました。#8164 (小路)
  • ブルームフィルタがゼロ長の配列を処理できるようになり、冗長な計算も行わなくなりました。 #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 が修正されました。#8383 (Nikolai Kochetov)
  • *MergeTree テーブルエンジンファミリーのバックグラウンドマージで、ストレージポリシーのボリューム順序がこれまでより正確に維持されるようになりました。 #8549 (Vladimir Chebotarev)
  • これで、テーブルエンジン KafkaNative フォーマットで正しく動作するようになりました。これにより、#6731 #7337 #8003 が修正されました。#8016 (filimonov)
  • ヘッダー付きフォーマット (CSVWithNames など) で、テーブルエンジン Kafka 使用時に EOF に関する例外が発生していた問題を修正しました。#8016 (filimonov)
  • IN 句の右辺のサブクエリから Set を作成する際のバグを修正しました。これにより、#5767#2542 が修正されました。#7755 (Nikita Mikhaylov)
  • ストレージ File の読み取り時に発生する可能性があるクラッシュを修正しました。#7756 (Nikolai Kochetov)
  • list 型のカラムを含む Parquet フォーマットのファイルを正しく読み取れるように修正しました。 #8334 (maxulan)
  • max_parallel_replicas > 1 の場合に、sampling key に依存する PREWHERE 条件を含む分散クエリで発生する Not found column エラーを修正しました。 #7913 (Nikolai Kochetov)
  • PREWHERE がテーブルのエイリアスに依存するクエリで、主キー条件のため結果セットが空の場合に発生していた Not found column エラーを修正しました。 #7911 (Nikolai Kochetov)
  • Nullable 引数の場合の関数 rand および randConstant の戻り値の型を修正しました。これらの関数は、常に UInt32 を返し、Nullable(UInt32) を返すことはなくなりました。#8204 (Nikolai Kochetov)
  • WITH FILL 式に対する述語プッシュダウンを無効化しました。これにより #7784 を修正しました。#7789 (Winter Zhang)
  • FINAL 句を使用した場合の SummingMergeTree における count() の結果が誤っていた問題を修正しました。#3280 #7786 (Nikita Mikhaylov)
  • リモートサーバー上の定数関数に対して誤った結果が返る可能性があった問題を修正しました。これは、version()uptime() など、サーバーごとに異なる定数値を返す関数を含むクエリで発生していました。これにより #7666 を修正します。#7689 (Nikolai Kochetov)
  • 誤った結果を招く、述語プッシュダウン最適化における複雑なバグを修正しました。これにより、述語プッシュダウン最適化に関する多くの問題が解消されます。 #8503 (Winter Zhang)
  • CREATE TABLE .. AS dictionary クエリで発生するクラッシュを修正。#8508 (Azat Khuzhin)
  • .g4 ファイル内の ClickHouse の文法をいくつか改善。 #8294 (taiyang-li)
  • engine Join のtableを含む JOIN でクラッシュが発生する不具合を修正しました。これにより #7556 #8254 #7915 #8100 を修正しました。#8298 (Artem Zuikov)
  • CREATE DATABASE 時の不要な辞書の再読み込みを修正。#7916 (Azat Khuzhin)
  • StorageFile および StorageHDFS からの読み取り時の最大ストリーム数を制限しました。#7650 の修正です。#7981 (alesapin)
  • ユーザーがデフォルト式と codec の両方を指定した場合に発生する ALTER ... MODIFY ... CODEC クエリのバグを修正しました。8593 を修正。#8614 (alesapin)
  • SimpleAggregateFunction(LowCardinality) 型のカラムのバックグラウンドでのマージ中に発生するエラーを修正しました。 #8613 (Nikolai Kochetov)
  • 関数 toDateTime64 の型チェックを修正しました。 #8375 (Vasily Nemkov)
  • これで、Join engine と未対応の join_use_nulls 設定を使用した LEFT または FULL JOIN でも、サーバーがクラッシュしなくなりました。 #8479 (Artem Zuikov)
  • これにより、db が存在しない場合でも、DROP DICTIONARY IF EXISTS db.dict クエリで例外は発生しなくなりました。 #8185 (Vitaly Baranov)
  • 削除された IStorage オブジェクトへの参照の使用により、テーブル関数 (filemysqlremote) で発生する可能性があったクラッシュを修正しました。テーブル関数への挿入時に指定されたカラムのパースが正しく行われない問題を修正しました。#7762 (tavplubix)
  • clickhouse-server の起動前にネットワークが有効になっていることを確実にするようにしました。これにより #7507 を修正しました。#8570 (Zhichang Yu)
  • 安全な接続でのタイムアウト処理を修正し、クエリが無期限にハングしないようにしました。これにより #8126 が修正されました。#8128 (alexey-milovidov)
  • clickhouse-copier の同時実行ワーカー間で発生する不要な競合を修正しました。#7816 (Ding Xiang Fei)
  • これで、attached パーツは、その mutation version が現在の mutation version より大きい場合でも、mutations でスキップされなくなりました。#7812 (Zhichang Yu) #8250 (alesapin)
  • 別のディスクに移動してサーバーを再起動した後、*MergeTree データパーツの冗長なコピーを無視するようにしました。#7810 (Vladimir Chebotarev)
  • JOIN キーに LowCardinality を含む FULL JOIN で発生するクラッシュを修正しました。 #8252 (Artem Zuikov)
  • INSERT INTO tbl (x, y, x) のような INSERT クエリで、同じカラム名を複数回指定することを禁止しました。これにより #5465#7681 を修正しました。#7685 (alesapin)
  • 不明な CPU で物理 CPU コア数を検出するためのfallback を追加しました (論理 CPU コア数を使用) 。これにより、#5239 が修正されます。#7726 (alexey-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)
  • serverがすでにclientとの接続を切断している場合に、clientがクラッシュする不具合を修正しました。 #8071 (Azat Khuzhin)
  • 主キーのプレフィックスと非主キーの接尾辞でソートする場合のORDER BYの挙動を修正しました。 #7759 (Anton Popov)
  • 修飾付きカラムがテーブル内に存在するかどうかを確認するようにしました。これにより #6836 を修正しました。#7758 (Artem Zuikov)
  • merge の完了直後に実行された ALTER MOVE が、指定された superpart を移動する動作を修正しました。#8103 を修正。 #8104 (Vladimir Chebotarev)
  • UNION の使用時にカラム数が異なる場合に発生する可能性のあるサーバークラッシュを修正しました。#7279 を修正。 #7929 (Nikolai Kochetov)
  • 負のサイズを指定した関数 substr で返される部分文字列のサイズを修正しました。#8589 (Nikolai Kochetov)
  • これにより、background pool に十分な空きスレッドがない場合、サーバーは MergeTree で part mutation を実行しなくなりました。 #8588 (tavplubix)
  • UNION ALL AST のフォーマットに関する軽微なタイプミスを修正しました。#7999 (litao91)
  • 負の数に対する bloom filter の結果が誤っていた問題を修正しました。これにより #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)
  • 集計済み bitmap とスカラー bitmap の積集合を取る際の 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 DICTIONARYupdate_field を無視して Dictionary 全体を再読み込みするようになりました。これで #7440 が修正されます。#8037 (Vitaly Baranov)
  • CREATEクエリでDictionaryの存在を確認できるようにしました。#8032 (alesapin)
  • Values フォーマットでの Float* のパースを修正しました。これにより #7817 を修正しました。#7870 (tavplubix)
  • *MergeTree テーブルエンジンファミリーの一部のバックグラウンド処理で領域を確保できない場合に発生するクラッシュを修正しました。#7873 (Vladimir Chebotarev)
  • テーブルに SimpleAggregateFunction(LowCardinality) カラムが含まれている場合に、マージ処理がクラッシュする問題を修正しました。これにより #8515 も修正されます。#8522 (Azat Khuzhin)
  • ICU のすべてのロケールのサポートを復元し、定数式に照合を適用できるようにしました。また、system.collations テーブルに言語名を追加しました。#8051 (alesapin)
  • 最小ライフタイムがゼロの外部辞書 (LIFETIME(MIN 0 MAX N), LIFETIME(N)) がバックグラウンドで更新されない不具合を修正しました。#7983 (alesapin)
  • クエリにサブクエリを含む、ClickHouse をソースとする外部 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 外部Dictionaryで、Date 以外のさまざまな型も扱えるようにしました。7899 を修正しました。#8275 (alesapin)
  • now64() が別の関数の結果を引数として呼び出されたときに発生するクラッシュを修正しました。 #8270 (Vasily Nemkov)
  • MySQL wire protocol 経由の接続におけるクライアント IP 検出のバグを修正しました。 #7743 (Dmitry Muzyka)
  • arraySplit 関数で空の配列が適切に処理されない問題を修正しました。これにより #7708 が修正されます。 #7747 (hcz)
  • 別の実行中のclickhouse-serverpid-fileが削除されてしまう可能性がある問題を修正しました。#8487 (Weiqing Xu)
  • invalidate_query を持つ Dictionary の再読み込みに関する不具合を修正しました。これにより、更新が停止したり、以前の更新試行時に一部の例外が発生したりする問題が解消されました。 #8029 (alesapin)
  • arrayReduce 関数で “double free” を引き起こす可能性のあるerror と、メモリリークを引き起こす可能性のある集約関数combinator Resample のerrorを修正しました。集約関数 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 を同時に使用した際に発生するエラー Column ... already exists を修正。例: select count() from table final sample 1/2#5186 を修正。#7907 (Nikolai Kochetov)
  • joinGet 関数の第1引数にテーブル識別子を指定できるようになりました。#7707 (Amos Bird)
  • Kafka テーブルに対するサブクエリを含む MaterializedView を使用できるようにしました。#8197 (filimonov)
  • これで、ディスク間のバックグラウンド移動は専用のスレッドプールで実行されます。 #7670 (Vladimir Chebotarev)
  • SYSTEM RELOAD DICTIONARY は同期実行されるようになりました。#8240 (Vitaly Baranov)
  • スタックトレースは、仮想メモリアドレス (オブジェクトファイルが読み込まれた位置) ではなく、物理アドレス (オブジェクトファイル内のオフセット) を表示するようになりました。これにより、バイナリが位置独立で ASLR が有効な場合でも addr2line を使用できるようになりました。これにより #8360 が修正されました。 #8387 (alexey-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)
  • server が分散バッチのチェックサムを検証するようになり、バッチ内のデータが破損している場合に、より詳細なエラーが出力されるようになりました。 #7914 (Azat Khuzhin)
  • MySQL データベースエンジンでの DROP DATABASEDETACH TABLEDROP TABLEATTACH TABLE をサポート。#8202 (Winter Zhang)
  • S3 table functionおよびtable engineで認証をサポートしました。 #7623 (Vladimir Chebotarev)
  • 未定義のディスク上にあるデータパーツの見落としを防ぐため、異なるディスク上にある MergeTree の余分なパーツを確認するチェックを追加しました。 #8118 (Vladimir Chebotarev)
  • Mac向けクライアントおよびサーバーでSSLをサポートするようにしました。 #8297 (Ivan)
  • ClickHouse が MySQL の federated server として動作するようになりました (https://dev.mysql.com/doc/refman/5.7/en/federated-create-server.html を参照) 。 #7717 (Maxim Fedotov)
  • clickhouse-client は、multiquery がオンで multiline がオフの場合にのみ 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 に対応しました。#8440 (Vladimir Chebotarev)
  • AWS SDK と連携して S3 を操作できるようになり、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 テーブルを持つ MergeBufferMaterilized View ストレージに対する ORDER BY の最適化を実装しました。#8130 (Anton Popov)
  • 古いカーネル (< 3.17) との互換性を向上させるため、getrandom では常に POSIX 実装を使用するようにしました。 #7940 (Amos Bird)
  • move TTL ルールで、宛先が有効かどうかのチェックを改善しました。 #8410 (Vladimir Chebotarev)
  • Distributed テーブルエンジンにおける破損した insert バッチのチェックを改善しました。 #7933 (Azat Khuzhin)
  • 今後ミューテーションが処理する必要のあるパーツ名の配列を格納するカラムをsystem.mutationsテーブルに追加。#8179 (alesapin)
  • プロセッサ向けの並列マージソートを最適化。 #8552 (Nikolai Kochetov)
  • 設定 mark_cache_min_lifetime は現在では廃止されており、何の効果もありません。以前のバージョンでは、mark_cache_min_lifetime 秒以内のデータを保持するために、mark cache が mark_cache_size を超えてメモリ上で増大することがありました。そのため混乱を招き、想定以上のメモリ使用量につながっていました。これは特に、メモリ制約のあるシステムでは深刻な問題になります。このリリースの導入後にパフォーマンスの低下が見られる場合は、mark_cache_size を増やしてください。 #8484 (alexey-milovidov)
  • tid をあらゆる箇所で使用できるようにするための準備。これは #7477 に必要です。#8276 (alexey-milovidov)

パフォーマンスの改善

  • プロセッサパイプラインにおけるパフォーマンス最適化。#7988 (Nikolai Kochetov)
  • cache辞書で、有効期限切れのキーを、古い値の読み取りを許可したままノンブロッキングで更新できるようになりました。#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)
  • 制限なし、または大きな制限値を指定した場合のソートおよび外部ソートのパフォーマンスを改善しました。#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)
  • roundroundBankers での負数の処理を改善しました。#8229 (hcz)
  • DoubleDelta および Gorilla コーデックのデコード性能を約 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)
  • clickhouse-server で std::atexit が呼び出されない場合に備え、カバレッジファイルのフラッシュ処理を追加しました。あわせて、カバレッジ付きのステートレステストのログ出力も若干改善しました。#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 を更新し、メモリサニタイザーに関する問題を修正しました。#7182 #8206 (Alexander Kuzmenkov)
  • OS パッケージの利用は非常に不安定で、通常はほとんどまったく動作しないため、Linux 以外のシステムで内部 MySQL ライブラリを有効にしました。これにより #5765 が修正されます。 #8426 (alexey-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* における reload の非同期処理を修正。 #8111 (Azat Khuzhin)
  • codec のパフォーマンステストを修正しました。#8615 (Vasily Nemkov)
  • .tgz ビルド用のインストールスクリプトとそのドキュメントを追加しました。#8612 #8591 (alesapin)
  • 古いZSTDテストを削除しました (これは、1.0未満のバージョンのZSTDにあったバグを再現するために2016年に作成されたものです) 。これにより#8618が修正されます。#8619 (alexey-milovidov)
  • Mac OS Catalina でのビルドを修正しました。 #8600 (meo)
  • 結果がより分かりやすくなるよう、codec のパフォーマンステストで使用する行数を増やしました。 #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)
  • PREWHEREWHERE よりも低速であることを確認するための性能テストケースを追加しました。 #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-testclickhouse-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 の値に対するパフォーマンステスト。 #8349 (Vasily Nemkov)
  • termcap はかなり非推奨で、さまざまな問題 (たとえば、“up” cap が欠けていたり、複数行表示ではなく ^J がエコーされたりする問題) を引き起こしていました。terminfo または同梱の ncurses の利用を推奨します。#7737 (Amos Bird)
  • test_storage_s3 統合テストを修正。 #7734 (Nikolai Kochetov)
  • 実際にディスクへ書き込むことなく、指定したフォーマットのファイルにブロックを挿入できる StorageFile(<format>, null) をサポートしました。これはパフォーマンステストに必要です。#8455 (Amos Bird)
  • 各テストの実行時間を表示する --print-time 引数が機能テストに追加されました。#8001 (Nikolai Kochetov)
  • RPN の評価時に KeyCondition にアサートを追加しました。これにより、gcc-9 による警告が解消されます。 #8279 (alexey-milovidov)
  • CIビルドで cmake オプションを出力するようにしました。 #8273 (Alexander Kuzmenkov)
  • 一部のfatライブラリではデバッグ情報を生成しないようにしました。 #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)
最終更新日 2026年6月10日