ClickHouse リリース 19.17
ClickHouse リリース 19.17.6.36、2019-12-27
バグ修正
- decompress における潜在的なバッファオーバーフローを修正しました。悪意のあるユーザーが細工された圧縮データを渡すと、バッファ終端を越えて読み取りが発生する可能性がありました。この問題は、Yandex 情報セキュリティチームの Eldar Zaitov によって発見されました。 #8404 (alexey-milovidov)
- String データ型の値 (UTF-8 検証が必要なもの) を含む JSON または XML フォーマットで、サーバーがデータを送信または書き込めない場合や、Brotli アルゴリズムで結果データを圧縮する場合など、まれに発生するサーバークラッシュ (
std::terminate) を修正しました。 #8384 (alexey-milovidov) - ClickHouse の
VIEWをソースとするディクショナリに関する問題を修正し、これらのディクショナリを読み込んでもThere is no queryエラーが発生しないようになりました。 #8351 (Nikolai Kochetov) - users.xml で指定された host_regexp に基づくクライアントホストの許可チェックを修正しました。 #8241, #8342 (Vitaly Baranov)
- 分散テーブルに対する
RENAME TABLEで、分片へ送信する前に、挿入データを含むフォルダ名も変更されるようになりました。これにより、tableA->tableB、tableC->tableAのように連続して名前変更を行った際に発生していた問題を修正しました。#8306 (tavplubix) - DDLクエリで作成された
range_hashed外部辞書で、任意の数値型の範囲が使えるようになりました。#8275 (alesapin) INSERT INTO table SELECT ... FROM mysql(...)テーブル関数を修正しました。#8234 (tavplubix)- 存在しないファイルへの挿入時に発生していた
INSERT INTO TABLE FUNCTION file()のsegfaultを修正しました。これにより、この場合はまずファイルが作成され、その後に挿入処理が行われるようになりました。 #8177 (Olga Khvostikova) - 集計ビットマップとスカラービットマップの積集合を求める際に発生するbitmapAndのエラーを修正しました。 #8082 (Yue Huang)
EXISTSクエリをTABLEまたはDICTIONARY修飾子を付けずに、EXISTS tのように使用した場合に発生していた segfault を修正しました。#8213 (alexey-milovidov)- Nullable 型の引数に対する関数
randとrandConstantの戻り値の型を修正しました。これらの関数は теперь 常にUInt32を返し、Nullable(UInt32)を返すことはありません。#8204 (Nikolai Kochetov) DROP DICTIONARY IF EXISTS db.dictを修正し、dbが存在しない場合でも例外がスローされないようにしました。#8185 (Vitaly Baranov)- サーバークラッシュによりテーブルが完全に削除されないままになった場合、サーバーはそれを復元して読み込もうとします #8176 (tavplubix)
- 分散テーブルに対する単純な count クエリで、分片のローカルテーブルが 3 つ以上ある場合の不具合を修正しました。#8164 (小路)
- DB::BlockStreamProfileInfo::calculateRowsBeforeLimit() でデータ競合が発生していたバグを修正しました #8143 (Alexander Kazakov)
- 指定したパートのマージ直後に
ALTER table MOVE partを実行すると、指定したパートのマージ先となったパートを移動してしまう不具合を修正しました。現在は、指定したパートを正しく移動します。#8104 (Vladimir Chebotarev) - 辞書の式を文字列で指定できるようになりました。これにより、ClickHouse以外のソースからデータを抽出する際の属性計算で、それらの式にClickHouse以外の構文を使用できるため便利です。 #8098 (alesapin)
- ZXid のオーバーフローにより、
clickhouse-copierでごくまれに発生していたレースコンディションを修正しました。#8088 (Ding Xiang Fei) - クエリが失敗した後 (たとえば “Too many simultaneous queries” が原因の場合) に external table の情報を読み取れず、次のリクエストでその情報を次のクエリの先頭として解釈して
Unknown packet from clientのようなエラーを引き起こしていた不具合を修正しました。#8084 (Azat Khuzhin) - “Unknown packet X from server” の後にヌル参照が発生しないよう修正 #8071 (Azat Khuzhin)
- すべての ICU ロケールのサポートを復元し、定数式に照合順序を適用できるようにし、system.collations テーブルに言語名を追加しました。 #8051 (alesapin)
StorageFileとStorageHDFSからの読み取りに使用するストリーム数が、メモリ制限の超過を防ぐために制限されるようになりました。 #7981 (alesapin)- キーを持たない
*MergeTreeテーブルに対するCHECK TABLEクエリを修正しました。#7979 (alesapin) - mutation が存在しない場合は、part 名から mutation 番号を削除するようにしました。これにより、旧バージョンとの互換性が向上しました。 #8250 (alesapin)
- 一部のアタッチ済みパーツで、data_version がテーブルの mutation バージョンより大きいために mutation がスキップされる不具合を修正しました。 #7812 (Zhichang Yu)
- パーツを別のデバイスに移動した後でも、重複したコピーが残っている状態でサーバーを起動できるようにしました。 #7810 (Vladimir Chebotarev)
- 集約関数のカラムを使用した際に発生することがあったエラー “Sizes of columns does not match” を修正しました。 #7790 (Boris Granveaud)
- WITH TIES を LIMIT BY と併用した場合に、例外が発生するようになりました。また、LIMIT BY で TOP を使用できるようになりました。 #7637 (Nikita Mikhaylov)
invalidate_queryを持つ Dictionary で、更新が停止してしまう問題と、以前の更新試行時に一部の例外が発生していた問題を修正しました。 #8029 (alesapin)
ClickHouse リリース 19.17.4.11、2019-11-22
後方互換性を持たない変更
- パフォーマンス向上のため、スカラーサブクエリの結果の保存に AST ではなくカラムを使用するようになりました。設定
enable_scalar_subquery_optimizationは 19.17 で追加され、デフォルトで有効になりました。このため、以前のバージョンから 19.17.2 または 19.17.3 へアップグレードする際に、この ようなエラーが発生します。19.16 以前のバージョンからエラーなしでアップグレードできるようにするため、この設定は 19.17.4 でデフォルトでは無効になりました。#7392 (Amos Bird)
新機能
- DDLクエリでDictionaryを作成できるようにしました。#7360 (alesapin)
bloom_filter型の索引でLowCardinalityとNullableをサポートしました。#7363 #7561 (Nikolai Kochetov)- 渡された文字列が有効な JSON かどうかを確認する
isValidJSON関数を追加しました。#5910 #7293 (Vdimir) arrayCompact関数を実装しました。#7328 (Memo)- Decimal 型の数値向けに
hex関数を追加しました。これはhex(reinterpretAsString())と同様に動作しますが、末尾のゼロバイトは削除しません。#7355 (Mikhail Korotov) arrayFillおよびarrayReverseFill関数を追加しました。これらは、配列内の要素を前方または後方の別の要素で置き換えます。#7380 (hcz)CRC32IEEE()/CRC64()のサポートを追加しました。#7480 (Azat Khuzhin)- mysql にあるものと同様の
char関数を実装しました。#7486 (sundyli) bitmapTransform関数を追加しました。これは bitmap 内の値の配列を別の値の配列に変換し、その結果として新しい bitmap を返します。#7598 (Zhichang Yu)javaHashUTF16LE()関数を実装しました。#7651 (achimbab)- Distributed エンジン向けに仮想カラム
_shard_numを追加しました。#7624 (Azat Khuzhin)
実験的機能
MergeTreeでプロセッサ (新しいクエリ実行パイプライン) のサポートを追加しました。#7181 (Nikolai Kochetov)
バグ修正
Valuesにおける浮動小数点数の誤ったパースを修正 #7817 #7870 (tavplubix)- trace_log が有効な場合にまれに発生するデッドロックを修正しました。#7838 (filimonov)
- そこから選択するMVがあるKafkaテーブルでのメッセージ重複を防止 #7265 (Ivan)
INでのArray(LowCardinality(Nullable(String)))のサポート。#7364 #7366 を修正 (achimbab)SQL_TINYINTとSQL_BIGINTの処理を追加し、ODBC Bridge におけるSQL_FLOATデータソースの型の処理を修正しました。#7491 (Denis Glazachev)- 空の Decimal カラムに対する集約 (
avgと分位点) の修正 #7431 (Andrey Konyaev) - Distributed への
INSERTにおけるMATERIALIZEDカラムの不具合を修正 #7377 (Azat Khuzhin) - パーティション内の一部のパーツがすでに宛先ディスクまたはボリューム上にある場合でも、
MOVE PARTITIONが動作するようにしました #7434 (Vladimir Chebotarev) - マルチディスク構成の
ReplicatedMergeTreeで、ミューテーション中にハードリンクを作成できない不具合を修正しました。#7558 (Vladimir Chebotarev) - MergeTree に対する mutation で、パート全体に変更がないにもかかわらず、別のディスク上に最適な空き領域を見つけようとする場合に発生していたバグを修正しました #7602 (Vladimir Chebotarev)
keep_free_space_ratioがdisks設定から読み込まれない不具合を修正 #7645 (Vladimir Chebotarev)Tupleカラムのみを含むテーブル、または複雑なパスを持つカラムのみを含むテーブルで発生する不具合を修正しました。7541。#7545 (alesapin)- max_memory_usage の制限に Buffer エンジンのメモリを算入しない #7552 (Azat Khuzhin)
tuple()で順序付けされたMergeTreeテーブルでの final mark の扱いを修正しました。まれに、SELECT 時にCan't adjust last granuleエラーが発生することがありました。#7639 (Anton Popov)- Context を必要とする actions を含む predicate を持つ mutations (たとえば JSON 用の関数) で、クラッシュや不可解な Exception につながる不具合を修正しました。 #7664 (alesapin)
data/およびshadow/ディレクトリ内でのデータベース名とテーブル名のエスケープ処理の不一致を修正 #7575 (Alexander Burmak)- RIGHT|FULL JOIN で重複したキーをサポートしました。たとえば、
ON t.x = u.x AND t.x = u.yのようなケースです。この場合に発生するクラッシュを修正しました。#7586 (Artem Zuikov) - 式を指定した RIGHT または FULL JOIN で発生する
Not found column <expression> in blockを修正しました。#7641 (Artem Zuikov) PrettySpaceフォーマットの無限ループを修正するための追加の試み #7591 (Olga Khvostikova)- すべての引数が同じサイズの
FixedStringである場合にconcat関数で発生するバグを修正しました。 #7635 (alesapin) - S3、URL、HDFS ストレージの定義時に、引数を 1 つだけ使用した場合に発生する例外を修正しました。 #7618 (Vladimir Chebotarev)
- クエリ付きビューに対する InterpreterSelectQuery のスコープを修正 #7601 (Azat Khuzhin)
改善
- ODBC-bridge で
Nullableカラムが認識され、NULL 値が正しく処理されるようになりました #7402 (Vasily Nemkov) - 分散送信向けの現在のバッチを原子的に書き込むようにしました #7600 (Azat Khuzhin)
- クエリ内のカラム名に対応するテーブルを特定できない場合、例外を発生させるようにしました。 #7358 (Artem Zuikov)
MergeTreeSettingsにmerge_max_block_size設定を追加しました #7412 (Artem Zuikov)HAVINGを含みGROUP BYを含まないクエリでは、定数でグループ化するものとみなすようになりました。そのため、SELECT 1 HAVING 1は結果を返すようになりました。 #7496 (Amos Bird)- Python と同様に
(X,)をタプルとしてパースできるようになりました。 #7501, #7562 (Amos Bird) range関数の挙動を、Python に近いものにしました。 #7518 (sundyli)- テーブル
system.settingsにconstraintsカラムを追加しました #7553 (Vitaly Baranov) - TCPハンドラー向けの
Nullフォーマットを改善し、clickhouse-client 経由で性能測定のためにselect ignore(<expression>) from table format Nullを使えるようにしました #7606 (Amos Bird) CREATE TABLE ... AS (SELECT (1, 2))のようなクエリが正しくパースされるようになりました #7542 (hcz)
パフォーマンス改善
- 短い文字列キーに対する aggregation のパフォーマンスを改善しました。 #6243 (Alexander Kuzmenkov, Amos Bird)
- 定数述語の畳み込み後に見込まれる最適化を適用できるよう、構文/式解析をもう一度実行するようにしました。 #7497 (Amos Bird)
- 単純な
SELECT count() FROM table;を評価するため、ストレージのメタ情報を利用するようにしました。 #7510 (Amos Bird, alexey-milovidov) - Aggregator の
addBatchと同様に、arrayReduceの処理をベクトル化しました。 #7608 (Amos Bird) Kafkaconsumption のパフォーマンスを若干改善しました。 #7475 (Ivan)
ビルド/テスト/パッケージングの改善
- CPU アーキテクチャ AARCH64 へのクロスコンパイル対応を追加。packager スクリプトをリファクタリング。 #7370 #7539 (Ivan)
- パッケージのビルド時に、darwin-x86_64 および linux-aarch64 のツールチェーンをマウントされた Docker ボリュームに展開するようにしました #7534 (Ivan)
- Binary Packager 用の Docker イメージを更新 #7474 (Ivan)
- macOS Catalina でのコンパイルエラーを修正 #7585 (Ernest Poletaev)
- クエリ解析ロジックを一部リファクタリング: 複雑なクラスを複数のシンプルなクラスに分割。 #7454 (Artem Zuikov)
- サブモジュールなしでのビルドを修正 #7295 (proller)
- CMake ファイル内の
add_globsを改善 #7418 (Amos Bird) unwindターゲット内のハードコードされたパスを削除 #7460 (Konstantin Podshumok)- SSL なしで mysql フォーマットを使用できるようにしました #7524 (proller)
その他
- ClickHouse SQL方言向けのANTLR4文法を追加 #7595 #7596 (alexey-milovidov)
ClickHouse リリース 19.16
ClickHouse リリース 19.16.14.65、2020-03-25
- 複数の引数 (10 個超) に対する三項論理演算のバッチ計算における不具合を修正しました。#8718 (Alexander Kazakov) この修正は、Altinity からの特別な要請により、バージョン 19.16 にバックポートされました。
ClickHouse リリース 19.16.14.65、2020-03-05
- Distributed サブクエリと古い CH バージョンとの非互換性を修正しました。#7851 (tabplubix)
CREATEクエリの実行時に、ストレージエンジンの引数内の定数式を定数畳み込みするようにしました。空のデータベース名は現在のデータベース名に置き換えられます。#6508、#3492 を修正。また、ClickHouseDictionarySourceにおけるローカルアドレスのチェックも修正しました。 #9262 (tabplubix)*MergeTreeテーブルエンジンファミリーのバックグラウンドマージで、ストレージポリシーのボリューム順序をより正確に保持するようになりました。 #8549 (Vladimir Chebotarev)- まれに、接尾辞の読み取り後から commit 前までの間に例外が発生すると
Kafkaでデータが失われる問題を防止しました。#9378 を修正。関連: #7175 #9507 (filimonov) - 誤ったパラメータで作成された
Kafkatable を使用または drop しようとした際に server が終了する不具合を修正しました。#9494 を修正。#9507 を取り込みました。 #9513 (filimonov) Kafkaテーブル上のサブクエリを含むMaterializedViewを使用できるようにしました。 #8197 (filimonov)
新機能
- materialized view を持つテーブルに対する冪等な
insertの挙動を制御するため、deduplicate_blocks_in_dependent_materialized_viewsオプションを追加しました。この新機能は、Altinity からの特別な要望により、バグフィックスリリースに追加されました。 #9070 (urykhy)
ClickHouse リリース 19.16.2.2、2019-10-30
後方互換性を持たない変更
- count/counIf に、不足していた引数の個数の検証を追加しました。 #7095 #7298 (Vdimir)
- 古い
asterisk_left_columns_only設定を削除しました (デフォルトで無効化されていました) 。 #7335 (Artem Zuikov) - Template データフォーマットのフォーマット文字列を、ファイルで指定するようになりました。 #7118 (tavplubix)
新機能
- UINT_MAX を超えるカーディナリティを計算するための uniqCombined64() を導入。 #7213, #7222 (Azat Khuzhin)
- Array カラムに対する Bloom filter 索引をサポート。 #6984 (achimbab)
- サーバー設定の対応する
<macros>の値を String として返す関数getMacro(name)を追加。 #7240 (alexey-milovidov) - HTTP ソースに基づく Dictionary に、2 つの設定オプション
credentialsとhttp-headersを追加。 #7092 (Guillaume Tassery) - 開始されたバックグラウンドマージの回数をカウントする新しい ProfileEvent
Mergeを追加。 #7093 (Mikhail Korotov) - 完全修飾ドメイン名を返す関数 fullHostName を追加。 #7263 #7291 (sundyli)
- 「cut off」条件で配列を分割する関数
arraySplitとarrayReverseSplitを追加。 これらは時系列データの処理に役立ちます。 #7294 (hcz) - multiMatch ファミリーの関数で、一致したすべての索引の Array を返す新しい関数を追加。 #7299 (Danila Kutenin)
- 大量の小規模な -Log
テーブルの保存に最適化された新しいデータベースエンジン
Lazyを追加。 #7171 (Nikita Vasilev) - ビットマップカラム向けの集約関数 groupBitmapAnd、-Or、-Xor を追加。 #7109 (Zhichang Yu)
- 集約対象がない場合に null またはデフォルト値を返す集約関数コンビネータ -OrNull と -OrDefault を追加。 #7331 (hcz)
- カスタムのエスケープおよび 区切り文字ルールをサポートする CustomSeparated データフォーマットを導入。 #7118 (tavplubix)
- 外部 Dictionary のソースとして Redis をサポート。 #4361 #6962 (comunodi, Anton Popov)
バグ修正
WHERE IN (SELECT ...)句を含むクエリでoptimize_read_in_orderが 使用されている場合に、クエリ結果が誤る問題を修正しました。 #7371 (Anton Popov)- プロジェクト外のファイルに依存する MariaDB 認証プラグインを無効化しました。 #7140 (Yuriy Baranov)
- 関数
now(),today(),yesterday(),randConstant()の使用時にまれに発生する例外Cannot convert column ... because it is constant but values of constants are different in source and resultを修正しました。 #7156 (Nikolai Kochetov) - TCP keep alive timeout ではなく HTTP keep alive timeout が使用されていた問題を修正しました。 #7351 (Vasily Nemkov)
- groupBitmapOr におけるセグメンテーションフォールトを修正しました (issue #7109) 。 #7289 (Zhichang Yu)
- materialized view では、すべてのデータの書き込み完了後に Kafka のコミットが呼び出されるようにしました。 #7175 (Ivan)
system.part_logテーブルのduration_ms値が誤っていた問題を修正しました。値が 10 倍ずれていました。 #7172 (Vladimir Chebotarev)- LIVE VIEW テーブルのクラッシュを解消し、すべての LIVE VIEW テストを再度有効化するための暫定修正を行いました。 #7201 (vzakaznikov)
- MergeTree パーツの min/max 索引で NULL 値を正しくシリアライズするようにしました。 #7234 (Alexander Kuzmenkov)
CREATE TABLE ASでテーブルを作成したときに、仮想カラムを .sql メタデータに含めないようにしました。 #7183 (Ivan)ATTACH PARTクエリで発生するセグメンテーションフォールトを修正しました。 #7185 (alesapin)- 空の IN サブクエリおよび空の INNER/RIGHT JOIN の最適化により、一部のクエリで誤った結果になる問題を修正しました。 #7284 (Nikolai Kochetov)
- LIVE VIEW の getHeader() メソッドにおける AddressSanitizer エラーを修正しました。 #7271 (vzakaznikov)
改善
queue_wait_max_msの待機が発生した場合のメッセージを追加しました。 #7390 (Azat Khuzhin)- 設定
s3_min_upload_part_sizeをテーブルレベルの設定にしました。 #7059 (Vladimir Chebotarev) - StorageFactory で有効期限 (TTL) をチェックするようにしました。 #7304 (sundyli)
- partial merge join で左側の block をまとめるようにしました (最適化) 。 #7122 (Artem Zuikov)
- Replicated テーブルエンジンの mutation では非決定論的関数を許可しないようにしました。これにより レプリカ間の不整合が生じる可能性があるためです。 #7247 (Alexander Kazakov)
- exception の stack trace を文字列に変換する際は memory tracker を無効にしました。これにより、
server 上で
Memory limit exceeded型の error メッセージが失われるのを防げます。これは client 側でAttempt to read after eofexception を引き起こしていました。 #7264 (Nikolai Kochetov) - その他、フォーマットを改善しました。以下を解決します: #6033, #2633, #6611, #6742 #7215 (tavplubix)
- ClickHouse は、IN operator の右辺にある、左辺の type に変換できない値を無視します。これが 複合型、つまり Array と Tuple でも正しく動作するようにしました。 #7283 (Alexander Kuzmenkov)
- ASOF JOIN で不等号条件の省略をサポートしました。ON 構文で ASOF column に対して、以下または等しい バリアント、および厳密な大なり・小なりのバリアントで join できます。 #7282 (Artem Zuikov)
- partial merge join を最適化しました。 #7070 (Artem Zuikov)
- uniqCombined 関数で 98K を超えるメモリを使用しないようにしました。 #7236, #7270 (Azat Khuzhin)
- PartialMergeJoin で右側の joining table のパーツをディスクにフラッシュするようにしました (メモリが不足している場合) 。 必要に応じてデータを再読み込みします。 #7186 (Artem Zuikov)
パフォーマンス改善
- データの重複を回避することで、const 引数を使った joinGet を高速化しました。 #7359 (Amos Bird)
- サブクエリが空の場合は、早期に処理を終了するようにしました。 #7007 (小路)
- Values 内の SQL 式のパースを最適化しました。 #6781 (tavplubix)
ビルド/テスト/パッケージングの改善
- Mac OS 向けのクロスコンパイルでは、一部のcontribを無効にしました。 #7101 (Ivan)
- clickhouse_common_io で不足していた PocoXML とのリンクを追加。 #7200 (Azat Khuzhin)
- clickhouse-test で複数のテスト用 filter 引数を受け付けられるようにしました。 #7226 (Alexander Kuzmenkov)
- ARM 向けに musl と jemalloc を有効にしました。#7300 (Amos Bird)
- クライアントに追加のパラメータを渡せるよう、
clickhouse-testに--client-optionパラメータを追加しました。 #7277 (Nikolai Kochetov) - rpm パッケージのアップグレード時に既存の設定ファイルを保持するようにしました。 #7103 (filimonov)
- PVS で検出されたエラーを修正しました。 #7153 (Artem Zuikov)
- Darwin向けビルドを修正。 #7149 (Ivan)
- glibc 2.29 への対応。 #7142 (Amos Bird)
- dh_clean がソースファイル候補に触れないようにしました。 #7205 (Amos Bird)
- altinity rpm からの更新時に競合が起きないよう修正 - この rpm では設定ファイルが clickhouse-server-common に別個にパッケージ化されています。#7073 (filimonov)
- 一部のヘッダーファイルを最適化し、再ビルドを高速化しました。 #7212, #7231 (Alexander Kuzmenkov)
- Date および DateTime のパフォーマンステストを追加しました。 #7332 (Vasily Nemkov)
- 非決定論的なmutationを含むいくつかのテストを修正。 #7132 (Alexander Kazakov)
- CI に MemorySanitizer ビルドを追加しました。#7066 (Alexander Kuzmenkov)
- MetricsTransmitter で未初期化の値が使用されないようにしました。 #7158 (Azat Khuzhin)
- MemorySanitizer によって見つかった Fields の問題をいくつか修正しました。 #7135, #7179 (Alexander Kuzmenkov), #7376 (Amos Bird)
- murmurhash32 における未定義動作を修正しました。 #7388 (Amos Bird)
- StoragesInfoStream の未定義動作を修正しました。 #7384 (tavplubix)
- 外部データベースエンジン (MySQL、ODBC、JDBC) における定数式の畳み込みを修正しました。以前の バージョンでは、複数の定数式では正しく機能せず、Date、 DateTime、UUID についてはまったく機能していませんでした。これにより #7245 #7252 (alexey-milovidov)
- no_users_thread変数へのアクセス時に発生するLIVE VIEWのThreadSanitizerのデータ競合エラーを修正。 #7353 (vzakaznikov)
- libcommon から malloc シンボルを除去 #7134, #7065 (Amos Bird)
- すべてのライブラリを無効にするためのグローバルフラグ ENABLE_LIBRARIES を追加しました。 #7063 (proller)
コードクリーンアップ
- Dictionary のDDLに備えて、設定リポジトリを汎用化。 #7155 (alesapin)
- Dictionary DDL向けの、意味解析を伴わないパーサー。 #7209 (alesapin)
- ParserCreateQuery を複数のより小さなパーサーに分割。 #7253 (alesapin)
- 外部辞書まわりの小規模なリファクタリングと名前変更。 #7111 (alesapin)
- ロールベースのアクセス制御に備えて、一部のコードをリファクタリング。 #7235 (Vitaly Baranov)
- DatabaseOrdinary のコードをいくつか改善。 #7086 (Nikita Vasilev)
- ハッシュテーブルの find() および emplace() メソッドでイテレーターを使用しないように変更。 #7026 (Alexander Kuzmenkov)
- root パラメータが空でない場合の getMultipleValuesFromConfig を修正。 #7374 (Mikhail Korotov)
- 一部の重複コードを削除 (TemporaryFile と TemporaryFileStream) #7166 (Artem Zuikov)
- コードの可読性を少し向上 (
MergeTreeData::getActiveContainingPart) 。 #7361 (Vladimir Chebotarev) ThreadPool::schedule(...)が 例外をスローした場合、ローカルオブジェクトを使用しているスケジュール済みのすべてのジョブの完了を待機するように変更。ThreadPool::schedule(...)をThreadPool::scheduleOrThrowOnError(...)に名前変更し、 例外をスローする可能性があることが明確になるようコメントを修正。 #7350 (tavplubix)
ClickHouse リリース 19.15
ClickHouse リリース 19.15.4.10, 2019-10-31
バグ修正
- ODBC Bridge で SQL_TINYINT および SQL_BIGINT の処理を追加し、SQL_FLOAT データソース型の処理を修正しました。 #7491 (Denis Glazachev)
- MOVE PARTITION で、一部のパーツを宛先ディスクまたはボリューム上に配置できるようにしました。 #7434 (Vladimir Chebotarev)
- ODBC Bridge 経由での nullable columns の NULL 値に関する問題を修正しました。 #7402 (Vasily Nemkov)
- MATERIALIZED columns を持つ Distributed の非ローカルノードへの INSERT を修正しました。 #7377 (Azat Khuzhin)
- 関数 getMultipleValuesFromConfig を修正しました。 #7374 (Mikhail Korotov)
- TCP keep alive timeout ではなく HTTP keep alive timeout を使用していた問題を修正しました。 #7351 (Vasily Nemkov)
- 例外発生時にすべての jobs の終了を待機するようにしました (まれに発生する segfault を修正) 。 #7350 (tavplubix)
- Kafka table への insert 時に MV へ push しないようにしました。 #7265 (Ivan)
- exception stack に対する memory tracker を無効化しました。 #7264 (Nikolai Kochetov)
- 外部 database 向けのクエリ変換処理に含まれていた不正なコードを修正しました。 #7252 (alexey-milovidov)
- MetricsTransmitter で未初期化の値が使用されないようにしました。 #7158 (Azat Khuzhin)
- テスト用に、マクロを含む config の例を追加しました (alexey-milovidov)
ClickHouse リリース 19.15.3.6、2019-10-09
バグ修正
- ハッシュ化された Dictionary 内の bad_variant を修正しました。 (alesapin)
- ATTACH PART クエリでセグメンテーションフォールトが発生するバグを修正しました。 (alesapin)
MergeTreeDataの時間計算を修正しました。 (Vladimir Chebotarev)- 書き込み完了後に、Kafka へ明示的に commit するようにしました。 #7175 (Ivan)
- MergeTree パーツの最小/最大索引で、NULL 値を正しくシリアライズするようにしました。 #7234 (Alexander Kuzmenkov)
ClickHouse リリース 19.15.2.2、2019-10-01
新機能
- 階層型ストレージ: MergeTree エンジンのテーブルで複数のストレージボリュームを使用できるようになりました。新しいデータは SSD に保存し、古いデータは自動的に HDD に移動できます。(example). #4918 (Igr) #6489 (alesapin)
INSERT SELECTクエリで入力データを読み取るためのテーブル関数inputを追加しました。 #5450 (palasonic1) #6832 (Anton Popov)hashedlayout と機能的には同等ですが、よりメモリ効率の高いsparse_hashedDictionary layout を追加しました。値の取得速度は遅くなる一方で、使用メモリ量はおよそ半分になります。 #6894 (Azat Khuzhin)- Dictionaries へのアクセス用にユーザー一覧を定義できるようにしました。現在接続中のデータベースでのみ使用されます。 #6907 (Guillaume Tassery)
SHOWクエリにLIMITオプションを追加しました。 #6944 (Philipp Malkovsky)- 集合内で
range_start以上の値のうち、小さい方からlimit個を含む部分集合を返すbitmapSubsetLimit(bitmap, range_start, limit)関数を追加しました。 #6957 (Zhichang Yu) bitmapMinおよびbitmapMax関数を追加しました。 #6970 (Zhichang Yu)- issue-6648 に関連する
repeat関数を追加しました。 #6999 (flynn)
実験的機能
- 現在のpipelineを変更しない、 (メモリ内の) Merge Joinの実装バリアントを追加しました。結果はマージキーで部分的にソートされます。この機能を使用するには、
partial_merge_join = 1を設定してください。Merge Joinは引き続き開発中です。#6940 (Artem Zuikov) S3エンジンおよびテーブル関数を追加しました。まだ開発中のため、認証はまだサポートされていません。#5596 (Vladimir Chebotarev)
改善
- Kafka から読み取ったすべてのメッセージがアトミックに挿入されるようになりました。これにより、Kafka エンジンに関する既知の問題のほぼすべてが解消されます。#6950 (Ivan)
- 分散クエリのフェイルオーバーを改善しました。復旧時間を短縮したほか、設定可能になり、
system.clustersでも確認できるようになりました。#6399 (Vasily Nemkov) IN句で Enum の数値を直接サポートしました。#6766 #6941 (dimarub2000)- URL ストレージでのリダイレクトをサポートしました (オプション機能で、デフォルトでは無効) 。#6914 (maqroll)
- 古いバージョンのクライアントがサーバーに接続した際に、情報メッセージを表示するようにしました。#6893 (Philipp Malkovsky)
- 分散テーブルでデータを送信する際の、最大 backoff 待機時間の制限を削除しました #6895 (Azat Khuzhin)
- 累積値を持つプロファイルイベント (カウンター) を Graphite に送信できるようにしました。これはサーバーの
config.xmlにある<events_cumulative>で有効化できます。#6969 (Azat Khuzhin) - HTTP 経由で Native format の
LowCardinality(T)型カラムにデータを挿入する際、型Tを自動的にLowCardinality(T)へ cast する機能を追加しました。#6891 (Nikolai Kochetov) Float32、Float64で、reinterpretAsStringを使わずに関数hexを使用できるようにしました。#7024 (Mikhail Korotov)
ビルド/テスト/パッケージングの改善
- デバッグ情報付きの gdb-index を
clickhouseバイナリに追加しました。これにより、gdbの起動時間が短縮されます。 #6947 (alesapin) pigzを使用するパッチ適用済みのdpkg-debにより、deb パッケージングを高速化しました。 #6960 (alesapin)- プロジェクト全体のコードに対する libfuzzer のインストルメンテーションを有効にするため、
enable_fuzzing = 1を設定しました。 #7042 (kyprizel) - CI に分割ビルドのスモークテストを追加しました。 #7061 (alesapin)
- MemorySanitizer を使用したビルドを CI に追加しました。 #7066 (Alexander Kuzmenkov)
libsparsehashをsparsehash-c11に置き換えました。 #6965 (Azat Khuzhin)
バグ修正
- 大規模なテーブル上の複雑なキーに対する索引解析の性能低下を修正しました。これにより #6924 も修正されます。#7075 (alexey-milovidov)
- 空の Kafka トピックを選択した際に segfault を引き起こす論理エラーを修正しました。#6909 (Ivan)
MySQLBlockInputStream.cppで、MySQL 接続が早すぎるタイミングでクローズされる問題を修正しました。#6882 (Clément Rodriguez)- 非常に古い Linux カーネルのサポートを復活させました (#6841 の修正) 。#6853 (alexey-milovidov)
- 入力ストリーム内に空のブロックがある場合に、
insert selectクエリで発生しうるデータ損失を修正しました。#6834 #6862 #6911 (Nikolai Kochetov) - 引数内の空の配列に対する関数
АrrayEnumerateUniqRankedの不具合を修正しました。#6928 (proller) - ARRAY JOIN およびグローバルサブクエリを含む複雑なクエリの不具合を修正しました。#6934 (Ivan)
- 複数の JOIN を含む ORDER BY および GROUP BY で発生する
Unknown identifierエラーを修正しました。#7022 (Artem Zuikov) LowCardinality引数を持つ関数の実行中に発生していたMSan警告を修正しました。#7062 (Nikolai Kochetov)
後方互換性を持たない変更
- パフォーマンス向上のため、bitmap* aggregate function の state のシリアライゼーションフォーマットを変更しました。以前のバージョンでシリアライズされた bitmap* の state は読み取れません。 #6908 (Zhichang Yu)
ClickHouse リリース 19.14
ClickHouse リリース 19.14.7.15、2019-10-02
バグ修正
- このリリースには、19.11.12.69 のすべてのバグ修正も含まれています。
- 19.14 とそれ以前のバージョン間の分散クエリの互換性を修正しました。これにより #7068 も修正されます。 #7069 (alexey-milovidov)
ClickHouse リリース 19.14.6.12、2019-09-19
バグ修正
- パラメータ内の空の配列に対する関数
АrrayEnumerateUniqRankedの不具合を修正しました。 #6928 (proller) - エイリアス付きの
ARRAY JOINおよびGLOBAL IN subqueryを含むクエリで、サブクエリ名を修正しました。サブクエリのエイリアスが指定されている場合は、それを外部テーブル名として使用します。 #6934 (Ivan)
ビルド/テスト/パッケージングの改善
- ミューテーションの適用待ちが必要なため、不安定な テスト
00715_fetch_merged_or_mutated_part_zookeeperをシェルスクリプトに書き換えて修正しました。#6977 (Alexander Kazakov) - 空の Array 引数を持つ関数
groupUniqArrayで発生していた UBSan および MemSan の失敗を修正しました。原因は、ゼロセルの値のコンストラクタが呼び出されていなかったため、空のPaddedPODArrayがハッシュテーブルのゼロセルに配置されていたことでした。#6937 (Amos Bird)
ClickHouse リリース 19.14.3.3、2019-09-10
新機能
ORDER BYのWITH FILL修飾子。(#5069 の続き) #6610 (Anton Popov)LIMITのWITH TIES修飾子。 (#5069 の続き) #6610 (Anton Popov)- 引用符なしの
NULLリテラルを NULL として解析します (設定format_csv_unquoted_null_literal_as_null=1の場合) 。このフィールドのデータ型が Nullable でない場合は、null フィールドをデフォルト値で初期化します (設定input_format_null_as_default=1の場合) 。 #5990 #6055 (tavplubix) - テーブル関数
fileおよびhdfsのパスでワイルドカードがサポートされました。パスにワイルドカードが含まれている場合、そのテーブルは読み取り専用になります。使用例:select * from hdfs('hdfs://hdfs1:9000/some_dir/another_dir/*/file{0..9}{0..9}')およびselect * from file('some_dir/{some_file,another_file,yet_another}.tsv', 'TSV', 'value UInt32')。 #6092 (Olga Khvostikova) - 指定した時間間隔で
system.eventsおよびsystem.metricsの値を格納する新しいsystem.metric_logテーブル。 #6363 #6467 (Nikita Mikhaylov) #6530 (alexey-milovidov) - ClickHouse のテキストログを
system.text_logテーブルに書き込めるようになりました。#6037 #6103 (Nikita Mikhaylov) #6164 (alexey-milovidov) - スタックトレースに非公開シンボルを表示できるようにしました (これは ELF ファイルのシンボルテーブルをパースして実現しています) 。デバッグ情報が存在する場合、スタックトレースにファイル名と行番号の情報を追加しました。プログラム内のシンボルに索引を付けることで、シンボル名のルックアップを高速化しました。introspection 用の新しい SQL 関数
demangleとaddressToLineを追加しました。一貫性を保つため、関数symbolizeAddressをaddressToSymbolに改名しました。addressToSymbol関数はパフォーマンス上の理由からマングルされた名前を返すため、demangleを適用する必要があります。デフォルトで無効になっている設定allow_introspection_functionsを追加しました。#6201 (alexey-milovidov) - テーブル関数
values(名前では大文字と小文字は区別されません) 。これにより、#5984 で提案されたVALUESリストから読み込めるようになりました。例:SELECT * FROM VALUES('a UInt64, s String', (1, 'one'), (2, 'two'), (3, 'three'))。#6217。#6209 (dimarub2000) - ストレージ設定を変更できるようになりました。構文:
ALTER TABLE <table> MODIFY SETTING <setting> = <value>. #6366 #6669 #6685 (alesapin) - デタッチされたパーツの削除をサポートしました。構文:
ALTER TABLE <table_name> DROP DETACHED PART '<part_id>'. #6158 (tavplubix) - テーブル制約。insert 時にチェックされる制約をテーブル定義に追加できるようになりました。#5273 (Gleb Novikov) #6652 (alexey-milovidov)
- カスケードされたmaterialized viewのサポート。 #6324 (Amos Bird)
- すべてのクエリ実行スレッドを1秒に1回サンプリングするよう、クエリプロファイラをデフォルトで有効にしました。 #6283 (alexey-milovidov)
- 入力フォーマット
ORCに対応。#6454 #6703 (akonyaev90) - 機械学習アプリケーションに役立つ 2 つの新しい関数
sigmoidとtanhを追加しました。#6254 (alexey-milovidov) - 指定された token が haystack に含まれているかを確認する関数
hasToken(haystack, token),hasTokenCaseInsensitive(haystack, token)。Token は、2 つの英数字以外の ASCII 文字 (または haystack の境界) に挟まれた最長の部分文字列です。Token は定数文字列である必要があります。tokenbf_v1 索引の特殊化に対応しています。#6596, #6662 (Vasily Nemkov) - 新しい関数
neighbor(value, offset[, default_value])。データブロック内のカラムにおいて、前または次の値にアクセスできます。#5925 (Alex Krash) 6685365ab8c5b74f9650492c88a012596eb1b0c6 341e2e4587a18065c2da1ca888c73389f48ce36c Alexey Milovidov - 認証済みユーザーのログイン名を返す関数
currentUser()を追加しました。MySQL との互換性のため、エイリアスuser()も追加しました。#6470 (Alex Krash) - #5885 で提案された、新しい集約関数
quantilesExactInclusiveおよびquantilesExactExclusive。 #6477 (dimarub2000) - 指定した範囲の新しい集合を返す関数
bitmapRange(bitmap, range_begin, range_end)(range_endは含まれません) 。 #6314 (Zhichang Yu) - 指定された領域をカバーする geohash ボックスを表す、精度桁の文字列の配列を生成する関数
geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)。 #6127 (Vasily Nemkov) Kafkaテーブルに対する INSERT クエリのサポートを実装しました。#6012 (Ivan)- Kafka エンジンで、
_partitionおよび_timestamp仮想カラムがサポートされるようになりました。#6400 (Ivan) - 正規表現ベースのルールを使って、
query_log、サーバーログ、プロセスリストから機密データを削除できるようになりました。 #5710 (filimonov)
実験的な機能
- 入出力データのフォーマット
Template。入力と出力に対して、カスタムのフォーマット文字列を指定できます。#4354 #6727 (tavplubix) - #2898 で最初に提案され、#3925 で準備が進められ、その後 #5541 で更新された
LIVE VIEWテーブルの実装。詳細は #5541 を参照してください。#5541 (vzakaznikov) #6425 (Nikolai Kochetov) #6656 (vzakaznikov)LIVE VIEW機能は今後のバージョンで削除される可能性がある点に注意してください。
バグ修正
- このリリースには、19.13 および 19.11 のバグ修正もすべて含まれています。
- テーブルにスキップインデックスがあり、vertical merge が発生した際に起きるセグメンテーションフォールトを修正しました。 #6723 (alesapin)
- 複雑なカラムデフォルト値を持つカラムに対する、カラム単位の有効期限 (TTL) を修正しました。以前は、
OPTIMIZE ... FINALクエリで TTL の強制マージを実行した場合、期限切れの値がユーザー指定のカラムデフォルト値ではなく、型のデフォルト値に置き換えられていました。#6796 (Anton Popov) - 通常のサーバー再起動時に発生するKafkaメッセージ重複問題を修正しました。#6597 (Ivan)
- Kafka メッセージの読み取り時に発生する無限ループを修正しました。subscription では consumer の一時停止/再開を一切行わないようにしました。そうしないと、状況によっては無期限に一時停止されたままになる可能性があるためです。 #6354 (Ivan)
bitmapContains関数でKey expression contains comparison between inconvertible types例外が発生する問題を修正しました。#6136 #6146 #6156 (dimarub2000)optimize_skip_unused_shardsが有効で、分片キーが欠落している場合に発生する segfault を修正しました。#6384 (Anton Popov)- メモリ破損につながる可能性のある mutations 内の誤ったコードを修正しました。
DROP TABLEとsystem.partsまたはsystem.parts_columnsに対するSELECTの同時実行によって発生する可能性があった、アドレス0x14c0の読み取り時の segfault を修正しました。mutation queries の準備処理における race condition を修正しました。Replicated テーブルに対するOPTIMIZEと、ALTER などの変更操作の同時実行によって発生していたデッドロックを修正しました。#6514 (alexey-milovidov) - MySQL インターフェイスの冗長すぎるログ出力を削除 #6389 (alexey-milovidov)
- 設定ファイルで、ブール値の設定を ‘true’ と ‘false’ から解析できるように戻しました。#6278 (alesapin)
Nullable(Decimal128)に対するquantileおよびmedian関数のクラッシュを修正しました。 #6378 (Artem Zuikov)- 主キーに対する
WHERE条件に Float 型への変換が含まれるSELECTクエリで、不完全な結果が返される可能性があった問題を修正しました。原因は、toFloat関数での単調性のチェックが誤っていたことです。#6248 #6374 (dimarub2000) - mutations について
max_expanded_ast_elements設定を確認するようにしました。TRUNCATE TABLEの後に mutations をクリアするようにしました。#6205 (Winter Zhang) join_use_nulls使用時のキーカラムに対する JOIN 結果を修正。カラムのデフォルト値ではなく Null を付加するようにしました。 #6249 (Artem Zuikov)- vertical mergeおよびalterにおけるスキップインデックスの不具合を修正。
Bad size of marks file例外を修正。#6594 #6713 (alesapin) - マージまたは変更の対象となるパーツのいずれかが空 (0行) の場合に、
ALTER MODIFY COLUMNおよび垂直マージでまれに発生するクラッシュを修正しました #6746 #6780 (alesapin) AggregateFunctionFactoryにおけるLowCardinality型の変換に関する不具合を修正しました。これにより #6257 が解消されます。#6281 (Nikolai Kochetov)topKおよびtopKWeighted集計関数の誤作動と、発生する可能性がある segfault を修正しました。#6404 (Anton Popov)getIdentifier関数周辺の危険なコードを修正しました。#6401 #6409 (alexey-milovidov)- MySQL クライアントから ClickHouse へ接続する際に使用される MySQL wire protocol のバグを修正しました。原因は、
PacketPayloadWriteBufferの heap buffer overflow でした。#6212 (Yuriy Baranov) bitmapSubsetInRange関数のメモリリークを修正しました。#6819 (Zhichang Yu)- granularity変更後にmutationが実行された際に発生するまれなバグを修正しました。 #6816 (alesapin)
- デフォルトで、すべてのフィールドを含むProtobufメッセージを許可しました。 #6132 (Vitaly Baranov)
- 2番目の引数に
NULLを渡したときのnullIf関数のバグを修正しました。#6446 (Guillaume Tassery) - 文字列フィールドを持つ複合キーの cache 辞書で、メモリの確保/解放の誤りによりメモリを際限なく消費してしまう (メモリリークのように見える) まれなバグを修正しました。このバグは、文字列サイズが 8 から始まる 2 の累乗 (8、16、32 など) の場合に再現していました。 #6447 (alesapin)
- 小さな数列で
Cannot write after end of buffer例外が発生していたGorillaエンコーディングの不具合を修正しました。#6398 #6444 (Vasily Nemkov) join_use_nullsが有効な場合でも、JOIN で非 Nullable 型を使用できるようにしました。#6705 (Artem Zuikov)clickhouse-clientのクエリ内でのPoco::AbstractConfigurationの置換を無効化しました。#6706 (alexey-milovidov)REPLACE PARTITIONにおけるデッドロックを回避しました。 #6677 (alexey-milovidov)- 定数引数に
arrayReduceを使用すると、segfault が発生する可能性があります。#6242 #6326 (alexey-milovidov) DROP PARTITIONの後にレプリカが復元された場合に生じる可能性のあるパーツの不整合を修正しました。 #6522 #6523 (tavplubix)JSONExtractRaw関数でハングする問題を修正しました。 #6195 #6198 (alexey-milovidov)- adaptive granularity での、スキップインデックスのシリアライゼーションの誤りと集約処理の不具合を修正しました。 #6594. #6748 (alesapin)
- 二段階集約での
GROUP BYのWITH ROLLUPおよびWITH CUBE修飾子を修正しました。#6225 (Anton Popov) - adaptive granularity 使用時のセカンダリ索引マークの書き込みに関する不具合を修正しました。 #6126 (alesapin)
- server の起動時における初期化順序を修正しました。
StorageMergeTree::background_task_handleはstartup()で初期化されるため、MergeTreeBlockOutputStream::write()が初期化前にそれを使おうとする可能性がありました。そのため、初期化済みかどうかを確認するようにしました。#6080 (Ivan) - エラーで終了した前回の読み取り操作のデータバッファをクリアする。 #6026 (Nikolay)
- Replicated*MergeTree テーブルで新しいレプリカを作成する際、adaptive granularity を有効にすると発生していた不具合を修正しました。 #6394 #6452 (alesapin)
- 初期化されていない
ThreadStatus構造体へのアクセス時の例外処理中にlibunwindで例外が発生した場合に、サーバーの起動中にクラッシュする可能性があった問題を修正しました。 #6456 (Nikita Mikhaylov) yandexConsistentHash関数で発生するクラッシュを修正しました。ファズテストで発見された問題です。#6304 #6305 (alexey-milovidov)- サーバーが過負荷状態で、グローバルスレッドプールがほぼ埋まっている場合に、クエリがハングする可能性があった問題を修正しました。分散クエリでは各分片への各接続ごとに 1 スレッドを割り当てるため、分片数が多い (数百規模の) クラスターでは、この問題が発生しやすくなります。たとえば、330 分片のクラスターで 30 件の同時実行の分散クエリを処理している場合、この問題が再現することがあります。この問題は 19.2 以降のすべてのバージョンに影響します。#6301 (alexey-milovidov)
arrayEnumerateUniqRanked関数のロジックを修正しました。#6423 (alexey-milovidov)- シンボルテーブルのデコード時に発生するsegfaultを修正しました。 #6603 (Amos Bird)
LowCardinality(Nullable)から非 Nullable のカラムへのキャストで、Null が含まれていないにもかかわらず無関係な例外が発生する問題を修正しました (たとえば、SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String)のようなクエリ) 。 #6094 #6119 (Nikolai Kochetov)system.settingsテーブル内の説明文から不要な引用符を削除しました。#6696 #6699 (alexey-milovidov)- レプリケートテーブルの
TRUNCATEで発生する可能性があるデッドロックを回避しました。 #6695 (alexey-milovidov) - ソートキー順で読み取られるように修正しました。 #6189 (Anton Popov)
enable_mixed_granularity_parts=1が有効なテーブルに対するALTER TABLE ... UPDATEクエリを修正しました。#6543 (alesapin)- #4405 で報告されたバグを修正しました (19.4.0 以降) 。カラムを一切参照しない場合 (
SELECT 1) 、MergeTree テーブル上の分散テーブルに対するクエリで再現していた問題です。#6236 (alesapin) - 符号付き型を符号なし型で整数除算する際のオーバーフローを修正しました。動作自体は C または C++ 言語の仕様 (整数昇格の規則) どおりでしたが、意外に感じられる場合がありました。なお、大きな符号付き整数を大きな符号なし整数で割る場合、またはその逆の場合には、引き続きオーバーフローが発生する可能性があります (ただし、このケースはあまり一般的ではありません) 。この問題はすべての server バージョンに存在していました。 #6214 #6233 (alexey-milovidov)
max_execution_speedまたはmax_execution_speed_bytesが設定されている場合のスロットリングにおける最大スリープ時間を制限しました。Estimated query execution time (inf seconds) is too longのような誤検知のエラーを修正しました。#5547 #6232 (alexey-milovidov)MaterializedView内でのMATERIALIZEDカラムや別名の使用に関する問題を修正しました。 #448 #3484 #3450 #2878 #2285 #3796 (Amos Bird) #6316 (alexey-milovidov)- processor として実装されていない入力ストリームに対する
FormatFactoryの動作を修正しました。 #6495 (Nikolai Kochetov) - 誤字を修正。 #6631 (Alex Ryndin)
- エラーメッセージ内の誤記を修正 ( is -> are ) 。#6839 (Denis Zhuravlev)
- 型にコンマが含まれている場合に、文字列からカラムリストをパースする際に発生していたエラーを修正しました (この問題は
File、URL、HDFSストレージに関連していました) #6217. #6209 (dimarub2000)
セキュリティ修正
- このリリースには、19.13 および 19.11 のすべてのバグ修正とセキュリティ修正も含まれています。
- 細工されたクエリにより、SQL パーサーでスタックオーバーフローが発生してサーバーがクラッシュする可能性を修正しました。Merge および分散テーブル、materialized view、ならびにサブクエリを含む行レベルセキュリティの条件でスタックオーバーフローが発生する可能性を修正しました。 #6433 (alexey-milovidov)
改善
AND/ORの三値論理を正しく実装しました。 #6048 (Alexander Kazakov)- これにより、有効期限 (TTL) が切れた値と行は、TTL 情報がない古いパーツ、または古い TTL 情報を持つパーツから、
OPTIMIZE ... FINALクエリ実行後に削除されるようになりました。たとえば、ALTER ... MODIFY TTLクエリの後です。TTL 付きマージの割り当てを禁止/許可し、すべてのマージで有効期限切れの値を除外するためのクエリSYSTEM STOP/START TTL MERGESを追加しました。#6274 (Anton Popov) CLICKHOUSE_HISTORY_FILE環境変数を使用して、クライアント用の ClickHouse 履歴ファイルの保存場所を変更できるようになりました。#6840 (filimonov)InterpreterSelectQueryからdry_runフラグを削除。 … #6375 (Nikolai Kochetov)ON句を使ったASOF JOINをサポートしました。#6211 (Artem Zuikov)- ミューテーションおよびレプリケーションにおけるスキップ索引のサポートを強化しました。
MATERIALIZE/CLEAR INDEX ... IN PARTITIONクエリをサポートしました。UPDATE x = xは、カラムxを使用するすべての索引を再計算します。#5053 (Nikita Vasilev) allow_experimental_live_view設定にかかわらず (たとえばサーバー起動時に) 、ライブビューをATTACHできるようにしました。 #6754 (alexey-milovidov)- クエリプロファイラで収集されたスタックトレースには、クエリプロファイラ自身が生成したスタックフレームを含めないようにしました。#6250 (alexey-milovidov)
- テーブル関数
values、file、url、hdfsが ALIAS カラムに対応しました。 #6255 (alexey-milovidov) config.dファイルに設定ファイルと同じ対応するルート要素がない場合、例外をスローします。#6123 (dimarub2000)no space left on deviceの例外メッセージに追加情報を出力するようにしました。#6182, #6252 #6352 (tavplubix)- 読み取りクエリの対象となる
Distributedテーブルの分片を判定する際 (optimize_skip_unused_shards= 1) 、ClickHouse は SELECT ステートメントのprewhere句とwhere句の両方の条件を確認するようになりました。#6521 (Alexander Kazakov) - AVX2 には対応していないものの、SSE 4.2 および PCLMUL 命令セットを備えたマシンで
SIMDJSONを有効にしました。 #6285 #6320 (alexey-milovidov) - ClickHouse は、
O_DIRECTをサポートしていないファイルシステム (ZFS や BtrFS など) でも、追加のチューニングなしで動作します。 #4449 #6730 (alexey-milovidov) - FINALサブクエリへの述語プッシュダウンをサポート。 #6120 (TCeason) #6162 (alexey-milovidov)
JOIN ONキー抽出の改善 #6131 (Artem Zuikov)SIMDJSONを更新しました。#6285。#6306 (alexey-milovidov)SELECT count()クエリで最小のカラムが選択されるように最適化。 #6344 (Amos Bird)windowFunnel()にstrictパラメータを追加しました。strictを設定すると、windowFunnel()は一意の値にのみ条件を適用します。 #6548 (achimbab)mysqlxx::Poolのインターフェイスの安全性を向上。 #6150 (avasiliev)--helpオプション実行時のオプション行の幅が、端末サイズに合わせられるようになりました。 #6590 (dimarub2000)- キーなしの集約に対する”read in order”最適化を無効にしました。#6599 (Anton Popov)
INCORRECT_DATAおよびTYPE_MISMATCHのエラーコードに対する HTTP ステータスコードが、デフォルトの500 Internal Server Errorから400 Bad Requestに変更されました。#6271 (Alexander Rodin)ExpressionActionからAnalyzedJoinに Join オブジェクトを移動しました。ExpressionAnalyzerとExpressionActionは、Joinクラスを直接扱わなくなりました。そのロジックはAnalyzedJoinインターフェースによって隠蔽されています。#6801 (Artem Zuikov)- 分片の1つがlocalhostで、クエリがネットワーク接続経由で送信された場合に、分散クエリでデッドロックが発生する可能性があった問題を修正しました。 #6759 (alexey-milovidov)
- 複数のテーブルに対する
RENAMEの動作を変更し、発生する可能性のあるデッドロックを回避できるようにしました。#6757。#6756 (alexey-milovidov) - パケットの完全なペイロードをメモリに読み込まないよう、MySQL互換サーバーを書き直しました。各接続あたりのメモリ消費を約
2 * DBMS_DEFAULT_BUFFER_SIZE(読み取り/書き込みバッファ) まで削減しました。#5811 (Yuriy Baranov) - ASTエイリアスの解釈ロジックを、クエリのセマンティクスを知る必要のないパーサーから切り離しました。 #6108 (Artem Zuikov)
NamesAndTypesListのパースの安全性をわずかに改善。 #6408. #6410 (alexey-milovidov)clickhouse-copier: パーティションの存在確認用クエリで、設定内のwhere_conditionをpartition_keyの別名とともに使えるようにしました (以前はデータ読み取りクエリでのみ使用されていました) 。 #6577 (proller)throwIfにオプションのメッセージ引数が追加されました。(#5772) #6329 (Vdimir)- 挿入データの送信中に発生したサーバー例外は、クライアント側でも処理されるようになりました。 #5891 #6711 (dimarub2000)
- 分散テーブルによってリモートサーバーへの送信対象として選択されたファイルシステム内のファイル総数を示すメトリック
DistributedFilesToInsertを追加しました。この数はすべての分片にわたって合計されます。#6600 (alexey-milovidov) - JOIN の準備ロジックの大半を
ExpressionAction/ExpressionAnalyzerからAnalyzedJoinに移しました。#6785 (Artem Zuikov) - TSan の警告 ‘lock-order-inversion’ を修正しました。#6740 (Vasily Nemkov)
- Linux capabilities が不足している場合の情報メッセージを改善。致命的なエラーを “fatal” レベルでログに記録するようにし、
system.text_logで見つけやすくしました。 #6441 (alexey-milovidov) GROUP BY、ORDER BYの実行中にメモリ使用量を制限するために一時データをdiskにダンプする機能を有効にしている場合、これまではディスクの空き容量が確認されていませんでした。この修正では、新しい設定min_free_disk_spaceが追加され、ディスクの空き容量がしきい値を下回ると、クエリは停止し、ErrorCodes::NOT_ENOUGH_SPACEをスローするようになりました。#6678 (Weiqing Xu) #6691 (alexey-milovidov)- スレッドごとの再帰的な rwlock を削除しました。スレッドはクエリ間で再利用されるため、この仕組みには意味がありません。
SELECTクエリは、あるスレッドでロックを取得し、別のスレッドでそのロックを保持したまま、最初のスレッドから抜けることがあります。同時に、最初のスレッドがDROPクエリに再利用される可能性があります。これにより、誤った “Attempt to acquire exclusive lock recursively” メッセージが出ることがあります。#6771 (alexey-milovidov) ExpressionAnalyzer.appendJoin()を分割しました。ExpressionAnalyzerにMergeJoin用の準備を追加しました。#6524 (Artem Zuikov)- MySQL互換サーバーに
mysql_native_password認証プラグインを追加しました。 #6194 (Yuriy Baranov) clock_gettimeの呼び出し回数を削減;Allocatorの debug/release 間における ABI 互換性の問題を修正 (軽微な問題) 。#6197 (alexey-milovidov)collectUsedColumnsをExpressionAnalyzerからSyntaxAnalyzerに移しました。SyntaxAnalyzerがrequired_source_columnsを自ら作成するようになりました。 #6416 (Artem Zuikov)- 複数のテーブルがある
FROM句内のサブクエリおよびテーブル関数に別名を必須とする設定joined_subquery_requires_aliasを追加しました (つまり、JOIN を含むクエリが対象です) 。#6733 (Artem Zuikov) ExpressionAnalyzerからGetAggregatesVisitorクラスを分離しました。#6458 (Artem Zuikov)system.query_log:typeカラムのデータ型をEnumに変更。#6265 (Nikita Mikhaylov)sha256_password認証プラグインの静的リンク化。 #6512 (Yuriy Baranov)- 設定
compileの動作に追加の依存関係が不要になりました。以前のバージョンでは、cannot open crti.o、unable to find library -lcなどのerrorが発生することがありました。#6309 (alexey-milovidov) - 悪意のあるレプリカから送られてくる可能性のある入力に対する検証をさらに強化しました。 #6303 (alexey-milovidov)
- 現在、
clickhouse-obfuscatorファイルはclickhouse-clientパッケージで利用できます。以前のバージョンでは、clickhouse obfuscator(空白あり) として提供されていました。 #5816 #6609 (dimarub2000) - 少なくとも2つのクエリが、少なくとも2つのテーブルを異なる順序で読み取り、さらに別のクエリがそのうち1つのテーブルに対してDDL操作を実行する場合に発生していたデッドロックを修正しました。さらに、別の非常にまれなデッドロックも修正しました。 #6764 (alexey-milovidov)
- デバッグをしやすくするため、
system.processesとsystem.query_logにos_thread_idsカラムを追加しました。 #6763 (alexey-milovidov) - デフォルトの認証プラグインとして
sha256_passwordを使用した場合に発生する、PHP の mysqlnd 拡張機能のバグに対する回避策 (#6031で説明) 。 #6113 (Yuriy Baranov) - NULL 許容性が変更されたカラムに関する不要な部分を削除しました。 #6693 (Artem Zuikov)
queue_max_wait_msのデフォルト値を 0 に設定しました。現在の値 (5 秒) は意味をなさないためです。この設定が有用となるケースはまれです。曖昧さを避けるため、設定replace_running_query_max_wait_ms、kafka_max_wait_ms、connection_pool_max_wait_msを追加しました。#6692 (alexey-milovidov)ExpressionAnalyzerからSelectQueryExpressionAnalyzerを切り出しました。後者ではなく、前者はSELECT以外のクエリ向けとして残します。 #6499 (Artem Zuikov)- 重複していた入出力フォーマットを削除しました。#6239 (Nikolai Kochetov)
- ユーザーが接続時に
poll_intervalおよびidle_connection_timeoutの設定を上書きできるようにしました。 #6230 (alexey-milovidov) MergeTreeに、パーツの部分的な刈り込みを避けるための追加オプションttl_only_drop_parts(デフォルトでは無効) が追加されました。これにより、パーツ内のすべての行の有効期限が切れた場合、そのパーツ全体が削除されます。#6191 (Sergi Vladykin)- set 索引関数の型チェックを追加しました。関数に誤った型が渡された場合は例外をスローします。これにより、UBSan を使用したファズテストを修正しました。 #6511 (Nikita Vasilev)
パフォーマンス改善
MergeTreeテーブルにおいて、expressionsが sorting key と共通のプレフィックスを持つORDER BY expressionsclause を含むクエリを最適化しました。この最適化はoptimize_read_in_ordersetting で制御されます。 #6054 #6629 (Anton Popov)- パーツの loading と削除で複数の threads を使用できるようにしました。 #6372 #6074 #6438 (alexey-milovidov)
- aggregate function state の更新について、Batch 方式を実装しました。これによりパフォーマンスが向上する可能性があります。 #6435 (alexey-milovidov)
exp、log、sigmoid、tanh関数でFastOpsライブラリを使用するようにしました。FastOps は Michael Parakhin (Yandex CTO) による高速なベクトル演算ライブラリです。expおよびlog関数の性能が 6 倍以上向上しました。Float32argument を持つexpおよびlog関数はFloat32を返すようになりました (以前のバージョンでは常にFloat64を返していました) 。現在、exp(nan)はinfを返す場合があります。expおよびlog関数の結果は、真の値に最も近い機械表現可能な数にならない場合があります。 #6254 (alexey-milovidov) fastops を動作させるために Danila Kutenin の方式を使用しました #6317 (alexey-milovidov)UInt8/16に対する consecutive key optimization を無効にしました。 #6298 #6701 (akuzm)ParsedJson::Iteratorでの動的メモリ割り当てをなくすことで、simdjsonライブラリの性能を改善しました。 #6479 (Vitaly Baranov)mmap()でメモリを割り当てる際に、ページフォールトを事前に発生させるようにしました。 #6667 (akuzm)Decimalの比較における性能上の不具合を修正しました。 #6380 (Artem Zuikov)
ビルド/テスト/パッケージングの改善
- 性能面で上回ったため、Compiler (runtime template instantiation) を削除。#6646 (alexey-milovidov)
- gcc-9 における性能低下を、より切り分けて示すための性能テストを追加しました。#6302 (alexey-milovidov)
- マルチスレッド版の
numbersであるテーブル関数numbers_mtを追加しました。ハッシュ関数を用いたパフォーマンステストを更新しました。#6554 (Nikolai Kochetov) clickhouse-benchmarkの比較モード #6220 #6343 (dimarub2000)- スタックトレースを可能な範囲で出力するようにしました。また、実行中のスレッドのスタックトレースを出力するためのデバッグ用シグナルとして
SIGPROFを追加しました。 #6529 (alexey-milovidov) - すべての関数を個別のファイルに分割、その10。#6321 (alexey-milovidov)
- 重複していた const
TABLE_IS_READ_ONLYを削除しました。 #6566 (filimonov) - PR #5417 による
StringHashMapのフォーマット変更。#6700 (akuzm) ExpressionAnalyzerにおける JOIN 作成用のサブクエリを改善。 #6824 (Artem Zuikov)- 冗長な条件を削除しました (PVS Studio で検出) 。#6775 (akuzm)
ReverseIndex用にハッシュテーブルのインターフェイスを分離しました。#6672 (akuzm)- 設定まわりのリファクタリング。 #6689 (alesapin)
set索引関数へのコメントを追加しました。#6319 (Nikita Vasilev)- Linux 上のデバッグ版で OOM スコアを上げました。#6152 (akuzm)
- HDFS HA がデバッグビルドでも動作するようになりました。 #6650 (Weiqing Xu)
transform_query_for_external_databaseのテストを追加しました。#6388 (alexey-milovidov)- Kafkaテーブル向けの複数のmaterialized viewのテストを追加しました。 #6509 (Ivan)
- ビルド方式を改善しました。 #6500 (Ivan)
- root 以外のユーザーで実行した場合でも動作するよう、統合テスト
test_external_dictionariesを修正しました。#6507 (Nikolai Kochetov) - 書き込まれたパケットの合計サイズが
DBMS_DEFAULT_BUFFER_SIZEを超えると、このバグが再現されます。#6204 (Yuriy Baranov) RENAMEテーブルのレースコンディションに対するテストを追加 #6752 (alexey-milovidov)KILL QUERYでの Settings のデータ競合を回避しました。 #6753 (alexey-milovidov)- cache Dictionary で発生するエラーを処理するための統合テストを追加しました。 #6755 (Vitaly Baranov)
- Mac OS では意味がないため、ELF オブジェクトファイルのパースを無効化しました。 #6578 (alexey-milovidov)
- changelog ジェネレーターの改善を試みました。 #6327 (alexey-milovidov)
- GCC に
-Wshadowスイッチを追加しました。 #6325 (kreuzerkrieg) mimallocサポートに関する廃止されたコードを削除しました。#6715 (alexey-milovidov)zlib-ngは x86 の機能を判定し、その情報をグローバル変数に保存します。これは defalteInit の呼び出し時に行われますが、この呼び出しは複数のスレッドから同時に実行される可能性があります。マルチスレッド環境での書き込みを避けるため、ライブラリの起動時に実行するようにしました。 #6141 (akuzm)- #5192 で修正された join のバグについての回帰テスト。 #6147 (Bakhtiyor Ruziev)
- MSan のレポートを修正しました。 #6144 (alexey-milovidov)
- 断続的に不安定になる有効期限 (TTL) テストを修正。 #6782 (Anton Popov)
MergeTreeDataPart::is_frozenフィールドで誤検知されるデータ競合を修正しました。#6583 (alexey-milovidov)- ファズテストのタイムアウトを修正しました。以前のバージョンでは、クエリ
SELECT * FROM numbers_mt(gccMurmurHash(''))で誤ってハングアップを検出していました。#6582 (alexey-milovidov) - カラムの
static_castにデバッグ用チェックを追加しました。 #6581 (alexey-milovidov) - 公式RPMパッケージでOracle Linuxをサポート。 #6356 #6585 (alexey-milovidov)
- json perftests のタイプを
onceからloopに変更しました。#6536 (Nikolai Kochetov) odbc-bridge.cppではmain()が定義されているため、clickhouse-libに含めるべきではありません。 #6538 (Orivej Desh)- 右テーブルのキーにNULLがある
FULL|RIGHT JOINでクラッシュしないことを確認するテスト。 #6362 (Artem Zuikov) - 念のため、別名の展開上限に対するテストを追加しました。 #6442 (alexey-milovidov)
- 適切な箇所で
boost::filesystemをstd::filesystemに置き換えました。#6253 #6385 (alexey-milovidov) - ウェブサイトに RPM パッケージを追加しました。 #6251 (alexey-milovidov)
IN句でのUnknown identifier例外の修正に対するテストを追加しました。#6708 (Artem Zuikov)shared_ptr_helperが分かりにくいという声があったため、簡素化しました。 #6675 (alexey-milovidov)- fixed Gorilla および DoubleDelta コーデックの性能テストを追加しました。 #6179 (Vasily Nemkov)
- 統合テスト
test_dictionariesを 4 つの個別のテストに分割しました。#6776 (Vitaly Baranov) PipelineExecutorの PVS-Studio の警告を修正しました。 #6777 (Nikolai Kochetov)- ASan で
libraryDictionary ソースを使用可能にしました。#6482 (alexey-milovidov) - PR一覧からchangelogを生成するオプションを追加しました。 #6350 (alexey-milovidov)
- 読み取り時に
TinyLogストレージをロックする。#6226 (akuzm) - CIで壊れたシンボリックリンクをチェックするようにしました。 #6634 (alexey-milovidov)
- デバッグビルドでは時間がかかることがあるため、“stack overflow”テストのタイムアウトを延長しました。#6637 (alexey-milovidov)
- 二重の空白をチェックする機能を追加しました。#6643 (alexey-milovidov)
- サニタイザを有効にしてビルドした際の
new/deleteのメモリ追跡を修正しました。追跡は完全ではありません。これはテストでのメモリ制限例外を防ぐだけです。 #6450 (Artem Zuikov) - リンク時の未定義シンボルのチェックを再び有効にしました。#6453 (Ivan)
hyperscanの毎日の再ビルドを回避しました。#6307 (alexey-milovidov)ProtobufWriterの UBSan レポートの問題を修正しました。#6163 (alexey-milovidov)- 互換性がないため、サニタイザ使用時はクエリプロファイラを使えないようにしました。 #6769 (alexey-milovidov)
- タイマーによる失敗後のDictionary再読み込みテストを追加しました。 #6114 (Vitaly Baranov)
PipelineExecutor::prepareProcessorの引数型の不一致を修正しました。#6494 (Nikolai Kochetov)- 不正な URI を対象とするテストを追加しました。#6493 (alexey-milovidov)
CAST関数にチェックをさらに追加しました。これにより、fuzzy test における segmentation fault について、より多くの情報を得られるはずです。#6346 (Nikolai Kochetov)- ローカルでイメージをビルドする
docker/builderコンテナにgcc-9のサポートを追加しました。#6333 (Gleb Novikov) LowCardinality(String)を使用した主キーのテスト。 #5044 #6219 (dimarub2000)- スタックトレースの出力が遅いために影響を受けていたテストを修正しました。 #6315 (alexey-milovidov)
groupUniqArrayのクラッシュ (#6029 で修正) に対するテストケースを追加しました。#4402 #6129 (akuzm)- インデックスのmutationテストを修正しました。 #6645 (Nikita Vasilev)
- パフォーマンステストで、実行していないクエリのクエリログを読み取らないようにしました。 #6427 (akuzm)
- 疑わしい low cardinality 型に関する設定にかかわらず、任意の low cardinality 型で materialized view を作成できるようになりました。#6428 (Olga Khvostikova)
send_logs_level設定のテストを更新。#6207 (Nikolai Kochetov)- gcc-8.2 でのビルドの問題を修正しました。 #6196 (Max Akhmedov)
- 内部 libc++ でのビルドの問題を修正しました。 #6724 (Ivan)
rdkafkaライブラリを使った共有ビルドの不具合を修正 #6101 (Ivan)- Mac OSビルドの修正 (未完) 。 #6390 (alexey-milovidov) #6429 (alex-zaitsev)
- “splitted” build を修正しました。#6618 (alexey-milovidov)
- その他のビルド関連の修正: #6186 (Amos Bird) #6486 #6348 (vxider) #6744 (Ivan) #6016 #6421 #6491 (proller)
後方互換性を持たない変更
- 使用頻度の低かったテーブル関数
catBoostPoolとストレージCatBoostPoolを削除しました。このテーブル関数を使用していた場合は、feedback@clickhouse.comまでメールでご連絡ください。なお、CatBoost インテグレーションは引き続き利用可能で、今後もサポートされます。 #6279 (alexey-milovidov) - デフォルトで
ANY RIGHT JOINとANY FULL JOINを無効化しました。これらを有効にするには、any_join_distinct_right_table_keys設定を有効にしてください。 #5126 #6351 (Artem Zuikov)
ClickHouse リリース 19.13
ClickHouse リリース 19.13.6.51、2019-10-02
バグ修正
- このリリースには、19.11.12.69 のすべてのバグ修正も含まれています。
ClickHouse リリース 19.13.5.44、2019-09-20
バグ修正
- このリリースには、19.14.6.12 のすべてのバグ修正も含まれています。
- ZooKeeper にアクセスできない状態でレプリケートテーブルに対する
DROPクエリを実行した際に、テーブルが不整合な状態になる可能性がある問題を修正しました。 #6045 #6413 (Nikita Mikhaylov) - StorageMerge におけるデータ競合を修正しました。 #6717 (alexey-milovidov)
- ソケットからの
recvが無限に続く原因となる、クエリプロファイラに入り込んだバグを修正しました。 #6386 (alesapin) - 真偽値に対して
JSONExtractRaw関数を実行した際の過剰な CPU 使用を修正しました。 #6208 (Vitaly Baranov) - materialized view へのプッシュ時のリグレッションを修正しました。 #6415 (Ivan)
- テーブル関数
urlには、攻撃者がリクエストに任意の HTTPヘッダー を注入できる脆弱性がありました。この問題は Nikita Tikhomirov によって発見されました。 #6466 (alexey-milovidov) - Set 索引における不要な
ASTチェックを修正しました。 #6510 #6651 (Nikita Vasilev) - クエリに埋め込まれた
AggregateFunctionの値のパースを修正しました。 #6575 #6773 (Zhichang Yu) trim関数ファミリーの誤った動作を修正しました。 #6647 (alexey-milovidov)
ClickHouse リリース 19.13.4.32、2019-09-10
バグ修正
- このリリースには、19.11.9.52 および 19.11.10.54 のセキュリティ関連のバグ修正もすべて含まれています。
system.partsテーブルおよびALTERクエリにおけるデータ競合を修正しました。 #6245 #6513 (alexey-milovidov)- 空の分散テーブルを
sampleとprewhereを使って読み取る際に発生していた、streams 間のヘッダー不一致を修正しました。 #6167 (Lixiang Qian) #6823 (Nikolai Kochetov) - タプルを含むサブクエリで
IN句を使用した際のクラッシュを修正しました。 #6125 #6550 (tavplubix) GLOBAL JOIN ON句で同じカラム名を使用するケースを修正しました。 #6181 (Artem Zuikov)- 非対応の型を
Decimalにキャストした際のクラッシュを修正し、代わりに例外を送出するようにしました。 #6297 (Artem Zuikov) extractAll()関数で発生していたクラッシュを修正しました。 #6644 (Artem Zuikov)MySQL、ODBC、JDBCテーブル関数のクエリ変換が、複数のAND条件を含むSELECT WHEREクエリでも正しく動作するようになりました。 #6381 #6676 (dimarub2000)- MySQL 8 インテグレーション向けに先行宣言チェックを追加しました。 #6569 (Rafael David Tinoco)
セキュリティ修正
- 展開フェーズの codecs における 2 件の脆弱性を修正しました (悪意のあるユーザーが、展開時にバッファオーバーフローを引き起こすような圧縮データを細工できる可能性がありました) 。 #6670 (Artem Zuikov)
ClickHouse リリース 19.13.3.26、2019-08-22
バグ修正
enable_mixed_granularity_parts=1が設定されたテーブルに対するALTER TABLE ... UPDATEクエリを修正しました。 #6543 (alesapin)- タプルを含むサブクエリで IN 句を使用した際に発生する NPE を修正しました。 #6125 #6550 (tavplubix)
- 古い状態のレプリカが復帰した際に、
DROP PARTITIONによって削除されたデータパーツを保持したままになることがある問題を修正しました。 #6522 #6523 (tavplubix) - CSV のパースに関する問題を修正しました。 #6426 #6559 (tavplubix)
- system.parts テーブルおよび ALTER クエリでのデータ競合を修正しました。これにより #6245 も修正されます。 #6513 (alexey-milovidov)
- メモリ破損につながる可能性のあるミューテーション内の不正なコードを修正しました。
DROP TABLEとsystem.partsまたはsystem.parts_columnsに対するSELECTの同時実行によって発生する可能性があった、アドレス0x14c0の読み取り時の segfault を修正しました。ミューテーションクエリの準備における競合状態を修正しました。Replicated テーブルに対するOPTIMIZEと、ALTER などの同時変更操作によって発生するデッドロックを修正しました。 #6514 (alexey-milovidov) - スキッピングインデックスを持つテーブルで
ALTER DELETEクエリ実行後に発生する可能性があるデータ損失を修正しました。 #6224 #6282 (Nikita Vasilev)
セキュリティ修正
- 攻撃者が ZooKeeper への書き込み権限を持ち、さらに ClickHouse が稼働するネットワーク上で到達可能なカスタムサーバーを実行できる場合、ClickHouse のレプリカを装って ZooKeeper に登録される、細工された悪意あるサーバーを作成できてしまいます。別のレプリカがその悪意あるレプリカからデータパートを取得すると、clickhouse-server にファイルシステム上の任意のパスへ書き込ませることが可能になります。Yandex の情報セキュリティチームの Eldar Zaitov により報告されました。 #6247 (alexey-milovidov)
ClickHouse リリース 19.13.2.19、2019-08-14
新機能
- クエリレベルのサンプリングプロファイラ。例。#4247 (laplab) #6124 (alexey-milovidov) #6250 #6283 #6386
*アスタリスクをより高機能にしたもののように動作するCOLUMNS('regexp')式で、カラムのリストを指定できるようになりました。#5951 (mfridental), (alexey-milovidov)CREATE TABLE AS table_function()が使用可能になりました #6057 (dimarub2000)stochasticLinearRegression()およびstochasticLogisticRegression()集約関数では、ほとんど調整しなくても良好な結果が得られるため、確率的勾配降下法の Adam オプティマイザがデフォルトで使用されるようになりました。#6000 (Quid37)- カスタム週番号を扱うための関数が追加されました #5212 (Andy Yang)
RENAMEクエリがすべてのストレージで動作するようになりました。#5953 (Ivan)- サーバー設定で指定されたログレベルに関係なく、
send_logs_levelを設定することで、クライアントがサーバーから任意のレベルのログを受け取れるようになりました。#5964 (Nikita Mikhaylov)
後方互換性を持たない変更
- 設定
input_format_defaults_for_omitted_fieldsがデフォルトで有効になりました。分散テーブルへの insert では、この設定がクラスター全体で同一である必要があります (ローリングアップデートの前に設定しておく必要があります) 。これにより、JSONEachRowおよびCSV*フォーマットで省略されたフィールドに対する複雑なデフォルト式を計算できるようになります。想定どおりの動作ではありますが、ごくわずかな性能差が生じる可能性があります。 #6043 (Artem Zuikov), #5625 (akuzm)
実験的機能
- 新しいクエリ処理パイプライン。これを有効にするには、
experimental_use_processors=1オプションを使用してください。自己責任で使用してください。#4914 (Nikolai Kochetov)
バグ修正
- このバージョンで、Kafkaインテグレーションの問題を修正しました。
- 大きな
DoubleDelta値に対するInt64のDoubleDeltaエンコーディングを修正し、Int32のランダムデータに対するDoubleDeltaエンコーディングを改善しました。 #5998 (Vasily Nemkov) - 設定
merge_tree_uniform_read_distributionが 0 に設定されている場合に、max_rows_to_readが過大評価される問題を修正しました。 #6019 (alexey-milovidov)
改善
config.dファイルに、config ファイルに対応するルート要素が存在しない場合は、例外をスローします #6123 (dimarub2000)
パフォーマンス改善
ビルド/テスト/パッケージングの改善
- 性能テストでメモリ使用量をレポートするようにしました。 #5899 (akuzm)
- 外部
libcxxを使用するビルドを修正しました #6010 (Ivan) rdkafkaライブラリを使用する共有ビルドを修正しました #6101 (Ivan)
ClickHouse リリース 19.11
ClickHouse リリース 19.11.13.74、2019-11-01
バグ修正
ALTER MODIFY COLUMNと vertical merge において、マージまたは変更対象のパーツのいずれか1つが空 (0行) の場合に、まれにクラッシュする問題を修正しました。 #6780 (alesapin)SIMDJSONを手動で更新しました。これにより、誤った JSON 診断メッセージによって stderr ファイルがあふれる可能性がある問題を修正しました。 #7548 (Alexander Kazakov)- ミューテーションにおける
mrkファイル拡張子の不具合を修正しました (alesapin)
ClickHouse リリース 19.11.12.69、2019-10-02
バグ修正
- 大規模なテーブル上の複雑なキーに対する索引解析のパフォーマンス低下を修正しました。これにより #6924 も修正されます。#7075 (alexey-milovidov)
- Distributed engine を使用するテーブルでデータ送信中にまれに発生する SIGSEGV を回避しました (
Failed to send batch: file with index XXXXX is absent) 。#7032 (Azat Khuzhin) - 複数の JOIN で
Unknown identifierが発生する問題を修正しました。これにより #5254 も修正されます。#7022 (Artem Zuikov)
ClickHouse リリース 19.11.11.57、2019-09-13
- 空の Kafka topic を SELECT した際に segfault を引き起こしていた論理エラーを修正しました。 #6902 #6909 (Ivan)
- params に空の配列を指定した場合の関数
АrrayEnumerateUniqRankedの不具合を修正しました。 #6928 (proller)
ClickHouse リリース 19.11.10.54, 2019-09-10
バグ修正
- すべての partition についてオフセットを一括で commit できるよう、Kafka メッセージのオフセットを手動で保存するようにしました。これにより、「1 つの consumer が多数の partition を処理する」シナリオで発生しうる重複の可能性を解消します。 #6872 (Ivan)
ClickHouse リリース 19.11.9.52、2019-09-6
- cache 辞書のエラー処理を改善しました。 #6737 (Vitaly Baranov)
- 関数
arrayEnumerateUniqRankedのバグを修正しました。 #6779 (proller) - JSON から
Tupleを抽出する際のJSONExtract関数の不具合を修正しました。 #6718 (Vitaly Baranov) - スキッピングインデックスを持つテーブルで
ALTER DELETEクエリを実行した後に、データが失われる可能性がある問題を修正しました。 #6224 #6282 (Nikita Vasilev) - パフォーマンステストを修正しました。 #6392 (alexey-milovidov)
- Parquet: boolean カラムの読み取りを修正しました。 #6579 (alexey-milovidov)
- 定数引数に対する
nullIf関数の誤った動作を修正しました。 #6518 (Guillaume Tassery) #6580 (alexey-milovidov) - サーバーの通常の再起動時に Kafka メッセージが重複する問題を修正しました。 #6597 (Ivan)
- 長時間実行される
ALTER UPDATEまたはALTER DELETEによって通常のマージが妨げられることがある問題を修正しました。利用可能な空きスレッドが不足している場合は、ミューテーションが実行されないようにしました。 #6502 #6617 (tavplubix) - サーバー設定ファイルで “timezone” を処理する際のエラーを修正しました。 #6709 (alexey-milovidov)
- Kafka テストを修正しました。 #6805 (Ivan)
セキュリティ修正
- 攻撃者が ZooKeeper への書き込み権限を持ち、かつ ClickHouse が稼働するネットワークからアクセス可能な任意のサーバーを実行できる場合、ClickHouse のレプリカとして振る舞い、ZooKeeper に登録されるよう細工した悪意あるサーバーを作成できる可能性があります。別のレプリカがその悪意あるレプリカからデータパートを取得する際、clickhouse-server にファイルシステム上の任意のパスへ書き込ませることが可能になります。Yandex の情報セキュリティチームの Eldar Zaitov により発見されました。 #6247 (alexey-milovidov)
ClickHouse リリース 19.11.8.46、2019-08-22
バグ修正
enable_mixed_granularity_parts=1が設定されたテーブルに対するALTER TABLE ... UPDATEクエリを修正しました。#6543 (alesapin)- タプルを含むサブクエリで IN 句を使用した際に発生する NPE を修正しました。#6125 #6550 (tavplubix)
- 古くなったレプリカが復旧した場合でも、DROP PARTITION によって削除されたデータパーツを保持したままになる可能性がある問題を修正しました。#6522 #6523 (tavplubix)
- CSV のパースに関する問題を修正しました。#6426 #6559 (tavplubix)
system.partsテーブルおよび ALTER クエリでのデータ競合を修正しました。これにより #6245 も修正されます。#6513 (alexey-milovidov)- メモリ破損につながる可能性があるミューテーション内の誤ったコードを修正しました。
system.partsまたはsystem.parts_columnsに対するDROP TABLEとSELECTの同時実行によって発生し得る、アドレス0x14c0の読み取り時の segfault を修正しました。ミューテーションクエリの準備時に発生する競合状態を修正しました。レプリケートテーブルに対するOPTIMIZEと、ALTER などの同時実行される変更操作によって発生するデッドロックを修正しました。#6514 (alexey-milovidov)
ClickHouse リリース 19.11.7.40、2019-08-14
バグ修正
- このバージョンで Kafka インテグレーションを修正しました。
- 定数引数に対して
arrayReduceを使用した際に発生する segfault を修正しました。 #6326 (alexey-milovidov) toFloat()の単調性を修正しました。 #6374 (dimarub2000)optimize_skip_unused_shardsが有効で、分片キーがない場合に発生する segfault を修正しました。 #6384 (CurtizJ)arrayEnumerateUniqRanked関数のロジックを修正しました。 #6423 (alexey-milovidov)- MySQL ハンドラーから冗長すぎるログを削除しました。 #6389 (alexey-milovidov)
topKおよびtopKWeighted集計関数における誤動作と、発生する可能性のある segfault を修正しました。 #6404 (CurtizJ)system.columnsテーブルで仮想カラムを公開しないようにしました。これは後方互換性のために必要です。 #6406 (alexey-milovidov)- 複合キー cache Dictionary の文字列フィールドに対するメモリ割り当てのバグを修正しました。 #6447 (alesapin)
Replicated*MergeTreeテーブルの新しいレプリカ作成時に adaptive granularity を有効にする際のバグを修正しました。 #6452 (alesapin)- Kafka メッセージの読み取り時に無限ループが発生する問題を修正しました。 #6354 (abyss7)
- 細工されたクエリにより、SQL パーサーでのスタックオーバーフローが原因でサーバーがクラッシュする可能性、および
MergeテーブルとDistributedテーブルでスタックオーバーフローが発生する可能性を修正しました #6433 (alexey-milovidov) - 小さな数列で発生する Gorilla エンコーディング error を修正しました。 #6444 (Enmk)
改善
- 接続時に
poll_intervalとidle_connection_timeoutの設定を上書きできるようにしました。 #6230 (alexey-milovidov)
ClickHouse リリース 19.11.5.28、2019-08-05
バグ修正
- サーバーの過負荷時にクエリがハングする可能性を修正しました。#6301 (alexey-milovidov)
- yandexConsistentHash 関数で発生する FPE を修正しました。これにより #6304 が修正されます。#6126 (alexey-milovidov)
AggregateFunctionFactoryにおけるLowCardinality型の変換に関するバグを修正しました。これにより #6257 が修正されます。#6281 (Nikolai Kochetov)- 設定ファイルで
trueおよびfalseという文字列からbool設定をパースする処理を修正しました。#6278 (alesapin) WHEREの一部がPREWHEREに移動する際に、MergeTreetable 上のDistributedtable へのクエリで発生する、互換性のない stream headers に関するまれなバグを修正しました。#6236 (alesapin)- 符号付き型から符号なし型への整数除算における overflow を修正しました。これにより #6214 が修正されます。#6233 (alexey-milovidov)
後方互換性を持たない変更
Kafkaは引き続き動作しません。
ClickHouse リリース 19.11.4.24、2019-08-01
バグ修正
- adaptive granularity 使用時にセカンダリ索引の marks を書き込む際のバグを修正しました。#6126 (alesapin)
- 二段階集約における
GROUP BYのWITH ROLLUPおよびWITH CUBEmodifier の不具合を修正しました。#6225 (Anton Popov) JSONExtractRaw関数でハングする不具合を修正しました。#6195 #6198 (alexey-milovidov)- ExternalLoader::reloadOutdated() で発生する segfault を修正しました。#6082 (Vitaly Baranov)
- server が listening sockets を閉じても shutdown せず、残りのクエリの処理を継続してしまうケースを修正しました。その結果、clickhouse-server process が 2 つ Running することがありました。また、残りのクエリに対して server が
bad_function_callエラーを返すことがありました。#6231 (alexey-milovidov) - ODBC、MySQL、ClickHouse、HTTP 経由で外部辞書を初期ロードする際の update フィールドに対する不要かつ誤った条件を修正しました。これにより #6069 を修正しました。#6083 (alexey-milovidov)
LowCardinality(Nullable)を not-Nullable カラムに CAST する際、NULL を含まない場合に無関係な Exception が発生する問題を修正しました (例:SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String)のようなクエリ) 。#6094 #6119 (Nikolai Kochetov)- ごくまれに
"uniq"集約関数の結果が非決定論的になる不具合を修正しました。このバグはすべての ClickHouse バージョンに存在していました。#6058 (alexey-milovidov) - 関数
IPv6CIDRToRangeに少し大きすぎる CIDR を設定した場合に発生する segfault を修正しました。#6068 (Guillaume Tassery) - server が多数の異なる Context から多数の Exception を throw した場合に発生する小さな memory leak を修正しました。#6144 (alexey-milovidov)
- consumer が subscription 前に一時停止され、その後再開されない状況を修正しました。#6075 (Ivan) なお、このバージョンでは Kafka は壊れています。
- エラーで終了した前回の読み取り操作で残った Kafka data buffer をクリアするようにしました #6026 (Nikolay) なお、このバージョンでは Kafka は壊れています。
StorageMergeTree::background_task_handleはstartup()で初期化されるため、MergeTreeBlockOutputStream::write()が初期化前にこれを使用しようとする場合があります。そのため、初期化済みかどうかを確認するようにしました。#6080 (Ivan)
ビルド/テスト/パッケージングの改善
- 公式の
rpmパッケージを追加しました。 #5740 (proller) (alesapin) packagerスクリプトで.rpmおよび.tgzパッケージをビルドできるようにしました。 #5769 (alesapin)- 「Arcadia」ビルドシステム向けの修正を行いました。 #6223 (proller)
後方互換性を持たない変更
- このバージョンでは
Kafkaを使用できません。
ClickHouse リリース 19.11.3.11、2019-07-18
新機能
- プリペアドステートメントのサポートを追加しました。#5331 (Alexander) #5630 (alexey-milovidov)
DoubleDeltaおよびGorillaのカラムコーデック #5600 (Vasily Nemkov)- OS が動的なスケジューリング優先度の調整に使用する、クエリ処理スレッドの “nice” 値を制御できる
os_thread_prioritysetting を追加しました。動作にはCAP_SYS_NICEcapabilities が必要です。これは #5858 の実装です #5909 (alexey-milovidov) - Kafka エンジンに
_topic、_offset、_keyカラムを実装しました #5382 (Ivan) このバージョンでは Kafka は壊れていますので注意してください。 - 集約関数コンビネータ
-Resampleを追加 #5590 (hcz) - ウィンドウサイズの制限の有無にかかわらず移動和/移動平均を計算する集約関数
groupArrayMovingSum(win_size)(x)およびgroupArrayMovingAvg(win_size)(x)。#5595 (inv2004) arrayFlatten<->flattenの別名を追加 #5764 (hcz)- Uber の H3 関数
geoToH3を統合。#4724 (Remen Ivan) #5805 (alexey-milovidov)
バグ修正
- 非同期更新機能を備えたDNS cacheを実装しました。専用のスレッドがすべてのホスト名を解決し、一定間隔 (設定
dns_cache_update_period) でDNS cacheを更新します。これは、ホストのIPアドレスが頻繁に変わる場合に役立つはずです。#5857 (Anton Popov) - 値のサイズが 32 ビット未満のカラムに影響する
Deltacodec の segfault を修正しました。この不具合により、メモリがランダムに破損していました。#5786 (alesapin) - 非物理カラムを含むブロックでの有効期限 (TTL) マージ時のsegfaultを修正。 #5819 (Anton Popov)
LowCardinalityカラムを含むパートのチェックにおけるまれなバグを修正しました。以前は、LowCardinalityカラムを含むパートではcheckDataPartが常に失敗していました。#5832 (alesapin)- サーバーのスレッドプールがいっぱいのときに接続がハングしないようにしました。これは、接続タイムアウトが長い場合に、
remoteテーブル関数からの connection や、レプリカのない分片への connection で重要です。これにより #5878 #5881 を修正しました (alexey-milovidov) evalMLModel関数で定数引数をサポートするようになりました。これにより、#5817 #5820 の問題が修正されました (alexey-milovidov)- ClickHouse がデフォルトのタイムゾーンを
UTCではなくUCTと判定してしまう問題を修正しました。これにより #5804 が修正されます。 #5828 (alexey-milovidov) visitParamExtractRawにおけるバッファアンダーフローを修正しました。これにより #5901 が修正されました #5902 (alexey-milovidov)- これで、分散
DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTERクエリは leader レプリカ上で直接実行されるようになりました。 #5757 (alesapin) ColumnNullableを伴うColumnConstでのcoalesceを修正し、関連する変更を加えました。 #5755 (Artem Zuikov)ReadBufferFromKafkaConsumerを修正し、以前に停止していた場合でもcommit()の後に新しいメッセージを引き続き読み取れるようにしました #5852 (Ivan)- 右側のテーブルの
NullableキーでJOINした際のFULLおよびRIGHTJOINの結果を修正しました。#5859 (Artem Zuikov) - 低優先度クエリが無限に待機し続ける可能性がある問題を修正しました。#5842 (alexey-milovidov)
SYSTEM FLUSH LOGSクエリの後に一部のクエリが query_log に記録されないことがある不具合の原因となっていた競合状態を修正しました。 #5456 #5685 (Anton Popov)- 既に削除された copier オブジェクトを使おうとする watch が原因で発生していた、ClusterCopier の
heap-use-after-freeに関する ASan 警告を修正しました。 #5871 (Nikolai Kochetov) - 一部の
IColumn::deserializeAndInsertFromArena実装で誤ったStringRefポインタが返される問題を修正しました。この不具合の影響はユニットテストのみに限られていました。#5973 (Nikolai Kochetov) - 元の ARRAY JOIN カラムおよび中間 ARRAY JOIN カラムが同名のカラムをマスクしないようにしました。 #5941 (Artem Zuikov)
- MySQL engine に対する、MySQL スタイルの識別子クォートを使った insert および select クエリを修正しました。 #5704 (Winter Zhang)
CHECK TABLEクエリが MergeTree エンジンファミリーで利用できるようになりました。各パート (より単純なエンジンの場合はファイル) について、チェック結果のステータスと、あればメッセージを返します。また、破損したパートの取得に関する不具合を修正しました。#5865 (alesapin)- SPLIT_SHARED_LIBRARIES のランタイムを修正 #5793 (Danila Kutenin)
/etc/localtimeが../usr/share/zoneinfo/Asia/Istanbulのような相対シンボリックリンクである場合に、タイムゾーンの初期化が正しく行われない問題を修正しました #5922 (alexey-milovidov)- clickhouse-copier: シャットダウン時のuse-after-freeを修正 #5752 (proller)
simdjsonを更新しました。ヌルバイトを含む一部の不正な JSON が正常にパースされてしまう問題を修正しました。#5938 (alexey-milovidov)- SystemLogs のシャットダウン時の不具合を修正 #5802 (Anton Popov)
- invalidate_query 内の条件が Dictionary に依存している場合に発生するハングを修正しました。 #6011 (Vitaly Baranov)
改善
- クラスター構成で名前解決できないアドレスを許可するようにしました。これらは利用不可と見なされ、接続を試みるたびに名前解決が再試行されます。これは特に Kubernetes で有用です。これにより #5714 #5924 が修正されます。(alexey-milovidov)
- アイドル状態の TCP 接続を閉じるようにしました (デフォルトのタイムアウトは 1 時間) 。これは、各サーバーに複数の分散テーブルがある大規模なクラスターでは特に重要です。各サーバーが他のすべてのサーバーへの接続プールを保持する可能性があり、クエリの同時実行数がピークを過ぎると、接続が滞留してしまうためです。これにより #5879 #5880 が修正されます (alexey-milovidov)
topK関数の品質を改善しました。SavingSpace set の動作を変更し、新しい要素の重みの方が大きい場合は末尾の要素を削除するようにしました。#5833 #5850 (Guillaume Tassery)- ドメインを扱う URL 関数が、認証スキームのない不完全な URL でも使用できるようになりました #5725 (alesapin)
system.parts_columnsテーブルにチェックサムが追加されました。#5874 (Nikita Mikhaylov)Enumデータ型を、Enum8またはEnum16の別名として追加しました。#5886 (dimarub2000)T64codec 向けの完全ビット転置バリアント。zstdでより高い圧縮率が得られる可能性があります。#5742 (Artem Zuikov)startsWith関数の条件で主キーを使用できるようになりました。これにより、#5310 および #5882 が修正されました #5919 (dimarub2000)- データベース名を空にできるようにし、クロスレプリケーションのクラスター トポロジーで
clickhouse-copierを使用可能にしました。 #5745 (nvartolomei) tzdataのないシステム (例: 最小構成の Docker コンテナー) では、デフォルトのタイムゾーンとしてUTCを使用するようにしました。このパッチ以前は、エラーメッセージCould not determine local time zoneが表示され、サーバーまたはクライアントが起動しませんでした。#5827 (alexey-milovidov)- 後方互換性のため、関数
quantileTimingにおける浮動小数点引数のサポートを復活させました。 #5911 (alexey-milovidov) - エラーメッセージに、カラムが不足しているテーブルがどれかを表示するようにしました。 #5768 (Ivan)
- 異なるユーザーによる同じ query_id でのクエリ実行を禁止 #5430 (proller)
- Graphite へのメトリクス送信用コードの堅牢性が向上しました。長時間に及ぶ複数回の
RENAME TABLE操作中でも動作します。#5875 (alexey-milovidov) - ThreadPoolがタスクを実行用にスケジュールできない場合に、より詳細なエラーメッセージが表示されるようになりました。これにより、#5305 #5801 が修正されます (alexey-milovidov)
- ngramSearch の挙動を反転し、より直感的にしました #5807 (Danila Kutenin)
- HDFS engine ビルダーでのユーザーのパースを追加 #5946 (akonyaev90)
max_ast_elementsパラメータのデフォルト値を更新 #5933 (Artem Konovalov)- 廃止された設定という概念が導入されました。廃止された設定
allow_experimental_low_cardinality_typeは、指定しても効果はありません。0f15c01c6802f7ce1a1494c12c846be8c98944cd Alexey Milovidov
パフォーマンス改善
- スレッドの分散がより均一になるよう、Merge テーブルから SELECT するストリーム数を増やしました。設定
max_streams_multiplier_for_merge_tablesを追加しました。これにより #5797 を修正しました #5915 (alexey-milovidov)
ビルド/テスト/パッケージングの改善
- 異なるバージョンのClickHouseにおけるクライアント・サーバー間の相互作用について、後方互換性テストを追加しました。 #5868 (alesapin)
- すべてのコミットとプルリクエストでのテストカバレッジ情報。 #5896 (alesapin)
- AddressSanitizerと連携し、独自のアロケータ (
ArenaとArenaWithFreeLists) に対応することで、“use-after-free” エラーをより効果的にデバッグできるようにしました。#5728 (akuzm) - C++の例外処理およびスタックトレースの出力に LLVM libunwind implementation を使用するように変更 #4828 (Nikita Lapkov)
- -Weverything からさらに 2 件の警告を追加 #5923 (alexey-milovidov)
- Memory Sanitizer を使用した ClickHouse のビルドを可能にしました。 #3949 (alexey-milovidov)
- ファズテストでの
bitTest関数に関する ubsan レポートを修正しました。 #5943 (alexey-milovidov) - Docker: 認証が必要な ClickHouse インスタンスを初期化できるようになりました。 #5727 (Korviakov Andrey)
- librdkafkaをバージョン1.1.0に更新 #5872 (Ivan)
- 結合テスト全体に対するタイムアウトを追加し、テストコード内の一部のテストを無効化しました。#5741 (alesapin)
- ThreadSanitizer で検出されたいくつかの不具合を修正しました。 #5854 (akuzm)
--no-undefinedオプションを指定すると、リンク時にすべての外部名が実際に存在するかどうかをリンカが確認します。これは、分割ビルドモードでライブラリ間の実際の依存関係を追跡するのに非常に役立ちます。 #5855 (Ivan)- #5797 に対するパフォーマンステストを追加しました #5914 (alexey-milovidov)
- gcc-7 との互換性の問題を修正しました。 #5840 (alexey-milovidov)
- gcc-9 のサポートを追加しました。これにより、#5717 #5774 の問題が修正されました (alexey-milovidov)
- libunwind が誤ってリンクされることがある問題を修正しました。 #5948 (alexey-milovidov)
- PVS-Studio で検出されたいくつかの警告を修正しました。 #5921 (alexey-milovidov)
clang-tidy静的アナライザの初期対応を追加しました。 #5806 (alexey-milovidov)- BSD/Linux のエンディアンマクロ (‘be64toh’ および ‘htobe64’) を Mac OS X の同等のマクロに変換 #5785 (Fu Chen)
- 結合テストガイドを改善。 #5796 (Vladimir Chebotarev)
- macOS + gcc9 でのビルドを修正 #5822 (filimonov)
- 見落としやすいタイプミスを修正: aggreAGte -> aggregate。 #5753 (akuzm)
- FreeBSD ビルドを修正 #5760 (proller)
- ウェブサイトに実験的なYouTubeチャンネルへのリンクを追加 #5845 (Ivan Blinkov)
- CMake: カバレッジフラグのオプションを追加: WITH_COVERAGE #5776 (proller)
- 一部のインラインPODArrayの初期サイズを修正しました。 #5787 (akuzm)
- clickhouse-server.postinst: CentOS 6 の OS 検出を修正 #5788 (proller)
- Arch Linuxパッケージの生成を追加しました。 #5719 (Vladimir Chebotarev)
- Common/config.h をライブラリ (dbms) ごとに分割 #5715 (proller)
- 「Arcadia」ビルドプラットフォーム向けの修正 #5795 (proller)
- 特殊なビルド (gcc9、サブモジュールなし) への修正 #5792 (proller)
- バグが起きやすいことが判明したため、
unalignedStoreでは型の明示を必須にしました #5791 (akuzm) - macOSビルドを修正 #5830 (filimonov)
- こちら #5263 #5887 で要望された、より大規模なデータセットを用いた新しい JIT 機能の性能テスト (Guillaume Tassery)
- ストレステストでステートフルテストを実行 12693e568722f11e19859742f56428455501fd2a (alesapin)
後方互換性を持たない変更
- このバージョンでは
Kafkaは動作しません。 - 新しい
MergeTreeテーブルでは、デフォルトでadaptive_index_granularity= 10MB が有効になります。バージョン 19.11+ で新しい MergeTree テーブルを作成した場合、19.6 より前のバージョンへのダウングレードはできなくなります。 #5628 (alesapin) - Yandex.Metrica で使用されていた、廃止された未公開の埋め込み辞書を削除しました。関数
OSIn、SEIn、OSToRoot、SEToRoot、OSHierarchy、SEHierarchyは利用できなくなりました。これらの関数を使用している場合は、clickhouse-feedback@yandex-team.com までメールでご連絡ください。注: 最終段階で、これらの関数は当面維持することにしました。 #5780 (alexey-milovidov)
ClickHouse リリース 19.10
ClickHouse リリース 19.10.1.5、2019-07-12
新機能
- 新しいカラムコーデック
T64を追加。(U)IntX/EnumX/Data(Time)/DecimalX カラム向けに作られています。値が一定、または値域が狭いカラムに適しています。このコーデック自体により、再圧縮なしでデータ型を拡張または縮小できます。#5557 (Artem Zuikov) - リモート MySQLサーバー上のすべてのテーブルを参照できるデータベースエンジン
MySQLを追加 #5599 (Winter Zhang) bitmapContainsを実装。2 番目のビットマップに 1 つの要素しか含まれない場合、bitmapHasAnyより 2 倍高速です。#5535 (Zhichang Yu)crc32関数をサポート (動作は MySQL や PHP と完全に同じです) 。ハッシュ関数が必要な場合は使用しないでください。#5661 (Remen Ivan)Distributedテーブルへの非同期挿入を制御するためのSYSTEM START/STOP DISTRIBUTED SENDSクエリを実装。#4935 (Winter Zhang)
バグ修正
- ミューテーションの実行中は、マージ制限においてクエリ実行制限と最大パーツサイズを無視するようにしました。 #5659 (Anton Popov)
- 通常のブロックの重複排除 (極めてまれ) や、重複ブロックの挿入 (より頻繁) につながる可能性がある不具合を修正しました。 #5549 (alesapin)
- 空の配列を含む引数に対する関数
arrayEnumerateUniqRankedの不具合を修正しました。 #5559 (proller) - メッセージをポーリングする予定がない場合は、Kafkaトピックを購読しないようにしました。 #5698 (Ivan)
- Nullable に含められない型に対しては、設定
join_use_nullsが効かないようにしました。 #5700 (Olga Khvostikova) Incorrect size of index granularityエラーを修正しました。 #5720 (coraxster)- Float から Decimal への変換時のオーバーフローを修正しました。 #5607 (coraxster)
WriteBufferFromHDFSのデストラクタが呼び出された際にバッファをフラッシュするようにしました。これによりHDFSへの書き込みが修正されます。 #5684 (Xindong Peng)
改善
- 設定
input_format_defaults_for_omitted_fieldsが有効な場合、CSVの空セルをデフォルト値として扱うようにしました。#5625 (akuzm) - 外部辞書の読み込みをノンブロッキング化しました。#5567 (Vitaly Baranov)
- 設定に応じて、すでに確立済みの接続に対するネットワークタイムアウトを動的に変更できるようにしました。#4558 (Konstantin Podshumok)
- 関数
firstSignificantSubdomain、cutToFirstSignificantSubdomainで “public_suffix_list” を使用するようにしました。これは、https://publicsuffix.org/list/public_suffix_list.dat から生成したリストに基づき、gperfで生成された完全ハッシュテーブルを使用します (たとえば、ac.ukを非有意なドメインとして認識するようになりました) 。#5030 (Guillaume Tassery) - システムテーブルで
IPv6データ型を採用し、system.processesとsystem.query_logのクライアント情報カラムを統一しました。#5640 (alexey-milovidov) - MySQL互換プロトコルによる接続でセッションを使用するようにしました。#5476 #5646 (Yuriy Baranov)
ALTERクエリのON CLUSTER対応を拡充しました。#5593 #5613 (sundyli)clickhouse-localの設定ファイルで<logger>セクションをサポートしました。#5540 (proller)clickhouse-localでremoteテーブル関数を使ったクエリを実行できるようにしました。#5627 (proller)
パフォーマンス改善
- MergeTree カラムの末尾に終端マークを書き込めるようにしました。これにより、テーブルのデータ範囲外にあるキーに対する不要な読み取りを回避できます。これは、アダプティブインデックス粒度を使用している場合にのみ有効です。 #5624 (alesapin)
statシステムコールの回数を減らすことで、非常に遅いファイルシステム上での MergeTree テーブルのパフォーマンスを改善しました。 #5648 (alexey-milovidov)- バージョン 19.6 で導入された、MergeTree テーブルの読み取り時のパフォーマンス低下を修正しました。#5631 を修正します。 #5633 (alexey-milovidov)
ビルド/テスト/パッケージングの改善
- テストで使用する ZooKeeper インターフェイスの実装として
TestKeeperを追加しました #5643 (alexey-milovidov) (levushkin aleksej) - 今後は
.sqlテストをサーバーごとに分離し、並列に、ランダムなデータベースで実行できるようになりました。これにより、テストをより高速に実行できるほか、カスタムのサーバー設定を使った新しいテストを追加でき、異なるテスト同士が互いに影響しないことも保証できます。 #5554 (Ivan) - パフォーマンステストから
<name>と<metrics>を削除しました #5672 (Olga Khvostikova) Prettyフォーマット向けの “select_format” パフォーマンステストを修正しました #5642 (alexey-milovidov)
ClickHouse リリース 19.9
ClickHouse リリース 19.9.3.31、2019-07-05
バグ修正
- 32 ビット未満の値を持つカラムに影響する Delta コーデック の segfault を修正しました。このバグにより、予期しないメモリ破損が発生していました。#5786 (alesapin)
- LowCardinality カラムを持つパートの検査処理におけるまれなバグを修正しました。#5832 (alesapin)
- ブロック内の非物理カラムを含む有効期限 (TTL) マージで発生する segfault を修正しました。#5819 (Anton Popov)
- 低優先度のクエリが無限にスリープし続ける可能性がある問題を修正しました。#5842 (alexey-milovidov)
- ClickHouse がデフォルトのタイムゾーンを UTC ではなく UCT と判定していた問題を修正しました。#5828 (alexey-milovidov)
- 分散 DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTER クエリが、リーダー レプリカより先にフォロワー レプリカで実行される問題を修正しました。今後はリーダー レプリカで直接実行されます。#5757 (alesapin)
- SYSTEM FLUSH LOGS クエリの実行直後でも、一部のクエリが query_log にすぐ反映されないことがある race condition を修正しました。#5685 (Anton Popov)
evalMLModel関数で不足していた定数引数のサポートを追加しました。#5820 (alexey-milovidov)
ClickHouse リリース 19.9.2.4、2019-06-24
新機能
system.partsテーブル内の凍結されたパーツに関する情報を出力するようにしました。#5471 (proller)- 引数で設定されていない場合、tty 上で
clickhouse-clientの起動時にクライアントのパスワードを求めるようにしました #5092 (proller) - Decimal 型に対する
dictGetおよびdictGetOrDefault関数を実装しました。#5394 (Artem Zuikov)
改善
- Debian init: サービス停止のタイムアウトを追加 #5522 (proller)
- LowCardinality で問題のある型を持つテーブルの作成をデフォルトで禁止する設定を追加 #5448 (Olga Khvostikova)
- 回帰関数が、関数
evalMLMethodで State として使用されない場合に、モデルの重みを返すようになりました。 #5411 (Quid37) - 回帰メソッドの名称を変更し、改善しました。 #5492 (Quid37)
- 文字列検索器のインターフェイスをより明確にしました。 #5586 (Danila Kutenin)
バグ修正
- Kafkaで発生する可能性のあるデータ損失を修正 #5445 (Ivan)
- カラム数がゼロのときに
PrettySpaceフォーマットで発生する可能性がある無限ループを修正 #5560 (Olga Khvostikova) - 線形モデルにおける UInt32 のオーバーフローバグを修正しました。ML モデルの eval で、定数ではない model 引数を許可しました。#5516 (Nikolai Kochetov)
- 指定された索引が存在しない場合、
ALTER TABLE ... DROP INDEX IF EXISTS ...は例外を送出すべきではありません #5524 (Gleb Novikov) - スカラーサブクエリ内での
bitmapHasAnyによるsegfaultを修正 #5528 (Zhichang Yu) - DNS cache が破棄された場合でも、レプリケーション接続プールがホスト名の解決を再試行しないエラーを修正しました。 #5534 (alesapin)
- ReplicatedMergeTree での
ALTER ... MODIFY TTLの問題を修正しました。#5539 (Anton Popov) - MATERIALIZED カラムを持つDistributedテーブルへのINSERTを修正 #5429 (Azat Khuzhin)
- JoinストレージのTRUNCATE時に発生するbad allocを修正 #5437 (TCeason)
- 最近の
tzdataパッケージでは、一部のファイルがシンボリックリンクになっています。そのため、デフォルトのtimezoneを検出する現在の仕組みが正しく動作せず、一部のtimezonesで誤った名前が返されていました。そこで、少なくともTZが指定されている場合は、timezone名としてその内容を強制的に使うようにしました。#5443 (Ivan) - 定数 needles の合計長が 16KB 以上の場合に、MultiVolnitsky searcher で発生するごくまれな不具合をいくつか修正しました。アルゴリズムが以前の結果を見落としたり上書きしたりすることがあり、その結果
multiSearchAnyが誤った結果を返す可能性がありました。#5588 (Danila Kutenin) - ExternalData リクエストの設定で ClickHouse settings を使用できなかった問題を修正しました。なお現時点では、設定
date_time_input_formatおよびlow_cardinality_allow_in_native_formatは、名前が曖昧なため使用できません (外部データではテーブルのフォーマットとして解釈される一方、クエリでは設定として解釈される可能性があるためです) 。 #5455 (Danila Kutenin) - パーツがZookeeperからは削除されず、FS上からのみ削除される不具合を修正しました。 #5520 (alesapin)
- MySQL プロトコルからデバッグ用ログを削除 #5478 (alexey-milovidov)
- DDLクエリの処理中に ZNONODE をスキップ #5489 (Azat Khuzhin)
UNION ALLの結果カラム型が混在する場合の不具合を修正しました。結果カラムのデータやカラム型に不整合が生じるケースがありました。#5503 (Artem Zuikov)dictGetT関数で不正な整数値が指定された場合、クラッシュするのではなく例外を送出するようにしました。#5446 (Artem Zuikov)system.dictionariesテーブル内のハッシュ化 Dictionary における誤った element_count と load_factor を修正しました。#5440 (Azat Khuzhin)
ビルド/テスト/パッケージングの改善
BrotliHTTP 圧縮サポートなし (ENABLE_BROTLI=OFFcmake 変数) でのビルドを修正 #5521 (Anton Yuzhaninov)- roaring.h を roaring/roaring.h としてインクルードするよう修正 #5523 (Orivej Desh)
- hyperscan での gcc9 の警告を修正 (#line ディレクティブは邪悪!) #5546 (Danila Kutenin)
- gcc-9 でのコンパイル時に発生する警告をすべて修正。一部の contrib の問題も修正。gcc9 の ICE を修正し、bugzilla に報告 #5498 (Danila Kutenin)
- lld とのリンクを修正 #5477 (alexey-milovidov)
- Dictionaries の未使用の特殊化を削除 #5452 (Artem Zuikov)
- 異なるファイル型に対するテーブルのフォーマットおよびパースのパフォーマンステストを改善 #5497 (Olga Khvostikova)
- 並列テスト実行に関する修正 #5506 (proller)
- Docker: clickhouse-test の config を使用 #5531 (proller)
- FreeBSD 向けのコンパイルを修正 #5447 (proller)
- boost を 1.70 にアップグレード #5570 (proller)
- ClickHouse をサブモジュールとしてビルドする際の問題を修正 #5574 (proller)
- JSONExtract のパフォーマンステストを改善 #5444 (Vitaly Baranov)
ClickHouse リリース 19.8
ClickHouse リリース 19.8.3.8、2019-06-11
新機能
- JSON を扱うための関数を追加しました #4686 (hcz) #5124. (Vitaly Baranov)
- 多くの言語にある basename 関数 (Python の
os.path.basename、PHP のbasenameなど) と同様に動作する関数basenameを追加しました。UNIX 系パスと Windows パスの両方に対応します。#5136 (Guillaume Tassery) LIMIT BY句のオフセット n を指定できるLIMIT n, m BYまたはLIMIT m OFFSET n BY構文を追加しました。#5138 (Anton Popov)- 新しいデータ型
SimpleAggregateFunctionを追加しました。これにより、AggregatingMergeTreeで軽量な集約を行うカラムを使用できるようになりました。これは、any、anyLast、sum、min、maxなどの単純な関数でのみ使用できます。#4629 (Boris Granveaud) - 関数
ngramDistanceで非定数の引数がサポートされるようになりました #5198 (Danila Kutenin) - 数列の歪度、標本歪度、尖度、および標本尖度をそれぞれ計算する関数
skewPop、skewSamp、kurtPop、kurtSampを追加しました。#5200 (hcz) MaterializeViewストレージの名前変更に対応しました。#5209 (Guillaume Tassery)- MySQLクライアントでClickHouseに接続できるサーバーを追加しました。#4715 (Yuriy Baranov)
toDecimal*OrZeroおよびtoDecimal*OrNull関数が追加されました。#5291 (Artem Zuikov)- 関数
quantile、quantiles、median、quantileExactWeighted、quantilesExactWeighted、medianExactWeightedで Decimal 型をサポート。 #5304 (Artem Zuikov) toValidUTF8関数を追加しました。この関数は、無効な UTF-8 文字をすべて置換文字 � (U+FFFD) に置き換えます。#5322 (Danila Kutenin)format関数を追加しました。引数に列挙された文字列を使用して、定数パターン (簡略化した Python の format パターン) をフォーマットします。#5330 (Danila Kutenin)MergeTreeテーブルのデタッチされたパーツに関する情報を含むsystem.detached_partsテーブルが追加されました。#5353 (akuzm)- needle と haystack の非対称差を計算する
ngramSearch関数を追加しました。#5418#5422 (Danila Kutenin) - aggregate functionsインターフェイスを使用した、基本的な機械学習手法 (確率的線形回帰およびロジスティック回帰) を実装しました。モデルの重み更新には複数の戦略 (単純な勾配降下法、モメンタム法、Nesterov法) を備えています。さらに、任意のサイズのミニバッチにも対応しています。 #4943 (Quid37)
geohashEncode関数およびgeohashDecode関数を実装しました。 #5003 (Vasily Nemkov)- サンプルのタイムスタンプが揃っていない複数の時系列を集約できる集約関数
timeSeriesGroupSumを追加しました。この関数は、2 つのサンプルタイムスタンプ間を線形補間し、その後で時系列を合計します。さらに、時系列のレートを計算してからそのレートを合計する集約関数timeSeriesGroupRateSumも追加しました。#4542 (Yangkuan Liu) - CIDR を用いてサブネット内の IP アドレスの下限値と上限値を算出する関数
IPv4CIDRtoIPv4RangeおよびIPv6CIDRtoIPv6Rangeを追加しました。#5095 (Guillaume Tassery) - 有効な設定
send_progress_in_http_headersを指定して HTTP 経由でクエリを送信する際に、X-ClickHouse-Summary ヘッダーを追加しました。通常の X-ClickHouse-Progress の情報に加えて、そのクエリで何行、何バイトが挿入されたかといった追加情報も返します。#5116 (Guillaume Tassery)
改善
- MergeTree family のテーブル向けに、
max_parts_in_total設定 (デフォルト: 100 000) を追加し、パーティションキーが安全でない形で指定されるのを防ぐようにしました #5166. #5171 (alexey-milovidov) clickhouse-obfuscator: 個々のカラムのシードを、カラムの位置ではなくカラム名と初期シードを組み合わせて導出するようにしました。これは、相互に関連する複数のテーブルを含むデータセットの変換を想定したもので、変換後もテーブル同士を JOIN できるようにするためのものです。 #5178 (alexey-milovidov)- 関数
JSONExtractRaw、JSONExtractKeyAndValuesを追加しました。関数jsonExtract<type>の名称をJSONExtract<type>に変更しました。問題が発生した場合、これらの関数はNULLではなく対応する値を返します。関数JSONExtractを変更し、最後の parameter から return type を取得し、Nullable を注入しないようにしました。AVX2 命令が利用できない場合の fallback として RapidJSON を実装しました。Simdjson ライブラリを新しいバージョンに更新しました。#5235 (Vitaly Baranov) - 現在、
ifおよびmultiIf関数は、SQL 互換性のため、条件のNullableではなく分岐に依存するようになりました。#5238 (Jian Wu) In述語は、Equal関数と同様に、Nullを入力するとNullを返すようになりました。#5152 (Jian Wu)- Kafka から (flush_interval / poll_timeout) 行ごとに時間制限を確認するようにしました。これにより、Kafka コンシューマーからの読み取りをより頻繁に中断し、上位レベルのストリームの時間制限を確認できるようになります #5249 (Ivan)
- rdkafka を同梱の SASL とリンクしました。これにより、SASL SCRAM 認証を使用できるようになります #5253 (Ivan)
- ALL JOINS 用の RowRefList のバッチ版。 #5267 (Artem Zuikov)
- clickhouse-server: listen エラーのメッセージをより詳細に。 #5268 (proller)
- clickhouse-copier で
<sharding_key>内の関数における辞書をサポート #5270 (proller) - Kafka のコミットポリシーを制御するための新しい設定
kafka_commit_every_batchを追加しました。 コミットモードは、各メッセージ Batch の処理後、または block 全体がストレージに書き込まれた後に設定できます。これは、極端な状況で一部のメッセージが失われることと、同じメッセージを 2 回読み込むことの間のトレードオフです。#5308 (Ivan) windowFunnelが他の符号なし整数型にも対応しました。#5320 (sundyli)- Merge engineで仮想カラム
_tableを隠せるようにしました。#5325 (Ivan) sequenceMatch集約関数が他の符号なし整数型にも対応するようになりました #5339 (sundyli)- チェックサムの不一致がハードウェア障害による可能性が高い場合のエラーメッセージを改善しました。 #5355 (alexey-milovidov)
- 基になるテーブルが
StorageMergeのサンプリングに対応していることを確認 #5366 (Ivan) - 外部辞書で使用した後、MySQL 接続を閉じるようにしました。issue #893 に関連しています。#5395 (Clément Rodriguez)
- MySQL Wire Protocol の改善。フォーマット名を MySQLWire に変更しました。
RSA_freeの呼び出しには RAII を使用するようにしました。コンテキストを作成できない場合は SSL を無効化します。#5419 (Yuriy Baranov) - clickhouse-client: 履歴ファイルにアクセスできない場合 (読み取り専用、ディスク容量不足、ファイルではなくディレクトリである場合など) でも実行できるようにしました。 #5431 (proller)
- 分散テーブルへの非同期INSERTで、クエリ設定が反映されるようになりました。 #4936 (TCeason)
- 関数
leastSqrをsimpleLinearRegressionに、LinearRegressionをlinearRegressionに、LogisticRegressionをlogisticRegressionに改名しました。#5391 (Nikolai Kochetov)
パフォーマンス改善
- ALTER MODIFY クエリで、非レプリケート MergeTree テーブルのパーツ処理を並列化しました。 #4639 (Ivan Kush)
- 正規表現の抽出を最適化しました。 #5193 #5191 (Danila Kutenin)
- JOIN ON 句でのみ使用される場合、右側の結合キーのカラムを JOIN 結果に追加しないようにしました。 #5260 (Artem Zuikov)
- 最初の空のレスポンス後に Kafka バッファを固定するようにしました。これにより、一部の行パースストリームで空の結果に対して
ReadBuffer::next()が複数回呼び出されるのを防ぎます。 #5283 (Ivan) - 複数引数に対する
concat関数を最適化しました。 #5357 (Danila Kutenin) - クエリを最適化しました。comma/cross join を inner join に書き換える際に、IN ステートメントのプッシュダウンを可能にしました。 #5396 (Artem Zuikov)
- より高速に伸長できるよう、LZ4 実装を参照実装ベースのものに更新しました。 #5070 (Danila Kutenin)
- MSD radix sort (kxsort ベース) と部分ソートを実装しました。 #5129 (Evgenii Pravda)
バグ修正
- join を含む push で必須カラムの扱いを修正しました #5192 (Winter Zhang)
- ClickHouse が systemd によって実行されている場合、コマンド
sudo service clickhouse-server forcerestartが想定どおりに動作しない不具合を修正しました。 #5204 (proller) - DataPartsExchange の HTTP エラーコードを修正しました (9009 ポートの interserver HTTP server は、エラー時でも常に code 200 を返していました) 。 #5216 (proller)
- MAX_SMALL_STRING_SIZE より長い String に対する SimpleAggregateFunction を修正しました #5311 (Azat Khuzhin)
- IN における
DecimalからNullable(Decimal)への変換時のエラーを修正しました。その他の Decimal から Decimal への変換 (異なる scale を含む) もサポートしました。 #5350 (Artem Zuikov) - simdjson ライブラリでの FPU の破損を修正しました。これにより、
uniqHLLとuniqCombinedaggregate function、およびlogなどの数学関数で誤った計算が行われる問題が発生していました。 #5354 (alexey-milovidov) - JSON functions における const/nonconst 混在ケースの処理を修正しました。 #5435 (Vitaly Baranov)
retentionfunction を修正しました。これにより、データの各行で満たされたすべての条件がデータ state に追加されるようになりました。 #5119 (小路)- Decimals を使用した
quantileExactの結果型を修正しました。 #5304 (Artem Zuikov)
ドキュメント
CollapsingMergeTreeのドキュメントを中国語に翻訳。 #5168 (张风啸)- テーブルエンジンに関するドキュメントの一部を中国語に翻訳。 #5134 #5328 (never lee)
ビルド/テスト/パッケージングの改善
- 解放済みメモリの使用の可能性を示す sanitizer レポートをいくつか修正しました。#5139 #5143 #5393 (Ivan)
- 利便性向上のため、パフォーマンステストを個別のディレクトリの外に移動しました。 #5158 (alexey-milovidov)
- 不正確だったパフォーマンステストを修正しました。 #5255 (alesapin)
- ハードウェアの問題のデバッグ用に、ビット反転によって生じるチェックサムを計算するツールを追加しました。 #5334 (alexey-milovidov)
- runner スクリプトの使い勝手を向上させました。 #5340#5360 (filimonov)
- パフォーマンステストの書き方に関する簡単な説明を追加しました。 #5408 (alesapin)
- パフォーマンステストで CREATE、補完、drop クエリに置換を適用できるようにしました #5367 (Olga Khvostikova)
ClickHouse リリース 19.7
ClickHouse リリース 19.7.5.29、2019-07-05
バグ修正
- JOIN を含む一部のクエリで発生していたパフォーマンス低下を修正しました。#5192 (Winter Zhang)
ClickHouse リリース 19.7.5.27、2019-06-09
新機能
- 配列向けの
hasAny関数およびhasAll関数に相当する bitmap 関連関数bitmapHasAnyとbitmapHasAllを追加しました。 #5279 (Sergi Vladykin)
バグ修正
- NULL 値を含む
minmaxINDEX で発生する segfault を修正しました。#5246 (Nikita Vasilev) - LIMIT BY のすべての入力カラムを必須出力としてマークするようにしました。これにより、一部の分散クエリで発生していた ‘Not found column’ エラーを修正しました。#5407 (Constantin S. Pan)
- DEFAULT を持つカラムに対する
SELECT .. PREWHEREで発生する “Column ‘0’ already exists” エラーを修正しました。#5397 (proller) ReplicatedMergeTreeに対するALTER MODIFY TTLクエリを修正しました。#5539 (Anton Popov)- Kafka コンシューマーの起動に失敗してもサーバーがクラッシュしないようにしました。#5285 (Ivan)
- bitmap 関数が誤った結果を返す問題を修正しました。#5359 (Andy Yang)
- ハッシュ Dictionary の element_count を修正しました (重複は含めません) 。#5440 (Azat Khuzhin)
- 環境変数 TZ の内容をタイムゾーン名として使用するようにしました。これにより、場合によってはデフォルトのタイムゾーンを正しく検出できるようになります。#5443 (Ivan)
dictGetT関数で整数の変換を試みないようにしました。正しく動作しないため、代わりに例外をスローします。#5446 (Artem Zuikov)- ExternalData HTTP リクエスト内の settings を修正しました。#5455 (Danila Kutenin)
- パーツが Zookeeper からは削除されず、FS からのみ削除される場合のバグを修正しました。#5520 (alesapin)
bitmapHasAny関数で発生する segmentation fault を修正しました。#5528 (Zhichang Yu)- DNS cache が削除された場合でも、レプリケーション接続プールがホスト解決を再試行しない問題を修正しました。#5534 (alesapin)
DROP INDEX IF EXISTSクエリを修正しました。これにより、指定した索引が存在しない場合でもALTER TABLE ... DROP INDEX IF EXISTS ...クエリで例外が発生しなくなりました。#5524 (Gleb Novikov)- union all の上位型カラムを修正しました。結果カラムのデータとカラム型に不整合が生じるケースがありました。#5503 (Artem Zuikov)
- DDL クエリの処理中は ZNONODE をスキップするようにしました。以前は、別のノードがタスクキュー内の znode を削除すると、それを処理していないものの、すでに子の一覧を取得していた側が DDLWorker thread を終了していました。#5489 (Azat Khuzhin)
- MATERIALIZED カラムを持つ Distributed() テーブルへの INSERT を修正しました。#5429 (Azat Khuzhin)
ClickHouse リリース 19.7.3.9、2019-05-30
新機能
- ユーザーが指定できる設定値の範囲を制限できるようにしました。 これらの制約は、ユーザー設定プロファイルで設定できます。 #4931 (Vitaly Baranov)
- オプションの
max_sizeパラメータを指定でき、結果の配列のサイズを制限するgroupUniqArray関数の第2バージョンを追加しました。この 挙動はgroupArray(max_size)(x)関数と似ています。 #5026 (Guillaume Tassery) - TSVWithNames/CSVWithNames の入力フォーマットでは、ファイルヘッダーから
カラム順を判定できるようになりました。これは
input_format_with_names_use_headerパラメータで制御されます。 #5081 (Alexander)
バグ修正
- マージ中に uncompressed_cache + JOIN でクラッシュ (#5197) #5133 (Danila Kutenin)
- clickhouse-client でシステムテーブルに対してクエリを実行した際にセグメンテーションフォルトが発生。#5066 #5127 (Ivan)
- 高負荷時に KafkaEngine 経由でデータが失われる問題を修正 (#4736) #5080 (Ivan)
- system.columns、system.tables、system.parts、system.parts_tables、または Merge family のテーブルから少なくとも 2 つの SELECT を含む UNION ALL を使ったクエリの実行中に、関連テーブルのカラムに対する ALTER を同時に実行すると発生する可能性があった、非常にまれなデータ競合状態を修正しました。 #5189 (alexey-milovidov)
パフォーマンス改善
LIMITを伴わないORDER BYで、単一の数値カラムによるソートに radix sort を使用するようにしました。#5106, #4439 (Evgenii Pravda, alexey-milovidov)
ドキュメント
ビルド/テスト/パッケージングの改善
clickhouse-testで UTF-8 文字を正しく出力できるようにしました。 #5084 (alexey-milovidov)clickhouse-clientが候補データを常に読み込むためのコマンドラインパラメーターを追加しました。 #5102 (alexey-milovidov)- PVS-Studio の警告の一部を解消しました。 #5082 (alexey-milovidov)
- LZ4 を更新しました。 #5040 (Danila Kutenin)
- 今後のプルリクエスト #5030 に向けて、ビルド要件に gperf を追加しました。 #5110 (proller)
ClickHouse リリース 19.6
ClickHouse リリース 19.6.3.18、2019-06-13
バグ修正
- テーブル関数
mysqlおよびodbcからのクエリと、それに対応するテーブルエンジンにおける IN 条件の pushdown を修正しました。これにより #3540 と #2384 を修正します。 #5313 (alexey-milovidov) - Zookeeper のデッドロックを修正しました。 #5297 (github1youlc)
- CSV で引用符付きの Decimal を使用できるようにしました。 #5284 (Artem Zuikov
- float の Inf/NaN から Decimal への変換を禁止しました (例外をスローします) 。 #5282 (Artem Zuikov)
- rename クエリで発生するデータ競合を修正しました。 #5247 (Winter Zhang)
- LFAlloc を一時的に無効化しました。LFAlloc を使用すると、非圧縮 cache の割り当て時に大量の MAP_FAILED が発生し、その結果、高負荷の server でクエリがクラッシュする可能性があります。 cfdba93(Danila Kutenin)
ClickHouse リリース 19.6.2.11、2019-05-13
新機能
- カラムおよびテーブルに対する有効期限 (TTL) 式。 #4212 (Anton Popov)
- HTTP レスポンスでの
brotli圧縮のサポートを追加 (Accept-Encoding: br) 。 #4388 (Mikhail) - 一連のバイト列が正しく UTF-8 でエンコードされているかどうかを確認するための新しい関数
isValidUTF8を追加。 #4934 (Danila Kutenin) - 新しい負荷分散ポリシー
first_or_randomを追加。これはまず最初に指定されたホストにクエリを送信し、そのホストにアクセスできない場合は分片内のランダムなホストにクエリを送信します。クロスレプリケーションのトポロジ構成で有用です。 #5012 (nvartolomei)
実験的な機能
改善
- 関数
substringUTF8で、非定数および負の size 引数と length 引数をサポートしました。 #4989 (alexey-milovidov) - left join の右テーブル、right join の左テーブル、full join の両テーブルへのプッシュダウンを無効にしました。これにより、一部のケースで誤った JOIN result になる問題を修正しました。 #4846 (Ivan)
clickhouse-copier:--task-fileオプションから task configuration を自動的にアップロードするようにしました #4876 (proller)- storage factory とテーブル関数 factory に typo ハンドラーを追加しました。 #4891 (Danila Kutenin)
- subqueries を使わない複数 joins で、asterisks および修飾付き asterisks をサポートしました #4898 (Artem Zuikov)
- 存在しないカラムに対する error メッセージを、よりわかりやすくしました。 #4915 (Artem Zuikov)
パフォーマンス改善
- ASOF JOIN を大幅に高速化 #4924 (Martijn Bakker)
後方互換性を持たない変更
バグ修正
clickhouse-copierにおける潜在的な NULL ポインタの逆参照を修正しました。 #4900 (proller)- JOIN + ARRAY JOIN を含むクエリで発生するエラーを修正しました。 #4938 (Artem Zuikov)
- engine=Dictionary のデータベースを介して、ある Dictionary が別の Dictionary に依存している場合に、サーバー起動時にハングする問題を修正しました。 #4962 (Vitaly Baranov)
- distributed_product_mode = local を部分的に修正しました。テーブル別名を使って、where/having/order by/… でローカルテーブルのカラムを参照できるようになりました。テーブルに別名がない場合は例外をスローします。なお、現時点ではテーブル別名なしでカラムにアクセスすることはまだできません。 #4986 (Artem Zuikov)
JOINを含むSELECT DISTINCTで起こりうる誤った結果を修正しました。 #5001 (Artem Zuikov)- system.columns、system.tables、system.parts、system.parts_tables、または Merge family のテーブルから少なくとも 2 つの SELECT を含む UNION ALL を伴うクエリの実行中に、関連テーブルのカラムに対する ALTER を同時実行した場合に発生しうる、非常にまれなデータ競合を修正しました。 #5189 (alexey-milovidov)
ビルド/テスト/パッケージングの改善
- 別のホストで clickhouse-server を実行した際に発生していたテストの失敗を修正 #4713 (Vasily Nemkov)
- clickhouse-test: 非 tty 環境でカラー制御シーケンスを無効化。 #4937 (alesapin)
- clickhouse-test: 任意のテスト database を使えるようにした (可能な箇所では
test.修飾を削除) #5008 (proller) - ubsan の error を修正 #5037 (Vitaly Baranov)
- segfault をより確実に検出するため、MarkCache と UncompressedCache の data を別の方法で割り当てる Yandex LFAlloc を ClickHouse に追加 #4995 (Danila Kutenin)
- backport と changelog の作業を支援する Python ユーティリティ。 #4949 (Ivan)
ClickHouse リリース 19.5
ClickHouse リリース 19.5.4.22、2019-05-13
バグ修正
- bitmap* 関数で発生する可能性があったクラッシュを修正しました。 #5220 #5228 (Andy Yang)
- system.columns、system.tables、system.parts、system.parts_tables、または Merge family に属するテーブルから少なくとも 2 つの SELECT を含む UNION ALL を使ったクエリの実行中に、関連テーブルのカラムに対する ALTER を同時に実行すると、ごくまれに発生するデータ競合状態を修正しました。 #5189 (alexey-milovidov)
- エラー
Set for IN is not created yet in case of using single LowCardinality column in the left part of INを修正しました。このエラーは、LowCardinality カラムが主キーの一部である場合に発生していました。 #5031 #5154 (Nikolai Kochetov) - retention 関数の動作を修正しました。これまでは、ある行が最初の条件と N 番目の条件の両方を満たす場合、最初に満たした条件だけが data state に追加されていました。現在は、1 行のデータで満たされたすべての条件が data state に追加されます。 #5119 (小路)
ClickHouse リリース 19.5.3.8、2019-04-18
バグ修正
- 設定
max_partitions_per_insert_blockの型を boolean から UInt64 に修正しました。 #5028 (Mohammad Hossein Sekhavat)
ClickHouse リリース 19.5.2.6 (2019-04-15)
新機能
- Hyperscan による複数の正規表現マッチングが追加されました (関数
multiMatchAny、multiMatchAnyIndex、multiFuzzyMatchAny、multiFuzzyMatchAnyIndex) 。 #4780, #4841 (Danila Kutenin) multiSearchFirstPosition関数が追加されました。 #4780 (Danila Kutenin)- テーブルに対して、行単位の事前定義式フィルタを実装しました。 #4792 (Ivan)
- ブルームフィルタに基づく新しいタイプのデータスキッピングインデックスが追加されました (
equal、in、like関数で使用可能) 。 #4499 (Nikita Vasilev) - 直近で判明している値と結合するクエリを実行できる
ASOF JOINが追加されました。 #4774 #4867 #4863 #4875 (Martijn Bakker, Artem Zuikov) - 複数の
COMMA JOINをCROSS JOINに書き換え、可能な場合はさらにINNER JOINに書き換えます。 #4661 (Artem Zuikov)
改善
topKとtopKWeightedがカスタムloadFactorをサポートするようになりました (issue #4252 を修正) 。 #4634 (Kirill Danshin)- サンプリングのないテーブルでも
parallel_replicas_count > 1を使用できるようになりました (この場合、この設定は単に無視されます) 。以前のバージョンでは例外が発生していました。 #4637 (Alexey Elymanov) CREATE OR REPLACE VIEWをサポートしました。1つのステートメントでビューを作成するか、新しい定義に置き換えられます。 #4654 (Boris Granveaud)BufferテーブルエンジンがPREWHEREをサポートするようになりました。 #4671 (Yangkuan Liu)- ZooKeeper にメタデータがないレプリケートテーブルでも、
readonlyモードで起動できるようになりました。 #4691 (alesapin) - clickhouse-client のプログレスバーのちらつきを修正しました。この問題は、ストリーミングクエリで
FORMAT Nullを使用した場合に特に顕著でした。 #4811 (alexey-milovidov) - 過剰かつ制御不能になり得るリソース使用を抑えるため、
hyperscanライブラリを使う関数をユーザー単位で無効化できるようにしました。 #4816 (alexey-milovidov) - すべてのエラーでバージョン番号をログに記録するようにしました。 #4824 (proller)
multiMatch関数に、文字列サイズがunsigned intに収まる必要があるという制限を追加しました。また、multiSearch関数には引数の数の上限も追加しました。 #4834 (Danila Kutenin)- Hyperscan におけるスクラッチ領域の利用とエラー処理を改善しました。 #4866 (Danila Kutenin)
*GraphiteMergeTreeエンジンのテーブル設定からsystem.graphite_detentionsを補完するようにしました。 #4584 (Mikhail f. Shiryaev)trigramDistance関数の名前をngramDistanceに変更し、CaseInsensitiveおよびUTF付きの関数をさらに追加しました。 #4602 (Danila Kutenin)- データスキッピングインデックスの計算を改善しました。 #4640 (Nikita Vasilev)
- 通常のカラム、
DEFAULT、MATERIALIZED、ALIASカラムを単一のリストで保持するようにしました (issue #2867 を修正) 。 #4707 (Alex Zatelepin)
バグ修正
- メモリ割り当てに失敗した場合に
std::terminateが呼ばれないようにしました。これにより、想定どおりstd::bad_alloc例外がスローされるようになりました。#4665 (alexey-milovidov) - バッファからの
capnprotoの読み取りを修正しました。HTTP経由でファイルの読み込みに失敗することがある問題も修正しました。#4674 (Vladislav) OPTIMIZE TABLE FINALクエリ後に発生するエラーUnknown log entry type: 0を修正しました。 #4683 (Amos Bird)hasAnyまたはhasAll関数に誤った引数を渡すと、segfault が発生する可能性があります。 #4698 (alexey-milovidov)DROP DATABASE dictionaryクエリの実行時にデッドロックが発生する可能性があります。#4701 (alexey-milovidov)medianおよびquantile関数の未定義動作を修正しました。#4702 (hcz)network_compression_methodが小文字の場合の圧縮レベルの検出を修正しました。v19.1 で不具合がありました。#4706 (proller)<timezone>UTC</timezone>設定が無視される不具合を修正しました (#4658) 。 #4718 (proller)Distributedテーブルにおけるhistogram関数の動作を修正しました。#4741 (olegkv)- tsan レポート
destroy of a locked mutexを修正しました。 #4742 (alexey-milovidov) - system logs の使用時の race condition により、シャットダウン時に発生していた TSan レポートを修正しました。part_log が有効な場合に、シャットダウン時に起こり得た use-after-free を修正しました。 #4758 (alexey-milovidov)
- エラー時の
ReplicatedMergeTreeAlterThreadにおけるパーツの再チェックを修正しました。#4772 (Nikolai Kochetov) - 集約関数の中間状態に対する算術演算が、定数引数 (サブクエリの結果など) では機能していませんでした。#4776 (alexey-milovidov)
- メタデータでは常にカラム名をバッククォートで囲むようにしました。そうしないと、カラム名が
indexのテーブルを作成できません (メタデータ内のATTACHクエリが不正になり、サーバーを再起動できなくなるためです) 。 #4782 (alexey-milovidov) DistributedテーブルでのALTER ... MODIFY ORDER BYによるクラッシュを修正しました。#4790 (TCeason)enable_optimize_predicate_expressionが有効な場合にJOIN ONで発生する segfault を修正しました。#4794 (Winter Zhang)- Kafka から Protobuf メッセージを取り込んだ際に、余分な行が追加される不具合を修正しました。 #4808 (Vitaly Baranov)
- 非NullableカラムとNullableカラム間の
JOINで発生するクラッシュを修正。ANY JOIN+join_use_nullsにおける右側キーのNULLを修正。 #4815 (Artem Zuikov) clickhouse-copierのセグメンテーション違反を修正。 #4835 (proller)- テーブルの名前変更または変更が同時に行われた場合に
system.tablesからSELECTすると発生する競合状態を修正しました。#4836 (alexey-milovidov) - すでに廃止されたデータパートのフェッチ時に発生するデータ競合を修正しました。 #4839 (alexey-milovidov)
- MergeTree family のテーブルを
RENAMEする際にまれに発生するデータ競合を修正しました。#4844 (alexey-milovidov) - 関数
arrayIntersectにおけるセグメンテーションフォールトを修正しました。定数引数と通常の引数が混在した状態でこの関数を呼び出すと、セグメンテーションフォールトが発生する可能性がありました。#4847 (Lixiang Qian) Array(LowCardinality)カラムに空の配列が長く連続しているまれなケースにおいて、同カラムの読み取りを修正しました。 #4850 (Nikolai Kochetov)- Nullable と非 Nullable の列を結合キーにした
FULL/RIGHT JOINで発生するクラッシュを修正しました。#4855 (Artem Zuikov) - レプリカ間でパーツを取得する際に発生する
No message received例外を修正しました。 #4856 (alesapin) - 単一の配列内で同じ値が複数回現れる場合に、
arrayIntersect関数が誤った結果を返す不具合を修正しました。 #4871 (Nikolai Kochetov) - 同時実行される
ALTER COLUMNクエリ中に発生する競合状態を修正し、サーバーがクラッシュする可能性がある問題を解消しました (issue #3421 を修正) 。 #4592 (Alex Zatelepin) FULL/RIGHT JOINで const カラムを使用した場合に誤った結果が返される問題を修正しました。#4723 (Artem Zuikov)- アスタリスクを含む
GLOBAL JOINでの重複を修正しました。 #4705 (Artem Zuikov) - カラム型が指定されていない場合、カラム
CODECのALTER MODIFYにおけるパラメータ推定を修正しました。 #4883 (alesapin) - 関数
cutQueryStringAndFragment()とqueryStringAndFragment()が、URLにフラグメントが含まれクエリがない場合でも、正しく動作するようになりました。#4894 (Vitaly Baranov) min_bytes_to_use_direct_ioの設定がゼロより大きい場合に、スレッドがカラムファイル内で後方へシークする必要があるときに発生する、まれなバグを修正しました。 #4897 (alesapin)LowCardinality引数を持つ集約関数で、誤った引数型を修正しました (issue #4919 を修正) 。 #4922 (Nikolai Kochetov)GLOBAL JOINにおける誤った名前修飾を修正しました。#4969 (Artem Zuikov)- 1970年における
toISOWeekの結果を修正しました。 #4988 (alexey-milovidov) ReplicatedMergeTree*テーブルファミリーに対してON CLUSTERで実行した際に発生する、DROP、TRUNCATE、OPTIMIZEクエリの重複を修正しました。 #4991 (alesapin)
後方互換性を持たない変更
- 設定
insert_sample_with_metadataをinput_format_defaults_for_omitted_fieldsに改名しました。#4771 (Artem Zuikov) - 設定
max_partitions_per_insert_blockを追加しました (デフォルト値は 100) 。挿入された block にこれより多くのパーティションが含まれている場合は、例外が発生します。制限をなくすには 0 に設定してください (非推奨) 。#4845 (alexey-milovidov) - 複数検索関数の名称が変更されました (
multiPositionはmultiSearchAllPositionsに、multiSearchはmultiSearchAnyに、firstMatchはmultiSearchFirstIndexに変更) 。#4780 (Danila Kutenin)
パフォーマンス改善
- インライン化により Volnitsky searcher を最適化し、多数の needle や類似したバイグラムを多く含むクエリで、検索性能が約 5〜10% 向上しました。 #4862 (Danila Kutenin)
use_uncompressed_cacheの設定が 0 より大きい場合に、読み取りデータがすべて cache に含まれていると発生していたパフォーマンス上の問題を修正しました。 #4913 (alesapin)
ビルド/テスト/パッケージングの改善
- デバッグビルドを強化しました。より細かなメモリマッピングと ASLR を導入し、mark cache と索引にメモリ保護を追加しました。これにより、ASan や MSan では検出できない場合でも、より多くのメモリ破壊バグを見つけられるようになります。 #4632 (alexey-milovidov)
- cmake 変数
ENABLE_PROTOBUF、ENABLE_PARQUET、ENABLE_BROTLIのサポートを追加し、これらの機能を有効/無効にできるようにしました (librdkafka、mysql などと同様) 。 #4669 (Silviu Caragea) - テスト実行後に一部のクエリがハングした場合、プロセス一覧と全スレッドのスタックトレースを出力できるようにしました。 #4675 (alesapin)
clickhouse-testでConnection losserror に対する再試行を追加しました。 #4682 (alesapin)- packager スクリプトに、vagrant を使った FreeBSD ビルドと Thread sanitizer を使ったビルドを追加しました。 #4712 #4748 (alesapin)
- インストール時に、ユーザー
'default'の password の入力を求めるようになりました。 #4725 (proller) rdkafkaライブラリの警告を抑制しました。 #4740 (alexey-milovidov)- SSL なしでビルドできるようにしました。 #4750 (proller)
- clickhouse-server イメージをカスタムユーザーで起動する方法を追加しました。 #4753 (Mikhail f. Shiryaev)
- contrib boost を 1.69 にアップグレードしました。 #4793 (proller)
- Thread Sanitizer でコンパイルした場合は
mremapを使わないようにしました。意外なことに、TSan はmremapをインターセプトしません (mmapとmunmapはインターセプトします) 。そのため、偽陽性が発生していました。stateful テストでの TSan レポートを修正しました。 #4859 (alexey-milovidov) - HTTPインターフェイス経由でフォーマットのスキーマを使用できることを確認するテストを追加しました。 #4864 (Vitaly Baranov)
ClickHouse リリース 19.4
ClickHouse リリース 19.4.4.33、2019-04-17
バグ修正
- メモリ割り当ての失敗時に
std::terminateが呼ばれないようにしました。これにより、想定どおりstd::bad_alloc例外が送出されます。 #4665 (alexey-milovidov) capnprotoのバッファからの読み取りを修正しました。HTTP 経由でファイルを正常に読み込めないことがありました。#4674 (Vladislav)OPTIMIZE TABLE FINALクエリの後に発生するUnknown log entry type: 0エラーを修正しました。#4683 (Amos Bird)- 誤った引数を
hasAnyまたはhasAll関数に渡すと、segfault が発生する可能性があります。#4698 (alexey-milovidov) DROP DATABASE dictionaryクエリの実行時にデッドロックが発生する可能性があります。#4701 (alexey-milovidov)medianおよびquantile関数の未定義動作を修正しました。#4702 (hcz)network_compression_methodが小文字の場合の圧縮レベルの検出を修正。v19.1 で不具合が発生。 #4706 (proller)<timezone>UTC</timezone>設定が無視される不具合を修正しました (issue #4658 の修正) 。 #4718 (proller)Distributedテーブルにおけるhistogram関数の動作を修正しました。#4741 (olegkv)- tsan の
destroy of a locked mutexレポートを修正しました。#4742 (alexey-milovidov) - system logs の使用における競合状態が原因で、シャットダウン時に発生していた TSan レポートを修正しました。part_log が有効な場合に、シャットダウン時に use-after-free が発生する可能性があった問題を修正しました。 #4758 (alexey-milovidov)
- エラー発生時の
ReplicatedMergeTreeAlterThreadにおけるパーツ再チェックの不具合を修正しました。 #4772 (Nikolai Kochetov) - 中間的な集約関数の状態に対する算術演算が、定数の引数 (サブクエリの結果など) では機能していませんでした。#4776 (alexey-milovidov)
- メタデータ内のカラム名は常にバッククォートで囲むようにしました。そうしないと、
indexという名前のカラムを持つテーブルを作成できません (メタデータ内の不正なATTACHクエリが原因で、サーバーが再起動しなくなります) 。 #4782 (alexey-milovidov) DistributedテーブルでのALTER ... MODIFY ORDER BY実行時に発生するクラッシュを修正しました。 #4790 (TCeason)enable_optimize_predicate_expressionが有効な場合のJOIN ONで発生する segfault を修正しました。#4794 (Winter Zhang)- Kafka から Protobuf メッセージを消費した後、余分な行が追加される不具合を修正しました。#4808 (Vitaly Baranov)
clickhouse-copierのセグメンテーションフォルトを修正しました。 #4835 (proller)- テーブルの名前変更または変更が同時に行われた場合に、
system.tablesに対するSELECTで発生する競合状態を修正しました。 #4836 (alexey-milovidov) - すでに廃止された data part を取得する際に発生するデータ競合を修正しました。 #4839 (alexey-milovidov)
- MergeTree family のテーブルの
RENAME時にまれに発生するデータ競合を修正しました。 #4844 (alexey-milovidov) - 関数
arrayIntersectのセグメンテーションフォールトを修正しました。定数引数と通常の引数を混在させて関数を呼び出した場合、セグメンテーションフォールトが発生する可能性がありました。#4847 (Lixiang Qian) - 空の配列が長く連続して含まれるまれなケースにおける、
Array(LowCardinality)カラムの読み取りを修正しました。#4850 (Nikolai Kochetov) - レプリカ間でパーツをフェッチする際に発生する
No message received例外を修正しました。#4856 (alesapin) - 1つの配列内に同じ値が複数回含まれる場合に、
arrayIntersect関数が誤った結果を返す問題を修正しました。#4871 (Nikolai Kochetov) - 同時実行される
ALTER COLUMNクエリ中に発生し、サーバーのクラッシュにつながる可能性があった競合状態を修正しました (issue #3421 を修正) 。 #4592 (Alex Zatelepin) - カラム型が指定されていない場合の、カラム
CODECに対するALTER MODIFYでのパラメータ推定を修正しました。#4883 (alesapin) - 関数
cutQueryStringAndFragment()とqueryStringAndFragment()が、URLにフラグメントが含まれ、クエリがない場合でも正しく動作するようになりました。 #4894 (Vitaly Baranov) min_bytes_to_use_direct_ioを 0 より大きい値に設定していて、スレッドがカラムファイル内で後方へシークする必要がある場合に発生するまれなバグを修正しました。 #4897 (alesapin)LowCardinality型の引数を持つ集約関数で、誤った引数型を修正 (issue #4919 を修正) 。 #4922 (Nikolai Kochetov)- 1970年における関数
toISOWeekの結果を修正しました。 #4988 (alexey-milovidov) ReplicatedMergeTree*テーブルエンジンファミリーに対してON CLUSTERで実行した際に発生する、DROP、TRUNCATE、OPTIMIZEクエリの重複を修正しました。 #4991 (alesapin)
改善
- 通常のカラム、
DEFAULT、MATERIALIZED、ALIASカラムを 1 つの一覧にまとめました (issue #2867 を修正) 。 #4707 (Alex Zatelepin)
ClickHouse リリース 19.4.3.11 (2019-04-02)
バグ修正
FULL/RIGHT JOINで、Nullable と非 Nullable をキーに結合した際にクラッシュする問題を修正しました。 #4855 (Artem Zuikov)clickhouse-copierで発生するセグメンテーションフォルトを修正しました。 #4835 (proller)
ビルド/テスト/パッケージングの改善
- カスタムユーザーで clickhouse-server イメージを起動できるようにしました。 #4753 (Mikhail f. Shiryaev)
ClickHouse リリース 19.4.2.7 (2019-03-30)
バグ修正
- カラムに空の配列が長く連続して含まれているまれなケースで、
Array(LowCardinality)カラムの読み取りに関する問題を修正しました。 #4850 (Nikolai Kochetov)
ClickHouse リリース 19.4.1.3, 2019-03-19
バグ修正
LIMIT BYとLIMITの両方を含むリモートクエリの不具合を修正しました。従来は、リモートクエリでLIMIT BYとLIMITを併用すると、LIMIT BYより前にLIMITが適用されることがあり、その結果、結果が過度に絞り込まれていました。 #4708 (Constantin S. Pan)
ClickHouse リリース 19.4.0.49、2019-03-09
新機能
Protobuf形式の完全なサポートを追加しました (入力・出力、およびネストしたデータ構造) 。 #4174 #4493 (Vitaly Baranov)- Roaring Bitmaps を使用した bitmap 関数を追加しました。 #4207 (Andy Yang) #4568 (Vitaly Baranov)
- Parquet フォーマットのサポートを追加しました。 #4448 (proller)
- あいまい文字列比較のための N-gram 距離を追加しました。これは R 言語の q-gram メトリクスに似ています。 #4466 (Danila Kutenin)
- Graphite のロールアップルールを、専用の集約パターンと保持パターンから組み合わせられるようにしました。 #4426 (Mikhail f. Shiryaev)
- リソース使用量を制限するために
max_execution_speedとmax_execution_speed_bytesを追加しました。さらに、min_execution_speedを補完するmin_execution_speed_bytes設定も追加しました。 #4430 (Winter Zhang) - 関数
flattenを実装しました。 #4555 #4409 (alexey-milovidov, kzon) - 関数
arrayEnumerateDenseRankedおよびarrayEnumerateUniqRankedを追加しました (arrayEnumerateUniqに似ていますが、多次元配列の内部を見るための配列の深さを細かく調整できます) 。 #4475 (proller) #4601 (alexey-milovidov) - 一部制限付きで複数の JOIN に対応しました。アスタリスクは使用不可で、ON/WHERE/GROUP BY/… では複雑な別名は使えません。 #4462 (Artem Zuikov)
バグ修正
- このリリースには、19.3および19.1のすべてのバグ修正も含まれています。
- データスキッピングインデックスのバグを修正しました: INSERT 後にグラニュールの順序が不正になる問題。 #4407 (Nikita Vasilev)
NullableおよびLowCardinalityカラムに対するset索引を修正しました。従来は、NullableまたはLowCardinalityカラムにset索引を使用すると、SELECT 時にエラーData type must be deserialized with multiple streamsが発生していました。#4594 (Nikolai Kochetov)- 完全な
実行可能Dictionary の更新時に、update_time が正しく設定されるよう修正しました。 #4551 (Tema Novikov) - 19.3 で壊れていたプログレスバーを修正しました。 #4627 (filimonov)
- 特定のケースで、メモリ領域の縮小時に発生していた MemoryTracker の値の不整合を修正しました。 #4619 (alexey-milovidov)
- ThreadPool における未定義動作を修正しました。 #4612 (alexey-milovidov)
mutex lock failed: Invalid argumentというメッセージを伴う、非常にまれに発生するクラッシュを修正しました。これは、MergeTreeテーブルがSELECTと同時に削除された際に発生することがありました。#4608 (Alex Zatelepin)LowCardinalityデータ型に対する ODBC ドライバの互換性。 #4381 (proller)- FreeBSD:
AIOcontextPool: Found io_event with unknown id 0エラーへの対処。 #4438 (urgordeadbeef) system.part_logテーブルが、設定に関係なく作成されるようになっていました。#4483 (alexey-milovidov)- cache 辞書での
dictIsIn関数の未定義動作を修正。#4515 (alesapin) - SELECTクエリが同じテーブルを複数回ロックする場合 (たとえば、異なるスレッドから、または複数のサブクエリの実行時) に、同時実行のDDLクエリがあると発生していたデッドロックを修正しました。#4535 (Alex Zatelepin)
- 独自の
llvmcontrib を用意し、clangとasanでテストできるようになるまで、デフォルトで compile_expressions を無効にしました。 #4579 (alesapin) clickhouse外部 Dictionary ソースのinvalidate_queryが不正な結果セット (空、複数行、または複数カラム) を返した場合にstd::terminateが発生しないようにしました。lifetimeに関係なくinvalidate_queryが 5 秒ごとに実行されていた問題も修正しました。 #4583 (alexey-milovidov)clickhouseソースを持つ Dictionary のinvalidate_queryがsystem.dictionariesテーブルまたはDictionariesデータベースを参照している場合に、デッドロックを回避するようにしました (まれなケース) 。 #4599 (alexey-milovidov)- WHERE 句が空の場合の CROSS JOIN に関する修正。 #4598 (Artem Zuikov)
- 定数引数を渡した際に関数 “replicate” で発生するセグメンテーションフォールトを修正しました。#4603 (alexey-milovidov)
- 述語オプティマイザにおけるラムダ関数を修正。 #4408 (Winter Zhang)
- 複数のJOINに関する修正。#4595 (Artem Zuikov)
改善
- JOIN ON 句で、右側テーブルのカラムに別名を指定できるようにしました。#4412 (Artem Zuikov)
- 複数の JOIN の結果で、サブセレクトで使用できる正しい結果名が付くようにしました。結果内のフラットな別名をソース名に置き換えます。#4474 (Artem Zuikov)
- JOIN を含むステートメントに対するプッシュダウンロジックを改善しました。#4387 (Ivan)
パフォーマンス改善
- “move to PREWHERE” 最適化のヒューリスティクスを改善しました。#4405 (alexey-milovidov)
- 8 ビットおよび 16 ビットのキーについて、HashTable の API を利用する適切なルックアップテーブルを使うようにしました。#4536 (Amos Bird)
- 文字列比較のパフォーマンスを改善しました。#4564 (alexey-milovidov)
- distributed DDL task を処理するメインループが遅くならないよう、distributed DDL queue のクリーンアップを別スレッドで行うようにしました。#4502 (Alex Zatelepin)
min_bytes_to_use_direct_ioが 1 に設定されている場合、読み取るデータサイズが圧縮 block 1 つ分だけ過小評価されることがあったため、すべてのファイルが O_DIRECT モードで開かれるわけではありませんでした。#4526 (alexey-milovidov)
ビルド/テスト/パッケージングの改善
- clang-9 のサポートを追加しました。 #4604 (alexey-milovidov)
- 誤った
__asm__命令を修正しました (再度) 。 #4621 (Konstantin Podshumok) - コマンドラインから
clickhouse-performance-testの設定を指定できるようにしました。 #4437 (alesapin) - Dictionaries のテストを結合テストに追加しました。 #4477 (alesapin)
- Web サイト上のベンチマークのクエリを自動パフォーマンステストに追加しました。 #4496 (alexey-milovidov)
xxhash.hは実装の詳細であり、そのシンボルはXXH_NAMESPACEマクロで名前空間化されているため、外部 lz4 には存在しません。lz4 が外部の場合、xxHash も外部である必要があり、依存先はそれにリンクする必要があります。 #4495 (Orivej Desh)quantileTimingaggregate function が負の値または浮動小数点の argument で呼び出せてしまうケースを修正しました (これにより、undefined behaviour sanitizer を使用した fuzz test の問題も修正されます) 。 #4506 (alexey-milovidov)- スペルミスを修正しました。 #4531 (sdk2)
- Mac でのコンパイルを修正しました。 #4371 (Vitaly Baranov)
- FreeBSD および各種の特殊なビルド構成向けのビルド修正を行いました。 #4444 (proller)
ClickHouse リリース 19.3
ClickHouse リリース 19.3.9.1、2019-04-02
バグ修正
- Nullable と非 Nullable をキーに
FULL/RIGHT JOINした際に発生するクラッシュを修正しました。 #4855 (Artem Zuikov) clickhouse-copierで発生するセグメンテーションフォールトを修正しました。 #4835 (proller)- カラムに空の配列が長く連続して含まれるまれなケースで、
Array(LowCardinality)カラムの読み取りに失敗する問題を修正しました。 #4850 (Nikolai Kochetov)
ビルド/テスト/パッケージングの改善
- カスタムユーザーでclickhouse-serverイメージを起動する方法を追加 #4753 (Mikhail f. Shiryaev)
ClickHouse リリース 19.3.7、2019-03-12
バグ修正
- #3920 の不具合を修正しました。この不具合では、cache がランダムに破損し (メッセージ
Unknown codec family code、Cannot seek through file) 、segfault が発生します。このバグは最初にバージョン 19.1 で発生し、19.1.10 および 19.3.6 までのバージョンに存在します。#4623 (alexey-milovidov)
ClickHouse リリース 19.3.6、2019-03-02
バグ修正
- thread pool 内のスレッド数が 1000 を超える場合、スレッド終了時に
std::terminateが発生することがありました。Azat Khuzhin #4485 #4505 (alexey-milovidov) - デフォルト値のないカラムにコメントを付けた
ReplicatedMergeTree*テーブルと、コメントやデフォルト値のないカラムに codec を指定したテーブルを作成できるようになりました。あわせて、codec の比較も修正しました。#4523 (alesapin) - array または tuple を使った JOIN で発生するクラッシュを修正しました。#4552 (Artem Zuikov)
ThreadStatus not createdというメッセージを伴う clickhouse-copier のクラッシュを修正しました。#4540 (Artem Zuikov)- distributed DDLs を使用していた場合に、server の終了時にハングする不具合を修正しました。#4472 (Alex Zatelepin)
- 10 を超える番号のカラムについて、テキストフォーマットのパースに関するエラーメッセージに誤ったカラム番号が表示されていました。#4484 (alexey-milovidov)
ビルド/テスト/パッケージングの改善
- AVX 有効時のビルドを修正しました。#4527 (alexey-milovidov)
- 拡張アカウンティングと I/O アカウンティングを、コンパイル時のカーネルではなく、既知の適切なバージョンに基づいて有効化するようにしました。#4541 (nvartolomei)
core_dump.size_limitの設定を省略できるようにし、制限の設定に失敗した場合はthrowする代わりに警告を出すようにしました。#4473 (proller)Field.cpp内のvoid readBinary(...)からinline指定を削除しました。あわせて、冗長なnamespace DBブロックも統合しました。#4530 (hcz)
ClickHouse リリース 19.3.5、2019-02-21
バグ修正
- 大規模な HTTP insert クエリの処理に関するバグを修正しました。#4454 (alesapin)
send_logs_level設定の実装誤りにより発生していた、旧バージョンとの後方互換性の問題を修正しました。#4445 (alexey-milovidov)- カラムコメントの導入に伴って生じたテーブル関数
remoteの後方互換性の問題を修正しました。#4446 (alexey-milovidov)
ClickHouse リリース 19.3.4 (2019-02-16)
改善
ATTACH TABLEクエリの実行時に、テーブル索引のサイズがメモリ制限に算入されていませんでした。これにより、デタッチ後にテーブルを再アタッチできなくなる可能性を回避しました。 #4396 (alexey-milovidov)- ZooKeeper から受信する文字列および Array の最大サイズ上限をわずかに引き上げました。これにより、ZooKeeper で
CLIENT_JVMFLAGS=-Djute.maxbuffer=...のサイズを増やした場合でも動作を継続できます。 #4398 (alexey-milovidov) - キュー内にすでに非常に多くのノードがある場合でも、放棄されたレプリカを修復できるようにしました。 #4399 (alexey-milovidov)
SET索引に必須の引数を 1 つ追加しました (格納される最大行数) 。 #4386 (Nikita Vasilev)
バグ修正
- 単一の
LowCardinalityキーで group by した場合のWITH ROLLUPの結果を修正しました。#4384 (Nikolai Kochetov) - set 索引の不具合を修正しました (
max_rows行を超えるグラニュールが含まれている場合に、そのグラニュールが削除されてしまう問題) 。#4386 (Nikita Vasilev) - FreeBSD のビルドに関する多数の修正。#4397 (proller)
- 同じ別名を含むサブクエリがあるクエリでの別名置換を修正しました (issue #4110) 。#4351 (Artem Zuikov)
ビルド/テスト/パッケージングの改善
- Dockerイメージ内で、stateless tests 用に
clickhouse-serverを実行できるようにしました。 #4347 (Vasily Nemkov)
ClickHouse リリース 19.3.3 (2019-02-13)
新機能
- 何らかの理由で停止したままになっているミューテーションを削除できる
KILL MUTATIONステートメントを追加しました。トラブルシューティングを容易にするため、system.mutationsテーブルにlatest_failed_part、latest_fail_time、latest_fail_reasonフィールドも追加しました。 #4287 (Alex Zatelepin) - Shannon entropy を計算する集約関数
entropyを追加しました。 #4238 (Quid37) queryパートとdataパートに分割せずに、INSERT INTO tbl VALUES (....クエリをサーバーに送信できるようになりました。 #4301 (alesapin)arrayWithConstant関数の汎用実装を追加しました。 #4322 (alexey-milovidov)NOT BETWEEN比較演算子を実装しました。 #4228 (Dmitry Naumov)sumMapで値を合計するキー数を制限できるようにするため、sumMapFilteredを実装しました。 #4129 (Léo Ercolanelli)mysqltable function でNullable型をサポートしました。 #4198 (Emmanuel Donin de Rosière)LIMIT句で任意の定数式をサポートしました。 #4246 (k3box)- (符号なし整数の) 重みを表す追加の引数を受け取る
topKWeighted集約関数を追加しました。 #4245 (Andrew Golman) StorageJoinがjoin_any_take_last_rowsetting をサポートし、同じキーの既存の値を上書きできるようになりました。 #3973 (Amos BirdtoStartOfInterval関数を追加しました。 #4304 (Vitaly Baranov)RowBinaryWithNamesAndTypesフォーマットを追加しました。 #4200 (Oleg V. Kozlyuk)IPv4とIPv6のデータ型を追加しました。IPv*関数の実装もより効率的になりました。 #3669 (Vasily Nemkov)toStartOfTenMinutes()関数を追加しました。 #4298 (Vitaly Baranov)Protobuf出力フォーマットを追加しました。 #4005 #4158 (Vitaly Baranov)- データのインポート (INSERTs) 向けに HTTP interface での brotli サポートを追加しました。 #4235 (Mikhail)
- command line client でユーザーが関数名や型名をタイプミスした際に、ヒントを表示するようにしました。 #4239 (Danila Kutenin)
- Server の HTTP Response header に
Query-Idを追加しました。 #4231 (Mikhail)
実験的機能
- MergeTree テーブルエンジンファミリーに、
minmaxおよびsetのデータスキッピングインデックスを追加しました。 #4143 (Nikita Vasilev) - 可能な場合は
CROSS JOINをINNER JOINに変換するようにしました。 #4221 #4266 (Artem Zuikov)
バグ修正
JOIN ONセクションで重複するカラムに対して発生していたNot found columnを修正しました。#4279 (Artem Zuikov)START REPLICATED SENDSコマンドでレプリケーション送信を開始できるようにしました。#4229 (nvartolomei)Array(LowCardinality)引数を持つ集約関数の実行に関する問題を修正しました。#4055 (KochetovNicolai)INSERT ... SELECT ... FROM file(...)クエリの実行時に、ファイルのフォーマットがCSVWithNamesまたはTSVWIthNamesで、先頭のデータ行が欠落している場合に誤った動作をしていた問題を修正しました。#4297 (alexey-milovidov)- Dictionary が利用できない場合に、Dictionary の再読み込み時に発生していたクラッシュを修正しました。このバグは 19.1.6 で発生しました。 #4188 (proller)
- 右側のテーブルに重複がある場合の
ALL JOINを修正しました。#4184 (Artem Zuikov) use_uncompressed_cache=1使用時のセグメンテーションフォルトと、非圧縮サイズの誤りによって発生する例外を修正しました。このバグは 19.1.6 で発生しました。 #4186 (alesapin)int16を超える大きな日付値の比較におけるcompile_expressionsのバグを修正しました。#4341 (alesapin)- table function
numbers(0)からの選択時に発生していた無限ループを修正しました。#4280 (alexey-milovidov) ORDER BYに対する述語の最適化を一時的に無効にしました。#3890 (Winter Zhang)- 古いCPUで base64 関数を使用した際に発生する
Illegal instructionエラーを修正しました。このエラーが再現されたのは、ClickHouse を gcc-8 でコンパイルした場合のみです。#4275 (alexey-milovidov) - TLS 接続経由で PostgreSQL ODBC ドライバとやり取りする際に発生する
No message receivedエラーを修正しました。あわせて、MySQL ODBC ドライバの使用時に発生する segfault も修正しました。#4170 (alexey-milovidov) - 条件演算子 (関数
if) の分岐でDateおよびDateTimeの引数を使用した際に、誤った結果が返される問題を修正しました。関数ifに汎用的なケースを追加しました。#4243 (alexey-milovidov) - ClickHouseの辞書が
clickhouseプロセス内で読み込まれるようになりました。#4166 (alexey-milovidov) Fileエンジンを使用するテーブルに対するSELECTで、No such file or directoryエラー後の再試行時に発生していたデッドロックを修正しました。#4161 (alexey-milovidov)system.tablesから選択した際にtable does not existエラーが発生することがあるレースコンディションを修正しました。 #4313 (alexey-milovidov)clickhouse-clientは、対話型モードで実行した場合、コマンドライン補完の候補データの読み込み中に、終了時 segfault を起こすことがあります。#4317 (alexey-milovidov)IN演算子を含む mutation の実行時に誤った結果が生成される不具合を修正しました。#4099 (Alex Zatelepin)Dictionaryエンジンのデータベースがある場合、サーバー起動時にすべての Dictionary が強制的に読み込まれ、localhost 上の ClickHouse をソースとする Dictionary があるとその Dictionary を読み込めない不具合を修正しました。 #4255 (alexey-milovidov)- サーバーのシャットダウン時にシステムログを再度作成しようとした際に発生するエラーを修正しました。#4254 (alexey-milovidov)
joinGet関数が正しい型を返し、ロックを適切に処理するよう修正しました。#4153 (Amos Bird)sumMapWithOverflow関数が追加されました。#4151 (Léo Ercolanelli)allow_experimental_multiple_joins_emulationで発生する segfault を修正しました。52de2c (Artem Zuikov)DateおよびDateTimeの比較が正しく行われない不具合を修正しました。#4237 (valexey)- undefined behavior sanitizer 下でのファズテストを修正:
quantile*Weighted関数ファミリーに対するパラメーターの型チェックを追加しました。#4145 (alexey-milovidov) - 古いデータパーツの削除時に
File not foundエラーで失敗することがある、まれに発生する競合状態を修正しました。#4378 (alexey-milovidov) - /etc/clickhouse-server/config.xml が不足していたインストールパッケージを修正しました。 #4343 (proller)
ビルド/テスト/パッケージングの改善
- Debian パッケージ: 設定に応じて /etc/clickhouse-server/preprocessed へのリンクを修正。 #4205 (proller)
- FreeBSD 向けの各種ビルド修正。 #4225 (proller)
- perftest でテーブルの作成、データ投入、削除を行えるようにしました。 #4220 (alesapin)
- 重複した include をチェックするスクリプトを追加。 #4326 (alexey-milovidov)
- パフォーマンステストでインデックス番号を指定してクエリを実行できるようにしました。 #4264 (alesapin)
- デバッグシンボル付きパッケージのインストールを推奨するようにしました。 #4274 (alexey-milovidov)
- performance-test をリファクタリング。ログ出力とシグナル処理を改善。 #4171 (alesapin)
- 匿名化された Yandex.Metrica データセットのドキュメントを追加。 #4164 (alesapin)
- 古い月単位パーティションのパートをカスタムパーティション形式に変換するツールを追加。 #4195 (Alex Zatelepin)
- S3 上の 2 つのデータセットに関するドキュメントを追加。 #4144 (alesapin)
- プルリクエストの説明から changelog を生成するスクリプトを追加。 #4169 #4173 (KochetovNicolai) (KochetovNicolai)
- ClickHouse 用の Puppet モジュールを追加。 #4182 (Maxim Fedotov)
- 文書化されていない関数群のドキュメントを追加。 #4168 (Winter Zhang)
- ARM ビルドの修正。 #4210#4306 #4291 (proller) (proller)
- Dictionary のテストを
ctestから実行できるようにしました。 #4189 (proller) - SSL 証明書のデフォルトディレクトリとして
/etc/sslを使用するようにしました。 #4167 (alexey-milovidov) - 起動時に SSE および AVX 命令をチェックするようにしました。 #4234 (Igr)
- Init スクリプトがサーバーの起動完了まで待機するようにしました。 #4281 (proller)
後方互換性を持たない変更
allow_experimental_low_cardinality_type設定を削除しました。LowCardinalityデータ型は本番環境で利用可能になりました。#4323 (alexey-milovidov)- 利用可能なメモリ量に応じて、mark cache サイズおよび非圧縮 cache サイズを削減しました。#4240 (Lopatin Konstantin
CREATE TABLEクエリにキーワードINDEXを追加しました。名前がindexのカラムは、バッククォートまたは二重引用符で囲む必要があります:`index`。#4143 (Nikita Vasilev)sumMapは、オーバーフローする代わりに結果の型を昇格させるようになりました。従来のsumMapの動作は、sumMapWithOverflow関数を使用することで再現できます。#4151 (Léo Ercolanelli)
パフォーマンス改善
LIMITのないクエリでは、std::sortをpdqsortに置き換えました。 #4236 (Evgenii Pravda)- サーバーがグローバルスレッドプールのスレッドを再利用するようになりました。これにより、一部のコーナーケースでパフォーマンスに影響が出ます。 #4150 (alexey-milovidov)
改善
- FreeBSD の AIO サポートを実装しました。#4305 (urgordeadbeef)
SELECT * FROM a JOIN b USING a, bで、aとbのカラムは左側のテーブルのものだけが返されるようになりました。#4141 (Artem Zuikov)- クライアントの
-Cオプションを-cオプションと同様に使えるようにしました。#4232 (syominsergey) - 値を指定せずに
--passwordオプションを使用した場合、stdin からパスワードを読み込むようになりました。#4230 (BSD_Conqueror) LIKE式または正規表現を含む文字列リテラルで、エスケープされていないメタ文字をハイライトするようにしました。#4327 (alexey-milovidov)- クライアントのソケット接続が切れた場合に、HTTP の読み取り専用クエリをキャンセルするようにしました。#4213 (nvartolomei)
- クライアント接続を維持するため、サーバーが進捗を報告するようになりました。#4215 (Ivan)
optimize_throw_if_noop設定が有効な場合の OPTIMIZE クエリについて、理由を示すメッセージをやや改善しました。#4294 (alexey-milovidov)- ClickHouseサーバーで
--versionオプションをサポートしました。#4251 (Lopatin Konstantin) clickhouse-serverに--help/-hオプションを追加しました。#4233 (Yuriy Baranov)- aggregate function の state を結果として返す scalar subqueries をサポートしました。#4348 (Nikolai Kochetov)
- サーバーのシャットダウン時間と ALTER の待機時間を改善しました。#4372 (alexey-milovidov)
- replicated_can_become_leader 設定に関する情報を system.replicas に追加し、レプリカがリーダーになろうとしない場合にログを出力するようにしました。#4379 (Alex Zatelepin)
ClickHouse リリース 19.1
ClickHouse リリース 19.1.14, 2019-03-14
GLOBAL JOINをSELECT *と併用し、設定asterisk_left_columns_onlyが 1 に設定されている場合に発生することがあるColumn ... queried more than onceエラーを修正しました (まれなケース) 。この問題は 19.3 以降では発生しません。6bac7d8d (Artem Zuikov)
ClickHouse リリース 19.1.13, 2019-03-12
ClickHouse リリース 19.1.10、2019-03-03
ClickHouse リリース 19.1
ClickHouse リリース 19.1.9、2019-02-21
バグ修正
send_logs_level設定の実装誤りにより、旧バージョンとの後方互換性が失われていた問題を修正しました。 #4445 (alexey-milovidov)- カラムコメントの導入により発生した、テーブル関数
remoteの後方互換性の問題を修正しました。 #4446 (alexey-milovidov)
ClickHouse リリース 19.1.8 (2019-02-16)
バグ修正
ClickHouse リリース 19.1
ClickHouse リリース 19.1.7、2019-02-15
バグ修正
joinGet関数が正しい型を返し、ロックを適切に処理するよう修正しました。#4153 (Amos Bird)- サーバーのシャットダウン時にシステムログを再作成しようとした際に発生していたエラーを修正しました。 #4254 (alexey-milovidov)
- エラーを修正しました:
Dictionaryengine のデータベースがある場合、サーバー起動時にすべての Dictionary が強制的に読み込まれてしまい、さらに localhost をソースとする ClickHouse Dictionary があると、その Dictionary を読み込めない問題を修正しました。#4255 (alexey-milovidov) IN演算子を含むミューテーションの実行時に誤った結果が生成される不具合を修正しました。#4099 (Alex Zatelepin)clickhouse-clientは、対話型モードで実行した場合、コマンドライン補完候補用のデータを読み込んでいる終了時に segfault することがあります。 #4317 (alexey-milovidov)system.tablesから SELECT した際にtable does not existエラーが発生することがあるレースコンディションを修正しました。#4313 (alexey-milovidov)Fileエンジンのテーブルに対するSELECTを、No such file or directoryエラーの後に再試行した際に発生していたデッドロックを修正しました。#4161 (alexey-milovidov)- 不具合を修正しました: ローカルの ClickHouse 辞書が TCP 経由で読み込まれていましたが、本来はプロセス内で読み込まれるべきでした。 #4166 (alexey-milovidov)
- TLS 接続経由で PostgreSQL ODBC ドライバとやり取りする際に発生していた
No message receivedエラーを修正しました。あわせて、MySQL ODBC ドライバの使用時に発生していた segfault も修正しました。#4170 (alexey-milovidov) ORDER BYに対する述語最適化を一時的に無効にしました。#3890 (Winter Zhang)numbers(0)テーブル関数を選択した際に発生していた無限ループを修正しました。#4280 (alexey-milovidov)- 大きな (int16 を超える) 日付の比較における
compile_expressionsのバグを修正しました。#4341 (alesapin) uncompressed_cache=1使用時に発生していたセグメンテーションフォールトと、非圧縮サイズの誤りによる例外を修正しました。 #4186 (alesapin)- 右側のテーブルに重複行がある場合の
ALL JOINを修正しました。#4184 (Artem Zuikov) INSERT ... SELECT ... FROM file(...)クエリの実行時に、ファイルのフォーマットがCSVWithNamesまたはTSVWIthNamesで、先頭のデータ行が欠落している場合に発生していた誤動作を修正しました。 #4297 (alexey-milovidov)Array(LowCardinality)引数を使用した場合の集約関数の実行を修正しました。#4055 (KochetovNicolai)- Debian パッケージ: config に従って /etc/clickhouse-server/preprocessed へのシンボリックリンクを修正。#4205 (proller)
- undefined behavior sanitizer 使用時のファズテストを修正:
quantile*Weighted関数ファミリーに対するパラメータ型チェックを追加しました。#4145 (alexey-milovidov) START REPLICATED SENDSコマンドでレプリケートされた送信を開始できるようにしました。#4229 (nvartolomei)- JOIN ON セクションで、重複するカラムに対して
Not found columnが発生する問題を修正しました。#4279 (Artem Zuikov) - 現在、SSL 証明書のデフォルトのディレクトリとして
/etc/sslが使用されるようになりました。 #4167 (alexey-milovidov) - Dictionary が利用できない場合に、再読み込み時に発生するクラッシュを修正しました。#4188 (proller)
- 誤った
DateおよびDateTimeの比較に関するバグを修正しました。 #4237 (valexey) - 条件演算子 (関数
if) の分岐でDateおよびDateTimeの引数を使用した際に誤った結果になる問題を修正しました。関数ifに汎用的なケースを追加しました。#4243 (alexey-milovidov)
ClickHouse リリース 19.1.6 (2019-01-24)
新機能
- テーブルのカラムごとにカスタム圧縮コーデックを指定できるようになりました。 #3899 #4111 (alesapin, Winter Zhang, Anatoly)
- 圧縮コーデック
Deltaを追加しました。 #4052 (alesapin) - 圧縮コーデックに対する
ALTERをサポートしました。 #4054 (alesapin) - SQL 標準との互換性向上のため、関数
left,right,trim,ltrim,rtrim,timestampadd,timestampsubを追加しました。 #3826 (Ivan Blinkov) HDFSテーブルおよびhdfsテーブル関数 への書き込みをサポートしました。 #4084 (alesapin)- 大きな検索対象文字列から複数の定数文字列を検索する関数
multiPosition,multiSearch,firstMatchを追加しました。-UTF8、-CaseInsensitive、-CaseInsensitiveUTF8バリアントもあります。 #4053 (Danila Kutenin) SELECTクエリがシャーディングキーでフィルタリングされる場合に、不要な分片を除外できるようになりました (設定optimize_skip_unused_shards) 。 #3851 (Gleb Kanterov, Ivan)Kafkaengine で、block ごとに一定数のパース error を無視できるようになりました。 #4094 (Ivan)CatBoostの多クラス model の評価をサポートしました。関数modelEvaluateは、多クラス model に対してクラスごとの生の予測値を含む tuple を返します。libcatboostmodel.soは #607 を含めてビルドする必要があります。 #3959 (KochetovNicolai)- 関数
filesystemAvailable,filesystemFree,filesystemCapacityを追加しました。 #4097 (Boris Granveaud) - ハッシュ関数
xxHash64およびxxHash32を追加しました。 #3905 (filimonov) gccMurmurHashハッシュ関数 (GCC 版 Murmur hash) を追加しました。これは gcc と同じ hash seed を使用します。 #4000 (sundyli)- ハッシュ関数
javaHash,hiveHashを追加しました。 #3811 (shangshujie365) - テーブル関数
remoteSecureを追加しました。この関数はremoteと同様に動作しますが、安全な connection を使用します。 #4088 (proller)
実験的機能
- 複数の JOIN をエミュレートする機能を追加しました (
allow_experimental_multiple_joins_emulation設定) 。 #3946 (Artem Zuikov)
バグ修正
- メモリ消費を抑えるため、
compiled_expression_cache_size設定はデフォルトで制限されるようになりました。#4041 (alesapin) - レプリケートテーブルに対するALTERを実行するスレッドと、ZooKeeper から設定を更新するスレッドがハングする不具合を修正しました。 #2947 #3891 #3934 (Alex Zatelepin)
- 分散 ALTER タスクの実行時に発生していた race condition を修正しました。この race condition により、複数のレプリカが同じタスクを実行しようとし、1つを除くすべてのレプリカが ZooKeeper のエラーで失敗していました。 #3904 (Alex Zatelepin)
- ZooKeeper へのリクエストがタイムアウトした場合に、
from_zkの設定要素が更新されない不具合を修正しました。#2947 #3947 (Alex Zatelepin) - IPv4 サブネットマスクのプレフィックスが誤っている不具合を修正しました。 #3945 (alesapin)
- リソース枯渇により新しいスレッドを作成できない、まれなケースで発生していたクラッシュ (
std::terminate) を修正しました。 #3956 (alexey-milovidov) remoteテーブル関数の実行時に、getStructureOfRemoteTableで誤った制限が使われていたことによるバグを修正しました。#4009 (alesapin)- netlinkソケットのリークを修正しました。これらは削除されないプールに格納されており、既存のソケットがすべて使用中の場合、新しいスレッドの開始時に新しいソケットが作成されていました。#4017 (Alex Zatelepin)
odbc-bridgeサブプロセスをフォークした後、/procからすべての fd を読み取る前に/proc/self/fdディレクトリを閉じてしまっていたバグを修正しました。 #4120 (alesapin)- 主キーに String を使用している場合の、String から UInt への単調変換の問題を修正しました。#3870 (Winter Zhang)
- 整数変換関数の単調性計算におけるエラーを修正しました。#3921 (alexey-milovidov)
arrayEnumerateUniq、arrayEnumerateDense関数で、一部の無効な引数で発生していた segfault を修正しました。#3909 (alexey-milovidov)- StorageMerge の未定義動作を修正しました。 #3910 (Amos Bird)
- 関数
addDays、subtractDaysで発生していた segfault を修正しました。 #3913 (alexey-milovidov) - エラーを修正: 関数
round、floor、trunc、ceilは、整数の引数と大きな負のスケールで実行した場合に、誤った結果を返すことがありました。#3914 (alexey-milovidov) - ‘kill query sync’ が原因でコアダンプを引き起こすバグを修正しました。 #3916 (muVulDeePecker)
- レプリケーションキューが空になった後に長い遅延が発生する不具合を修正しました。 #3928 #3932 (alesapin)
- 主キーが
LowCardinalityのテーブルへの insert 時に発生する過剰なメモリ使用量を修正しました。#3955 (KochetovNicolai) - 空の配列の場合における
NativeフォーマットのLowCardinalityシリアライゼーションを修正しました。#3907 #4011 (KochetovNicolai) - 単一の LowCardinality 数値カラムに対して distinct を使用した際に誤った結果が返る不具合を修正しました。 #3895 #4012 (KochetovNicolai)
- LowCardinality キーでの特殊化された集約処理を修正しました (
compile設定が有効な場合) 。 #3886 (KochetovNicolai) - レプリケートテーブルのクエリでのユーザー名とパスワードの転送を修正。 #3957 (alesapin) (小路)
- Dictionary の再読み込み中に Dictionary database 内のテーブルを一覧表示すると発生することがある、非常にまれな race condition を修正しました。 #3970 (alexey-milovidov)
- HAVING を ROLLUP または CUBE と併用した際に誤った結果が返る問題を修正しました。#3756 #3837 (Sam Chou)
JOIN ON構文を使用するクエリおよび分散テーブルにおけるカラムの別名を修正しました。#3980 (Winter Zhang)quantileTDigestの内部実装におけるエラーを修正しました (Artem Vakhrushev 氏が発見) 。このエラーは ClickHouse では発生せず、ClickHouse のコードベースをライブラリとして直接使用している場合にのみ関係するものでした。 #3935 (alexey-milovidov)
改善
ALTER TABLE ADD COLUMNステートメントでIF NOT EXISTSを、DROP/MODIFY/CLEAR/COMMENT COLUMNでIF EXISTSをサポートしました。#3900 (Boris Granveaud)- 関数
parseDateTimeBestEffortで、DD.MM.YYYY、DD.MM.YY、DD-MM-YYYY、DD-Mon-YYYY、DD/Month/YYYYなどのフォーマットをサポートしました。#3922 (alexey-milovidov) CapnProtoInputStreamが不揃いな構造をサポートするようになりました。#4063 (Odin Hultgren Van Der Horst)- ユーザビリティ改善: サーバープロセスがデータディレクトリの所有者によって起動されていることを確認するチェックを追加しました。data が非 root ユーザーに属している場合、root でサーバーを起動できないようにしました。#3785 (sergey-v-galtsev)
- JOIN を含むクエリの解析時に必要なカラムを確認するロジックを改善しました。#3930 (Artem Zuikov)
- 1 台のサーバーに多数の分散テーブルがある場合の接続数を削減しました。#3726 (Winter Zhang)
- ODBC ドライバで
WITH TOTALSクエリの totals 行をサポートしました。#3836 (Maksim Koritckiy) - if 関数内で
Enumを整数として使用できるようにしました。#3875 (Ivan) low_cardinality_allow_in_native_format設定を追加しました。無効な場合、NativeフォーマットではLowCadrinality型を使用しません。#3879 (KochetovNicolai)- メモリ使用量を削減するため、compiled expressions cache から一部の冗長な object を削除しました。#4042 (alesapin)
SET send_logs_level = 'value'クエリが適切な値を受け付けることを確認するチェックを追加しました。#3873 (Sabyanin Maxim)- 型変換関数における data type のチェックを修正しました。#3896 (Winter Zhang)
パフォーマンス改善
- MergeTree setting
use_minimalistic_part_header_in_zookeeperを追加しました。これを有効にすると、レプリケートテーブルは compact パーツのメタデータを単一の part znode に格納するようになります。これにより、ZooKeeper のスナップショットサイズを大幅に削減できます (特にテーブルに多数のカラムがある場合) 。なお、この設定を有効にした後は、これをサポートしていないバージョンへダウングレードできなくなります。#3960 (Alex Zatelepin) patternにtimeが含まれない場合の関数sequenceMatchおよびsequenceCount向けに、DFA ベースの実装を追加しました。#4004 (Léo Ercolanelli)- 整数のシリアライゼーションを改善し、パフォーマンスを向上させました。#3968 (Amos Bird)
- -1 番目の要素が常に有効かつ 0 になるよう、PODArray の左側を 0 埋めするようにしました。これは offsets の分岐なし計算に使用されます。#3920 (Amos Bird)
- パフォーマンス低下を招いていた
jemallocのバージョンを元に戻しました。#4018 (alexey-milovidov)
後方互換性を持たない変更
- 文書化されていない機能
ALTER MODIFY PRIMARY KEYを削除しました。これはALTER MODIFY ORDER BYコマンドに置き換えられたためです。#3887 (Alex Zatelepin) - 関数
shardByHashを削除しました。#3833 (alexey-milovidov) - 結果の型が
AggregateFunctionとなるスカラーサブクエリの使用を禁止しました。#3865 (Ivan)
ビルド/テスト/パッケージングの改善
- PowerPC (
ppc64le) ビルドのサポートが追加されました。#4132 (Danila Kutenin) - ステートフルな機能テストが、一般公開されているデータセット上で実行されるようになりました。 #3969 (alexey-milovidov)
- Docker または systemd-nspawn 内で
bash: /usr/bin/clickhouse-extract-from-config: Operation not permittedというメッセージが表示され、サーバーを起動できない問題を修正しました。#4136 (alexey-milovidov) rdkafkaライブラリを v1.0.0-RC5 に更新しました。低レベルの C インターフェイスではなく、cppkafka を使用しました。#4025 (Ivan)mariadb-clientライブラリを更新しました。UBSan で見つかった問題の 1 つを修正しました。#3924 (alexey-milovidov)- UBSanビルド向けのいくつかの修正。 #3926 #3021 #3948 (alexey-milovidov)
- UBSanビルドでのテストをコミットごとに実行するようにしました。
- コミットのたびにPVS-Studio静的アナライザを実行するようにしました。
- PVS-Studio で見つかったバグを修正しました。#4013 (alexey-milovidov)
- glibc の互換性に関する問題を修正しました。 #4100 (alexey-milovidov)
- Dockerイメージを18.10に更新し、glibc >= 2.28 用の互換性ファイルを追加 #3965 (alesapin)
- serverのDockerイメージ内でディレクトリのchownを行いたくないユーザー向けに、環境変数を追加。 #3967 (alesapin)
- clang の
-Weverythingの警告の大半を有効化しました。-Wpedanticも有効化しました。#3986 (alexey-milovidov) - clang 8 でのみ利用可能な警告をさらにいくつか追加しました。 #3993 (alexey-milovidov)
- 共有リンクを使用する際、個別の LLVM ライブラリではなく
libLLVMにリンクするようにしました。 #3989 (Orivej Desh) - テスト用イメージにsanitizer変数を追加しました。 #4072 (alesapin)
clickhouse-serverの Debian パッケージでは、ケーパビリティの設定にsetcapツールを使えるよう、libcap2-binパッケージを推奨するようになりました。これは任意です。 #4093 (alexey-milovidov)- コンパイル時間を改善し、インクルードを修正しました。 #3898 (proller)
- ハッシュ関数のパフォーマンステストを追加しました。 #3918 (filimonov)
- ライブラリの循環依存を修正しました。 #3958 (proller)
- 利用可能なメモリが少ない環境でのコンパイルを改善。 #4030 (proller)
jemallocでの性能低下を再現するためのテストスクリプトを追加しました。#4036 (alexey-milovidov)dbms配下のコメントおよび文字列リテラル内のスペルミスを修正しました。#4122 (maiha)- コメントの誤字を修正しました。 #4089 (Evgenii Pravda)