ClickHouse リリース 20.12
ClickHouse リリース v20.12.5.14-stable, 2020-12-28
バグ修正
- マージ中の AIO による書き込みを無効化しました。マージ時に主キーのカラムがごくまれに破損する可能性があるためです。#18481 (alesapin).
Nullable(String)型の引数でtoType(...)関数 (toDate、toUInt32など) を実行した際に発生していた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句で受け付け、それらの設定をすべてのINSERTとSELECTで使用するようになりました。現在のユーザーセッション内、または 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). - 新しい数学関数
acosh、asinh、atan2、atanh、cosh、hypot、log1p、sinhを追加しました。#16636 (Konstantin Malanchev). - 異なるレプリカ間でマージを分散できるようにしました。
execute_merges_on_single_replica_time_thresholdMergeTree 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 を実行している環境で、
Atomicdatabase に対してRENAMEクエリを実行した際にFunction not implementederror が発生する不具合を修正しました。#17661。#17664 (tavplubix) 。 in_memory_parts_enable_walが無効な場合、WAL からパーツを復元しないようにしました。#17802 (detailyang) 。min_compress_block_sizeでmax_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)。 JOINtable の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_tableがAS 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).EXPLAINにVIEWサブクエリの説明を追加しました。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).
実験的機能
ビルド/テスト/パッケージングの改善
- テストカバレッジのビルド用イメージを改善しました。#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). groupUniqArrayがEnum型の引数に対して正しい型を返すよう修正しました。これにより #17875 をクローズしました。#19019 (alexey-milovidov).LowCardinality引数で関数ignoreを使用した際に発生する可能性がある errorExpected single dictionary argument for functionを修正しました。#14275 を修正。#19016 (Nikolai Kochetov) 。TinyLogengine テーブルへの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))へNULLをCASTしようとした際に発生していた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(...)関数 (toDate、toUInt32など) を実行した際に発生する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の後、またはまれにDETACHやDROP 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).- 非リーダーの
ReplicatedMergeTreeTablesでON 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).- 集約関数
boundingRatio、rankCorr、retention、timeSeriesGroupSum、timeSeriesGroupRateSum、windowFunnelは、誤って大文字と小文字を区別しない扱いになっていました。今回、設計どおりこれらの関数名は大文字と小文字を区別するよう修正されました。大文字と小文字を区別しないのは、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_logなどの解析に便利です) 。system.errorsテーブル - error の発生回数を表示します (system_events_show_zero_valuesに従います) 。#16438 (Azat Khuzhin).- 名前付きタプルを展開して SELECT リストに新しいカラムを追加できる特別な関数
untupleを追加しました。#16242 (Nikolai Kochetov、Amos 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).toUUIDOrNull、toUUIDOrZeroのキャスト関数を追加しました。 #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).
実験的機能
- 新しい関数
encrypt、aes_encrypt_mysql、decrypt、aes_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-localでOPTIMIZEコマンドを実行しようとした際に発生する例外を修正しました。#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). minMapとmaxMapの動作を改善し、より適切なものにしました。結果内のゼロ値がスキップされなくなります。#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_generatorにboost::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_leaf、max_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_log、system.trace_log、system.query_log、およびsystem.query_thread_logテーブルにevent_time_microsecondsフィールドを追加しました。#14760 (Bharat Nallan) 。event_time_microsecondsをsystem.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 EXISTSがTable ... does not existエラーで失敗する問題を修正しました (Atomic データベースエンジン) 。複数のテーブルを対象とする一部の DDL クエリ (DROP DATABASEやRENAME TABLEなど) を同時実行したときに、まれに発生していたデッドロックを修正しました。また、DROP/DETACH TABLEを同時実行したときにDROP/DETACH DATABASEがTable ... does not existで失敗する問題を修正しました。#15934 (tavplubix). - クエリに
WHERE、PREWHERE、GLOBAL 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).
- クエリプランの
ReadFromStoragestep におけるリソースの破棄順序を修正しました。まれにクラッシュが発生する可能性がありました。おそらく #15610 に関連しています。#15645 (Nikolai Kochetov). - 読み取り専用テーブルをデタッチする際、
ReadonlyReplicaメトリクスを減算するようにしました。#15592 (sundyli). VALUES、LIMIT、または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).
joinGetをLowCardinality型と併用した際にインスタンスがクラッシュする問題を修正しました。これにより #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_algorith='auto'を指定した RIGHT または FULL JOIN で発生するクラッシュを修正しました。#15002 (Artem Zuikov). - 設定
number_of_free_entries_in_pool_to_execute_mutationとnumber_of_free_entries_in_pool_to_lower_max_size_of_mergeに、background_pool_sizeと同じ値を設定できるようになりました。#14975 (alesapin). finalizeAggregation関数を含むサブクエリで 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).
cacheDictionary におけるセグメンテーション違反を修正しました。#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 -> IntCAST での単調性検出の誤りを修正しました。これにより、クエリ結果が誤る可能性がありました。このバグは #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).
NullableのLowCardinalityに対する関数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 CLUSTERDDLクエリで使用できない問題を修正しました。#14211 (Winter Zhang).MaterializeMySQL(実験的機能) :MaterializeMySQLデータベースエンジンで発生していたPacket payload is not fully readエラーを修正しました。 #14696 (BohuTANG).
改善
- 新規作成されるデータベースで、
Atomicデータベースエンジンがデフォルトで有効になりました。#15003 (tavplubix) 。 - サブタイプを持つカラムで、
Delta、T64などの専用コーデックを指定できるようにしました。#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の結果にSETとJOINのサブクエリを表示するようにしました。#14856 (Nikolai Kochetov) 。- storage
Distributedでマルチボリュームのストレージ構成を使用可能にしました。#14839 (Pavel Kovalenko) 。 query_start_timeとquery_start_time_microsecondsを、同じ timespec から生成するようにしました。#14831 (Bharat Nallan) 。StorageJoinとStorageSetで永続化を無効化できるようになりました。この機能は、設定disable_set_and_join_persistencyで制御されます。また、この PR で issue #6318 も解決されました。#14776 (vxider).- これで、
COLUMNSを使って複数のカラムをまとめて指定し、その後でカラム変換を適用できるようになりました。#14775 (Amos Bird). - マージの確認をしやすくするため、
system.mergesテーブルにmerge_algorithmを追加しました。#14705 (Amos Bird) 。 - ZooKeeper の
existswatch が原因で発生する可能性のあるメモリリークを修正しました。#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_tableがAS 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).
ビルド/テスト/パッケージングの改善
ClickHouse リリース v20.9.6.14-stable, 2020-11-20
改善
- SNI を必要とする
clickhouse-serverのセキュアな endpoint に接続できるようになりました。これは、clickhouse-serverが TLS proxy の背後でホストされている場合に利用できます。#16938 (filimonov). - 条件付き集約関数 (たとえば
avgIf、sumIf、maxIf) は、対象の行が存在せず、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_insetting が有効な場合の、複数カラムおよび tuples に対するINoperator を修正しました。 #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 EXISTSがTable ... does not existエラーで失敗する問題を修正しました (Atomic データベースエンジン) 。複数のテーブルを伴う一部の DDL クエリ (DROP DATABASEやRENAME TABLEなど) を同時実行した際に、まれにデッドロックが発生する問題を修正しました。DROP/DETACH TABLEを同時実行した際に、DROP/DETACH DATABASEがTable ... does not existエラーで失敗する問題を修正しました。#15934 (tavplubix). Distributedテーブルに対するクエリで、WHERE、PREWHERE、GLOBAL 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*関数の結果をVALUES、LIMIT、または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). - 同じ
patternでLIKEを実行した場合に、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).
改善
ClickHouse リリース v20.9.2.20、2020-09-22
後方互換性を持たない変更
- 20.5 より前のバージョンからアップグレードする際にローリングアップデートを実行し、クラスター内に 20.5 以上のバージョンと 20.5 未満のバージョンが混在している場合、旧バージョンの ClickHouse ノードを再起動して、新しいバージョンが存在する環境で旧バージョンが起動すると、
Part ... intersects previous partエラーが発生する可能性があります。このエラーを防ぐには、まずクラスター内のすべてのノードに新しいclickhouse-serverパッケージをインストールし、その後で再起動してください (つまり、clickhouse-serverの再起動時に新しいバージョンで起動するようにします) 。
新機能
- 選択カラムのリスト (
*またはCOLUMNS(...)の後) に適用できるカラム変換子EXCEPT、REPLACE、APPLYを追加しました。たとえば、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 UPDATEmutation で、カラムの値が不正になったり、セグメンテーションフォールトが発生したりする不具合を修正しました。#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 -> IntCAST での誤った単調性判定を修正しました。これにより、クエリ結果が不正になる可能性がありました。このバグは #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).RabbitMQengine を改善しました。接続およびチャネルの障害処理、適切なコミット、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(...)関数 (toDate、toUInt32など) を実行した際に発生する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_sizeがmin_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 EXISTSがTable ... does not existエラーで失敗する問題を修正しました (Atomic データベースエンジン) 。複数のテーブルを対象とする一部の DDL クエリ (DROP DATABASEやRENAME TABLEなど) を同時実行した際に発生するまれなデッドロックを修正しました。DROP/DETACH TABLEの同時実行時に、DROP/DETACH DATABASEがTable ... does not existで失敗する問題を修正しました。#15934 (tavplubix). WHERE、PREWHERE、GLOBAL 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).
- 読み取り専用テーブルをデタッチする際に、
ReadonlyReplicaMetric をデクリメントするようにしました。これにより #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*関数の結果をVALUES、LIMIT、または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の後、またはまれにDETACHやDROP 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_mutationとnumber_of_free_entries_in_pool_to_lower_max_size_of_mergeをbackground_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 -> IntCAST の単調性検出の誤りを修正しました。この不具合により、クエリ結果が誤る可能性がありました。このバグは #14513 で報告されました。#14783 (Amos Bird). Nullableカラムの誤ったソート順を修正しました。これにより #14344 が修正されます。 #14495 (Nikita Mikhaylov).
改善
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 UPDATEmutation によって、カラムの値が不正になる、または 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に変更されたため、falseとtrueはサポートされなくなりました。サーバー設定にこれらの値が含まれている場合、サーバーは起動しません。代わりに、それぞれ0と1に置き換えてください。 #14060 (Azat Khuzhin).ODBCDriver入出力フォーマットのサポートを削除しました。これは以前 ClickHouse ODBC ドライバとの通信用に使われていた非推奨のフォーマットですが、現在は давноODBCDriver2フォーマットに置き換えられています。 #13629 を解決します。 #13847 (hexiaoting).- 20.5 より前のバージョンからアップグレードする際、ローリングアップデートを実施し、クラスターに 20.5 以上と 20.5 未満のバージョンが混在している状態で、旧バージョンの ClickHouse ノードを再起動し、その旧バージョンが新しいバージョンの存在下で起動すると、
Part ... intersects previous partエラーが発生する可能性があります。このエラーを防ぐには、まずすべてのクラスター ノードに新しい clickhouse-server パッケージをインストールし、その後で再起動してください (つまり、clickhouse-server の再起動時に新しいバージョンで起動するようにします) 。
新機能
config.xmlで指定した設定に対応するカラムに対して、Default圧縮コーデックを指定できるようにしました。実装: #9074。#14049 (alesapin)。krb5およびcyrus-saslライブラリを使用した、Kafka での Kerberos 認証をサポートしました。#12771 (Ilya Golshtein)。- リテラル、リテラルの並び、および複雑な別名をプレースホルダーに置き換える関数
normalizeQueryを追加しました。類似したクエリに対して同一の 64bit のハッシュ値を返す関数normalizedQueryHashを追加しました。これによりクエリログを分析しやすくなります。これにより #11271 を解決しました。#13816 (alexey-milovidov)。 time_zonesテーブルを追加しました。#13880 (Bharat Nallan)。- 指定した型のデフォルト値を返す関数
defaultValueOfTypeNameを追加しました。#13877 (hcz)。 - 整数または Decimal カラムの 10 進数の桁数を数える
countDigits(x)関数を追加しました。Decimal カラム内の値がその精度 (または指定した精度) の範囲外かどうかを確認するisDecimalOverflow(d, [p])関数を追加しました。#14151 (Artem Zuikov)。 medianExactLowおよびmedianExactHighに対応する別名を持つquantileExactLowとquantileExactHighの実装を追加しました。#13818 (Bharat Nallan)。- 日付/時刻の値を指定した単位で切り詰める
date_trunc関数を追加しました。#13888 (Vladimir Golovchenko)。 - メイン設定に新しいオプションセクション
<user_directories>を追加しました。#13425 (Vitaly Baranov)。 - テーブルの 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). - 関数
rangeにstepのオーバーフローチェックを追加しました。 #13790 (Azat Khuzhin). DROP DATABASEとCREATE 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).
redisDictionary への接続が一度切断された後にアクセスできなくなる問題を修正しました。これは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)。
- 条件付き集計関数 (例:
avgIf、sumIf、maxIf) は、該当する行がなく、引数に 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) 。
QueryTimeMicroseconds、SelectQueryTimeMicroseconds、InsertQueryTimeMicrosecondsが 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が有効な場合、テーブルエンジンNull、Memory、Distributed、Bufferで並列 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_sizeをmin_insert_block_size_rowsに設定するようにしました。#5907 に関連しています。#12195 (flynn).
実験的機能
- ClickHouse が MySQL のレプリカとして動作できるようになりました。これは
MaterializeMySQLデータベースエンジンによって実装されています。#4006 に対応しています。#10851 (Winter Zhang). Int128、Int256、UInt256型と、それらに関連する関数を追加しました。さらに 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 ファイルはrunnerDocker コンテナー内で利用できます。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_sizeをnumber_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 ...クエリ (現在はATTACHとFREEZE) について、影響を受けたパーツの情報を出力する設定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). SimpleAggregateFunctionにminMapおよび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 DATABASEとCREATE TABLEを同時実行した際に発生していたDirectory not emptyエラーを修正しました。#13756 (alexey-milovidov) 。h3KRing関数に範囲チェックを追加しました。これにより、#13633 が修正されます。#13752 (alexey-milovidov).- DETACH とバックグラウンドマージの間で発生する競合状態を修正しました。DETACH 後にパーツが復活してしまう場合がありました。これは #8602 の続きで、同 issue では問題自体は修正されなかったものの、この問題を示す、非常にまれなケースで失敗し始めるテストが導入されました。#13746 (alexey-milovidov).
log_queries_min_typeがQUERY_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 JOINでjoin_use_nulls=1を使用した場合に発生するクラッシュを修正しました。#13291 (Artem Zuikov).- 遅延したレプリカからのクエリで発生する可能性があるエラー
Totals having transform was already added to pipelineを修正しました。#13290 (Nikolai Kochetov) 。 - ユーザーが関数
h3ToChildrenに意図的に細工された引数を渡した場合、サーバーがクラッシュする可能性がありました。これにより #13275 が修正されます。#13277 (alexey-milovidov). NaN値を含む Float 型に対してuniqExact、topK、sumDistinctおよび同様の集約関数を呼び出した際に、パフォーマンスが低下する可能性があり、結果がわずかに不正確になる問題を修正しました。また、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) 。- 接続が一度切断された後に
redisDictionary へアクセスできなくなる問題を修正しました。この問題は、cacheおよびdirectの Dictionary レイアウトで発生する可能性があります。#13082 (Anton Popov). - 関数使用時の誤った索引解析を修正しました。これにより、
MergeTreeテーブルの読み取り時に一部のデータパーツがスキップされる可能性がありました。#13060 を修正。#12406 を修正。#13081 (Anton Popov). - クエリのスコープ内では決定論的だが、
now()、now64()、randConstant()のようにクエリ間では決定論的でない関数を使用するリモートクエリで発生する errorCannot 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 DELETEとALTER MODIFY COLUMNのクエリが単一の mutation として同時に実行された場合に発生する、まれなバグを修正しました。このバグによりcount.txt内の行数が正しくなくなり、その結果 part 内のデータも不正になっていました。あわせて、ALTER RENAME COLUMNとALTER ADD COLUMNを同時に実行した際に発生する小さなバグも修正しました。#12760 (alesapin).- リモートテーブルにクエリを実行する際に、
clickhouseDictionary ソースで誤った認証情報が使用される問題を修正しました。#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)。
QueryTimeMicroseconds、SelectQueryTimeMicroseconds、InsertQueryTimeMicrosecondsをsystem.eventsに、またsystem.metrics、processes、query_logなどにも追加しました。#13028 (ianton-ru).SelectedRowsとSelectedBytesが、system.eventsに加えてsystem.metrics、processes、query_log などにも追加されました。 #12638 (ianton-ru).system.query_logにcurrent_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).Log、TinyLog、StripeLogエンジンでの挿入エラーをロールバックするようにしました。以前のバージョンでは、挿入エラーが発生するとテーブルの状態に不整合が生じていました (これはドキュメントに記載されているとおりの動作であり、これらのテーブルエンジンでは正常です) 。これにより #12402 が修正されます。#12426 (alexey-milovidov).AtomicデータベースエンジンでRENAME DATABASEとRENAME DICTIONARYを実装しました。-ReplicatedMergeTreeの ZooKeeper パス内で使用できる暗黙的な{uuid}マクロを追加しました。これはCREATE ... ON CLUSTER ...クエリで動作します。使用するには、show_table_uuid_in_table_create_query_if_not_nilをtrueに設定してください。-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 型に対して
uniqExact、topK、sumDistinctなどの集約関数を呼び出した際に、パフォーマンスが低下する可能性があり、結果がわずかに不正確になる問題を修正しました。また、デバッグビルドで 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 DELETEとALTER MODIFY COLUMNのクエリが 1 つの mutation として同時に実行された際に発生する、まれなバグを修正しました。このバグによりcount.txtの行数が不正になり、その結果、part 内のデータも不正になっていました。あわせて、ALTER RENAME COLUMNとALTER 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) 。- 関数
ifでArray(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) 。SummingMergeTreeengine がパーティションキーのカラムを合計する際の動作を修正しました。合計対象のカラムを明示的に定義した場合に、それがパーティションキーのキーカラムと重複していると例外を発生させるようにしました。これにより #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).
greatCircleDistance、geoDistanceにおける潜在的な無限ループを修正しました。これにより #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) 。-StateResamplecombinatorで発生するセグメンテーションフォルトを修正しました。#12092 (Anton Popov) 。- SELECT クエリにおける
system.quey_logのresult_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). formatDateTimefunction で、%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-tidyやPVS-Studioと併用する、別の静的アナライザです。#12138 (alexey-milovidov). - UNBUNDLED ビルド向けの軽微な CMake 修正を行いました。#12131 (Matwey V. Kornilov).
- Linux ディストリビューションを一切使わない最小 Docker イメージの実例を追加しました。#12126 (alexey-milovidov).
clickhouse-serverの Docker イメージ内のシステムパッケージをアップグレードしました。#12124 (Ivan Blinkov).system.build_optionsテーブルにUNBUNDLEDフラグを追加しました。clickhouse-testのスキップリストを clickhouse リポジトリに移動しました。#12107 (alesapin).clickhouse-serverDocker イメージ内の CVE を検出する Anchore Container Analysis セキュリティ解析ツールによる定期チェックを追加しました。あわせて、Dockerfileがビルド可能であることも確認します。これはmasterとDockerfileへのプルリクエストに対して毎日実行されます。#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) 。 - 関数
ifがArray(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).KafkaEngine で、バッチの途中にエラーを含むメッセージがある場合に発生していた 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_processorssetting を削除しました。これはデフォルトで有効になっています。#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.partsにmove_ttl_infoを追加しました。#10591 (Vladimir Chebotarev) 。 - プロキシ経由でS3を利用できるようになりました。 #10576 (Pavel Kovalenko).
- データ型の別名として
NCHARとNVARCHARを追加しました。#11025 (alexey-milovidov) 。 - #7224 を修正し、
system.eventsテーブルにFailedQuery、FailedSelectQuery、FailedInsertQueryメトリクスを追加しました。#11151 (Nikita Orlov) 。 system.asynchronous_metricsにjemallocの統計情報をさらに追加し、それらの値が常に最新のものになるようにしました。#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).
SimpleAggregateFunctionがsumMapにも対応しました。#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_PARTtask を保持したままで、それらの実行を試みることがありました。これにより #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 FINALのPipeline 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_bandwidth、max_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).cacheDictionary が、通常の値ではなくデフォルト値を返してしまうことがある不具合を修正しました (期限切れのキーしか存在しない場合) 。これは文字列フィールドにのみ影響します。 #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/DROPとRENAMEを行えるようになりました。同時にMODIFYとRENAMEを行った場合の例外メッセージも、よりわかりやすくなりました。#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).
ALTERとDROP 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*関数のAggregateFunctionstate を格納する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 これにより、
clangbuilds で-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)。 - マージ後に発生する可能性があった、
SummingMergeTreeのLowCardinality(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(これによりEXDEVでlink(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 をそのまま保持するようになりました。これにより、LIKEやmatch正規表現をより便利に使えるようになり (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-clientとclickhouse-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およびgroupUniqArrayArrayをSimpleAggregateFunctionとして使用可能にしました。#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_idparameter をサポートしました。また、ClickHouse が Kafka と通信する際に使用するデフォルトのclient.idを、より詳細で使いやすいものに変更しました。#11252 (filimonov). - 例外発生時でも
DistributedFilesToInsertMetric の値が保持されるようになりました。以前のバージョンでは、ファイルを送信しようとする時点で値が設定されていましたが、例外が発生して未送信のファイルが残っていても、値は 0 になっていました。現在は、filesystem 上で保留中のファイル数に対応しています。 #11220 (alexey-milovidov). - 複数語のデータ型名 (
DOUBLE PRECISIONやCHAR 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_views、min_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) 。
- 数値誤差によって
varSamp、varPopが負の値を返したり、stddevSamp、stddevPopが負の分散をもとに計算されたりしないようにしました。これにより #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_sortにbitonic_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_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 型に対して呼び出された
uniqExact、topK、sumDistinctおよび同様の集約関数で発生する可能性のあった性能低下と、わずかに不正確な結果を修正しました。また、デバッグビルドで 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).
greatCircleDistance、geoDistanceにおける潜在的な無限ループを修正しました。これにより、#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_logのresult_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).
topKaggregate 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_PARTtask が残っており、その実行を試みることがありました。これにより #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 これにより、
clangbuilds で-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_bandwidth、max_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 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).
ビルド/テスト/パッケージングの改善
ClickHouse リリース v20.4.4.18-stable 2020-05-26
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*関数のAggregateFunctionstate を保持するMemoryengine のテーブルを読み取る際に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におけるUBSanとMSanの検出結果に関する問題を修正しました。#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) - 関数
leastとgreatestに汎用バリアントが追加されました。これにより、任意の型の引数を任意の個数受け取って動作するようになりました。これで #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演算子でNULLをNULLと等しいものとして扱うようになりました。 #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およびTIMESTAMPSQL演算子をサポート。例: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) - マージ後に発生する可能性があった、
SummingMergeTreeのLowCardinality(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)
- リモートクエリで発生する可能性がある、
ConcatProcessorのPipeline 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におけるDROPとOPTIMIZEの競合を修正しました。同時実行の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_byとgroup_by_overflow_mode = 'break'の使用時に発生するエラーPipeline stuckを修正しました。 #10279 (Nikolai Kochetov)- DDLクエリを使用して
range_hashedDictionary を作成する際に発生する ‘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.numbersやsystem.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)
JOINとUNION 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 CLUSTERDDLクエリがフリーズする不具合を修正しました。 #9927 (Gagan Arneja) - 一部のデータベースに対するクエリ処理のある段階で、必要なテーブルが取得されない不具合を修正しました。#9699。#9949 (achulkov2)
JOINがTOTALSと併用された場合の ‘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)
sumKahanとsumWithOverflowの誤った内部関数名を修正しました。これにより、リモートクエリでこれらの関数を使用した際に例外が発生していました。 #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/QUOTA、GRANTコマンドで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_logにtimestamp_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_lock、pthread_mutex_unlock関数周辺にさまざまなグリッチを追加できるようにしました。 #9635 (alexey-milovidov)packagerスクリプトにclang-tidy対応を追加しました。#9625 (alexey-milovidov)- バンドルされていない msgpack を使用できるようにしました。 #10168 (Azat Khuzhin)
ClickHouse リリース v20.3
ClickHouse リリース v20.3.21.2-lts, 2020-11-02
バグ修正
sharding_key内の dictGet (および同様の箇所、つまり関数のコンテキストが永続的に保持される場合) を修正しました。 #16205 (Azat Khuzhin).- クエリに
WHERE、PREWHERE、GLOBAL INが含まれる場合に、Distributedtable からのクエリ結果が誤って空になる問題を修正しました。#15792 の修正です。 #15933 (Nikolai Kochetov). TSV/CSVWithNamesフォーマットでヘッダーが欠落したり過剰に出力されたりする問題を修正しました。これにより #12504 も修正されます。 #13343 (Azat Khuzhin).
ClickHouse リリース v20.3.20.6-lts、2020-10-09
バグ修正
MOVEまたはREPLACE PARTITIONの後、またはまれにDETACHやDROP 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 UPDATEmutation で、カラムの値が不正になったり、セグメンテーション違反が発生したりする不具合を修正しました。#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 型に対して呼び出されたuniqExact、topK、sumDistinctおよび同様の集約関数で、パフォーマンスが低下する可能性があり、結果がわずかに不正確になる問題を修正しました。また、デバッグビルドでアサートがトリガーされることもありました。これにより #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).
greatCircleDistance、geoDistanceにおける潜在的な無限ループを修正しました。これにより #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_PARTtask が残っており、引き続きそれを実行しようとすることがありました。これにより #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_lifetime、query_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_bandwidth、max_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).
- 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).
ビルド/テスト/パッケージングの改善
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). - マージ後に発生する可能性があった、
SummingMergeTreeのLowCardinality(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).
ビルド/テスト/パッケージングの改善
- LZ4 ライブラリの UBSan レポートを修正しました。 #10631 (alexey-milovidov).
- clang-10 のビルドを修正しました。 #10238. #10370 (Amos Bird).
max_rows_to_sort設定に関する失敗テストを追加しました。 #10268 (alexey-milovidov).- 入力フォーマットでの診断情報の出力を改善しました。 #10204 を修正しました。 #10418 (tavplubix).
- clickhouse-server の Docker イメージに CA 証明書を追加しました。 #10476 (filimonov).
バグ修正
- エラー
the BloomFilter false positive must be a double number between 0 and 1の不具合を修正しました #10551。 #10569 (Winter Zhang).
ClickHouse リリース v20.3.8.53、2020-04-23
バグ修正
- UTC からのオフセットが正負をまたぐタイムゾーン (例: Pacific/Kiritimati) における datetime 関数の誤動作を修正しました。これにより #7202 #10369 が修正されました (alexey-milovidov)
distributed_group_by_no_merge有効時に発生する可能性があるセグメンテーションフォルトを修正しました (20.3.7.46 で導入、#10131) 。#10399 (Nikolai Kochetov)Array(Tuple(...))データ型の誤ったフラット化を修正しました。これにより、#10259 #10390 を修正しています。(alexey-milovidov)- Aggregator におけるディスク予約を廃止しました。これにより、ディスク容量の予約に関する不具合が修正され、正常に完了できるはずの大規模な外部集約が失敗することがある問題を解消しました #10375 (Azat Khuzhin)
ReplicatedMergeTreeにおけるDROPとOPTIMIZEの競合を修正しました。同時実行のOPTIMIZEクエリがある場合、DROPによって ZooKeeper のレプリカパスに不要なデータが残ることがありました。#10312 (tavplubix)- カラムのデフォルト値を変更した後、サーバーがテーブルをアタッチできなくなるバグを修正しました。#10441 (alesapin)
- テーブルの読み込み前にデータベースの attach が失敗した場合、metadata ディレクトリを削除しないようにしました。 #10442 (Winter Zhang)
- 一部のデータがクォーラム付きで挿入された後、何らかの理由で削除された場合 (DROP PARTITION、有効期限 (TTL)) に、INSERT が停止したり、SELECT で誤検知の例外が発生したりする不具合をいくつか修正しました。この修正は #9946 #10188 に対応しています (Nikita Mikhaylov)
- リモートクエリで発生する可能性のあった
ConcatProcessorのPipeline 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.numbersやsystem.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).
JOINがTOTALSとともに使用された場合に発生する ‘Not found column in block’ エラーを修正しました。#9839。#9939 (Artem Zuikov).- サーバーの起動時に
ON CLUSTERDDL クエリがフリーズする不具合を修正しました。#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).
ビルド/テスト/パッケージングの改善
- インテグレーションテスト
test_settings_constraintsを修正しました。#9962 (Vitaly Baranov). clock_getresへの依存を削除しました。#9833 (alexey-milovidov).
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)findClusterIndex、findClusterValue関数を削除しました。これにより #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 TABLEにMOVE PARTITIONコマンドを追加しました #4729 #6168 (Guillaume Tassery)- 実行中に設定ファイルからストレージ構成を動的に再読み込みできるようになりました。 #8594 (Vladimir Chebotarev)
storage_policyを、現在のものより制約の厳しくないものに変更できるようにしました。 #8107 (Vladimir Chebotarev)- S3ストレージおよびテーブル関数で、グロブ/ワイルドカードをサポートしました。#8851 (Vladimir Chebotarev)
FixedString(N)データ型に対してbitAnd、bitOr、bitXor、bitNotを実装。 #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-CodeHTTPヘッダーを追加しました。これは #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)Log、TinyLog、StripeLogテーブルでの 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=1でANY|ALL|SEMI LEFTおよびALL INNERJOIN を実行できるようになりました。#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 FROM、REPLACE PARTITION、MOVE 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) reinterpretAsFixedStringがStringではなく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 が修正されます。さらに、ReplicatedMergeTreeのALTERクエリでごくまれに発生する競合状態も修正しました。#9048 (alesapin)- 設定
compile_expressionsが有効な場合、Nullable型の使用時にLLVMExecutableFunctionでunexpected 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-benchmarkでquery_idを設定できるようになりました #9416 (Anton Popov)ALTER TABLE ... PARTITION partitionクエリで想定外の式を許可しないようにしました。これにより #7192 #8835 に対処しました (alexey-milovidov)- テーブル
system.table_enginesは、supports_ttlやsupports_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)stochasticLinearRegressionaggregate 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の対話的な行編集で、readlineをreplxxに置き換えました #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)
libcxxとlibcxxabiを 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 で、numbersをzerosに置き換えました。これにより、テスト結果がよりクリーンになります。#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
バグ修正
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_bandwidth、max_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).
- マージ後に発生する可能性があった、
SummingMergeTreeのLowCardinality(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 JOIN、ORDER BY、LIMITを含むクエリが不完全な結果を返すことがある問題を修正しました。これにより #10226 の問題が解消されます。#10427 (alexey-milovidov).skip_unavailable_shardsではなく、fallback_to_stale_replicasを使用してください。#10422 (Azat Khuzhin) 。Array(Tuple(...))データ型の誤ったフラット化を修正しました。これにより #10259 を修正しました。#10390 (alexey-milovidov).- バッファからHashMapを読み取ろうとした際にコンパイルエラーが発生していた
HashTableの不正な挙動を修正しました。 #10386 (palasonic1) 。 - リモートクエリで発生する可能性があった
ConcatProcessorのPipeline stuckエラーを修正しました。#10381 (Nikolai Kochetov). max_rows_to_group_byとgroup_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 リリース 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.numbersやsystem.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). JOINとUNION 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)。
JOINがTOTALSとともに使用された場合に発生する'Not found column in block'エラーを修正しました。#9839。#9939 (Artem Zuikov)。- サーバー起動時に
ON CLUSTERDDLクエリが停止する不具合を修正しました。#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
バグ修正
- クエリに
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).- クライアントで発生しうる
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).
ビルド/テスト/パッケージングの改善
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) が修正されます。
ビルド/テスト/パッケージングの改善
- Windows Subsystem for Linux で例外処理が正しく動作するようになりました。https://github.com/ClickHouse-Extras/libunwind/pull/3 を参照してください。これにより #6480 が修正されました #9564 (sobolevsv)
ClickHouse リリース v20.1.6.30, 2020-03-05
バグ修正
T64codec圧縮時のデータ非互換性を修正。 #9039 (abyss7)- 1 つのスレッドで MergeTree テーブルから読み取る際の範囲の順序を修正しました。 #8964 の修正です。 #9050 (CurtizJ)
PREWHEREの実行中にMergeTreeRangeReaderで発生する可能性があるセグメンテーション違反を修正しました。#9064 の修正です。 #9106 (CurtizJ)reinterpretAsFixedStringがStringではなく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演算子がある場合に、CROSSをINNER 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 FROM、REPLACE PARTITION、MOVE 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_indices、allow_experimental_cross_to_join_conversion、allow_experimental_multiple_joins_emulationは現在では廃止されており、何の効果もありません。#7974 (alexey-milovidov) JOIN操作と整合する、新しいStorageJoinのANY 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) CSV、TSV、JSONEachRowフォーマットのデータファイルを並列にパースすることで、高速化しました。#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 t2はt2 ANY RIGHT JOIN t1と同等になりました。#7665 (Artem Zuikov)ANY INNER JOINの旧来の動作を有効にする設定any_join_distinct_right_table_keysを追加しました。#7665 (Artem Zuikov)- 新たに
SEMIとANTI JOINを追加しました。従来のANY INNER JOINの挙動は、SEMI LEFT JOINとして利用できるようになりました。 #7665 (Artem Zuikov) - 非同期 insert により
Distributedテーブルに対して生成された.binファイルを読み取れるDistributedフォーマットを、Fileエンジンおよびfileテーブル関数向けに追加しました。 #8535 (Nikolai Kochetov) runningAccumulateに、省略可能な reset 用のカラム引数を追加しました。これにより、新しいキー値ごとに集約結果をリセットできます。#8326 (Sergey Kononenko)- ClickHouse を Prometheus エンドポイントとして利用できるようにしました。 #7900 (vdimir)
config.xmlに、リモートテーブルエンジンおよびテーブル関数URL、S3、HDFSで許可するホストを制限する<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) - 現在、
TSV、TSKV、CSV、JSONEachRowフォーマットでは、並列パースがデフォルトで有効になっています。#7894 (Nikita Mikhaylov) H3ライブラリの Geo 関数h3GetResolution、h3EdgeAngle、h3EdgeLength、h3IsValid、h3kRingをいくつか追加しました。#8034 (Konstantin Malanchev)- ファイル関連のストレージおよびテーブル関数で、brotli (
br) 圧縮をサポートしました。これにより #8156 が修正されました。#8526 (alexey-milovidov) SimpleAggregationFunction型用のgroupBit*関数を追加しました。 #8485 (Guillaume Tassery)
バグ修正
Distributedengine の 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)- これで、テーブルエンジン
KafkaがNativeフォーマットで正しく動作するようになりました。これにより、#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オブジェクトへの参照の使用により、テーブル関数 (file、mysql、remote) で発生する可能性があったクラッシュを修正しました。テーブル関数への挿入時に指定されたカラムのパースが正しく行われない問題を修正しました。#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 ALLAST のフォーマットに関する軽微なタイプミスを修正しました。#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 DICTIONARYはupdate_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-serverのpid-fileが削除されてしまう可能性がある問題を修正しました。#8487 (Weiqing Xu) invalidate_queryを持つ Dictionary の再読み込みに関する不具合を修正しました。これにより、更新が停止したり、以前の更新試行時に一部の例外が発生したりする問題が解消されました。 #8029 (alesapin)arrayReduce関数で “double free” を引き起こす可能性のあるerror と、メモリリークを引き起こす可能性のある集約関数combinatorResampleの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)
FINALとSAMPLEを同時に使用した際に発生するエラー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 DATABASE、DETACH TABLE、DROP TABLE、ATTACH 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)arrayDifference、arrayCumSum、arrayCumSumNegative関数が 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テーブルを持つMerge、Buffer、Materilized 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データ型でのmax、min、argMin、argMaxのパフォーマンスを改善しました。 #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) roundとroundBankersでの負数の処理を改善しました。#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.txtでadd_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::exceptionとPoco::Exceptionでもスタックトレースが表示されるようになりました。以前のバージョンでは、DB::Exceptionでのみ利用可能でした。これにより、診断がしやすくなります。#8501 (alexey-milovidov)- 新しいバージョンのglibc向けに
clock_gettimeとclock_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内のgccとg++をバージョン 9 に更新 #7766 (TLightSky)PREWHEREがWHEREよりも低速であることを確認するための性能テストケースを追加しました。 #7768 (Amos Bird)- 不安定なテスト1件の修正を進めた。 #8621 (alexey-milovidov)
libunwind由来のデータに対する MemorySanitizer のレポートを回避しました。 #8539 (alexey-milovidov)libc++を最新版に更新しました。#8324 (alexey-milovidov)- ICU ライブラリをソースコードからビルドするようにしました。これにより、#6460 が修正されます。#8219 (alexey-milovidov)
libresslからopensslに切り替えました。この変更により、ClickHouse は TLS 1.3 と SNI をサポートするようになります。これにより #8171 が修正されます。#8218 (alexey-milovidov)- SSL の
chacha20_poly1305使用時に発生する UBSan レポートを修正しました (https://yandex.ru/ への接続時に発生) 。 #8214 (alexey-milovidov) .debLinuxディストリビューション向けのデフォルトのパスワードファイルのパーミッションを修正。 #8075 (proller)clickhouse-testでclickhouse-serverの PID を取得する式を改善しました。#8063 (Alexander Kazakov)- contrib/googletest を v1.10.0 に更新。 #8587 (Alexander Burmak)
base64ライブラリで報告されていた ThreadSanitizer の問題を修正しました。あわせてこのライブラリを最新バージョンに更新しましたが、こちらは本質的ではありません。これにより #8397 が修正されます。 #8403 (alexey-milovidov)- プロセッサ向けの
00600_replace_running_queryを修正しました。 #8272 (Nikolai Kochetov) CMakeLists.txtを簡素化するために、tcmallocのサポートを削除しました。 #8310 (alexey-milovidov)- リリース用の gcc ビルドでは、
libstdc++ではなくlibc++を使うようになりました。これまでlibc++は clang でのみ使われていました。これにより、ビルド構成の一貫性と移植性が向上します。#8311 (alexey-milovidov) - MemorySanitizer を使用するビルドで ICU ライブラリを有効化。 #8222 (alexey-milovidov)
CapNProtoライブラリの警告を抑制しました。 #8224 (alexey-milovidov)tcmallocは現在サポートされていないため、これに関するコード内の特別なケースを削除しました。#8225 (alexey-milovidov)- CI のカバレッジタスクで、カバレッジレポートを保存できるよう、サーバーを正常に終了させるようにしました。これにより、最近発生していた不完全なカバレッジレポートの問題が修正されます。 #8142 (alesapin)
- すべてのコーデックについて、
Float64およびUInt64の値に対するパフォーマンステスト。 #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、新しい関数currentQuota、currentQuotaKey、新しい SQL 構文CREATE QUOTA、ALTER QUOTA、DROP QUOTA、SHOW QUOTAを追加しました。#7257 (Vitaly Baranov) - 不明な設定を、例外をスローする代わりに警告付きでスキップできるようにしました。#7653 (Vitaly Baranov)
- アクセス制御システムの一部として行ポリシーを作り直しました。新しいテーブル
system.row_policies、新しい関数currentRowPolicies()、新しい SQL 構文CREATE POLICY、ALTER POLICY、DROP POLICY、SHOW CREATE POLICY、SHOW POLICIESを追加しました。#7808 (Vitaly Baranov)
セキュリティ修正
Fileテーブルエンジンを使用するテーブルで、ディレクトリ構造を読み取れてしまう可能性があった問題を修正しました。これにより #8536 を修正しました。#8537 (alexey-milovidov)