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

2019 年の変更履歴

ClickHouse リリース 19.17

ClickHouse リリース 19.17.6.36, 2019-12-27

不具合修正

  • decompress における潜在的なバッファオーバーフローを修正しました。悪意のあるユーザーが、バッファ外の読み取りを引き起こすよう細工された圧縮データを渡すことで発生し得る問題がありました。この問題は Yandex の情報セキュリティチームに所属する Eldar Zaitov によって発見されました。 #8404 (alexey-milovidov)
  • サーバーが、UTF-8 検証を必要とする String データ型の値を含むデータを 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->tableBtableC->tableA のような連続したリネーム操作時の問題が修正されます。 #8306 (tavplubix)
  • DDL クエリで作成される range_hashed 外部ディクショナリで、任意の数値型で範囲を指定できるようになりました。 #8275 (alesapin)
  • INSERT INTO table SELECT ... FROM mysql(...) テーブル関数の問題を修正しました。 #8234 (tavplubix)
  • 存在しないファイルに対して INSERT INTO TABLE FUNCTION file() を実行した際に発生していたセグメンテーションフォルトを修正しました。この場合は、まずファイルが作成され、その後に INSERT 文が処理されるようになりました。 #8177 (Olga Khvostikova)
  • 集約済みビットマップとスカラービットマップの積集合を取る際の bitmapAnd エラーを修正しました。 #8082 (Yue Huang)
  • EXISTS t のように、TABLEDICTIONARY 修飾子なしで EXISTS クエリが使用された場合に発生していたセグメンテーションフォルトを修正しました。 #8213 (alexey-milovidov)
  • Nullable な引数が指定された場合の rand および randConstant 関数の戻り値の型を修正しました。これらの関数は常に UInt32 を返し、Nullable(UInt32) を返すことはなくなりました。 #8204 (Nikolai Kochetov)
  • DROP DICTIONARY IF EXISTS db.dict を修正し、db が存在しないときにも例外をスローしないようにしました。 #8185 (Vitaly Baranov)
  • サーバークラッシュが原因でテーブルが完全に削除されなかった場合、サーバーはそのテーブルを復元して読み込もうとします #8176 (tavplubix)
  • 2 つを超えるシャードのローカルテーブルを持つ分散テーブルに対する単純な count クエリを修正しました。 #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" による失敗)に外部テーブルの情報が読み取られず、次のリクエストがこの情報を次のクエリの開始として解釈し、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)
  • ミューテーションが存在しない場合には、パート名からミューテーション番号を削除しました。これにより、古いバージョンとの互換性が向上しました。 #8250 (alesapin)
  • 一部のアタッチ済みパーツで、data_version がテーブルのミューテーションバージョンより大きい場合にミューテーションがスキップされてしまうバグを修正しました。 #7812 (Zhichang Yu)
  • パーツを別のデバイスに移動しても、その冗長コピーを残したままサーバーを起動できるようにしました。 #7810 (Vladimir Chebotarev)
  • 集約関数のカラムを使用した際に発生する可能性があったエラー「Sizes of columns does not match」を修正しました。#7790 (Boris Granveaud)
  • 今後は、LIMIT BY と併用して WITH TIES を使用した場合に、例外がスローされます。また、LIMIT BY とともに TOP を使用できるようになりました。 #7637 (Nikita Mikhaylov)
  • invalidate_query を持つディクショナリのリロード処理を修正し、以前の更新試行時に更新が停止したり例外が発生したりしていた問題を解消しました。 #8029 (alesapin)

ClickHouse リリース 19.17.4.11, 2019-11-22

後方互換性のない変更

  • スカラーサブクエリの結果を保存する際に、パフォーマンス向上のため AST ではなくカラムを使用するように変更しました。設定項目 enable_scalar_subquery_optimization は 19.17 で追加され、デフォルトで有効になっていました。このため、以前のバージョンから 19.17.2 または 19.17.3 へアップグレードする際に、このような エラーが発生していました。この設定は 19.17.4 ではデフォルトで無効となり、19.16 およびそれ以前のバージョンからエラーなくアップグレードできるようになりました。 #7392 (Amos Bird)

新機能

  • DDL クエリでディクショナリを作成できる機能を追加しました。 #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 関数を追加しました。これはビットマップ内の値の配列を別の値の配列へ変換し、その結果として新しいビットマップを返します。 #7598 (Zhichang Yu)
  • javaHashUTF16LE() 関数を実装しました。 #7651 (achimbab)
  • Distributed エンジン向けの仮想カラム _shard_num を追加しました。 #7624 (Azat Khuzhin)

実験的機能

  • MergeTree における processors(新しいクエリ実行パイプライン)のサポートを追加しました。 #7181 (Nikolai Kochetov)

バグ修正

  • Values で発生していた浮動小数点数の誤解析を修正 #7817 #7870 (tavplubix)
  • trace_log 有効時にごくまれに発生するデッドロックを修正。 #7838 (filimonov)
  • それを参照する任意のマテリアライズドビュー (MV) を持つ Kafka テーブルにプロデュースする際のメッセージの重複を防止 #7265 (Ivan)
  • IN 句での Array(LowCardinality(Nullable(String))) のサポート。#7364 #7366 を解決 (achimbab)
  • ODBC Bridge で SQL_TINYINT および SQL_BIGINT の取り扱いを追加し、SQL_FLOAT データソース型の取り扱いを修正。#7491 (Denis Glazachev)
  • 空の decimal 列に対する集約(avg および分位数)の処理を修正 #7431 (Andrey Konyaev)
  • MATERIALIZED カラムを持つ Distributed テーブルへの INSERT を修正 #7377 (Azat Khuzhin)
  • パーティションの一部がすでに宛先ディスクまたはボリューム上にある場合でも MOVE PARTITION が動作するようにしました #7434 (Vladimir Chebotarev)
  • マルチディスク構成で、ReplicatedMergeTree の mutation 実行中にハードリンクの作成に失敗するバグを修正しました。 #7558 (Vladimir Chebotarev)
  • MergeTree でのミューテーションにおいて、パーツ全体が変更されない場合に、最適な配置先が別ディスクとして選択されると発生していたバグを修正しました #7602 (Vladimir Chebotarev)
  • ディスク設定から keep_free_space_ratio が読み込まれないバグを修正 #7645 (Vladimir Chebotarev)
  • Tuple 列または複雑なパスを持つ列のみから成るテーブルで発生していたバグを修正しました。 7541 を修正。 #7545 (alesapin)
  • max_memory_usage 制限に Buffer エンジンのメモリを含めない #7552 (Azat Khuzhin)
  • ORDER BY tuple() が指定された MergeTree テーブルにおける final mark の扱いを修正しました。まれなケースで、SELECT 時に Can't adjust last granule エラーが発生する可能性がありました。 #7639 (Anton Popov)
  • コンテキストを必要とするアクション(たとえば JSON 関数)を含む述語を持つミューテーションに存在していたバグを修正しました。このバグにより、クラッシュや異常な例外が発生する可能性がありました。 #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)

改良

  • Nullable カラムが認識され、NULL 値が ODBC-bridge によって正しく処理されるようにしました。#7402 (Vasily Nemkov)
  • 分散送信時に現在のバッチを書き込む処理をアトミックにしました。#7600 (Azat Khuzhin)
  • クエリ内のカラム名からテーブルを特定できない場合は、例外をスローするようにしました。#7358 (Artem Zuikov)
  • MergeTreeSettingsmerge_max_block_size 設定を追加しました。#7412 (Artem Zuikov)
  • HAVING を含み GROUP BY を含まないクエリは、定数による GROUP BY を仮定するようにしました。そのため、SELECT 1 HAVING 1 は結果を返すようになりました。#7496 (Amos Bird)
  • (X,) を Python と同様にタプルとしてパースできるようにしました。#7501, #7562 (Amos Bird)
  • range 関数の挙動を、ほぼ Python と同じものにしました。#7518 (sundyli)
  • テーブル system.settingsconstraints カラムを追加しました。#7553 (Vitaly Baranov)
  • TCP ハンドラー向けの Null フォーマットを改善し、select ignore(<expression>) from table format Null を clickhouse-client 経由でのパフォーマンス計測に利用できるようにしました。#7606 (Amos Bird)
  • CREATE TABLE ... AS (SELECT (1, 2)) のようなクエリを正しくパースできるようにしました。#7542 (hcz)

パフォーマンスの改善

  • 短い文字列キーに対する集約のパフォーマンスを改善しました。#6243 (Alexander Kuzmenkov, Amos Bird)
  • 定数述語が折り畳まれた後に、潜在的な最適化を得るため構文/式解析をもう一度実行するようにしました。#7497 (Amos Bird)
  • SELECT count() FROM table; のような自明なクエリを評価する際に、ストレージのメタ情報を使用するようにしました。#7510 (Amos Bird, alexey-milovidov)
  • Aggregator の addBatch と同様に、arrayReduce の処理をベクトル化しました。#7608 (Amos Bird)
  • Kafka のコンシューム処理のパフォーマンスをわずかに改善しました。#7475 (Ivan)

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

  • CPU アーキテクチャ AARCH64 向けのクロスコンパイルサポートを追加。パッケージャースクリプトをリファクタリング。#7370 #7539 (Ivan)
  • パッケージをビルドする際に、darwin-x86_64 と linux-aarch64 のツールチェーンをマウントされた Docker ボリュームに展開 #7534 (Ivan)
  • バイナリパッケージャー用の 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 リリース 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

  • 古い ClickHouse バージョンとの分散サブクエリの非互換性を修正しました。#7851 を修正。 (tabplubix)
  • CREATE クエリの実行時に、ストレージエンジン引数内の定数式を折りたたむようにしました。空のデータベース名は現在のデータベース名に置き換えるようにしました。#6508#3492 を修正。また、ClickHouseDictionarySource におけるローカルアドレスのチェックも修正しました。 #9262 (tabplubix)
  • *MergeTree テーブルエンジンファミリーにおけるバックグラウンドマージが、ストレージポリシーのボリュームの順序をより正確に保持するようになりました。 #8549 (Vladimir Chebotarev)
  • サフィックスを読み取った後、コミット前に例外が発生するというまれなケースで Kafka のデータが失われるのを防止しました。#9378 を修正。関連: #7175 #9507 (filimonov)
  • 誤ったパラメータで作成された Kafka テーブルを使用/削除しようとした際にサーバーが終了してしまうバグを修正しました。#9494 を修正。#9507 を取り込みました。 #9513 (filimonov)
  • Kafka テーブルの上位にあるサブクエリで MaterializedView を使用できるようにしました。 #8197 (filimonov)

新機能

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

ClickHouse リリース 19.16.2.2, 2019-10-30

後方互換性のない変更

  • count/countIf に対する不足していた引数個数(arity)の検証を追加しました。 #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 ソースに基づくディクショナリ用に、credentialshttp-headers の 2 つの設定オプションを追加。 #7092 (Guillaume Tassery)
  • 起動されたバックグラウンドマージの回数をカウントする新しい ProfileEvent Merge を追加。 #7093 (Mikhail Korotov)
  • 完全修飾ドメイン名を返す fullHostName 関数を追加。 #7263 #7291 (sundyli)
  • 「切り取り」条件で配列を分割する 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)
  • 外部ディクショナリのソースとして 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 タイムアウトではなく HTTP keep-alive タイムアウトが使用されていた問題を修正しました。 #7351 (Vasily Nemkov)
  • groupBitmapOr で発生するセグメンテーションフォルトを修正しました(issue #7109)。 #7289 (Zhichang Yu)
  • マテリアライズドビューに対しては、すべてのデータが書き込まれた後に 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)
  • 部分マージ結合において左側ブロックをまとめて圧縮(最適化)。 #7122 (Artem Zuikov)
  • Replicated テーブルエンジンの mutation で非決定的な関数を許可しないように変更。これは レプリカ間の不整合を引き起こす可能性があるため。 #7247 (Alexander Kazakov)
  • 例外スタックトレースを文字列に変換する際にメモリトラッカーを無効化。 これにより、サーバー側で Memory limit exceeded 種別のエラーメッセージが失われ、 クライアント側で Attempt to read after eof 例外を引き起こしていた問題を防止できる。 #7264 (Nikolai Kochetov)
  • 各種フォーマットを改善し、次の issue を解決。 #6033, #2633, #6611, #6742 #7215 (tavplubix)
  • ClickHouse は、IN 演算子の右辺にあって左辺の型に変換できない値を無視していた。 複合型(Array および Tuple)でも正しく動作するように修正。 #7283 (Alexander Kuzmenkov)
  • ASOF JOIN に対して不足していた不等比較演算をサポート。 ON 句の構文で、ASOF 列に対して「以下」バリアントおよび厳密な「より大きい」「より小さい」 バリアントで結合できるようになった。 #7282 (Artem Zuikov)
  • 部分マージ結合を最適化。 #7070 (Artem Zuikov)
  • uniqCombined 関数で 98 KB を超えるメモリを使用しないように変更。 #7236, #7270 (Azat Khuzhin)
  • メモリが不足している場合、PartialMergeJoin で右側の結合テーブルの一部を ディスクに書き出すように変更。必要に応じてデータを再読み込み。 #7186 (Artem Zuikov)

パフォーマンスの改善

  • データの重複を避けることで、定数引数を持つ joinGet を高速化。 #7359 (Amos Bird)
  • サブクエリが空の場合は早期に復帰するように変更。 #7007 (小路)
  • Values 内の SQL 式のパースを最適化。 #6781 (tavplubix)

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

  • Mac OS 向けのクロスコンパイルで一部の contrib を無効化。 #7101 (Ivan)
  • clickhouse_common_io に対する PocoXML への不足していたリンクを追加。 #7200 (Azat Khuzhin)
  • clickhouse-test で複数のテストフィルター引数を受け付けるようにする。 #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 からの更新時に競合が発生しないように対応しました。設定ファイルは clickhouse-server-common で別パッケージとして提供されています。 #7073 (filimonov)
  • 一部のヘッダーファイルを最適化し、再ビルド時間を短縮しました。 #7212, #7231 (Alexander Kuzmenkov)
  • Date と DateTime 型のパフォーマンステストを追加。#7332 (Vasily Nemkov)
  • 非決定的な変更を含んでいた一部のテストを修正。 #7132 (Alexander Kazakov)
  • MemorySanitizer を有効にしたビルドを CI に追加。 #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 #7252alexey-milovidov)が修正されました。
  • LIVE VIEW で no_users_thread 変数にアクセスする際に ThreadSanitizer が報告するデータレースを修正。 #7353 (vzakaznikov)
  • libcommon の malloc シンボルを削除 #7134, #7065 (Amos Bird)
  • すべてのライブラリを無効化するためのグローバルフラグ ENABLE_LIBRARIES を追加しました。 #7063 (proller)

コードのクリーンアップ

  • 辞書の DDL に備えて設定リポジトリを汎用化。 #7155 (alesapin)
  • 意味解析を行わない辞書用 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)
  • 一部のコピーペーストコード(TemporaryFileTemporaryFileStream)を削除。 #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 カラムにおける NULL 値の扱いを修正。 #7402 (Vasily Nemkov)
  • MATERIALIZED カラムを持つ Distributed の非ローカルノードへの INSERT を修正。 #7377 (Azat Khuzhin)
  • 関数 getMultipleValuesFromConfig を修正。 #7374 (Mikhail Korotov)
  • TCP keep alive タイムアウトの代わりに HTTP keep alive タイムアウトを使用していた問題を修正。 #7351 (Vasily Nemkov)
  • 例外発生時にすべてのジョブが完了するのを待機するようにした(まれなセグメンテーションフォルトを修正)。 #7350 (tavplubix)
  • Kafka テーブルへの挿入時に、マテリアライズドビューへプッシュしないようにした。 #7265 (Ivan)
  • 例外スタックに対してはメモリトラッカーを無効化。 #7264 (Nikolai Kochetov)
  • 外部データベース向けにクエリを変換するコードの不具合を修正。 #7252 (alexey-milovidov)
  • MetricsTransmitter で未初期化の値を使用しないようにした。 #7158 (Azat Khuzhin)
  • テスト用のマクロ付きサンプル設定を追加。 (alexey-milovidov)

ClickHouse リリース 19.15.3.6, 2019-10-09

バグ修正

  • ハッシュ辞書における bad_variant を修正。 (alesapin)
  • ATTACH PART クエリでセグメンテーションフォルトが発生するバグを修正。 (alesapin)
  • MergeTreeData における時間計算を修正。 (Vladimir Chebotarev)
  • 書き込みが完了した後に、Kafka へのコミットを明示的に実行するようにした。 #7175 (Ivan)
  • MergeTree パーツの min/max インデックスで NULL 値を正しくシリアライズするようにした。 #7234 (Alexander Kuzmenkov)

ClickHouse リリース 19.15.2.2, 2019-10-01

新機能

  • 階層ストレージ: MergeTree エンジンを使用するテーブルに対して複数のストレージボリュームを利用するためのサポート。新しいデータを SSD に保存し、古いデータを自動的に HDD に移動できます。() #4918 (Igr) #6489 (alesapin)
  • INSERT SELECT クエリで入力データを読み取るためのテーブル関数 input を追加。 #5450 (palasonic1) #6832 (Anton Popov)
  • hashed レイアウトと機能的には同等だが、よりメモリ効率の高い sparse_hashed 辞書レイアウトを追加。値の取得が遅くなる代わりに、メモリ使用量は約半分になります。 #6894 (Azat Khuzhin)
  • 辞書へアクセス可能なユーザーのリストを定義できるように実装。現在は接続中のデータベースでのみ使用されます。 #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)

実験的機能

  • 現在のパイプラインを変更しない(メモリ内の)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)
  • Distributed テーブルでデータを送信する際の最大バックオフスリープ時間の制限を削除。 #6895 (Azat Khuzhin)
  • プロファイルイベント(カウンタ)を累積値として graphite に送信できるようにしました。サーバーの config.xml 内の <events_cumulative> で有効化できます。 #6969 (Azat Khuzhin)
  • HTTP 経由の Native 形式で LowCardinality(T) 型のカラムにデータを挿入する際に、型 T を自動的に LowCardinality(T) にキャストする機能を追加。 #6891 (Nikolai Kochetov)
  • Float32Float64 に対して reinterpretAsString を使用せずに関数 hex を使用できるようにしました。 #7024 (Mikhail Korotov)

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

  • デバッグ情報付きの clickhouse バイナリに gdb-index を追加。これにより gdb の起動時間が短縮されます。 #6947 (alesapin)
  • pigz を使用するようにパッチ適用した dpkg-deb により deb パッケージングを高速化。 #6960 (alesapin)
  • enable_fuzzing = 1 を設定して、プロジェクト全コードに対する libfuzzer のインストルメンテーションを有効化。 #7042 (kyprizel)
  • CI に split build のスモークテストを追加。 #7061 (alesapin)
  • CI に MemorySanitizer を用いたビルドを追加。 #7066 (Alexander Kuzmenkov)
  • libsparsehashsparsehash-c11 に置き換え。 #6965 (Azat Khuzhin)

バグ修正

  • 大きなテーブル上の複雑なキーに対するインデックス解析のパフォーマンス低下を修正しました。#6924 を修正します。 #7075 (alexey-milovidov)
  • Kafka の空のトピックからの SELECT 時にセグメンテーションフォルトを引き起こしていた論理エラーを修正しました。 #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* 集約関数の状態のシリアライズ形式を変更しました。以前のバージョンでシリアライズされた bitmap* の状態は読み取ることができません。 #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)

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

  • ミューテーションの適用を待つ必要があるため、シェルスクリプトに書き換えることで、flapping テスト 00715_fetch_merged_or_mutated_part_zookeeper を修正しました。 #6977 (Alexander Kazakov)
  • 空の配列引数を取る関数 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')#6092Olga Khvostikova
  • 新しい system.metric_log テーブル。指定した時間間隔で system.eventssystem.metrics の値を保存します。 #6363 #6467 (Nikita Mikhaylov) #6530 (alexey-milovidov)
  • ClickHouse のテキストログを system.text_log テーブルに書き込めるようになりました。 #6037 #6103 (Nikita Mikhaylov) #6164 (alexey-milovidov)
  • スタックトレースにプライベートシンボルを表示できるようにしました(ELF ファイルのシンボルテーブルをパースすることで実現)。デバッグ情報が存在する場合、スタックトレースにファイル名および行番号を追加しました。プログラム内に存在するシンボルをインデックス化することで、シンボル名のルックアップを高速化しました。イントロスペクション用の新しい SQL 関数 demangle および addressToLine を追加しました。一貫性のため、関数 symbolizeAddressaddressToSymbol にリネームしました。関数 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#6209dimarub2000
  • ストレージ設定を変更できるようになりました。構文:ALTER TABLE <table> MODIFY SETTING <setting> = <value>. #6366 #6669 #6685 (alesapin)
  • デタッチされたパーツを削除する機能をサポートしました。構文: ALTER TABLE <table_name> DROP DETACHED PART '<part_id>'#6158 (tavplubix)
  • テーブル制約。テーブル定義に制約を追加でき、挿入時に検査されます。 #5273 (Gleb Novikov) #6652 (alexey-milovidov)
  • カスケードマテリアライズドビューのサポート。 #6324 (Amos Bird)
  • デフォルトでクエリプロファイラを有効にし、すべてのクエリ実行スレッドを1秒ごとにサンプリングするようにしました。 #6283 (alexey-milovidov)
  • 入力フォーマット ORC を追加。 #6454 #6703 (akonyaev90)
  • 2 つの新しい関数 sigmoidtanh を追加しました(機械学習用途で有用です)。 #6254 (alexey-milovidov)
  • 関数 hasToken(haystack, token)hasTokenCaseInsensitive(haystack, token) は、指定した token が haystack に含まれているかどうかを判定します。token は、2 つの英数字以外の ASCII 文字(または haystack の境界)に挟まれた、最大長の部分文字列です。token は定数文字列である必要があります。tokenbf&#95;v1 インデックスの特殊化でサポートされています。 #6596, #6662 (Vasily Nemkov)
  • 新しい関数 neighbor(value, offset[, default_value])。データブロック内の列において、直前/直後の値にアクセスできるようにします。 #5925 (Alex Krash) 6685365ab8c5b74f9650492c88a012596eb1b0c6 341e2e4587a18065c2da1ca888c73389f48ce36c Alexey Milovidov
  • 認証済みユーザーのログイン名を返す関数 currentUser() を追加しました。MySQL との互換性のためにエイリアス user() を追加しました。 #6470 (Alex Krash)
  • #5885 で提案された新しい集約関数 quantilesExactInclusivequantilesExactExclusive#6477 (dimarub2000)
  • bitmapRange(bitmap, range_begin, range_end) 関数は、指定した範囲(range_end は含まない)の要素からなる新しい集合を返します。 #6314 (Zhichang Yu)
  • 関数 geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision) は、指定された領域をカバーする geohash ボックスを表す、precision 文字の文字列からなる配列を作成します。 #6127 (Vasily Nemkov)
  • Kafka テーブルに対する INSERT クエリのサポートを実装しました。 #6012 (Ivan)
  • Kafka エンジンに _partition および _timestamp 仮想カラムのサポートを追加しました。 #6400 (Ivan)
  • query_log、サーバーログ、プロセスリストから、正規表現ベースのルールを使って機密データを削除できるようにしました。#5710 (filimonov)

実験的機能

  • 入出力データ形式 Template。入力および出力に対してカスタムフォーマット文字列を指定できます。#4354 #6727 (tavplubix)
  • LIVE VIEW テーブルの実装。これはもともと #2898 で提案され、#3925 で準備され、その後 #5541 で更新されました。詳細な説明については #5541 を参照してください。#5541 (vzakaznikov) #6425 (Nikolai Kochetov) #6656 (vzakaznikov) なお、LIVE VIEW 機能は今後のバージョンで削除される可能性があります。

バグ修正

  • このリリースには、19.13 および 19.11 のすべてのバグ修正も含まれています。
  • テーブルにスキップインデックスがあり、垂直マージが行われた際にセグメンテーションフォルトが発生する問題を修正。 #6723 (alesapin)
  • 複雑なカラムデフォルトを持つカラムごとの TTL を修正しました。以前は、OPTIMIZE ... FINAL クエリによって TTL マージを強制した場合、期限切れの値がユーザー指定のカラムデフォルトではなく、型のデフォルト値で置き換えられていました。 #6796 (Anton Popov)
  • 通常のサーバー再起動時に発生する Kafka メッセージの重複問題を修正。 #6597 (Ivan)
  • Kafka メッセージの読み取り時に発生していた無限ループを修正しました。サブスクリプション時にはコンシューマの一時停止/再開を一切行わないようにしました。そうしないと、特定の状況ではコンシューマが無期限に一時停止されたままになる可能性があるためです。 #6354 (Ivan)
  • bitmapContains 関数で発生する Key expression contains comparison between inconvertible types という例外の問題を修正しました。 #6136 #6146 #6156 (dimarub2000)
  • optimize_skip_unused_shards 有効時にシャーディングキー未指定の場合に発生していたセグメンテーションフォルトを修正。 #6384 (Anton Popov)
  • メモリ破損を引き起こす可能性のあった mutation で使用されていた誤ったコードを修正しました。system.parts または system.parts_columns からの SELECTDROP TABLE の同時実行によって発生しうる、アドレス 0x14c0 の読み取り時のセグメンテーションフォルトを修正しました。mutation クエリの準備処理で発生していた競合状態を修正しました。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)
  • ミューテーション用の max_expanded_ast_elements 設定を確認します。TRUNCATE TABLE 実行後にミューテーションをクリアします。 #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 集約関数における誤った動作と、セグメンテーションフォルトを引き起こしうる問題を修正しました。 #6404 (Anton Popov)
  • getIdentifier 関数周辺の安全でないコードを修正。 #6401 #6409 (alexey-milovidov)
  • MySQL クライアントから ClickHouse に接続する際に使用される MySQL ワイヤプロトコルのバグを修正しました。原因は PacketPayloadWriteBuffer におけるヒープバッファオーバーフローでした。 #6212 (Yuriy Baranov)
  • bitmapSubsetInRange 関数のメモリリークを修正しました。 #6819 (Zhichang Yu)
  • 粒度変更後に実行されたミューテーションでまれに発生するバグを修正。 #6816 (alesapin)
  • デフォルトで全フィールドを含む protobuf メッセージを許可。 #6132 (Vitaly Baranov)
  • nullIf 関数において、第 2 引数として NULL を渡した場合に発生するバグを修正。 #6446 (Guillaume Tassery)
  • 文字列フィールドを含む複合キーキャッシュディクショナリにおいて、誤ったメモリの割り当て/解放処理によりメモリを無制限に消費してしまう(メモリリークのように見える)まれなバグを修正。バグは、文字列長が 8 から始まる 2 の累乗(8, 16, 32 など)の場合に再現する。#6447 (alesapin)
  • 短いシーケンスに対する Gorilla エンコーディングの不具合を修正し、Cannot write after end of buffer という例外が発生していた問題を解消しました。 #6398 #6444 (Vasily Nemkov)
  • join_use_nulls が有効な場合でも、JOIN で NULL 非許容型を使用できるようにしました。 #6705 (Artem Zuikov)
  • clickhouse-client のクエリ内での Poco::AbstractConfiguration による置換を無効化。 #6706 (alexey-milovidov)
  • REPLACE PARTITION でのデッドロックの発生を回避。 #6677 (alexey-milovidov)
  • arrayReduce を定数引数に対して使用すると、セグメンテーションフォルトが発生する可能性があります。 #6242 #6326 (alexey-milovidov)
  • DROP PARTITION の後にレプリカを復元した場合に一貫性のないパーツが現れることがある問題を修正。 #6522 #6523 (tavplubix)
  • JSONExtractRaw 関数がハングする問題を修正しました。 #6195 #6198 (alexey-milovidov)
  • adaptive granularity 使用時における skip indices の誤ったシリアライゼーションおよび集約に関するバグを修正。 #6594. #6748 (alesapin)
  • 二段階の集約を行う GROUP BY における WITH ROLLUP および WITH CUBE 修飾子を修正しました。 #6225 (Anton Popov)
  • アダプティブグラニュラリティ使用時のセカンダリインデックスのマークの書き込みに関するバグを修正。 #6126 (alesapin)
  • サーバー起動時の初期化順序を修正しました。StorageMergeTree::background_task_handlestartup() 内で初期化されるため、初期化が完了する前に MergeTreeBlockOutputStream::write() がそれを使用しようとする可能性があります。そのため、初期化済みかどうかを確認するようにしました。 #6080 (Ivan)
  • エラーで終了した前回の読み取り処理で使用したデータバッファをクリアするようにしました。 #6026 (Nikolay)
  • Replicated*MergeTree テーブルの新しいレプリカを作成する際に adaptive granularity を有効にする処理に関する不具合を修正。 #6394 #6452 (alesapin)
  • サーバー起動時に、初期化されていない ThreadStatus 構造体へのアクセス中に発生した例外を処理する際、libunwind 内でさらに例外が発生するとクラッシュする可能性があった問題を修正しました。 #6456 (Nikita Mikhaylov)
  • yandexConsistentHash 関数で発生していたクラッシュを修正。fuzz テストで検出されました。 #6304 #6305 (alexey-milovidov)
  • サーバーが過負荷になり、グローバルスレッドプールがほぼ上限に達した状態のときにクエリがハングする可能性があった問題を修正しました。分散クエリは各シャードへの接続ごとに 1 スレッドを割り当てるため、この問題はシャード数が多い(数百シャード規模の)クラスタで発生しやすくなります。たとえば、330 シャードのクラスタで 30 個の分散クエリを同時に処理している場合に、この問題が発生する可能性があります。この問題は 19.2 以降のすべてのバージョンに影響します。 #6301 (alexey-milovidov)
  • arrayEnumerateUniqRanked 関数のロジックを修正しました。 #6423 (alexey-milovidov)
  • シンボルテーブルのデコード時に発生するセグメンテーションフォルトを修正。 #6603 (Amos Bird)
  • LowCardinality(Nullable) を Null を含まない Nullable ではない列にキャストする際に発生していた不要な例外を修正しました(例:SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String) のようなクエリ)。 #6094 #6119 (Nikolai Kochetov)
  • system.settings テーブル内の description 列に対して行われていた余分な引用符付けを削除しました。 #6696 #6699 (alexey-milovidov)
  • Replicated テーブルの TRUNCATE で発生しうるデッドロックを回避。 #6695 (alexey-milovidov)
  • ソートキー順での読み出し処理を修正。 #6189 (Anton Popov)
  • enable_mixed_granularity_parts=1 のテーブルに対する ALTER TABLE ... UPDATE クエリを修正。 #6543 (alesapin)
  • #4405(19.4.0 以降)で報告されたバグを修正。MergeTree テーブル上の Distributed テーブルに対するクエリで、どのカラムも参照しないクエリ(SELECT 1)を実行した場合に発生する。#6236alesapin
  • 符号付き型から符号なし型への整数除算におけるオーバーフローを修正しました。動作は C や C++ 言語(整数型の昇格規則)とまったく同じであり、意外に感じられるかもしれません。なお、大きな符号付き整数を大きな符号なし整数で割る場合、あるいはその逆の場合には依然としてオーバーフローが発生し得ます(ただし、そのケースはあまり一般的ではありません)。この問題はすべてのサーバーバージョンに存在していました。 #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)
  • プロセッサとして実装されていない入力ストリームに対する FormatFactory の挙動を修正。 #6495 (Nikolai Kochetov)
  • 誤字を修正しました。 #6631 (Alex Ryndin)
  • エラーメッセージ内の誤植 (is → are)。 #6839 (Denis Zhuravlev)
  • 型にカンマが含まれている場合、文字列からカラムリストを解析する際に発生していたエラーを修正しました(この問題は FileURLHDFS ストレージで発生していました)#6217#6209 (dimarub2000)

セキュリティ修正

  • このリリースには、19.13 および 19.11 のすべてのセキュリティ関連バグ修正も含まれています。
  • SQL パーサーにおいて、細工されたクエリによりスタックオーバーフローが発生してサーバーがクラッシュする可能性を修正しました。Merge テーブルおよび Distributed テーブル、マテリアライズドビュー、サブクエリを含む行レベルセキュリティ条件におけるスタックオーバーフローの可能性も修正しました。 #6433 (alexey-milovidov)

改善

  • AND/OR のための三値論理に基づく正しい実装。 #6048 (Alexander Kazakov)
  • これで、TTL 期限切れの値や行は、TTL 情報を持たない古いパーツや古い TTL 情報を持つパーツから、ALTER ... MODIFY TTL クエリ実行後などに OPTIMIZE ... FINAL クエリを実行することで削除されるようになりました。TTL を伴うマージの割り当ておよび、すべてのマージにおける期限切れ値のフィルタリングを禁止/許可するための SYSTEM STOP/START TTL MERGES クエリが追加されました。 #6274 (Anton Popov)
  • クライアントが使用する ClickHouse の履歴ファイルの保存先を CLICKHOUSE_HISTORY_FILE 環境変数で変更可能に。 #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)
  • テーブル関数 valuesfileurlhdfs が 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)
  • Join オブジェクトを ExpressionAction から AnalyzedJoin に移動しました。ExpressionAnalyzerExpressionAction はもはや 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 を追加しました。これは、Distributed テーブルによってリモートサーバーへ送信するために選択されたファイルシステム上のファイルの総数を示します。この値はすべてのシャードの合計です。 #6600 (alexey-milovidov)
  • JOIN の準備ロジックの大部分を ExpressionAction/ExpressionAnalyzer から AnalyzedJoin に移動。 #6785 (Artem Zuikov)
  • TSan の警告「lock-order-inversion」を修正。 #6740 (Vasily Nemkov)
  • Linux のケーパビリティ不足に関する情報メッセージを改善しました。致命的なエラーを fatal レベルでログに記録するようにし、system.text_log で検索しやすくしました。 #6441 (alexey-milovidov)
  • GROUP BYORDER BY の実行中にメモリ使用量を制限するために一時データをディスクへダンプする機能を有効にした場合でも、空きディスク容量を検査していませんでした。この不具合は、新しい設定項目 min_free_disk_space を追加することで修正され、空きディスク容量がこの閾値を下回る場合にはクエリを停止して ErrorCodes::NOT_ENOUGH_SPACE をスローするようになりました。 #6678 (Weiqing Xu) #6691 (alexey-milovidov)
  • スレッドごとの再帰的な rwlock を削除しました。スレッドはクエリ間で再利用されるため、この仕組みには意味がありません。SELECT クエリはあるスレッドでロックを取得し、別のスレッドで取得したロックを保持したまま最初のスレッドの処理を抜ける可能性があります。その間に、最初のスレッドが DROP クエリで再利用されることがあります。これにより、誤って「Attempt to acquire exclusive lock recursively」というメッセージが出力されてしまいます。#6771alexey-milovidov
  • ExpressionAnalyzer.appendJoin() を分割し、ExpressionAnalyzer 内に MergeJoin 用の場所を用意。 #6524 (Artem Zuikov)
  • MySQL互換サーバーに mysql_native_password 認証プラグインを追加しました。 #6194 (Yuriy Baranov)
  • clock_gettime の呼び出し回数を削減し、Allocator におけるデバッグ版とリリース版間の ABI 互換性を修正(影響の小さい問題)。 #6197 (alexey-milovidov)
  • collectUsedColumnsExpressionAnalyzer から SyntaxAnalyzer に移動しました。SyntaxAnalyzer は、required_source_columns を自前で生成するようになりました。 #6416 (Artem Zuikov)
  • FROM 句に複数のテーブルが存在する場合(つまり JOIN を含むクエリ)に、サブセレクトおよびテーブル関数にエイリアスを必須とする設定 joined_subquery_requires_alias を追加。 #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.ounable to find library -lc などのエラーが発生する場合がありました。 #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_logos_thread_ids カラムを追加しました。 #6763 (alexey-milovidov)
  • sha256_password がデフォルトの認証プラグインとして使用されている場合に発生する PHP mysqlnd 拡張機能のバグに対する回避策(#6031 で説明されています)。#6113Yuriy Baranov
  • null 許容性が変更されたカラムに関する不要な処理を削除。 #6693 (Artem Zuikov)
  • queue_max_wait_ms のデフォルト値を 0 に変更しました。現在の値(5 秒)は妥当ではなく、この設定が有用となる状況はごくまれです。あいまいさを避けるために、replace_running_query_max_wait_mskafka_max_wait_msconnection_pool_max_wait_ms の各設定を追加しました。 #6692 (alexey-milovidov)
  • ExpressionAnalyzer から SelectQueryExpressionAnalyzer を抽出しました。ExpressionAnalyzer は非 SELECT クエリ用として残します。 #6499 (Artem Zuikov)
  • 重複していた入力および出力フォーマットを削除しました。 #6239 (Nikolai Kochetov)
  • 接続時にユーザーが poll_intervalidle_connection_timeout の設定を上書きできるようにしました。 #6230 (alexey-milovidov)
  • MergeTree に、新たなオプション ttl_only_drop_parts(デフォルトでは無効)が追加されました。これはパーツの部分的なプルーニングを防ぎ、パーツ内のすべての行が期限切れになったときに、そのパーツ全体が削除されるようにするためのものです。 #6191 (Sergi Vladykin)
  • set index 関数に対する型チェックを追加。関数が誤った型を受け取った場合は例外をスローする。これにより UBSan を用いたファジングテストの失敗が修正される。 #6511 (Nikita Vasilev)

パフォーマンスの改善

  • MergeTree テーブルで、ソートキーと先頭部分(プレフィックス)が一致する expressions を持つ場合に、ORDER BY expressions 句を用いたクエリを最適化しました。この最適化は optimize_read_in_order 設定で制御されます。 #6054 #6629 (Anton Popov)
  • パーツの読み込みおよび削除処理で複数スレッドを使用可能にしました。 #6372 #6074 #6438 (alexey-milovidov)
  • 集約関数状態を更新するバッチ方式の処理を実装しました。これによりパフォーマンス向上が見込めます。 #6435 (alexey-milovidov)
  • 関数 explogsigmoidtanhFastOps ライブラリを使用しました。FastOps は Michael Parakhin (Yandex CTO) による高速ベクトル数値計算ライブラリです。exp および log 関数の性能が 6 倍以上向上しました。Float32 引数に対する exp および log 関数は Float32 を返すようになりました(以前のバージョンでは常に Float64 を返していました)。現在は exp(nan)inf を返す場合があります。exp および log 関数の結果は、真の解に対する機械表現可能な最も近い数値ではない場合があります。 #6254 (alexey-milovidov) FastOps を動作させるために Danila Kutenin によるバリアントを使用しました。 #6317 (alexey-milovidov)
  • UInt8/16 に対する連続キー最適化を無効化しました。 #6298 #6701 (akuzm)
  • ParsedJson::Iterator で動的メモリアロケーションを排除することで、simdjson ライブラリのパフォーマンスを改善しました。 #6479 (Vitaly Baranov)
  • mmap() によるメモリアロケーション時にページを事前にフォルトインするようにしました。 #6667 (akuzm)
  • Decimal の比較におけるパフォーマンスバグを修正しました。 #6380 (Artem Zuikov)

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

  • Compiler(ランタイムでのテンプレートインスタンシエーション)を削除しました。すでにその方式の性能を上回っているためです。 #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)
  • 重複していた TABLE_IS_READ_ONLYconst 定義を削除。 #6566 (filimonov)
  • StringHashMap に関する PR #5417 の書式変更。 #6700 (akuzm)
  • ExpressionAnalyzer における結合作成用サブクエリを改善。 #6824 (Artem Zuikov)
  • PVS-Studio が検出した冗長な条件を削除。 #6775 (akuzm)
  • ReverseIndex 向けのハッシュテーブルインターフェイスを分離。 #6672 (akuzm)
  • 設定のリファクタリング。 #6689 (alesapin)
  • set インデックス関数にコメントを追加しました。 #6319 (Nikita Vasilev)
  • Linux のデバッグビルドで OOM スコアを引き上げる。 #6152 (akuzm)
  • HDFS HA が debug ビルドでも動作するようになりました。 #6650 (Weiqing Xu)
  • transform_query_for_external_database にテストを追加しました。#6388 (alexey-milovidov)
  • Kafka テーブルに対する複数のマテリアライズドビューのテストを追加。 #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)
  • キャッシュ辞書によるエラー処理を検証するインテグレーションテストを追加。 #6755 (Vitaly Baranov)
  • Mac OS では不要なため、ELF オブジェクトファイルの解析を無効化します。 #6578 (alexey-milovidov)
  • チェンジログ生成ツールの改善を試み。 #6327 (alexey-milovidov)
  • GCC に -Wshadow スイッチを追加。 #6325 (kreuzerkrieg)
  • mimalloc サポート用の不要なコードを削除しました。 #6715 (alexey-milovidov)
  • zlib-ng は x86 の機能を検出し、その情報をグローバル変数に保存します。これは deflateInit の呼び出し時に行われますが、この呼び出しは複数のスレッドから同時に行われる可能性があります。マルチスレッド環境での書き込み競合を避けるため、ライブラリの初期化時に実行するようにしました。 #6141 (akuzm)
  • #5192 で修正された JOIN で発生していたバグに対する回帰テスト。#6147Bakhtiyor 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 のパフォーマンステストを once タイプから loop タイプに変更しました。 #6536 (Nikolai Kochetov)
  • odbc-bridge.cppmain() を定義しているため、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)
  • 修正済み Gorilla および DoubleDelta コーデック用のパフォーマンステストを追加しました。 #6179 (Vasily Nemkov)
  • 統合テスト test_dictionaries を 4 つのテストに分割しました。 #6776 (Vitaly Baranov)
  • PipelineExecutor での PVS-Studio 警告を修正。 #6777 (Nikolai Kochetov)
  • ASan 使用時に library 辞書ソースを使用できるようにしました。 #6482 (alexey-milovidov)
  • PR のリストから変更履歴を生成するオプションを追加しました。 #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)
  • 互換性がないため、Query Profiler をサニタイザーと併用できないようにしました。 #6769 (alexey-milovidov)
  • タイマー失敗後に辞書を再読み込みするテストを追加。 #6114 (Vitaly Baranov)
  • PipelineExecutor::prepareProcessor の引数型の不整合を修正。 #6494 (Nikolai Kochetov)
  • 無効な URI に対するテストを追加しました。 #6493 (alexey-milovidov)
  • CAST 関数に対するチェックをさらに追加しました。これにより、ファジングテストで発生するセグメンテーションフォルトに関する情報をより多く取得できるようにしました。 #6346 (Nikolai Kochetov)
  • ローカルでイメージをビルドする docker/builder コンテナに gcc-9 サポートを追加しました。 #6333 (Gleb Novikov)
  • LowCardinality(String) を使用した主キーのテスト。 #5044 #6219 (dimarub2000)
  • スタックトレースの出力が遅い問題の影響を受けていたテストを修正しました。 #6315 (alexey-milovidov)
  • groupUniqArray で発生していたクラッシュを再現するテストケースを追加。修正は #6029 を参照。 #4402 #6129 (akuzm)
  • インデックスミューテーション関連のテストを修正しました。 #6645 (Nikita Vasilev)
  • パフォーマンステストでは、実行していないクエリのクエリログは読み取らないようにしました。 #6427 (akuzm)
  • マテリアライズドビューは、疑わしい LowCardinality 型に関する設定にかかわらず、任意の LowCardinality 型で作成できるようになりました。 #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」ビルドの問題を修正。 #6618 (alexey-milovidov)
  • その他のビルド関連の修正: #6186 (Amos Bird) #6486 #6348 (vxider) #6744 (Ivan) #6016 #6421 #6491 (proller)

後方互換性のない変更

  • 使用頻度の低いテーブル関数 catBoostPool およびストレージ CatBoostPool を削除しました。このテーブル関数を使用している場合は、[email protected] までメールをお送りください。なお、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)
  • マテリアライズドビューへデータをプッシュする際に発生していたリグレッションを修正しました。 #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)
  • sampleprewhere を使用して空の分散テーブルを読み取る場合に発生していた、ストリーム内のヘッダー不一致を修正しました。#6167 (Lixiang Qian) #6823 (Nikolai Kochetov)
  • タプルを含むサブクエリを IN 句で使用した場合にクラッシュする問題を修正しました。#6125 #6550 (tavplubix)
  • GLOBAL JOIN ON セクションで同じカラム名を使用した場合の問題を修正しました。#6181 (Artem Zuikov)
  • 対応していない型を Decimal にキャストしたときにクラッシュする問題を修正しました。代わりに例外をスローするようにしました。#6297 (Artem Zuikov)
  • extractAll() 関数でのクラッシュを修正しました。#6644 (Artem Zuikov)
  • MySQLODBCJDBC テーブル関数に対するクエリ変換が、複数の AND 式を含む SELECT WHERE クエリに対して正しく動作するようになりました。#6381 #6676 (dimarub2000)
  • MySQL 8 連携向けに、既存の宣言に対するチェックを追加しました。#6569 (Rafael David Tinoco)

セキュリティ修正

  • 伸長処理フェーズにおけるコーデックの 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)
  • メモリ破損を引き起こす可能性のある mutation 処理内の誤ったコードを修正しました。system.parts または system.parts_columns に対する DROP TABLESELECT が同時に行われた場合に発生し得る、アドレス 0x14c0 読み取り時のセグメンテーションフォールトを修正しました。mutation クエリ準備時の競合状態を修正しました。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)
  • 確率的勾配降下法に対する Adam オプティマイザが、stochasticLinearRegression() および stochasticLogisticRegression() 集約関数でデフォルトとして使用されるようになりました。ほとんどチューニングを行わなくても高い精度を示すためです。 #6000 (Quid37)
  • カスタム週番号を扱うための関数を追加しました。 #5212 (Andy Yang)
  • RENAME クエリがすべてのストレージで動作するようになりました。 #5953 (Ivan)
  • クライアントは、サーバー設定で指定されたログレベルに関係なく、send_logs_level を設定することで、任意のレベルのログをサーバーから受信できるようになりました。 #5964 (Nikita Mikhaylov)

後方互換性のない変更

  • 設定 input_format_defaults_for_omitted_fields がデフォルトで有効になりました。Distributed テーブルへの挿入では、この設定がクラスタ上で同一である必要があります(ローリングアップデートの前に設定する必要があります)。これにより、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 ファイルが、設定ファイルと対応するルート要素を持たない場合に例外をスローするようになりました。 #6123 (dimarub2000)

パフォーマンスの改善

  • count() を最適化。可能な場合、最も小さいサイズのカラムを使用するようになりました。 #6028 (Amos Bird)

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

  • パフォーマンステストでメモリ使用量を報告するようにしました。 #5899 (akuzm)
  • 外部 libcxx を使用したビルドを修正しました。 #6010 (Ivan)
  • rdkafka ライブラリを使用した共有ビルドを修正しました。 #6101 (Ivan)

ClickHouse リリース 19.11

ClickHouse リリース 19.11.13.74, 2019-11-01

バグ修正

  • マージ/変更されるパーツのうちの 1 つが空(0 行)の場合に、ALTER MODIFY COLUMN および縦方向のマージでまれに発生していたクラッシュを修正。#6780 (alesapin)
  • SIMDJSON を手動で更新。この変更により、標準エラー出力ファイルが誤った JSON 診断メッセージで埋め尽くされる可能性を解消。#7548 (Alexander Kazakov)
  • 変更処理における mrk ファイル拡張子に関するバグを修正。#7548 (alesapin)

ClickHouse リリース 19.11.12.69, 2019-10-02

バグ修正

  • 大規模テーブル上の複雑なキーに対するインデックス解析のパフォーマンス低下を修正。この修正は #6924 に対応。#7075 (alexey-milovidov)
  • Distributed エンジンを使用したテーブルでデータ送信中に、まれに発生していた 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 の空のトピックから SELECT する際にセグメンテーションフォルトを引き起こしていた論理エラーを修正。#6902 #6909 (Ivan)
  • パラメータ内に空配列を含む場合の関数 АrrayEnumerateUniqRanked を修正。#6928 (proller)

ClickHouse リリース 19.11.10.54, 2019-09-10

バグ修正

  • すべてのパーティションに対して一度にコミットできるよう、Kafka メッセージのオフセットを手動で保存するように変更。「1 コンシューマー - 複数パーティション」シナリオで重複が発生する可能性を修正。#6872 (Ivan)

ClickHouse リリース 19.11.9.52, 2019-09-6

  • キャッシュ辞書のエラー処理を改善。 #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)
  • メモリ破損を引き起こす可能性がある mutation における誤ったコードを修正。system.parts または system.parts_columns からの SELECTDROP TABLE の同時実行により発生し得た、アドレス 0x14c0 の読み取りに伴うセグメンテーションフォルトを修正。mutation クエリ準備時のレースコンディションを修正。Replicated テーブルの OPTIMIZE と ALTER などの同時変更操作により発生するデッドロックを修正。#6514 (alexey-milovidov)

ClickHouse リリース 19.11.7.40, 2019-08-14

バグ修正

  • このバージョンで Kafka 統合が修正されました。
  • 定数引数に対して arrayReduce を使用した際のセグメンテーションフォルトを修正しました。 #6326 (alexey-milovidov)
  • toFloat() の単調性を修正しました。 #6374 (dimarub2000)
  • optimize_skip_unused_shards が有効でシャーディングキーが欠落している場合に発生するセグメンテーションフォルトを修正しました。 #6384 (CurtizJ)
  • arrayEnumerateUniqRanked 関数のロジックを修正しました。 #6423 (alexey-milovidov)
  • MySQL ハンドラーから不要な詳細ログ出力を削除しました。 #6389 (alexey-milovidov)
  • 集約関数 topK および topKWeighted における誤った動作と、セグメンテーションフォルトが発生する可能性を修正しました。 #6404 (CurtizJ)
  • 後方互換性を維持するため、system.columns テーブルに仮想カラムを表示しないようにしました。 #6406 (alexey-milovidov)
  • 複合キーキャッシュ辞書における文字列フィールドのメモリ割り当てに関するバグを修正しました。 #6447 (alesapin)
  • Replicated*MergeTree テーブルの新しいレプリカを作成する際に、アダプティブ粒度の有効化処理に関するバグを修正しました。 #6452 (alesapin)
  • Kafka メッセージ読み取り時に無限ループが発生する問題を修正しました。 #6354 (abyss7)
  • 細工されたクエリにより、SQL パーサでスタックオーバーフローが発生してサーバーがクラッシュする可能性、および Merge テーブルと Distributed テーブルでスタックオーバーフローが発生する可能性を修正しました。 #6433 (alexey-milovidov)
  • 短いシーケンスでの Gorilla エンコードエラーを修正しました。 #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 に移動した場合に、MergeTree テーブル上の Distributed テーブルへのクエリでストリームヘッダーの非互換が発生するまれなバグを修正しました。 #6236 (alesapin)
  • 符号付き型から符号なし型への整数除算で生じるオーバーフローを修正しました。これにより #6214 が解決されます。 #6233 (alexey-milovidov)

後方互換性のない変更

  • Kafka は依然として動作しません。

ClickHouse リリース 19.11.4.24, 2019-08-01

バグ修正

  • アダプティブグラニュラリティ使用時に、セカンダリインデックスのマークを書き込む処理のバグを修正。 #6126 (alesapin)
  • 2 段階集約での GROUP BYWITH ROLLUP および WITH CUBE 修飾子を修正。 #6225 (Anton Popov)
  • JSONExtractRaw 関数で発生していたハングを修正し、#6195 #6198 を解決。 (alexey-milovidov)
  • ExternalLoader::reloadOutdated() でのセグメンテーションフォールトを修正。 #6082 (Vitaly Baranov)
  • サーバーがリッスンソケットをクローズしてもシャットダウンせず、残りのクエリの処理を続ける場合がある問題を修正。この結果、2 つの clickhouse-server プロセスが同時に動作してしまう可能性がありました。残りのクエリに対してサーバーが bad_function_call エラーを返すことがある問題も修正。 #6231 (alexey-milovidov)
  • ODBC、MySQL、ClickHouse および HTTP を介した外部辞書の初回ロード時における、更新フィールドに対する無意味かつ不正確な条件を修正。これにより #6069 #6083 を解決。 (alexey-milovidov)
  • LowCardinality(Nullable) から Null を含まない非 Nullable カラムへのキャスト時に、不要な例外が発生する問題を修正(例:SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String) のようなクエリ)。 #6094 #6119 (Nikolai Kochetov)
  • 極めてまれなケースで "uniq" 集約関数が非決定的な結果を返す問題を修正。このバグはすべての ClickHouse バージョンに存在していました。 #6058 (alexey-milovidov)
  • 関数 IPv6CIDRToRange で CIDR をわずかに大きく設定しすぎた場合に発生するセグメンテーションフォールトを修正。 #6068 (Guillaume Tassery)
  • サーバーが多数の異なるコンテキストから多くの例外をスローする場合に発生していた小さなメモリリークを修正。 #6144 (alexey-milovidov)
  • コンシューマーがサブスクリプション前に一時停止され、その後再開されない状況を修正。 #6075 (Ivan) このバージョンでは Kafka が正常に動作しないことに注意してください。
  • 以前の読み取り操作がエラーで終了した際に、Kafka データバッファをクリアする処理を追加。 #6026 (Nikolay) このバージョンでは Kafka が正常に動作しないことに注意してください。
  • StorageMergeTree::background_task_handlestartup() で初期化されるため、MergeTreeBlockOutputStream::write() が初期化前にこれを使用しようとする可能性があります。初期化されているかどうかを確認するように修正。 #6080 (Ivan)

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

  • 公式の rpm パッケージを追加。#5740 (proller) (alesapin)
  • packager スクリプトで .rpm.tgz パッケージをビルドできる機能を追加。#5769 (alesapin)
  • 「Arcadia」ビルドシステム向けの修正。#6223 (proller)

後方互換性のない変更

  • このバージョンでは Kafka は動作しません。

ClickHouse Release 19.11.3.11, 2019-07-18

新機能

  • プリペアドステートメントのサポートを追加。#5331 (Alexander) #5630 (alexey-milovidov)
  • DoubleDeltaGorilla 列コーデック。#5600 (Vasily Nemkov)
  • クエリ処理スレッドの "nice" 値を制御できる os_thread_priority 設定を追加。これは OS が動的スケジューリング優先度を調整するために使用します。動作には CAP_SYS_NICE ケーパビリティが必要です。#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 キャッシュを実装しました。専用スレッドがすべてのホストを解決し、一定間隔(設定値 dns_cache_update_period)で DNS キャッシュを更新します。ホストの IP アドレスが頻繁に変更される場合に役立ちます。 #5857 (Anton Popov)
  • 32 ビット未満の値を扱う列に影響する Delta コーデックのセグメンテーションフォールトを修正しました。このバグによりメモリがランダムに破壊されていました。 #5786 (alesapin)
  • 非物理カラムを含むブロックにおける TTL マージで発生していたセグメンテーションフォールトを修正。 #5819 (Anton Popov)
  • LowCardinality カラムを含むパーツのチェック時にまれに発生するバグを修正しました。以前は、LowCardinality カラムを含むパーツに対して checkDataPart が常に失敗していました。 #5832 (alesapin)
  • サーバーのスレッドプールがいっぱいのときに、接続がハングアップしたままにならないようにします。これは、接続タイムアウトが長い場合の remote テーブル関数からの接続や、レプリカのないシャードへの接続にとって重要です。この変更により #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 クエリは、リーダーレプリカ上で直接実行されるようになりました。 #5757 (alesapin)
  • ColumnConstColumnNullable の組み合わせに対する coalesce の修正と、それに関連する変更。 #5755 (Artem Zuikov)
  • ReadBufferFromKafkaConsumer を修正し、以前に停止していた場合でも commit() 後に新しいメッセージの読み取りを継続できるようにした #5852 (Ivan)
  • 右テーブルの Nullable キーで結合する際の FULL および RIGHT JOIN の結果を修正。 #5859 (Artem Zuikov)
  • 低優先度クエリが無限にスリープし続けてしまう問題に対する修正候補。 #5842 (alexey-milovidov)
  • SYSTEM FLUSH LOGS クエリの後に一部のクエリが query_log に記録されないことがあるレースコンディションの問題を修正。 #5456 #5685 (Anton Popov)
  • watch が既に削除された copier オブジェクトを使用しようとしていたことにより発生していた、ClusterCopier 内の heap-use-after-free ASan 警告を修正しました。 #5871 (Nikolai Kochetov)
  • いくつかの実装において IColumn::deserializeAndInsertFromArena から誤った StringRef ポインタが返されていた問題を修正しました。このバグはユニットテストのみに影響していました。 #5973 (Nikolai Kochetov)
  • ソースおよび中間の array join 列が同名の列を隠してしまうことを防止。 #5941 (Artem Zuikov)
  • MySQL スタイルの識別子のクオートを使用する 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 の条件が辞書に依存している場合にハングする問題を修正。 #6011 (Vitaly Baranov)

改善点

  • クラスタ設定で名前解決できないアドレスの指定を許可します。それらは利用不可として扱われ、接続のたびに再度の名前解決が試みられます。これは特に Kubernetes 環境で有用です。これにより #5714 #5924 が修正されました(alexey-milovidov)。
  • アイドル状態の TCP 接続をクローズします(デフォルトのタイムアウトは 1 時間)。これは、すべてのサーバー上に複数の分散テーブルを持つ大規模クラスターでは特に重要です。各サーバーが他のすべてのサーバーへの接続プールを保持している可能性があり、ピーク時のクエリ並列実行後に接続がアイドル状態のまま残ってしまうためです。これにより #5879 #5880 が修正されました(alexey-milovidov)。
  • topK 関数の品質を向上。SavingSpace セットの挙動を変更し、新しい要素の重みが既存の要素より大きい場合は末尾の要素を削除するようにしました。 #5833 #5850 (Guillaume Tassery)
  • ドメインを扱う URL 関数は、スキームのない不完全な URL に対しても動作するようになりました #5725 (alesapin)
  • チェックサムをsystem.parts_columnsテーブルに追加しました。 #5874 (Nikita Mikhaylov)
  • Enum8 または Enum16 のシノニムとして利用できる Enum データ型を追加しました。 #5886 (dimarub2000)
  • T64 コーデック向けのフルビット転置バリアント。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 エンジンビルダーにユーザーのパース処理を追加 #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)
  • アドレスサニタイザと連携してカスタムアロケータ(ArenaArenaWithFreeLists)をサポートし、「use-after-free」エラーのデバッグを容易にする。 #5728 (akuzm)
  • C++ の例外処理およびスタックトレース出力に LLVM libunwind 実装 を使用するように変更 #4828Nikita Lapkov
  • -Weverything による警告をさらに 2 件追加 #5923 (alexey-milovidov)
  • Memory Sanitizer 対応の ClickHouse ビルドを可能にしました。 #3949 (alexey-milovidov)
  • fuzz テストにおける 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 チャンネルへのリンクを Web サイトに追加 #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)
  • 新しい JIT 機能に関するパフォーマンステストを大規模データセットで実施(リクエスト元: #5263 #5887Guillaume Tassery))
  • ストレステストでステートフルテストを実行 12693e568722f11e19859742f56428455501fd2a (alesapin)

後方互換性のない変更

  • このバージョンでは Kafka は正常に動作しません。
  • 新しい MergeTree テーブルに対して、デフォルトで adaptive_index_granularity = 10MB を有効化しました。バージョン 19.11 以降で新しい MergeTree テーブルを作成した場合、19.6 より前のバージョンへのダウングレードは不可能になります。 #5628 (alesapin)
  • Yandex.Metrica で使用されていた、古い非公開の組み込みディクショナリを削除しました。関数 OSInSEInOSToRootSEToRootOSHierarchySEHierarchy は利用できなくなりました。これらの関数を使用している場合は、[email protected] までメールを送ってください。注記: 直前になって、当面のあいだこれらの関数を残すことを決定しました。 #5780 (alexey-milovidov)

ClickHouse リリース 19.10

ClickHouse リリース 19.10.1.5, 2019-07-12

新機能

  • 新しいカラムコーデック T64 を追加。これは (U)IntX/EnumX/Date(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)
  • 関数 firstSignificantSubdomaincutToFirstSignificantSubdomain で "public_suffix_list" を使用。gperf によって生成された完全ハッシュテーブルを、次のファイルから生成されたリストに対して使用します: https://publicsuffix.org/list/public_suffix_list.dat(例えば、現在ではドメイン ac.uk を重要でないドメインとして認識します)。 #5030 (Guillaume Tassery)
  • system テーブルで IPv6 データ型を採用し、system.processessystem.query_log のクライアント情報列を統一しました。 #5640 (alexey-milovidov)
  • MySQL 互換プロトコルでの接続にセッションを使用。#5476 #5646 (Yuriy Baranov)
  • より多くの ALTER クエリでの ON CLUSTER をサポート。 #5593 #5613 (sundyli)
  • clickhouse-local の設定ファイルで <logger> セクションをサポート。 #5540 (proller)
  • clickhouse-localremote テーブル関数を使ったクエリを実行可能にしました。 #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 Release 19.9

ClickHouse Release 19.9.3.31, 2019-07-05

バグ修正

  • 32 ビット未満のサイズの値を持つカラムに影響する Delta codec のセグメンテーションフォルトを修正。このバグにより、ランダムなメモリ破壊が発生していました。 #5786 (alesapin)
  • LowCardinality カラムを持つパーツのチェックにおけるまれなバグを修正。 #5832 (alesapin)
  • ブロック内の非物理カラムを含む TTL マージでのセグメンテーションフォルトを修正。 #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 に即座に現れない原因となっていたレースコンディションを修正。 #5685 (Anton Popov)
  • evalMLModel 関数で、これまで未対応だった定数引数のサポートを追加。 #5820 (alexey-milovidov)

ClickHouse Release 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 フォーマットが列数 0 で呼び出された場合に発生する可能性のある無限ループを修正 #5560 (Olga Khvostikova)
  • 線形モデルにおける UInt32 のオーバーフローのバグを修正。非 const の model 引数に対して ML モデルの eval を許可。 #5516 (Nikolai Kochetov)
  • 指定したインデックスが存在しない場合、ALTER TABLE ... DROP INDEX IF EXISTS ... は例外を発生させないようになりました #5524 (Gleb Novikov)
  • スカラーサブクエリ内の bitmapHasAny によるセグメンテーションフォルトを修正 #5528 (Zhichang Yu)
  • DNS キャッシュが破棄された場合でも、レプリケーション接続プールがホスト名の再解決を再試行しない不具合を修正。 #5534 (alesapin)
  • ReplicatedMergeTree での ALTER ... MODIFY TTL の動作を修正しました。 #5539 (Anton Popov)
  • MATERIALIZED 列を含む Distributed テーブルへの INSERT を修正 #5429 (Azat Khuzhin)
  • Join ストレージの TRUNCATE 時に発生する bad alloc エラーを修正 #5437 (TCeason)
  • 最近のバージョンの tzdata パッケージでは、一部のファイルがシンボリックリンクになっています。デフォルトのタイムゾーンを検出する現在の仕組みが動作しなくなり、一部のタイムゾーンに対して誤った名前を返すようになっています。少なくとも現時点では、TZ が指定されている場合、その内容をタイムゾーン名として強制的に使用するようにしました。 #5443 (Ivan)
  • sum 内の定数 needle の合計長が少なくとも 16KB になる場合に発生する、MultiVolnitsky searcher におけるごくまれな不具合を修正しました。アルゴリズムが以前の結果を見逃したり上書きしてしまい、その結果として multiSearchAny が誤った結果を返す可能性がありました。 #5588 (Danila Kutenin)
  • ExternalData リクエストの設定で ClickHouse の設定を使用できなかった問題を修正しました。また、現時点では名前が紛らわしいため、設定 date_time_input_formatlow_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 テーブルのハッシュ辞書における誤った element_countload_factor の値を修正。 #5440 (Azat Khuzhin)

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

  • Brotli HTTP 圧縮サポートなし(cmake 変数 ENABLE_BROTLI=OFF)でのビルドを修正。#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)
  • 辞書内の未使用の特殊化を削除。#5452 (Artem Zuikov)
  • 異なる種類のファイルに対するテーブルのフォーマットおよびパースのパフォーマンステストを改善。#5497 (Olga Khvostikova)
  • 並列テスト実行に関する修正。#5506 (proller)
  • Docker: clickhouse-test の設定を使用。#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)
  • AggregatingMergeTree 内で軽量な集約を行う列を定義できる新しいデータ型 SimpleAggregateFunction を追加しました。これは anyanyLastsumminmax のような単純な関数でのみ使用できます。 #4629 (Boris Granveaud)
  • 関数 ngramDistance で非定数引数をサポートしました #5198 (Danila Kutenin)
  • skewPopskewSampkurtPop および kurtSamp 関数を追加し、それぞれ母集団歪度、標本歪度、母集団尖度、標本尖度を計算できるようにしました。 #5200 (hcz)
  • MaterializeView ストレージでのリネーム操作をサポート。 #5209 (Guillaume Tassery)
  • MySQL クライアントを使用して ClickHouse に接続できるサーバーを追加しました。 #4715 (Yuriy Baranov)
  • toDecimal*OrZerotoDecimal*OrNull 関数を追加しました。 #5291 (Artem Zuikov)
  • 関数 quantilequantilesmedianquantileExactWeightedquantilesExactWeightedmedianExactWeighted に Decimal 型のサポートを追加。 #5304 (Artem Zuikov)
  • 無効な UTF-8 文字をすべて置換文字 � (U+FFFD) に置き換える toValidUTF8 関数を追加しました。 #5322 (Danila Kutenin)
  • format 関数を追加しました。引数で指定した文字列を用いて、定数パターン(簡略化された Python の format パターン)を整形します。 #5330 (Danila Kutenin)
  • MergeTree テーブルのデタッチされたパーツに関する情報を含む system.detached_parts テーブルを追加しました。 #5353 (akuzm)
  • needlehaystack の間の非対称な差分を計算する ngramSearch 関数を追加しました。 #5418#5422 (Danila Kutenin)
  • 集約関数インターフェイスを使用した基本的な機械学習手法(確率的線形回帰およびロジスティック回帰)の実装。モデルの重みを更新するためのさまざまな戦略(単純な勾配降下法、モメンタム法、Nesterov 法)をサポートします。任意のサイズのミニバッチにも対応しています。 #4943 (Quid37)
  • geohashEncode および geohashDecode 関数の実装。#5003 (Vasily Nemkov)
  • 集約関数 timeSeriesGroupSum を追加しました。これは、サンプリング時刻(タイムスタンプ)が揃っていない異なる時系列を集約できます。2 つのサンプルタイムスタンプ間を線形補間し、その後に時系列を合算します。さらに、時系列のレート(変化率)を計算し、そのレートを合算する集約関数 timeSeriesGroupRateSum を追加しました。 #4542 (Yangkuan Liu)
  • CIDR を使用してサブネット内の IP アドレスの下限値および上限値を計算する関数 IPv4CIDRtoIPv4RangeIPv6CIDRtoIPv6Range を追加しました。 #5095 (Guillaume Tassery)
  • HTTP でクエリを送信する際に send_progress_in_http_headers 設定が有効な場合に、X-ClickHouse-Summary ヘッダーを追加します。通常の X-ClickHouse-Progress と同様の情報に加え、そのクエリで挿入された行数やバイト数などの追加情報を返します。 #5116 (Guillaume Tassery)

改善点

  • MergeTree ファミリーのテーブルに、パーティションキーの危険な指定を防止する max_parts_in_total 設定(デフォルト: 100 000)を追加しました #5166。 #5171 (alexey-milovidov)
  • clickhouse-obfuscator: 初期シード値とカラム名を組み合わせて、カラムの位置ではなく各カラム固有のシード値を導出します。これは複数の関連テーブルからなるデータセットを変換することを想定しており、変換後もテーブル同士を JOIN 可能な状態に保つためのものです。 #5178 (alexey-milovidov)
  • 関数 JSONExtractRawJSONExtractKeyAndValues を追加しました。関数 jsonExtract&lt;type&gt;JSONExtract&lt;type&gt; にリネームしました。問題が発生した場合、これらの関数は NULL ではなく対応する値を返します。関数 JSONExtract を変更し、最後の引数から戻り値の型を取得し、Nullable を注入しないようにしました。AVX2 命令が利用できない場合は RapidJSON を用いるフォールバックを実装しました。Simdjson ライブラリを新しいバージョンに更新しました。#5235Vitaly Baranov
  • if および multiIf 関数は、条件式の Nullable には依存せず、SQL との互換性のために分岐に依存するようになりました。 #5238 (Jian Wu)
  • In 述語は、Equal 関数と同様に、Null 入力に対して Null 結果を返すようになりました。 #5152 (Jian Wu)
  • Kafka からの読み込みにおいて、(flush_interval / poll_timeout) 行ごとに時間制限を確認するようにしました。これにより、Kafka コンシューマからの読み取りをより頻繁に区切り、トップレベルのストリームの時間制限を確認できるようになります #5249 (Ivan)
  • 同梱の SASL と rdkafka をリンクしました。これにより 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 を追加しました。 この設定では、各メッセージバッチの処理が終わるたびにコミットするか、ストレージにブロック全体を書き込んだ後にコミットするかのモードを指定できます。これは、一部のメッセージを失う可能性と、極端な状況で同じメッセージを重複して読み取る可能性とのトレードオフです。 #5308 (Ivan)
  • windowFunnel が他の符号なし整数型にも対応しました。 #5320 (sundyli)
  • Merge エンジンで仮想カラム _table をシャドー(上書き)できるようにしました。 #5325 (Ivan)
  • sequenceMatch 集約関数が他の符号なし整数型にも対応するようにする #5339 (sundyli)
  • チェックサムの不一致がハードウェア障害に起因している可能性が高い場合に、より分かりやすいエラーメッセージが表示されるように改善しました。 #5355 (alexey-milovidov)
  • 基盤となるテーブルが StorageMerge 用のサンプリングをサポートしていることを確認する #5366 (Ivan)
  • 外部辞書での使用後に MySQL 接続をクローズするよう変更しました。これは issue #893 に関連しています。 #5395 (Clément Rodriguez)
  • MySQL Wire プロトコルの改善。フォーマット名を MySQLWire に変更。RSA_free を呼び出すために RAII を使用。コンテキストを作成できない場合は SSL を無効化するよう変更。 #5419 (Yuriy Baranov)
  • clickhouse-client: 履歴ファイルにアクセスできない状態(読み取り専用、ディスク容量不足、ファイルがディレクトリである場合など)でも実行できるようにしました。 #5431 (proller)
  • Distributed テーブルへの非同期 INSERT でクエリ設定が反映されるようになりました。 #4936 (TCeason)
  • 関数 leastSqrsimpleLinearRegressionLinearRegressionlinearRegressionLogisticRegressionlogisticRegression に名前変更しました。 #5391 (Nikolai Kochetov)

パフォーマンスの改善

  • 非レプリケートの MergeTree テーブルのパーツ処理を ALTER MODIFY クエリで並列化。#4639 (Ivan Kush)
  • 正規表現による抽出処理を最適化。#5193 #5191 (Danila Kutenin)
  • JOIN ON 句でのみ使用されている場合は、右側の結合キー列を結合結果に追加しないように変更。#5260 (Artem Zuikov)
  • 最初の空レスポンス後に Kafka バッファをフリーズするように変更。これにより、一部の行パースストリームで空結果に対して ReadBuffer::next() が複数回呼ばれることを防止。#5283 (Ivan)
  • 複数引数に対する concat 関数を最適化。#5357 (Danila Kutenin)
  • クエリ最適化。カンマ結合/クロス結合を内部結合に書き換える際に、IN 句のプッシュダウンを許可。#5396 (Artem Zuikov)
  • LZ4 実装をリファレンス実装と同等のものに更新し、伸長処理を高速化。#5070 (Danila Kutenin)
  • MSD radix sort(kxsort ベース)と部分ソートを実装。#5129 (Evgenii Pravda)

バグ修正

  • JOIN における必須列のプッシュダウン処理を修正。#5192 (Winter Zhang)
  • ClickHouse を systemd で実行している場合に、sudo service clickhouse-server forcerestart コマンドが期待どおりに動作しなかったバグを修正。#5204 (proller)
  • DataPartsExchange における HTTP エラーコードを修正(ポート 9009 のインターサーバー HTTP サーバーが、エラー時でも常にコード 200 を返していた問題)。#5216 (proller)
  • StringMAX_SMALL_STRING_SIZE より長い場合の SimpleAggregateFunction を修正。#5311 (Azat Khuzhin)
  • IN における Decimal から Nullable(Decimal) への変換エラーを修正。その他の Decimal 間の変換(スケールが異なる場合を含む)をサポート。#5350 (Artem Zuikov)
  • simdjson ライブラリでの FPU レジスタ破壊が原因で、uniqHLLuniqCombined 集約関数、および log などの数学関数が誤った計算結果となっていた問題を修正。#5354 (alexey-milovidov)
  • JSON 関数における定数/非定数が混在するケースの処理を修正。#5435 (Vitaly Baranov)
  • retention 関数を修正。現在は、データの 1 行において満たされるすべての条件がデータ状態に追加されるようになっている。#5119 (小路)
  • quantileExact の Decimals 使用時の結果型を修正。#5304 (Artem Zuikov)

ドキュメント

  • CollapsingMergeTree のドキュメントを中国語に翻訳しました。 #5168 (张风啸)
  • テーブルエンジンに関する一部のドキュメントを中国語に翻訳しました。 #5134 #5328 (never lee)

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

  • use-after-free が発生している可能性を示すいくつかのサニタイザーのレポートを修正しました。#5139 #5143 #5393 (Ivan)
  • 利便性のため、パフォーマンステストを個別ディレクトリから移動しました。 #5158 (alexey-milovidov)
  • 誤ったパフォーマンステストを修正しました。 #5255 (alesapin)
  • ハードウェアの問題をデバッグするため、ビット反転によるチェックサムエラーを計算するツールを追加しました。 #5334 (alexey-milovidov)
  • runner スクリプトをより使いやすくしました。 #5340#5360 (filimonov)
  • パフォーマンステストの書き方に関する簡単な手順を追加しました。 #5408 (alesapin)
  • パフォーマンステストにおいて、create / fill / 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

新機能

  • ビットマップ関連の関数 bitmapHasAny および bitmapHasAll を追加。配列用の関数 hasAny および hasAll と同等の機能を提供。 #5279 (Sergi Vladykin)

バグ修正

  • minmax INDEX に Null 値がある場合に発生するセグメンテーションフォールトを修正。#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)
  • ビットマップ関数が誤った結果を返す問題を修正。#5359 (Andy Yang)
  • ハッシュディクショナリの element_count を修正(重複を含めないように変更)。#5440 (Azat Khuzhin)
  • タイムゾーン名として環境変数 TZ の内容を使用するように変更。一部のケースでデフォルトタイムゾーンを正しく検出できるようにした。#5443 (Ivan)
  • dictGetT 関数内で整数の変換を試みないように変更(正しく動作しないため)。代わりに例外をスローするようにした。#5446 (Artem Zuikov)
  • ExternalData HTTP リクエスト内の設定を修正。#5455 (Danila Kutenin)
  • パーツがファイルシステムからのみ削除され、ZooKeeper からは削除されない不具合を修正。#5520 (alesapin)
  • bitmapHasAny 関数でのセグメンテーションフォールトを修正。#5528 (Zhichang Yu)
  • レプリケーション接続プールが、DNS キャッシュが破棄された後でもホストの解決を再試行しないエラーを修正。#5534 (alesapin)
  • DROP INDEX IF EXISTS クエリを修正。これにより、指定されたインデックスが存在しない場合でも、ALTER TABLE ... DROP INDEX IF EXISTS ... クエリが例外をスローしないようになった。#5524 (Gleb Novikov)
  • UNION ALL のスーパータイプのカラムを修正。結果カラムでデータおよびカラム型が不整合となるケースがあった。#5503 (Artem Zuikov)
  • DDL クエリ処理中に ZNONODE をスキップするように修正。以前は、別のノードがタスクキュー内の znode を削除した場合、そのタスクをまだ処理していないが、すでに子ノード一覧を取得していたノードが DDLWorker スレッドを終了させていた。#5489 (Azat Khuzhin)
  • MATERIALIZED カラムを持つ Distributed() テーブルへの INSERT を修正。#5429 (Azat Khuzhin)

ClickHouse Release 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)

バグ修正

  • merge 中の uncompressed_cache + JOIN によるクラッシュ (#5197) #5133 (Danila Kutenin)
  • system テーブルに対する clickhouse-client クエリでセグメンテーションフォルトが発生する問題。#5066 #5127 (Ivan)
  • KafkaEngine 経由の高負荷時に発生するデータ損失 (#4736) #5080 (Ivan)
  • 少なくとも 2 つ以上の system.columns、system.tables、system.parts、system.parts_tables、または Merge ファミリーのテーブルからの SELECT を含む UNION ALL クエリを実行している際に、関連テーブルのカラムに対する ALTER を同時に実行すると、ごくまれに発生しうるデータレース状態を修正しました。#5189 (alexey-milovidov)

パフォーマンスの改善

ドキュメント

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

ClickHouse リリース 19.6

ClickHouse リリース 19.6.3.18, 2019-06-13

バグ修正

  • テーブル関数 mysqlodbc およびそれに対応するテーブルエンジンに対するクエリで、IN 条件のプッシュダウンを修正しました。これにより #3540 と #2384 が解決されます。 #5313 (alexey-milovidov)
  • Zookeeper におけるデッドロックを修正しました。 #5297 (github1youlc)
  • CSV で引用符付きの 10 進数を許可しました。 #5284 (Artem Zuikov
  • float の Inf/NaN から Decimals への変換を禁止しました(例外をスローします)。 #5282 (Artem Zuikov)
  • rename クエリでのデータレースを修正しました。 #5247 (Winter Zhang)
  • 一時的に LFAlloc を無効化しました。LFAlloc を使用すると、UncompressedCache の割り当て時に多数の MAP_FAILED が発生し、その結果、高負荷のサーバー上でクエリがクラッシュする可能性があります。 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)

実験的機能

  • MergeTree* テーブルファミリー向けに、index_granularity_bytes(アダプティブインデックス粒度)設定を追加しました。 #4826 (alesapin)

改善点

  • 関数 substringUTF8 に対して、非定数および負の size / length 引数のサポートを追加。 #4989 (alexey-milovidov)
  • LEFT JOIN における右テーブル、RIGHT JOIN における左テーブル、FULL JOIN における両テーブルへのプッシュダウンを無効化。これにより一部のケースで発生していた誤った JOIN 結果を修正。 #4846 (Ivan)
  • clickhouse-copier: --task-file オプションからタスク設定を自動的にアップロードする機能を追加。 #4876 (proller)
  • storage factory および table functions factory 向けのタイポハンドラーを追加。 #4891 (Danila Kutenin)
  • サブクエリを使わない複数の JOIN に対して、アスタリスクおよび修飾アスタリスクをサポート。 #4898 (Artem Zuikov)
  • 存在しないカラムに対するエラーメッセージをよりユーザーフレンドリーに改善。 #4915 (Artem Zuikov)

パフォーマンスの改善

後方互換性のない変更

  • 一貫性のため、HTTP ヘッダー Query-Id の名前を X-ClickHouse-Query-Id に変更。 #4972 (Mikhail)

バグ修正

  • clickhouse-copier 内で発生しうるヌルポインタ参照を修正。 #4900 (proller)
  • JOIN + ARRAY JOIN を含むクエリでのエラーを修正。 #4938 (Artem Zuikov)
  • engine=Dictionary のデータベースを介して、ある辞書が別の辞書に依存している場合に、サーバー起動時にハングする問題を修正。 #4962 (Vitaly Baranov)
  • distributed_product_mode = local を部分的に修正。テーブルエイリアスを用いることで、WHERE/HAVING/ORDER BY/... でローカルテーブルのカラムを使用できるようにした。テーブルにエイリアスがない場合は例外をスローする。現時点ではテーブルエイリアスなしでカラムへアクセスすることはまだできない。 #4986 (Artem Zuikov)
  • JOIN を伴う SELECT DISTINCT で結果が誤る可能性がある問題を修正。 #5001 (Artem Zuikov)
  • 少なくとも 2 つの SELECT が system.columns、system.tables、system.parts、system.parts_tables、あるいは Merge 系のテーブルからの SELECT を含む UNION ALL クエリを実行中に、関連テーブルのカラムに対する ALTER を同時に実行した場合に、ごくまれに発生しうるデータレース状態を修正。 #5189 (alexey-milovidov)

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

  • 異なるホスト上で clickhouse-server を実行した際のテスト失敗を修正しました #4713 (Vasily Nemkov)
  • clickhouse-test: 非TTY環境でカラー制御シーケンスを無効化しました #4937 (alesapin)
  • clickhouse-test: 任意のテストデータベースを使用できるようにし、可能な箇所では test. 修飾子を削除しました #5008 (proller)
  • ubsan エラーを修正しました #5037 (Vitaly Baranov)
  • Yandex LFAlloc を ClickHouse に追加し、MarkCache と UncompressedCache のデータを異なる方法で確保することで、セグメンテーションフォルトをより確実に検出できるようにしました #4995 (Danila Kutenin)
  • バックポートおよびチェンジログ作成を支援する Python ユーティリティを追加しました #4949 (Ivan)

ClickHouse リリース 19.5

ClickHouse リリース 19.5.4.22, 2019-05-13

バグ修正

  • bitmap* 関数で発生しうるクラッシュを修正しました。 #5220 #5228 (Andy Yang)
  • 次の条件で発生しうる、非常にまれなデータレースを修正しました。system.columnssystem.tablessystem.partssystem.parts_tables または Merge ファミリのテーブルからの少なくとも 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 番目の条件の両方を満たす場合、データ状態には最初に満たされた条件だけが追加されていました。現在は、その行で満たされるすべての条件がデータ状態に追加されます。 #5119 (小路)

ClickHouse リリース 19.5.3.8, 2019-04-18

バグ修正

ClickHouse リリース 19.5.2.6, 2019-04-15

新機能

  • Hyperscan による複数の正規表現マッチングが追加されました(関数 multiMatchAnymultiMatchAnyIndexmultiFuzzyMatchAnymultiFuzzyMatchAnyIndex)。 #4780, #4841 (Danila Kutenin)
  • 関数 multiSearchFirstPosition が追加されました。 #4780 (Danila Kutenin)
  • テーブルに対して、行ごとの事前定義済み式フィルタを実装しました。 #4792 (Ivan)
  • Bloom filter に基づく新しい種類のデータスキップインデックスを追加しました(equalinlike 関数で使用可能)。 #4499 (Nikita Vasilev)
  • 直近の既知の値に対して JOIN するクエリを実行できる ASOF JOIN を追加しました。 #4774 #4867 #4863 #4875 (Martijn Bakker, Artem Zuikov)
  • 複数の COMMA JOINCROSS JOIN に書き換えるようにしました。さらに、可能であれば INNER JOIN に書き換えます。 #4661 (Artem Zuikov)

改善

  • topKtopKWeighted でカスタム 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)
  • 通常のカラム、DEFAULTMATERIALIZEDALIAS カラムを単一のリストとして保持するようにしました(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 関数に誤った引数を指定すると、セグメンテーションフォルトが発生する可能性があります。 #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 に対応)。#4718proller
  • Distributed テーブルにおける histogram 関数の挙動を修正。 #4741 (olegkv)
  • destroy of a locked mutex に関する TSan レポートを修正しました。 #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 で発生するセグメンテーションフォールトを修正。 #4794 (Winter Zhang)
  • Kafka から Protobuf メッセージを読み込んだ後に余分な行が追加される不具合を修正。 #4808 (Vitaly Baranov)
  • JOIN が not-nullable 列と nullable 列を扱う際にクラッシュする問題を修正しました。ANY JOINjoin_use_nulls における右側キーの NULL の扱いを修正しました。#4815 (Artem Zuikov)
  • clickhouse-copier におけるセグメンテーションフォルトを修正。 #4835 (proller)
  • テーブルが並行してリネームまたは変更された場合の、system.tables からの SELECT における競合状態を修正しました。 #4836 (alexey-milovidov)
  • 既に無効になっているデータパートを取得する際に発生していたデータレースを修正しました。 #4839 (alexey-milovidov)
  • MergeTree ファミリーのテーブルに対する RENAME 実行中にまれに発生しうるデータレースを修正しました。 #4844 (alexey-milovidov)
  • arrayIntersect 関数で発生していたセグメンテーションフォルトを修正しました。定数引数と通常の引数が混在した状態で関数が呼び出されると、セグメンテーションフォルトが発生する場合がありました。 #4847 (Lixiang Qian)
  • Array(LowCardinality) 列において、列に空配列が長く連続して含まれているというまれなケースでの読み取り処理を修正しました。 #4850 (Nikolai Kochetov)
  • NULL 許容と非 NULL 許容のカラムを結合条件に含む 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 で誤った結果が返される問題を修正。 #4723 (Artem Zuikov)
  • GLOBAL JOIN におけるアスタリスク指定時の重複を修正。 #4705 (Artem Zuikov)
  • カラム型が指定されていない場合の ALTER MODIFY における CODEC カラムのパラメータ推論を修正。 #4883 (alesapin)
  • URL にフラグメントが含まれ、クエリが存在しない場合にも、関数 cutQueryStringAndFragment()queryStringAndFragment() が正しく動作するようになりました。 #4894 (Vitaly Baranov)
  • min_bytes_to_use_direct_io を 0 より大きい値に設定した際に、スレッドがカラムファイル内で後方にシークする必要が生じた場合に発生するまれなバグを修正。 #4897 (alesapin)
  • LowCardinality 引数を持つ集約関数での誤った引数型を修正しました(issue #4919 を修正)。#4922Nikolai Kochetov
  • GLOBAL JOIN における不正な名前修飾を修正。 #4969 (Artem Zuikov)
  • 1970 年に対する関数 toISOWeek の結果を修正。 #4988 (alexey-milovidov)
  • ReplicatedMergeTree* テーブルファミリーに対して ON CLUSTER で実行された場合に、DROPTRUNCATEOPTIMIZE クエリが重複して実行される不具合を修正。 #4991 (alesapin)

後方互換性のない変更

  • 設定 insert_sample_with_metadatainput_format_defaults_for_omitted_fields に名称変更しました。 #4771 (Artem Zuikov)
  • 設定 max_partitions_per_insert_block を追加しました(デフォルト値は 100)。挿入されるブロックにこれより多くのパーティションが含まれている場合、例外がスローされます。上限を撤廃したい場合は 0 に設定してください(非推奨)。 #4845 (alexey-milovidov)
  • マルチサーチ関数の名称を変更しました(multiPosition から multiSearchAllPositionsmultiSearch から multiSearchAnyfirstMatch から multiSearchFirstIndex)。 #4780 (Danila Kutenin)

パフォーマンスの改善

  • インライン化により Volnitsky サーチャーを最適化し、多数の needle または多数の類似 bigram を含むクエリに対して、検索性能を約 5〜10% 向上させました。 #4862 (Danila Kutenin)
  • すべての読み取りデータがキャッシュ内に含まれている場合に発生していた、設定 use_uncompressed_cache が 0 より大きいときのパフォーマンス問題を修正しました。 #4913 (alesapin)

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

  • デバッグビルドのハードニング: より細かいメモリマップと ASLR を導入し、mark cache と index にメモリ保護を追加しました。これにより、ASan や MSan では検出できない場合でも、より多くのメモリ破壊バグを発見できるようになります。 #4632 (alexey-milovidov)
  • CMake 変数 ENABLE_PROTOBUFENABLE_PARQUETENABLE_BROTLI のサポートを追加し、上記の機能を有効/無効にできるようにしました(librdkafka や mysql などで行えることと同様)。 #4669 (Silviu Caragea)
  • テスト実行後に一部のクエリがハングした場合に、プロセスリストとすべてのスレッドのスタックトレースを出力できる機能を追加しました。 #4675 (alesapin)
  • clickhouse-testConnection loss エラー発生時にリトライを行うようにしました。 #4682 (alesapin)
  • packager スクリプトに、Vagrant を用いた FreeBSD ビルドおよび Thread Sanitizer を用いたビルドを追加しました。 #4712 #4748 (alesapin)
  • インストール時に、'default' ユーザーのパスワード入力を求めるようにしました。 #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 は mmapmunmap はフックしますが mremap はフックせず、その結果として誤検知が発生していました。stateful テストでの TSan レポートを修正しました。 #4859 (alexey-milovidov)
  • HTTP インターフェイス経由で format schema を使用するテストを追加しました。 #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 関数への誤った引数指定により、セグメンテーションフォルトが発生する可能性があります。 #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 を修正)。#4718proller
  • Distributed テーブルにおける histogram 関数の動作を修正。 #4741 (olegkv)
  • TSan レポート destroy of a locked mutex を修正しました。 #4742 (alexey-milovidov)
  • システムログの利用時の競合状態によりシャットダウン時に発生していた 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 で発生するセグメンテーションフォールトを修正。 #4794 (Winter Zhang)
  • Kafka から protobuf メッセージを取り込んだ後に余計な行が追加されてしまうバグを修正。#4808 (Vitaly Baranov)
  • clickhouse-copier のセグメンテーションフォルトを修正。#4835 (proller)
  • system.tables からの SELECT において、テーブルが並行してリネームまたは ALTER 文で変更された場合に発生する競合状態を修正しました。 #4836 (alexey-milovidov)
  • すでに無効になっているデータパートをフェッチする際に発生していたデータレースを修正しました。 #4839 (alexey-milovidov)
  • MergeTree ファミリーのテーブルに対する 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 を修正)。#4592Alex Zatelepin
  • CODEC カラムに対する ALTER MODIFY において、カラム型が指定されていない場合のパラメータ推論を修正しました。 #4883 (alesapin)
  • URL にフラグメントを含み、クエリが存在しない場合でも、関数 cutQueryStringAndFragment()queryStringAndFragment() が正しく動作するようになりました。 #4894 (Vitaly Baranov)
  • min_bytes_to_use_direct_io が 0 より大きい値に設定されている場合に、スレッドがカラムファイル内で後方にシークしなければならないときにまれに発生していたバグを修正。 #4897 (alesapin)
  • LowCardinality 引数を持つ集約関数に対する不正な引数型を修正(issue #4919 を修正)。 #4922Nikolai Kochetov
  • 関数 toISOWeek における 1970 年の結果を修正しました。 #4988 (alexey-milovidov)
  • ReplicatedMergeTree* テーブルファミリーに対して ON CLUSTER で実行した際に発生していた、DROPTRUNCATEOPTIMIZE クエリの重複実行を修正しました。 #4991 (alesapin)

改善

  • 通常のカラムと DEFAULTMATERIALIZEDALIAS カラムを、1 つのリストとしてまとめて保持するようにしました(issue #2867 の修正)。#4707Alex Zatelepin

ClickHouse Release 19.4.3.11, 2019-04-02

不具合修正

  • FULL/RIGHT JOIN において、nullable カラムと non-nullable カラムを結合する場合にクラッシュする問題を修正しました。#4855Artem Zuikov
  • clickhouse-copier におけるセグメンテーションフォルトを修正しました。#4835proller

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

  • 任意のユーザーから clickhouse-server イメージを起動できるようにしました。#4753Mikhail f. Shiryaev

ClickHouse Release 19.4.2.7, 2019-03-30

不具合修正

  • カラムに空配列の長いシーケンスが含まれているというまれなケースにおいて、Array(LowCardinality) カラムからの読み取りが失敗する問題を修正しました。#4850Nikolai Kochetov

ClickHouse Release 19.4.1.3, 2019-03-19

不具合修正

  • LIMIT BYLIMIT の両方を含むリモートクエリを修正しました。以前は、リモートクエリで LIMIT BYLIMIT を使用すると、LIMIT BY の前に LIMIT が適用されることがあり、その結果として過剰に絞り込まれた結果が返されていました。#4708Constantin S. Pan

ClickHouse Release 19.4.0.49, 2019-03-09

新機能

  • Protobuf フォーマット(入力および出力、ネストしたデータ構造)を完全にサポート。 #4174 #4493 (Vitaly Baranov)
  • Roaring Bitmap を用いたビットマップ関数を追加。 #4207 (Andy Yang) #4568 (Vitaly Baranov)
  • Parquet フォーマットのサポートを追加。 #4448 (proller)
  • あいまい文字列比較のために N グラム距離を追加。R 言語における q グラム指標に類似。 #4466 (Danila Kutenin)
  • 専用の集約パターンおよび保持パターンを組み合わせて、Graphite ロールアップのルールを統合。 #4426 (Mikhail f. Shiryaev)
  • リソース使用量を制限するために max_execution_speedmax_execution_speed_bytes を追加。min_execution_speed を補完する設定として min_execution_speed_bytes を追加。 #4430 (Winter Zhang)
  • 関数 flatten を実装。 #4555 #4409 (alexey-milovidov, kzon)
  • 関数 arrayEnumerateDenseRankedarrayEnumerateUniqRanked を追加(arrayEnumerateUniq に似ているが、多次元配列の内部を参照するための配列の深さを細かく調整可能)。 #4475 (proller) #4601 (alexey-milovidov)
  • 制限付きで複数の JOIN をサポート:アスタリスクの使用禁止、ON/WHERE/GROUP BY/… での複雑なエイリアス禁止。 #4462 (Artem Zuikov)

バグ修正

  • このリリースには、19.3 および 19.1 でのすべてのバグ修正も含まれています。
  • data skipping index におけるバグを修正: INSERT 後の granule の順序が誤っていました。 #4407 (Nikita Vasilev)
  • Nullable および LowCardinality カラムに対する set インデックスを修正しました。以前は、Nullable または LowCardinality カラムに対する set インデックスを用いて SELECT クエリを実行すると、Data type must be deserialized with multiple streams というエラーが発生していました。 #4594 (Nikolai Kochetov)
  • executable 辞書のフル更新時に update_time が正しく設定されるように修正。 #4551 (Tema Novikov)
  • バージョン 19.3 で壊れていた進捗バーを修正。 #4627 (filimonov)
  • 一部のケースでメモリ領域が縮小された際に、MemoryTracker の値が不整合になる問題を修正しました。 #4619 (alexey-milovidov)
  • ThreadPool での未定義動作を修正しました。 #4612 (alexey-milovidov)
  • SELECT の実行中に MergeTree テーブルが同時に DROP された場合に、非常にまれに発生する mutex lock failed: Invalid argument というメッセージ付きのクラッシュを修正しました。 #4608 (Alex Zatelepin)
  • ODBC ドライバーの LowCardinality データ型対応。 #4381 (proller)
  • FreeBSD: AIOcontextPool: Found io_event with unknown id 0 エラーの修正。 #4438 (urgordeadbeef)
  • system.part_log テーブルが設定にかかわらず作成されていました。 #4483 (alexey-milovidov)
  • キャッシュ辞書での dictIsIn 関数の未定義動作を修正。 #4515 (alesapin)
  • SELECT クエリが同一テーブルに対して複数回ロックを取得する場合(例: 別スレッドから実行される場合や、複数のサブクエリを実行する場合)に、同時に DDL クエリが実行されていると発生していたデッドロックを修正しました。 #4535 (Alex Zatelepin)
  • 独自の llvm contrib を用意し、clangasan でテストできるようになるまで、デフォルトでは compile_expressions を無効にする。 #4579 (alesapin)
  • clickhouse 外部ディクショナリのソースに対する invalidate_query が不正な結果セット(空、複数行、または複数列)を返した場合に std::terminate が発生しないようにしました。lifetime に関係なく invalidate_query が 5 秒ごとに実行されていた問題を修正しました。 #4583 (alexey-milovidov)
  • clickhouse ソースを持つ辞書に対する invalidate_querysystem.dictionaries テーブルまたは Dictionaries データベースを参照していた場合に発生する可能性があるデッドロックを回避しました(まれなケース)。 #4599 (alexey-milovidov)
  • 空の WHERE 句を伴う CROSS JOIN の不具合を修正。 #4598 (Artem Zuikov)
  • 定数引数が渡された場合に関数 "replicate" で発生していたセグメンテーションフォルトを修正しました。 #4603 (alexey-milovidov)
  • 述語オプティマイザ使用時の lambda 関数の不具合を修正。 #4408 (Winter Zhang)
  • 複数の JOIN に関する不具合を修正。 #4595 (Artem Zuikov)

改良点

  • 右側のテーブル列に対して、JOIN の ON 句でエイリアスをサポート。 #4412 (Artem Zuikov)
  • 複数の JOIN の結果をサブセレクトで使用するには、正しい結果列名が必要となるため、結果内のフラットなエイリアスを元のソース名に置き換え。 #4474 (Artem Zuikov)
  • 結合されたステートメントに対するプッシュダウンロジックを改善。 #4387 (Ivan)

パフォーマンスの改善

  • "move to PREWHERE" 最適化のヒューリスティクスを改善。 #4405 (alexey-milovidov)
  • 8-bit および 16-bit キー向けに、HashTable の API を使用する適切なルックアップテーブルを利用。 #4536 (Amos Bird)
  • 文字列比較のパフォーマンスを改善。 #4564 (alexey-milovidov)
  • distributed DDL キューを別スレッドでクリーンアップし、distributed DDL タスクを処理するメインループを遅くしないようにした。 #4502 (Alex Zatelepin)
  • min_bytes_to_use_direct_io が 1 に設定されている場合、読み取るデータサイズが圧縮ブロック 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 は外部 lz4 には存在しません。これは実装の詳細であり、そのシンボルは XXH_NAMESPACE マクロでネームスペース化されているためです。lz4 が外部である場合、xxHash も外部でなければならず、依存側はそれにリンクする必要があります。#4495 (Orivej Desh)
  • quantileTiming 集約関数が負の値または浮動小数点の引数で呼び出される場合がある問題を修正(これにより undefined behaviour sanitizer を用いた fuzz テストが修正されます)。#4506 (alexey-milovidov)
  • スペルミスを修正。#4531 (sdk2)
  • macOS でのコンパイルを修正。#4371 (Vitaly Baranov)
  • FreeBSD およびさまざまな変則的なビルド構成向けのビルド修正。#4444 (proller)

ClickHouse リリース 19.3

ClickHouse リリース 19.3.9.1, 2019-04-02

バグ修正

  • FULL/RIGHT JOIN で、NULL 許容列と非 NULL 許容列を結合したときに発生するクラッシュを修正。#4855 (Artem Zuikov)
  • clickhouse-copier でのセグメンテーションフォルトを修正。#4835 (proller)
  • 列に長い空配列のシーケンスが含まれているというまれなケースにおいて、Array(LowCardinality) 列の読み取り時に発生する不具合を修正。#4850 (Nikolai Kochetov)

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

ClickHouse リリース 19.3.7, 2019-03-12

バグ修正

  • #3920 のエラーを修正。このエラーは、ランダムなキャッシュ破損(Unknown codec family codeCannot seek through file といったメッセージ)およびセグメンテーションフォルトとして現れる。このバグはバージョン 19.1 で初めて発生し、19.1.10 および 19.3.6 までのバージョンに存在する。#4623 (alexey-milovidov)

ClickHouse リリース 19.3.6, 2019-03-02

バグ修正

  • スレッドプールに 1000 を超えるスレッドがある場合、スレッド終了時に std::terminate が発生する可能性がある。Azat Khuzhin #4485 #4505 (alexey-milovidov)
  • デフォルトのない列にコメントを付けた ReplicatedMergeTree* テーブル、ならびにコメントやデフォルトのない列コーデックを持つテーブルを作成できるようになった。また、コーデックの比較の不具合を修正。#4523 (alesapin)
  • 配列またはタプルを伴う JOIN でのクラッシュを修正。#4552 (Artem Zuikov)
  • ThreadStatus not created というメッセージとともに発生する clickhouse-copier のクラッシュを修正。#4540 (Artem Zuikov)
  • 分散 DDL が使用されている場合に、サーバーのシャットダウン時にハングアップする問題を修正。#4472 (Alex Zatelepin)
  • 列番号が 10 を超える列に対してテキスト形式をパースする際のエラーメッセージで、誤った列番号が出力されていた問題を修正。#4484 (alexey-milovidov)

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

  • AVX を有効にしたビルドを修正。#4527 (alexey-milovidov)
  • コンパイル時のカーネルではなく、既知の安定バージョンに基づいて拡張アカウンティングおよび I/O アカウンティングを有効化。#4541 (nvartolomei)
  • core_dump.size_limit の設定をスキップできるようにし、制限の設定に失敗した場合は例外スローではなく警告を出すように変更。#4473 (proller)
  • Field.cpp 内の void readBinary(...)inline 指定を削除。また、冗長な namespace DB ブロックを統合。#4530 (hcz)

ClickHouse Release 19.3.5, 2019-02-21

バグ修正

  • 大きな HTTP 経由の INSERT クエリの処理に関するバグを修正。#4454 (alesapin)
  • send_logs_level 設定の誤った実装により発生していた古いバージョンとの後方互換性の問題を修正。#4445 (alexey-milovidov)
  • カラムコメント導入時に発生したテーブル関数 remote の後方互換性の問題を修正。#4446 (alexey-milovidov)

ClickHouse Release 19.3.4, 2019-02-16

改善

  • ATTACH TABLE クエリの実行時、テーブルインデックスのサイズはメモリ制限に含めないよう変更。これにより、デタッチ後にテーブルをアタッチできなくなる可能性を回避。#4396 (alexey-milovidov)
  • ZooKeeper から受信する文字列および配列の最大サイズ制限をわずかに引き上げ。これにより、ZooKeeper 側で CLIENT_JVMFLAGS=-Djute.maxbuffer=... によってサイズを増やした場合でも処理を継続可能。#4398 (alexey-milovidov)
  • キュー内に非常に多くのノードが存在する場合でも、放棄されたレプリカを修復できるように対応。#4399 (alexey-milovidov)
  • SET インデックスに 1 つの必須引数(保存される最大行数)を追加。#4386 (Nikita Vasilev)

バグ修正

  • 単一の LowCardinality キーでの WITH ROLLUP の結果を修正。#4384 (Nikolai Kochetov)
  • SET インデックスのバグを修正(max_rows を超える行数を含むグラニュールを削除してしまう問題)。#4386 (Nikita Vasilev)
  • FreeBSD 向けビルドに関する多数の修正。#4397 (proller)
  • 同じエイリアスを含むサブクエリを持つクエリでのエイリアス置換を修正(issue #4110)。#4351 (Artem Zuikov)

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

  • Docker イメージ内でステートレステスト用に clickhouse-server を実行できるようになりました。 #4347 (Vasily Nemkov)

ClickHouse リリース 19.3.3, 2019-02-13

新機能

  • 何らかの理由でスタックしてしまった mutation を削除できるようにする KILL MUTATION ステートメントを追加しました。トラブルシューティングを容易にするため、system.mutations テーブルに latest_failed_partlatest_fail_timelatest_fail_reason フィールドを追加しました。 #4287 (Alex Zatelepin)
  • Shannon エントロピーを計算する集約関数 entropy を追加しました。 #4238 (Quid37)
  • クエリ INSERT INTO tbl VALUES (....query 部分と data 部分に分割せずにサーバーへ送信できるようにしました。 #4301 (alesapin)
  • arrayWithConstant 関数の汎用実装を追加しました。 #4322 (alexey-milovidov)
  • NOT BETWEEN 比較演算子を実装しました。 #4228 (Dmitry Naumov)
  • sumMap によって値が集計されるキーの数を制限できるようにするため、sumMapFiltered を実装しました。 #4129 (Léo Ercolanelli)
  • mysql テーブル関数で Nullable 型をサポートしました。 #4198 (Emmanuel Donin de Rosière)
  • LIMIT 句で任意の定数式をサポートしました。 #4246 (k3box)
  • 追加の引数として(符号なし整数の)重みを受け取る集約関数 topKWeighted を追加しました。 #4245 (Andrew Golman)
  • StorageJoin に、同一キーの既存値を上書きできる join_any_take_last_row 設定のサポートを追加しました。 #3973 (Amos Bird)
  • 関数 toStartOfInterval を追加しました。 #4304 (Vitaly Baranov)
  • RowBinaryWithNamesAndTypes フォーマットを追加しました。 #4200 (Oleg V. Kozlyuk)
  • IPv4 および IPv6 データ型を追加しました。IPv* 関数のより効率的な実装を追加しました。 #3669 (Vasily Nemkov)
  • 関数 toStartOfTenMinutes() を追加しました。 #4298 (Vitaly Baranov)
  • Protobuf 出力フォーマットを追加しました。 #4005 #4158 (Vitaly Baranov)
  • データインポート(INSERT)用の HTTP インターフェースで brotli をサポートしました。 #4235 (Mikhail)
  • コマンドラインクライアントで関数名や型にタイプミスがある場合にヒントを表示するようにしました。 #4239 (Danila Kutenin)
  • サーバーの HTTP レスポンスヘッダーに Query-Id を追加しました。 #4231 (Mikhail)

実験的機能

  • MergeTree テーブルエンジンファミリー向けに、minmax および set データスキップインデックスを追加しました。 #4143 (Nikita Vasilev)
  • 可能な場合に、CROSS JOININNER 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)
  • 辞書が利用できない状態でリロードを行うとクラッシュする問題を修正しました。このバグは 19.1.6 で導入されました。 #4188 (proller)
  • 右テーブルに重複行がある場合の ALL JOIN の不具合を修正。 #4184 (Artem Zuikov)
  • use_uncompressed_cache=1 の場合に発生していたセグメンテーションフォルトと、誤った非圧縮サイズによる例外を修正しました。このバグは 19.1.6 で導入されました。 #4186 (alesapin)
  • compile_expressions での int16 を超える日付値の比較に関するバグを修正しました。 #4341 (alesapin)
  • テーブル関数 numbers(0) からの SELECT の実行時に発生していた無限ループを修正。 #4280 (alexey-milovidov)
  • ORDER BY の述語の最適化を一時的に無効化。#3890 (Winter Zhang)
  • 古い CPU で base64 関数を使用すると発生する Illegal instruction エラーを修正しました。このエラーは、ClickHouse を gcc-8 でコンパイルした場合にのみ確認されています。 #4275 (alexey-milovidov)
  • TLS 接続経由で PostgreSQL ODBC Driver とやり取りする際に発生していた No message received エラーを修正しました。MySQL ODBC Driver 使用時に発生していたセグメンテーションフォルトも修正しました。 #4170 (alexey-milovidov)
  • 条件演算子(関数 if)の分岐で Date および DateTime 引数が使用された場合に誤った結果が返される問題を修正しました。関数 if に汎用ケースを追加しました。 #4243 (alexey-milovidov)
  • ClickHouse の辞書は clickhouse プロセス内で読み込まれるようになりました。 #4166 (alexey-milovidov)
  • File エンジンを使用するテーブルに対する SELECTNo such file or directory エラー後に再試行された際に発生していたデッドロックを修正。 #4161 (alexey-milovidov)
  • system.tables から SELECT した際に table does not exist エラーが発生する可能性があったレースコンディションを修正しました。 #4313 (alexey-milovidov)
  • clickhouse-client は、インタラクティブモードで実行された場合、コマンドライン補完用のデータを読み込む際に終了時にセグメンテーションフォルトを起こすことがあります。 #4317 (alexey-milovidov)
  • IN 演算子を含むミューテーションの実行で誤った結果が返されていた不具合を修正しました。 #4099 (Alex Zatelepin)
  • エラーを修正: Dictionary エンジンを使用するデータベースが存在する場合、すべてのディクショナリがサーバー起動時に強制的にロードされ、localhost 上の ClickHouse をソースとするディクショナリがあると、そのディクショナリがロードできない問題を修正しました。 #4255 (alexey-milovidov)
  • サーバーのシャットダウン時にシステムログを再作成しようとすると発生していたエラーを修正。 #4254 (alexey-milovidov)
  • joinGet 関数が正しい型を返し、ロックを適切に処理するよう修正。 #4153 (Amos Bird)
  • sumMapWithOverflow 関数を追加しました。 #4151 (Léo Ercolanelli)
  • allow_experimental_multiple_joins_emulation で発生するセグメンテーションフォールトを修正。 52de2c (Artem Zuikov)
  • 誤った DateDateTime の比較を引き起こすバグを修正しました。 #4237 (valexey)
  • 未定義動作サニタイザ有効時のファジングテストを修正し、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 キャッシュサイズおよび非圧縮キャッシュサイズを削減するようにしました。#4240 (Lopatin Konstantin
  • CREATE TABLE クエリにキーワード INDEX を追加しました。名前が index のカラムは、バッククォートまたは二重引用符で囲む必要があります: `index`#4143 (Nikita Vasilev)
  • sumMap は、これまでオーバーフローしていた場合に結果型を昇格させるようになりました。従来の sumMap の挙動は、sumMapWithOverflow 関数を使用することで再現できます。#4151 (Léo Ercolanelli)

パフォーマンスの改善

  • LIMIT を含まないクエリで std::sortpdqsort に置き換えました。#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 server で --version オプションをサポートしました。 #4251 (Lopatin Konstantin)
  • clickhouse-server--help/-h オプションを追加しました。 #4233 (Yuriy Baranov)
  • 集約関数の状態を結果とするスカラサブクエリのサポートを追加しました。 #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

  • 設定 asterisk_left_columns_only が 1 に設定されており、SELECT * を伴う GLOBAL JOIN を使用している場合(まれなケース)に発生する可能性のある Column ... queried more than once エラーを修正しました。この問題は 19.3 以降のバージョンには存在しません。 6bac7d8d (Artem Zuikov)

ClickHouse リリース 19.1.13, 2019-03-12

このリリースには、19.3.7 とまったく同じパッチセットが含まれます。

ClickHouse リリース 19.1.10, 2019-03-03

このリリースには、19.3.6 とまったく同じパッチセットが含まれます。

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

バグ修正

  • /etc/clickhouse-server/config.xml が欠落していたインストールパッケージを修正しました。 #4343 (proller)

ClickHouse リリース 19.1

ClickHouse リリース 19.1.7, 2019-02-15

不具合修正

  • joinGet 関数が正しい型を返し、ロックを適切に処理するように修正しました。 #4153 (Amos Bird)
  • サーバーのシャットダウン時にシステムログを再作成しようとした際に発生していたエラーを修正しました。 #4254 (alexey-milovidov)
  • 不具合の修正: Dictionary エンジンを使用するデータベースが存在する場合、すべてのディクショナリがサーバー起動時に強制的にロードされており、さらに localhost 上の ClickHouse をソースとするディクショナリがあると、そのディクショナリをロードできない問題を修正しました。 #4255 (alexey-milovidov)
  • IN 演算子を含むミューテーションの実行で不正な結果が返されるバグを修正しました。 #4099 (Alex Zatelepin)
  • 対話モードで実行された場合、コマンドラインのサジェスト用データを読み込む際に、終了時に clickhouse-client がセグメンテーションフォルトを起こすことがあります。 #4317 (alexey-milovidov)
  • system.tables からの SELECT 中に table does not exist エラーが発生する可能性があったレースコンディションを修正しました。 #4313 (alexey-milovidov)
  • File エンジンのテーブルに対する SELECTNo such file or directory エラー後にリトライされた際に発生していたデッドロックを修正。 #4161 (alexey-milovidov)
  • 問題を修正しました: ローカル ClickHouse 辞書が TCP 経由でロードされていましたが、本来は同一プロセス内でロードされるべきでした。 #4166 (alexey-milovidov)
  • TLS 接続経由で PostgreSQL ODBC Driver とやり取りする際に発生していた No message received エラーを修正しました。MySQL ODBC Driver 使用時に発生していたセグメンテーションフォルトも修正しました。#4170 (alexey-milovidov)
  • ORDER BY に対する述語最適化を一時的に無効化しました。 #3890 (Winter Zhang)
  • テーブル関数 numbers(0) から SELECT した際に発生していた無限ループを修正。 #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 パッケージ: 設定に応じて /etc/clickhouse-server/preprocessed へのリンクを正しく設定。 #4205 (proller)
  • 未定義動作サニタイザ使用時のファジングテストを修正しました:quantile*Weighted 系関数に対してパラメータ型チェックを追加しました。 #4145 (alexey-milovidov)
  • START REPLICATED SENDS コマンドでレプリケート送信が開始されるようにしました。 #4229 (nvartolomei)
  • JOIN の ON 句で列が重複している場合に Not found column エラーが発生する問題を修正しました。 #4279 (Artem Zuikov)
  • /etc/ssl が SSL 証明書のデフォルトディレクトリとして使用されるようになりました。 #4167 (alexey-milovidov)
  • 辞書が利用できない状態での辞書リロード時に発生していたクラッシュを修正。 #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)
  • Kafka エンジンが、ブロックごとに一定数のパースエラーを無視できるように。 #4094 (Ivan)
  • CatBoost のマルチクラスモデル評価をサポート。関数 modelEvaluate は、マルチクラスモデルに対してクラスごとの生の予測値をタプルで返す。libcatboostmodel.so#607 に従ってビルドする必要がある。 #3959 (KochetovNicolai)
  • 関数 filesystemAvailable, filesystemFree, filesystemCapacity を追加。 #4097 (Boris Granveaud)
  • ハッシュ関数 xxHash64 および xxHash32 を追加。 #3905 (filimonov)
  • ハッシュ関数 gccMurmurHash(GCC 互換の Murmur ハッシュ)を追加。これは gcc と同じハッシュシードを使用する。 #4000 (sundyli)
  • ハッシュ関数 javaHash, hiveHash を追加。 #3811 (shangshujie365)
  • テーブル関数 remoteSecure を追加。この関数は remote と同様に動作するが、安全な接続を使用する。 #4088 (proller)

実験的機能

  • 複数の JOIN のエミュレーションを追加しました(allow_experimental_multiple_joins_emulation 設定)。#3946 (Artem Zuikov)

バグ修正

  • メモリ消費を抑えるため、compiled_expression_cache_size 設定にデフォルトで上限を設けました。 #4041 (alesapin)
  • Replicated テーブルに対する ALTER を実行するスレッドと、ZooKeeper から構成を更新するスレッドでハングアップが発生する原因となっていたバグを修正。 #2947 #3891 #3934 (Alex Zatelepin)
  • 分散 ALTER タスクの実行時に発生していたレースコンディションを修正しました。このレースコンディションにより、複数のレプリカが同じタスクを実行しようとし、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 サブプロセスを fork した後、/proc からすべての fd を読み込む前に /proc/self/fd ディレクトリをクローズしてしまうバグを修正しました。 #4120 (alesapin)
  • 主キーに String 型を使用している場合の、String から UInt への単調変換を修正。 #3870 (Winter Zhang)
  • 整数変換関数における単調性計算の誤りを修正しました。 #3921 (alexey-milovidov)
  • 特定の不正な引数が指定された場合に arrayEnumerateUniqarrayEnumerateDense 関数で発生していたセグメンテーションフォールトを修正しました。 #3909 (alexey-milovidov)
  • StorageMerge の未定義動作 (UB) を修正。 #3910 (Amos Bird)
  • 関数 addDays および subtractDays におけるセグメンテーションフォルトを修正。 #3913 (alexey-milovidov)
  • 不具合を修正: 関数 roundfloortruncceil が、整数引数に対して大きな負のスケールで実行された場合に誤った結果を返す可能性がある問題を修正しました。 #3914 (alexey-milovidov)
  • 'kill query sync' によりコアダンプが発生する不具合を修正しました。 #3916 (muVulDeePecker)
  • レプリケーションキューが空になった後に長い遅延が発生するバグを修正。 #3928 #3932 (alesapin)
  • LowCardinality 主キーを持つテーブルへの挿入時に過剰なメモリ使用量が発生していた問題を修正しました。 #3955 (KochetovNicolai)
  • Native フォーマットで空配列を扱う際の LowCardinality のシリアライゼーションを修正しました。 #3907 #4011 (KochetovNicolai)
  • 単一の LowCardinality 数値カラムに対して DISTINCT を使用した際に誤った結果が返される問題を修正しました。 #3895 #4012 (KochetovNicolai)
  • compile 設定が有効な場合における LowCardinality キーを用いる専用の集約処理を修正しました。 #3886 (KochetovNicolai)
  • レプリケートテーブルのクエリにおけるユーザーおよびパスワードの転送を修正。 #3957 (alesapin) (小路)
  • 辞書をリロードしている間に Dictionary データベース内のテーブルを一覧するときに、ごくまれに発生する競合状態を修正しました。 #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.YYYYDD.MM.YYDD-MM-YYYYDD-Mon-YYYYDD/Month/YYYY などの形式をサポート。 #3922 (alexey-milovidov)
  • CapnProtoInputStream がジャギー(不揃いな)構造をサポートするように。 #4063 (Odin Hultgren Van Der Horst)
  • 利便性の向上: サーバープロセスがデータディレクトリの所有者として起動されているかを確認するチェックを追加。データが非 root ユーザーに属している場合、root からサーバーを起動することを禁止。 #3785 (sergey-v-galtsev)
  • JOIN を含むクエリの解析時に、必須列をチェックするロジックを改善。 #3930 (Artem Zuikov)
  • 1 つのサーバー内に多数の Distributed テーブルが存在する場合の接続数を削減。 #3726 (Winter Zhang)
  • ODBC ドライバーにおいて、WITH TOTALS クエリの合計行(totals row)をサポート。 #3836 (Maksim Koritckiy)
  • if 関数内で Enum を整数として使用できるようにした。 #3875 (Ivan)
  • low_cardinality_allow_in_native_format 設定を追加。無効化されている場合、Native フォーマットでは LowCadrinality 型を使用しない。 #3879 (KochetovNicolai)
  • メモリ使用量を下げるため、コンパイル済み式キャッシュから一部の冗長なオブジェクトを削除。 #4042 (alesapin)
  • SET send_logs_level = 'value' クエリが適切な値のみを受け付けるようにするチェックを追加。 #3873 (Sabyanin Maxim)
  • 型変換関数におけるデータ型チェックを修正。 #3896 (Winter Zhang)

パフォーマンスの改善

  • MergeTree の設定 use_minimalistic_part_header_in_zookeeper を追加。これを有効にすると、Replicated テーブルではコンパクトなパートメタデータを単一のパート znode に保存します。これにより ZooKeeper のスナップショットサイズが大幅に削減される可能性があります(特にテーブルのカラム数が多い場合)。この設定を有効化すると、それをサポートしないバージョンへのダウングレードはできなくなる点に注意してください。 #3960 (Alex Zatelepin)
  • パターンに時間が含まれない場合に、関数 sequenceMatchsequenceCount 用の DFA ベースの実装を追加。 #4004 (Léo Ercolanelli)
  • 整数値のシリアライゼーションのパフォーマンスを改善。 #3968 (Amos Bird)
  • PODArray の左側をゼロでパディングして、インデックス -1 の要素が常に有効かつゼロ化されるように変更。これは分岐のないオフセット計算に使用されます。 #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 によって検出された問題のうち一つを修正しました。 #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)
  • サーバーの Docker イメージ内でディレクトリに chown を実行したくないユーザー向けに、環境変数を追加。 #3967 (alesapin)
  • clang の -Weverything に含まれる警告の大半を有効にし、-Wpedantic も有効にしました。 #3986 (alexey-milovidov)
  • clang 8 でのみ有効な警告をさらにいくつか追加しました。 #3993 (alexey-milovidov)
  • 共有ライブラリでリンクする場合は、個々の LLVM ライブラリではなく libLLVM にリンクするようにしました。 #3989 (Orivej Desh)
  • テストイメージ向けのサニタイザー変数を追加。 #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)

2018年の変更履歴