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

2018年の変更履歴

ClickHouse リリース 18.16

ClickHouse リリース 18.16.1, 2018-12-21

バグ修正:

  • ODBC ソースを使用した辞書の更新で問題を引き起こしていたエラーを修正しました。 #3825, #3829
  • 集約関数の JIT コンパイルが LowCardinality カラムでも動作するようになりました。 #3838

改善:

  • low_cardinality_allow_in_native_format 設定項目(デフォルトで有効です)を追加しました。無効にした場合、LowCardinality カラムは SELECT クエリでは通常のカラムに変換され、INSERT クエリでは通常のカラムが想定されます。 #3879

ビルドの改善:

  • macOS および ARM 環境でのビルドに関する修正を行いました。

ClickHouse リリース 18.16.0, 2018-12-14

新機能:

  • セミ構造化入力フォーマット(JSONEachRowTSKV)でデータをロードする際、欠損フィールドに対して DEFAULT 式が評価されます。この機能は insert_sample_with_metadata 設定で有効になります。 #3555
  • ALTER TABLE クエリに、テーブル列の追加や削除時にソートキーを変更するための MODIFY ORDER BY アクションが追加されました。これは、このソートキーに基づいてマージ時に追加処理を行う MergeTree ファミリーのテーブル、例えば SummingMergeTreeAggregatingMergeTree などで有用です。 #3581 #3755
  • MergeTree ファミリーのテーブルに対して、ソートキー(ORDER BY)とインデックス(PRIMARY KEY)を別々に指定できるようになりました。ソートキーはインデックスより長くすることができます。 #3581
  • HDFS へのデータのインポートおよびエクスポートのために、hdfs テーブル関数と HDFS テーブルエンジンが追加されました。 chenxing-xc
  • base64 を扱うための関数 base64Encodebase64DecodetryBase64Decode が追加されました。 Alexander Krasheninnikov
  • uniqCombined 集約関数の精度(使用する HyperLogLog セル数)をパラメータで設定できるようになりました。 #3406
  • ClickHouse でコミットを行ったすべての人の名前を含む system.contributors テーブルが追加されました。 #3452
  • すべてのパーティションを一度にバックアップするために、ALTER TABLE ... FREEZE クエリでパーティションを省略できるようになりました。 #3514
  • 戻り値の型を指定する必要がない dictGet および dictGetOrDefault 関数が追加されました。型はディクショナリの定義から自動的に決定されます。 Amos Bird
  • テーブル定義でカラムにコメントを指定し、ALTER を使って変更できるようになりました。 #3377
  • 単純キーを持つ Join 型テーブルの読み取りがサポートされました。 Amos Bird
  • Join 型テーブルを作成する際に、join_use_nullsmax_rows_in_joinmax_bytes_in_joinjoin_overflow_mode オプションを指定できるようになりました。 Amos Bird
  • Join 型テーブルをディクショナリのように利用できる joinGet 関数が追加されました。 Amos Bird
  • テーブルキーに関する情報を提供するために、system.tables テーブルに partition_keysorting_keyprimary_keysampling_key カラムが追加されました。 #3609
  • system.columns テーブルに is_in_partition_keyis_in_sorting_keyis_in_primary_keyis_in_sampling_key カラムが追加されました。 #3609
  • system.parts テーブルに min_time および max_time カラムが追加されました。これらのカラムは、パーティションキーが DateTime カラムから成る式である場合に設定されます。 Emmanuel Donin de Rosière

バグ修正:

  • LowCardinality データ型に対する不具合修正とパフォーマンスの改善。LowCardinality(Nullable(...)) を使用した GROUP BYextremes の値の取得。高階関数の処理。LEFT ARRAY JOIN。分散 GROUP BYArray を返す関数。ORDER BY の実行。Distributed テーブルへの書き込み (nicelulu)。Native プロトコルを実装する旧クライアントからの INSERT クエリに対する後方互換性。JOIN に対する LowCardinality のサポート。単一ストリームでの動作時のパフォーマンス改善。 #3823 #3803 #3799 #3769 #3744 #3681 #3651 #3649 #3641 #3632 #3568 #3523 #3518
  • select_sequential_consistency オプションの動作を修正しました。以前は、この設定を有効にしていると、新しいパーティションへの書き込みを開始した直後に、不完全な結果が返されることがありました。 #2863
  • DDL の ON CLUSTER クエリおよび ALTER UPDATE/DELETE クエリを実行する際に、データベースが正しく指定されるようになりました。 #3772 #3460
  • VIEW 内のサブクエリに対してデータベースが正しく指定されるようになりました。 #3521
  • VersionedCollapsingMergeTree における FINAL 付きの PREWHERE のバグを修正しました。 7167bfd7
  • テーブルのロックを待機していてまだ開始されていないクエリを、KILL QUERY でキャンセルできるようになりました。 #3517
  • 真夜中に時計が巻き戻された場合の日付と時刻の計算を修正しました(これはイランで発生しており、1981年から1983年まではモスクワでも発生していました)。以前は、この問題により本来より1日早く時刻がリセットされてしまい、さらにテキスト形式での日付と時刻の書式設定も誤っていました。 #3819
  • VIEW とサブクエリにおいてデータベース名を省略した一部のケースで発生していたバグを修正しました。 Winter Zhang
  • 内部の MATERIALIZED VIEW をロックしていなかったために、MATERIALIZED VIEW の読み取りと削除を同時に行った際に発生していたレースコンディションを修正しました。 #3404 #3694
  • Lock handler cannot be nullptr. というエラーを修正しました。 #3689
  • compile_expressions オプションが有効な場合(デフォルトで有効になっています)のクエリ処理を修正しました。now 関数のような非決定的な定数式は、もはや展開されません。 #3457
  • toDecimal32/64/128 関数で scale 引数に非定数を指定した場合に発生していたクラッシュを修正しました。
  • Values フォーマットで NULL 要素を含む配列を、Nullable なしの Array 型のカラムに挿入しようとした際のエラーを修正しました(input_format_values_interpret_expressions = 1 の場合)。 #3487 #3503
  • ZooKeeper が利用できない場合に発生していた DDLWorker の継続的なエラーログ出力を修正。 8f50c620
  • Date および DateTime 型の引数に対する quantile* 関数の戻り値の型を修正しました。 #3580
  • 式を伴わない単純なエイリアスのみを指定している場合の WITH 句を修正しました。 #3570
  • enable_optimize_predicate_expression が有効な場合に、名前付きサブクエリおよび修飾列名を含むクエリの処理に関する不具合を修正しました。 Winter Zhang
  • マテリアライズドビュー使用時に発生していたエラー Attempt to attach to nullptr thread group を修正しました。 Marek Vavruša
  • arrayReverse 関数に一部の誤った引数を渡した際にクラッシュが発生する問題を修正しました。 73e3a7b6
  • extractURLParameter 関数におけるバッファオーバーフローを修正しました。パフォーマンスを改善しました。ゼロバイトを含む文字列を正しく処理できるようにしました。 141e9799
  • lowerUTF8 関数および upperUTF8 関数における固定長バッファオーバーフローを修正しました。これらの関数を FixedString 型の引数に対しては実行できないようにしました。 #3662
  • MergeTree テーブル削除時にまれに発生していたレースコンディションを修正しました。 #3680
  • Buffer テーブルからの読み取り中に、対象テーブルに対して同時に ALTER または DROP を実行した場合に発生していたレースコンディションを修正しました。 #3719
  • max_temporary_non_const_columns の制限を超えた場合にセグメンテーションフォルトが発生する問題を修正しました。 #3788

改善点:

  • サーバーは処理済みの設定ファイルを /etc/clickhouse-server/ ディレクトリには書き込みません。代わりに、path 内の preprocessed_configs ディレクトリに保存します。これは、/etc/clickhouse-server/ ディレクトリが clickhouse ユーザーに対して書き込み権限を持たないようになっており、その結果セキュリティが向上することを意味します。 #2443
  • min_merge_bytes_to_use_direct_io オプションはデフォルトで 10 GiB に設定されています。MergeTree ファミリーのテーブルから大きなデータパーツを生成するマージは O_DIRECT モードで実行され、これにより不要なページキャッシュの大量な破棄が防止されます。#3504
  • 非常に多くのテーブルが存在する場合のサーバー起動を高速化。 #3398
  • レプリカ間の接続に、接続プールと HTTP Keep-Alive を追加しました。 #3594
  • クエリ構文が無効な場合、HTTP インターフェイスでは 400 Bad Request ステータスコードが返されます(以前は 500 が返されていました)。 31bc680a
  • 互換性のために、join_default_strictness オプションはデフォルトで ALL に設定されています。 120e2cbe
  • re2 ライブラリにおける、無効または複雑な正規表現に対する stderr へのログ出力を削除しました。 #3723
  • Kafka テーブルエンジンに、Kafka からの読み取りを開始する前にサブスクリプションをチェックする機能と、テーブルに対する kafka_max_block_size 設定を追加。 Marek Vavruša
  • cityHash64farmHash64metroHash64sipHash64halfMD5murmurHash2_32murmurHash2_64murmurHash3_32murmurHash3_64 関数は、任意個の引数およびタプル型の引数にも対応するようになりました。 #3451 #3519
  • arrayReverse 関数があらゆる型の配列に対して動作するようになりました。 73e3a7b6
  • timeSlots 関数に、スロットサイズを指定するオプションの引数を追加しました。 Kirill Shvakov
  • FULL および RIGHT JOIN においては、右側のテーブルからの結合されなかったデータのストリームに対して max_block_size 設定が使用されます。 Amos Bird
  • TLS を有効にするために、clickhouse-benchmarkclickhouse-performance-test--secure コマンドライン引数を追加しました。 #3688 #3690
  • Buffer 型テーブルの構造が宛先テーブルの構造と一致しない場合における型変換。 Vitaly Baranov
  • 指定した時間非アクティブ状態が続いた後にキープアライブパケットを送信できるようにするため、tcp_keep_alive_timeout オプションを追加しました。 #3441
  • system.parts テーブルのパーティションキーが単一カラムで構成されている場合に、その値を不要にクオートしていた処理を削除しました。 #3652
  • Date および DateTime データ型でも剰余演算(modulo)関数が利用できるようになりました。 #3385
  • POWERLNLCASEUCASEREPLACELOCATESUBSTR および MID 関数に対してシノニムを追加しました。 #3774 #3763 SQL 標準との互換性のため、一部の関数名は大文字・小文字を区別しません。SQL との互換性のために、SUBSTRING(expr FROM start FOR length) というシンタックスシュガーを追加しました。 #3804
  • clickhouse-server の実行ファイルコードに対応するメモリページを mlock し、メモリからページアウトされるのを防ぐ機能を追加しました。この機能はデフォルトでは無効になっています。 #3553
  • O_DIRECT からの読み込み時のパフォーマンスが向上しました(min_bytes_to_use_direct_io オプション有効時)。 #3405
  • 定数キー引数および非定数デフォルト引数を取る dictGet...OrDefault 関数のパフォーマンスを改善。 Amos Bird
  • firstSignificantSubdomain 関数は govmiledu ドメインも処理するようになりました。Igor Hatarist によりパフォーマンスが改善されました。 #3628
  • /etc/default/clickhouse 内で CLICKHOUSE_PROGRAM_ENV を定義することで、SYS-V init.d スクリプトを使用して clickhouse-server を起動する際に利用するカスタム環境変数を指定できるようになりました。 Pavlo Bashynskyi
  • clickhouse-server の init スクリプトの戻りコードを修正。 #3516
  • system.metrics テーブルに VersionInteger メトリクスが追加され、system.build_options には VERSION_INTEGER 行が追加されました。この行には、18016000 のような ClickHouse バージョンの数値表現が含まれます。 #3644
  • Date 型を数値と比較できないようにしました。これは、date = 2018-12-17 のように、日付をクォートし忘れる潜在的なエラーを防ぐためです。 #3687
  • rowNumberInAllBlocks のようなステートフルな関数の動作を修正しました。以前は、クエリ解析の段階からカウントを開始していたため、結果が本来よりも 1 だけ大きい値を出力していました。Amos Bird
  • force_restore_data ファイルを削除できない場合、エラーメッセージが表示されます。 Amos Bird

ビルドの改善:

  • 潜在的なメモリリークを修正するために jemalloc ライブラリを更新しました。 Amos Bird
  • ビルドをデバッグできるよう、jemalloc によるプロファイリングをデフォルトで有効化しました。 2cc82f5c
  • システムに Docker だけがインストールされている状態でも統合テストを実行できるようにしました。 #3650
  • SELECT クエリに fuzz expression テストを追加しました。 #3442
  • さらに多くのレースコンディションを検出するため、機能テストを並列かつランダムな順序で実行するコミット用のストレステストを追加しました。 #3438
  • Docker イメージ内での clickhouse-server の起動方法を改善しました。 Elghazal Ahmed
  • Docker イメージ向けに、/docker-entrypoint-initdb.d ディレクトリ内のファイルを使用してデータベースを初期化する機能を追加しました。 Konstantin Lebedev
  • ARM 向けビルドに関する修正を行いました。 #3709

後方互換性のない変更:

  • Date 型と数値を比較する機能を削除しました。toDate('2018-12-18') = 17883 の代わりに、明示的な型変換である = toDate(17883) を使用する必要があります。 #3687

ClickHouse リリース 18.14

ClickHouse リリース 18.14.19, 2018-12-19

バグ修正:

  • ODBC ソースを使用したディクショナリの更新で問題を引き起こしていたエラーを修正。 #3825, #3829
  • DDL の ON CLUSTER クエリを実行する際に、データベースが正しく指定されるように修正。 #3460
  • max_temporary_non_const_columns 制限を超えた場合にセグフォルトが発生していた問題を修正。 #3788

ビルドの改善:

  • ARM 上でのビルドに関する修正。

ClickHouse リリース 18.14.18, 2018-12-04

バグ修正:

  • range 型ディクショナリに対する dictGet... 関数で、引数の一方が定数でもう一方が非定数の場合に発生していたエラーを修正。 #3751
  • 比較的新しいバージョンの Linux カーネルでのみ発生していた、Linux カーネルログに netlink: '...': attribute type 1 has an invalid length というメッセージが出力される問題を修正。 #3749
  • FixedString 型の引数に対する empty 関数でセグフォルトが発生していた問題を修正。 Daniel, Dao Quang Minh
  • max_query_size 設定値が大きい場合に、過剰なメモリ割り当てが行われていた問題を修正(max_query_size バイトのメモリチャンクが一度に事前割り当てされていた)。 #3720

ビルドの変更:

  • OS パッケージ提供のバージョン 7 の LLVM/Clang ライブラリ(これらのライブラリはクエリのランタイムコンパイルに使用される)を用いたビルドの問題を修正。 #3582

ClickHouse リリース 18.14.17, 2018-11-30

バグ修正:

  • ODBC ブリッジプロセスがメインサーバープロセスと一緒に終了しない場合があった問題を修正。 #3642
  • リモートテーブルのカラムリストと異なるカラムリストで Distributed テーブルに同期挿入する際の問題を修正。 #3673
  • MergeTree テーブルを削除(DROP)する際にクラッシュを引き起こす可能性があった、まれなレースコンディションを修正。 #3643
  • クエリスレッドの作成が Resource temporarily unavailable エラーで失敗した場合にクエリがデッドロックする問題を修正。 #3643
  • CREATE AS table 構文を使用し、かつ ENGINE 句を AS table より前に指定した場合に、ENGINE 句のパースが正しく行われず、指定したエンジンが無視されてしまう問題を修正。 #3692

ClickHouse リリース 18.14.15, 2018-11-21

バグ修正:

  • Array(String) 型のカラムをデシリアライズする際に、メモリチャンクのサイズが過大に見積もられ、「Memory limit exceeded」エラーが発生していた問題を修正。この問題はバージョン 18.12.13 で導入された。 #3589

ClickHouse リリース 18.14.14, 2018-11-20

バグ修正:

  • クラスターがセキュア接続で構成されている場合(<secure> フラグ)における ON CLUSTER クエリを修正。#3599

ビルドの変更:

  • (system の llvm-7、macOS に関する)問題を修正。#3582

ClickHouse リリース 18.14.13, 2018-11-08

バグ修正:

  • Block structure mismatch in MergingSorted stream エラーを修正。#3162
  • クラスター設定でセキュア接続(<secure> フラグ)が有効化されている場合の ON CLUSTER クエリを修正。#3465
  • SAMPLEPREWHERE およびエイリアス列を使用するクエリでのエラーを修正。#3543
  • min_bytes_to_use_direct_io 設定が有効な場合にまれに発生する unknown compression method エラーを修正。3544

パフォーマンスの改善:

  • AMD EPYC プロセッサ上で実行する際に、UInt16 または Date 型の列に対する GROUP BY を含むクエリのパフォーマンス劣化を修正。Igor Lapko
  • 長い文字列を処理するクエリのパフォーマンス劣化を修正。#3530

ビルドの改善:

  • Arcadia ビルドを簡素化するための改善。#3475#3535

ClickHouse リリース 18.14.12, 2018-11-02

バグ修正:

  • 2 つの名前なしサブクエリを結合した際のクラッシュを修正。#3505
  • 外部データベースをクエリする際に、空の WHERE 句を持つ誤ったクエリが生成される問題を修正。hotid
  • ODBC 辞書で誤ったタイムアウト値が使用される問題を修正。Marek Vavruša

ClickHouse リリース 18.14.11, 2018-10-29

バグ修正:

  • LIMIT クエリでの Block structure mismatch in UNION stream: different number of columns エラーを修正。#2156
  • Nested 構造内に配列を含むテーブルでデータをマージする際のエラーを修正。#3397
  • merge_tree_uniform_read_distribution 設定が無効になっている場合(デフォルトでは有効)に誤ったクエリ結果が返される問題を修正。#3429
  • Native 形式で Distributed テーブルに挿入する際のエラーを修正。#3411

ClickHouse リリース 18.14.10, 2018-10-23

  • compile_expressions 設定(式の JIT コンパイル)はデフォルトで無効化。#3410
  • enable_optimize_predicate_expression 設定はデフォルトで無効化。

ClickHouse リリース 18.14.9, 2018-10-16

新機能:

  • GROUP BY 用の WITH CUBE 修飾子(代替構文として GROUP BY CUBE(...) も利用可能)。 #3172
  • formatDateTime 関数を追加。 Alexandr Krasheninnikov
  • JDBC テーブルエンジンと jdbc テーブル関数を追加(clickhouse-jdbc-bridge のインストールが必要)。 Alexandr Krasheninnikov
  • ISO 週番号を扱うための関数 toISOWeektoISOYeartoStartOfISOYeartoDayOfYear を追加。 #3146
  • MySQL および ODBC テーブルで Nullable カラムを使用できるようになりました。 #3362
  • ネストされたデータ構造を、JSONEachRow フォーマットでネストされたオブジェクトとして読み取れるようになりました。input_format_import_nested_json 設定を追加。 Veloman Yunkan
  • データ挿入時に、多くのマテリアライズドビュー(MATERIALIZED VIEW)で並列処理が利用可能になりました。parallel_view_processing 設定を参照してください。 Marek Vavruša
  • SYSTEM FLUSH LOGS クエリを追加(query_log などのシステムテーブルへのログを強制的にフラッシュ)。 #3321
  • Replicated テーブルを宣言する際に、事前定義された database および table マクロを使用できるようになりました。 #3251
  • 10 のべき乗を表す工学表記で Decimal 型の値を読み取れるようになりました。 #3153

実験的機能:

  • LowCardinality データ型に対する GROUP BY 句の最適化。 #3138
  • LowCardinality データ型に対する式の計算の最適化。 #3200

改善点:

  • ORDER BYLIMIT を含むクエリのメモリ使用量を大幅に削減しました。max_bytes_before_remerge_sort 設定を参照してください。 #3205
  • JOINLEFTINNER など)が指定されていない場合は、自動的に INNER JOIN が使用されます。 #3147
  • 修飾付きアスタリスクは JOIN を含むクエリでも正しく動作します。 Winter Zhang
  • ODBC テーブルエンジンは、リモートデータベースの SQL 方言における識別子の引用方法を正しく選択します。Alexandr Krasheninnikov
  • compile_expressions 設定(式のJITコンパイル)はデフォルトで有効になっています。
  • DROP DATABASE/TABLE IF EXISTSCREATE DATABASE/TABLE IF NOT EXISTS を同時に実行した場合の動作を修正しました。以前は、CREATE DATABASE ... IF NOT EXISTS クエリがエラーメッセージ "File ... already exists" を返したり、CREATE TABLE ... IF NOT EXISTS および DROP TABLE IF EXISTS クエリが "Table ... is creating or attaching right now" を返すことがありました。 #3101
  • 右辺が定数の LIKE および IN 式は、MySQL または ODBC テーブルに対するクエリ時にリモートサーバーへ渡されるようになりました。 #3182
  • MySQL および ODBC テーブルからクエリを実行する際、WHERE 句内の定数式との比較がリモートサーバーに渡されるようになりました。以前は、定数値との比較のみが渡されていました。 #3182
  • ターミナルにおける Pretty フォーマットの行幅を正しく計算し、表意文字(漢字など)を含む文字列にも対応しました。Amos Bird
  • ON CLUSTERALTER UPDATE クエリで指定できます。
  • JSONEachRow フォーマットでのデータ読み取り性能を改善しました。 #3332
  • 互換性維持のために LENGTH および CHARACTER_LENGTH 関数のシノニムを追加しました。CONCAT 関数は大文字と小文字を区別しなくなりました。 #3306
  • DateTime 型のシノニムとして TIMESTAMP を追加しました。 #3390
  • サーバーログでは、ログ行がクエリに関連していない場合でも、常に query_id 用のスペースが確保されています。これにより、テキスト形式のサーバーログをサードパーティ製ツールで解析しやすくなります。
  • クエリのメモリ消費量が整数値ギガバイトの次の段階を超えたタイミングで、その情報がログに記録されるようになりました。 #3205
  • Native プロトコルを使用するクライアントライブラリが、INSERT クエリに対してサーバーが想定している列数よりも誤って少ない列しか送信しない場合に備え、互換性モードを追加しました。この状況は、clickhouse-cpp ライブラリを使用している場合に発生する可能性がありました。以前は、この状況によってサーバーがクラッシュしていました。 #3171
  • clickhouse-copier のユーザー定義 WHERE 式で、partition_key エイリアス(ソーステーブルのパーティションによる追加フィルタリング用)を使用できるようになりました。これは、コピー中にパーティション方式がわずかに変更される場合に有用です。 #3166
  • 高負荷時にデータ読み取り速度を自動的に抑制するため、Kafka エンジンの処理フローはバックグラウンドのスレッドプールに移行されました。Marek Vavruša
  • Cap'n'Proto format における struct のような構造体の Tuple および Nested 値の読み取りに対応。 Marek Vavruša
  • firstSignificantSubdomain 関数で使用されるトップレベルドメインのリストに、biz ドメインが追加されました。 decaseal
  • 外部辞書の設定では、null_value はそのデータ型のデフォルト値として解釈されます。 #3330
  • Decimal に対する intDiv および intDivOrZero 関数のサポートを追加。 b48402e8
  • sumMap 集約関数のキーとして DateDateTimeUUIDDecimal 型をサポートするようになりました。 #3281
  • 外部ディクショナリで Decimal データ型をサポート。#3324
  • SummingMergeTree テーブルにおける Decimal データ型のサポート。 #3348
  • if 関数に UUID 型向けの特殊化を追加しました。 #3366
  • MergeTree table からの読み込み時に発生する open および close システムコールの回数を減らしました。 #3283
  • TRUNCATE TABLE クエリは任意のレプリカ上で実行できるようになり、クエリはリーダーレプリカに転送されます。Kirill Shvakov

バグ修正:

  • range_hashed 辞書用の Dictionary テーブルに存在した問題を修正しました。この不具合はバージョン 18.12.17 で発生していました。 #1702
  • range_hashed ディクショナリの読み込み時に発生していたエラー(メッセージ Unsupported type Nullable (...))を修正しました。このエラーはバージョン 18.12.17 で発生していました。 #3362
  • pointInPolygon 関数において、多くの頂点が互いに近接して配置されたポリゴンで計算誤差が蓄積することにより発生していた不具合を修正しました。 #3331 #3341
  • データパーツをマージした後、生成されたパーツのチェックサムが別のレプリカで同じマージを行った結果と異なる場合、マージ結果は削除され、そのデータパーツは別のレプリカからダウンロードされます(これは正しい動作です)。しかしデータパーツをダウンロードした後、すでにそのパーツが存在するというエラーのためにワーキングセットに追加できないことがありました(マージ後にデータパーツが一定の遅延を伴って削除されるためです)。この結果、同じデータを繰り返しダウンロードしようとするサイクル的な再試行が発生していました。 #3194
  • クエリによるメモリ消費量の合計の計算が誤っていた問題を修正しました(この誤った計算により、max_memory_usage_for_all_queries 設定が正しく動作せず、MemoryTracking メトリクスの値も誤っていました)。この不具合はバージョン 18.12.13 で発生していました。Marek Vavruša
  • CREATE TABLE ... ON CLUSTER ... AS SELECT ... の動作に関する不具合を修正しました。これはバージョン 18.12.13 で発生していたエラーです。 #3247
  • JOIN がリモートサーバー上でのみ実行される場合に、クエリを開始するサーバーで JOIN 用データ構造を不要に準備していた問題を修正しました。 #3340
  • Kafka エンジンにおける不具合を修正しました:データ読み取り開始時に例外が発生した後にデッドロックが起きる問題、および処理完了時にロックが残る問題 Marek Vavruša
  • Kafka テーブルに対して、オプションの schema パラメータ(Cap'n'Proto フォーマットのスキーマ)が渡されていませんでした。 Vojtech Splichal
  • ZooKeeper サーバーのアンサンブル内に、接続は受け付けるもののハンドシェイクに応答せず直ちに接続を閉じてしまうサーバーが含まれている場合、ClickHouse は別のサーバーへの接続を試みます。以前は、この状況で Cannot read all data. Bytes read: 0. Bytes expected: 4. というエラーが発生し、サーバーを起動できませんでした。 8218cf3a
  • ZooKeeper サーバーの集合に、DNS クエリでエラーとなるサーバーが含まれている場合、これらのサーバーは無視されます。 17b8e209
  • VALUES フォーマットでデータを挿入する際(input_format_values_interpret_expressions = 1 の場合)の DateDateTime 間の型変換を修正しました。以前は、Unixエポックからの経過日数を表す数値と Unix タイムスタンプとの間で変換が行われており、そのため予期しない結果が生じることがありました。 #3229
  • Decimal と整数の間の型変換を修正しました。 #3211
  • enable_optimize_predicate_expression 設定の不具合を修正しました。 Winter Zhang
  • ; のようなデフォルト以外の CSV セパレータを使用した場合に、浮動小数点数を含む CSV 形式で発生していたパースエラーを修正 #3155
  • arrayCumSumNonNegative 関数を修正しました(累積値が 0 未満の場合は、負の値を累積しません)。 Aleksey Studnev
  • PREWHERE 使用時に、Distributed テーブルを基盤とする Merge テーブルの動作を修正しました。 #3165
  • ALTER UPDATE クエリのバグ修正。
  • バージョン 18.12 で発生した odbc テーブル関数のバグを修正しました。#3197
  • StateArray コンビネーターを用いる集約関数の動作を修正しました。#3188
  • Decimal 値をゼロで除算した際にクラッシュする不具合を修正しました。 69dd6609
  • Decimal と整数の引数を使用する演算で出力される型を修正しました。 #3224
  • Decimal128 に対する GROUP BY 実行時に発生していたセグメンテーションフォルトを修正しました。 3359ba06
  • log_query_threads 設定(クエリ実行の各スレッドに関する情報をログに記録する)は、log_queries オプション(クエリに関する情報をログに記録する)が 1 に設定されている場合にのみ有効になります。log_query_threads オプションはデフォルトで有効なため、以前はクエリのログ記録が無効でも、スレッドに関する情報はログに記録されていました。 #3241
  • quantiles 集約関数の分散実行時に発生していたエラー(エラーメッセージ Not found column quantile...)を修正しました。 292a8855
  • バージョン 18.12.17 のサーバーとそれ以前のサーバーからなるクラスタを同時に使用した際の互換性の問題を修正しました。固定長キーと可変長キーの両方を含む GROUP BY を用いた分散クエリで、集計対象データ量が多い場合、返されるデータが常に完全に集約されるとは限らず(同じ集約キーを持つ 2 つの異なる行が含まれる)、不正な結果となることがありました。 #3254
  • テストで宣言された置換の一部しかクエリに含まれていない場合の、clickhouse-performance-test における置換処理を修正しました。 #3263
  • FINALPREWHERE を併用した際に発生していたエラーを修正しました。 #3298
  • ALTER 操作で追加された列に対して PREWHERE を使用した場合に発生していたエラーを修正しました。 #3298
  • DEFAULT および MATERIALIZED 式で arrayJoin が使用されていないことを検証するチェックを追加しました。以前は、データ挿入時に arrayJoin によってエラーが発生していました。 #3337
  • PREWHERE 句に arrayJoin が使用されていない場合を検出するチェックを追加しました。以前は、クエリ実行時に Size ... does not matchUnknown compression method といったメッセージが表示されることがありました。 #3357
  • 等価比較の AND 連鎖を対応する IN 式に置き換える最適化の後、まれなケースで発生する可能性があったセグメンテーションフォルトを修正しました。 liuyimin-bytedance
  • clickhouse-benchmark に対する軽微な修正: 以前はクライアント情報がサーバーに送信されていませんでしたが、これにより、終了時および反復回数を制限する際の実行クエリ数が、より正確に算出されるようになりました。 #3351 #3352

後方互換性のない変更:

  • allow_experimental_decimal_type オプションを削除しました。Decimal データ型はデフォルトで利用可能になりました。 #3329

ClickHouse リリース 18.12

ClickHouse リリース 18.12.17, 2018-09-16

新機能:

  • 外部辞書を更新する必要があるかどうかを確認するクエリを指定できる invalidate_query が、clickhouse ソース向けに実装されました。#3126
  • Date 型に加えて、UInt*Int*、および DateTime データ型を、範囲の境界を定義する range_hashed 外部辞書キーとして使用できるようになりました。これにより、開いた範囲を示すために NULL を使用できるようになりました。Vasily Nemkov
  • Decimal 型が var* および stddev* 集約関数をサポートするようになりました。#3129
  • Decimal 型が数学関数(expsin など)をサポートするようになりました。#3129
  • system.part_log テーブルに partition_id カラムが追加されました。#3089

バグ修正:

  • MergeDistributed テーブルで正しく動作するようになりました。Winter Zhang
  • ClickHouse を Ubuntu Precise およびそれ以前のバージョンで実行できなくしていた非互換性(glibc バージョンへの不要な依存)を修正しました。この非互換性はバージョン 18.12.13 で発生しました。#3130
  • enable_optimize_predicate_expression 設定での不具合を修正しました。Winter Zhang
  • レプリカのクラスターを 18.12.13 より前のバージョンで運用している際に、新しいバージョンのサーバー上でテーブルの新しいレプリカを同時に作成すると発生した、後方互換性に関する小さな問題を修正しました(メッセージ Can not clone replica, because the ... updated to new ClickHouse version が表示されますが、内容としては筋が通っていても本来発生すべきではありません)。#3122

後方互換性のない変更:

  • enable_optimize_predicate_expression オプションがデフォルトで有効になりました(かなり楽観的な設定です)。カラム名の検索に関連するクエリ解析エラーが発生する場合は、enable_optimize_predicate_expression を 0 に設定してください。Winter Zhang

ClickHouse リリース 18.12.14, 2018-09-13

新機能:

  • ALTER UPDATE クエリのサポートを追加しました。#3035
  • ユーザーの DDL クエリへのアクセスを制限する allow_ddl オプションを追加しました。#3104
  • マージの合計サイズに対するしきい値を設定できる、MergeTree エンジン用の min_merge_bytes_to_use_direct_io オプションを追加しました(しきい値を超えると、データパートファイルは O_DIRECT を使用して処理されます)。#3117
  • system.merges システムテーブルに partition_id カラムが追加されました。#3099

改良

  • ミューテーションの間にデータパートが変更されなかった場合、レプリカはそのパートをダウンロードしません。#3103
  • clickhouse-client を使用する際に、設定名のオートコンプリート(補完)が利用可能になりました。#3106

バグ修正:

  • 挿入時に、Nested 型フィールドの要素である配列のサイズを検査する処理を追加しました。 #3118
  • ODBC ソースおよび hashed ストレージを使用した外部辞書の更新時に発生していたエラーを修正しました。このエラーはバージョン 18.12.13 で発生していました。
  • IN 条件を含むクエリから一時テーブルを作成する際にクラッシュする問題を修正しました。 Winter Zhang
  • NULL 要素を含む可能性がある配列に対する集約関数のエラーを修正しました。 Winter Zhang

ClickHouse リリース 18.12.13, 2018-09-10

新機能:

  • DECIMAL(digits, scale) データ型(Decimal32(scale)Decimal64(scale)Decimal128(scale))を追加しました。このデータ型を有効にするには、設定 allow_experimental_decimal_type を使用します。 #2846 #2970 #3008 #3047
  • GROUP BY 用の新しい WITH ROLLUP 修飾子(代替構文: GROUP BY ROLLUP(...))。#2948
  • JOIN を含むクエリでは、SQL 標準に従い、アスタリスク文字はすべてのテーブルに含まれるカラムの一覧に展開されます。ユーザー設定レベルで asterisk_left_columns_only を 1 に設定することで、従来の動作に戻せます。 Winter Zhang
  • テーブル関数を用いた JOIN をサポートしました。 Winter Zhang
  • clickhouse-client で Tab キーによる自動補完に対応。 Sergey Shcherbin
  • clickhouse-client で Ctrl+C を押すと、入力中のクエリがクリアされます。 #2877
  • join_default_strictness 設定(値: ", 'any', 'all')を追加しました。これにより、JOIN 句で ANY または ALL を明示的に指定する必要がなくなります。 #2982
  • クエリ処理に関連するサーバーログの各行に、クエリ ID が表示されるようになりました。#2482
  • send_logs_level 設定を使用することで、clickhouse-client でクエリ実行ログを取得できるようになりました。分散クエリ処理時には、すべてのサーバーからのログがカスケードされます。 #2482
  • system.query_log および system.processesSHOW PROCESSLIST)テーブルに、クエリ実行時に変更されたすべての設定情報(Settings データのネストされた構造)が記録されるようになりました。log_query_settings 設定を追加しました。 #2482
  • system.query_logsystem.processes テーブルに、クエリ実行に参加しているスレッド数に関する情報が表示されるようになりました(thread_numbers 列を参照)。 #2482
  • ネットワーク経由での読み書きおよびディスクでの読み書きに要した時間、ネットワークエラーの回数、帯域幅が制限されている場合の待機時間を計測する ProfileEvents カウンタを追加しました。 #2482
  • rusage 由来のシステムメトリクスを含む ProfileEvents カウンタを追加しました(ユーザー空間およびカーネルでの CPU 使用時間、ページフォルト、コンテキストスイッチに関する情報を取得できます)。さらに、taskstats メトリクスも追加しました(I/O 待ち時間、CPU 待ち時間、ページキャッシュの有無それぞれの場合の読み取りおよび書き込みデータ量に関する情報を取得できます)。#2482
  • ProfileEvents カウンタはグローバルレベルおよび各クエリ単位に加えて、各クエリ実行スレッド単位でも適用されるため、クエリごとのリソース消費を詳細にプロファイルできます。 #2482
  • 各クエリの実行スレッドに関する情報を含む system.query_thread_log テーブルを追加しました。log_query_threads 設定を追加しました。 #2482
  • system.metricssystem.events テーブルに、組み込みのドキュメントが用意されるようになりました。 #3016
  • arrayEnumerateDense 関数を追加。 Amos Bird
  • arrayCumSumNonNegative 関数および arrayDifference 関数を追加しました。 Aleksey Studnev
  • retention という集約関数を追加しました。 Sundy Li
  • 集約関数の状態を、加算演算子(+)で加算(マージ)できるようになり、さらに、その状態を非負の定数で乗算できるようになりました。 #3062 #3034
  • MergeTree ファミリーのテーブルで、仮想カラム _partition_id が利用できるようになりました。 #3089

実験的機能:

  • LowCardinality(T) データ型を追加しました。このデータ型は値のローカル辞書を自動的に作成し、辞書を展開することなくデータ処理を行えるようにします。 #2830
  • JIT コンパイルされた関数のキャッシュと、コンパイルを実行するまでの使用回数を数えるカウンタを追加しました。式を JIT コンパイルするには、compile_expressions 設定を有効にします。 #2990 #3077

改良点:

  • 放棄されたレプリカが存在する際に、レプリケーションログが無制限に蓄積し続ける問題を修正しました。大きな遅延があるレプリカ向けに、有効なリカバリーモードを追加しました。
  • GROUP BY において、複数の集約フィールドを指定している場合に、そのうち 1 つが文字列で残りが固定長型であるときのパフォーマンスを改善しました。
  • PREWHERE の使用時および式が暗黙的に PREWHERE に転送される場合のパフォーマンスが向上しました。`
  • テキスト形式(CSVTSV)のパース性能を改善。 Amos Bird #2980
  • バイナリ形式での文字列および配列の読み取り性能を改善しました。 Amos Bird
  • 単一のサーバー上に非常に多数のテーブルが存在する場合に、system.tables および system.columns へのクエリのパフォーマンスが向上し、メモリ消費量が削減されました。 #2953
  • 大量のクエリストリームがエラーになる場合に発生していたパフォーマンス問題を修正しました(perf top_dl_addr 関数は表示されるものの、サーバーの CPU 使用率自体はそれほど高くない状況)。 #2938
  • 条件は(enable_optimize_predicate_expression が有効な場合)View 側に適用されるようになりました。 Winter Zhang
  • UUID データ型の機能を改善しました。 #3074 #2985
  • UUID データ型が The-Alchemist 辞書でサポートされるようになりました。 #2822
  • visitParamExtractRaw 関数はネストされた構造でも正しく動作します。 Winter Zhang
  • input_format_skip_unknown_fields 設定が有効な場合、JSONEachRow 形式のオブジェクトフィールドが正しくスキップされます。 BlahGeek
  • 条件を含む CASE 式では、ELSE を省略できるようになりました。これは ELSE NULL と同等です。 #2920
  • ZooKeeper を使用する際の操作タイムアウトを設定可能になりました。 urykhy
  • LIMIT n, m のオフセットを LIMIT n OFFSET m として指定できます。 #2840
  • LIMIT の代替として SELECT TOP n 構文も使用できます。 #2840
  • システムテーブルへの書き込みキューのサイズを拡大し、SystemLog parameter queue is full エラーの発生頻度を低減しました。
  • windowFunnel 集約関数が、複数の条件を同時に満たすイベントに対応するようになりました。 Amos Bird
  • 重複したカラムを JOINUSING 句で使用できるようになりました。 #3006
  • Pretty フォーマットでは、列の幅をそろえる際の最大幅に制限が設けられました。output_format_pretty_max_column_pad_width 設定を使用してください。値がその幅より大きい場合でも、値自体は完全に表示されますが、テーブル内の他のセルの幅が不必要に広がらないようになります。 #3003
  • odbc テーブル関数でデータベース名やスキーマ名を指定できるようになりました。 Amos Bird
  • clickhouse-client の設定ファイルに指定されたユーザー名を使用できるようにしました。 Vladimir Kozbin
  • ZooKeeperExceptions カウンターは、ZooKeeperUserExceptionsZooKeeperHardwareExceptionsZooKeeperOtherExceptions の 3 つのカウンターに分割されました。
  • ALTER DELETE クエリはマテリアライズドビューにも使用できます。
  • 多数の ReplicatedMergeTree テーブルが存在する場合に、クリーンアップスレッドの定期実行によって発生する周期的な負荷スパイクを回避するため、ReplicatedMergeTree テーブルのクリーンアップスレッド実行タイミングにランダム性を持たせました。
  • ATTACH TABLE ... ON CLUSTER クエリをサポート。 #3025

バグ修正:

  • Dictionary テーブルで発生していた問題(Size of offsets does not match size of column または Unknown compression method という例外がスローされる)を修正しました。このバグはバージョン 18.10.3 で発生していました。#2913
  • vertical アルゴリズムを用いてマージを行う際に、CollapsingMergeTree テーブルのマージ処理で、データパーツの一部が空の場合(これらのパーツは、すべてのデータが削除された場合のマージ処理中または ALTER DELETE 実行時に生成される)に発生していたバグを修正しました。 #3049
  • SELECT を同時に実行している Memory テーブルに対して DROP または TRUNCATE を行う際に発生するレースコンディションを修正しました。この問題によりサーバがクラッシュする可能性がありました。このバグはバージョン 1.1.54388 で導入されました。 #3038
  • Replicated テーブルへの挿入時に Session is expired エラーが返される場合にデータ損失が発生する可能性のあった問題を修正しました(データ損失は ReplicatedDataLoss メトリクスによって検出できます)。このエラーはバージョン 1.1.54378 で発生していました。 #2939 #2949 #2964
  • JOIN ... ON 中に発生していたセグメンテーションフォールトを修正しました。 #3000
  • WHERE 句の式が WHERE table.column のように修飾カラム名のみで構成されている場合に、カラム名検索時に発生していたエラーを修正しました。 #2994
  • サブクエリを含む IN 式のみから成る単一列をリモートサーバーから参照する分散クエリを実行した際に発生していた「Not found column」エラーを修正しました。 #3087
  • 分散クエリで、一方のシャードがローカルで他方がリモートである場合に、PREWHERE への移動最適化が有効になると発生していた Block structure mismatch in UNION stream: different number of columns エラーを修正しました。 #2226 #3037 #3055 #3065 #3073 #3090 #3093
  • 非凸多角形の一部のケースにおいて pointInPolygon 関数を修正しました。 #2910
  • nan を整数と比較した際に誤った結果となっていた問題を修正しました。 #3024
  • まれにセグメンテーションフォルトを引き起こす可能性があった zlib-ng ライブラリのエラーを修正しました。 #2854
  • AggregateFunction 列を持つテーブルへの挿入時に、集約関数の状態が単純でなく(メモリを個別に確保するもの)、かつ 1 回の挿入リクエストが複数の小さなブロックを生成する場合に発生していたメモリリークを修正しました。 #3084
  • 同じ Buffer または MergeTree テーブルを同時に作成および削除しようとした際に発生していたレースコンディションを修正しました。
  • 特定の複雑な型(例えばタプル)から構成されるタプル同士を比較する際に、セグメンテーションフォルトが発生する可能性があった問題を修正しました。 #2989
  • 特定の ON CLUSTER クエリを実行した際にセグメンテーションフォルトが発生し得る不具合を修正しました。 Winter Zhang
  • Nullable な配列要素を扱う arrayDistinct 関数の不具合を修正しました。 #2845 #2937
  • enable_optimize_predicate_expression オプションが、SELECT * を含む場合も正しくサポートするようになりました。 Winter Zhang
  • ZooKeeper セッションを再初期化する際に発生していたセグメンテーションフォルトを修正しました。 #2917
  • ZooKeeper 使用時に発生する可能性のあったブロッキングを解消しました。
  • SummingMergeTree でネストされたデータ構造を追加するコードの誤りを修正しました。
  • 集約関数の状態用メモリの割り当て時にアラインメントが正しく考慮されるようになり、集約関数の状態を実装する際にアラインメントを必要とする操作を使用できるようになりました。 chenxing-xc

セキュリティ修正:

  • ODBC データソースの安全な利用。ODBC ドライバーとのやり取りは、別プロセスである clickhouse-odbc-bridge を介して行われます。サードパーティ製 ODBC ドライバー内の不具合が原因でサーバーの安定性に影響したり、脆弱性につながったりすることがなくなりました。 #2828 #2879 #2886 #2893 #2921
  • catBoostPool テーブル関数におけるファイルパス検証の誤りを修正しました。 #2894
  • システムテーブル(tablesdatabasespartscolumnsparts_columnsmergesmutationsreplicasreplication_queue)の内容は、ユーザーに設定されているデータベースへのアクセス権(allow_databases)に応じてフィルタリングされます。 Winter Zhang

後方互換性のない変更:

  • JOIN を含むクエリでは、SQL 標準に準拠して、アスタリスク文字はすべてのテーブルのカラム一覧に展開されます。ユーザー設定レベルで asterisk_left_columns_only を 1 に設定することで、従来の動作を復元できます。

ビルドの変更:

  • ほとんどのインテグレーションテストを、コミット単位で実行できるようになりました。
  • コードスタイルチェックも、コミット単位で実行できるようになりました。
  • CentOS7/Fedora 上でビルドする際に、memcpy 実装が正しく選択されるようになりました。 Etienne Champetier
  • clang を使用してビルドする場合、従来の -Wall -Wextra -Werror に加えて、-Weverything から一部の警告フラグが追加されました。 #2957
  • ビルドのデバッグ時に、jemalloc のデバッグオプションを使用するようになりました。
  • ZooKeeper と連携するためのライブラリのインターフェースが抽象インターフェースとして宣言されました。 #2950

ClickHouse リリース 18.10

ClickHouse リリース 18.10.3, 2018-08-13

新機能:

  • レプリケーションに HTTPS を使用できるようになりました。 #2760
  • 既存の murmurHash2_32 に加えて、murmurHash2_64murmurHash3_32murmurHash3_64murmurHash3_128 関数が追加されました。 #2791
  • ClickHouse ODBC ドライバ(ODBCDriver2 出力フォーマット)で Nullable 型がサポートされました。 #2834
  • キー列で UUID がサポートされました。

改良:

  • 設定ファイルから削除されたクラスタを、サーバーの再起動なしで削除できるようになりました。 #2777
  • 設定ファイルから削除された外部ディクショナリを、サーバーの再起動なしで削除できるようになりました。 #2779
  • Kafka テーブルエンジンに SETTINGS のサポートが追加されました。 Alexander Marshalov
  • UUID データ型の改良(まだ完了していません)。 #2618
  • SummingMergeTreeCollapsingMergeTreeVersionedCollapsingMergeTree エンジンで、マージ後の空のパーツがサポートされました。 #2815
  • 完了したミューテーションの古いレコードが削除されるようになりました(ALTER DELETE)。 #2784
  • system.merge_tree_settings テーブルが追加されました。 Kirill Shvakov
  • system.tables テーブルに依存関係を表す列 dependencies_databasedependencies_table が追加されました。 Winter Zhang
  • max_partition_size_to_drop 設定オプションが追加されました。 #2782
  • output_format_json_escape_forward_slashes オプションが追加されました。 Alexander Bocharov
  • max_fetch_partition_retries_count 設定が追加されました。 #2831
  • ローカルレプリカを優先する動作を無効化し、プロセス間のやり取りなしでローカルレプリカにアクセスするための prefer_localhost_replica 設定が追加されました。 #2832
  • 集約対象が空の Float32 または Float64 セットである場合、quantileExact 集約関数は nan を返すようになりました。 Sundy Li

バグ修正:

  • ODBC の接続文字列パラメータに対する不要なエスケープを削除しました。これにより接続を確立できない問題が発生していました。この不具合はバージョン 18.6.0 で導入されました。
  • レプリケーションキューにおける REPLACE PARTITION コマンドの処理ロジックを修正しました。同じパーティションに対する REPLACE コマンドが 2 つ存在する場合、不正なロジックにより、そのうちの 1 つがレプリケーションキューに残ったまま実行されないことがありました。#2814
  • すべてのデータパーツが空である場合(マージから生成されたパーツ、または ALTER DELETE によりすべてのデータが削除された結果として生成されたパーツ)に発生するマージのバグを修正しました。このバグはバージョン 18.1.0 で導入されました。#2930
  • 並行して実行される Set または Join に関するエラーを修正しました。Amos Bird
  • サブクエリ内の UNION ALL クエリで、SELECT クエリの 1 つに重複したカラム名が含まれている場合に発生していた Block structure mismatch in UNION stream: different number of columns エラーを修正しました。Winter Zhang
  • MySQL サーバーへの接続時に例外が発生した場合のメモリリークを修正しました。
  • クエリエラー発生時の clickhouse-client の誤ったレスポンスコードを修正しました。
  • DISTINCT を含むマテリアライズドビューの誤った動作を修正しました。#2795

後方互換性のない変更

  • Distributed テーブルに対する CHECK TABLE クエリのサポートを削除しました。

ビルドの変更:

  • アロケータを置き換えました: tcmalloc の代わりに jemalloc を使用するようにしました。シナリオによっては、速度が最大 20% 向上します。ただし、最大 20% 低速化したクエリもあります。いくつかのシナリオではメモリ消費量がおよそ 10% 削減され、安定性が向上しました。競合の激しい負荷では、ユーザー空間およびシステム空間における CPU 使用率はわずかに増加するだけです。#2773
  • サブモジュール由来の libressl を使用するようにしました。#1983 #2807
  • サブモジュール由来の unixodbc を使用するようにしました。#2789
  • サブモジュール由来の mariadb-connector-c を使用するようにしました。#2785
  • テストデータの有無に依存する機能テスト用のファイルをリポジトリに追加しました(当面の間、テストデータ自体は含まれていません)。

ClickHouse Release 18.6

ClickHouse Release 18.6.0, 2018-08-02

新機能:

  • JOIN ON 構文に対して ON 句内の式のサポートを追加しました: JOIN ON Expr([table.]column ...) = Expr([table.]column, ...) [AND Expr([table.]column, ...) = Expr([table.]column, ...) ...] 式は AND 演算子で連結された等価条件のチェーンでなければなりません。等号の各側は、テーブルのいずれか一方のカラムを使った任意の式とすることができます。右側のテーブルについては、完全修飾カラム名(table.namedatabase.table.nametable_alias.namesubquery_alias.name)の使用がサポートされています。 #2742
  • レプリケーションで HTTPS を有効化できるようになりました。 #2760

改良:

  • サーバーが自身のバージョンのパッチコンポーネント(patch component)をクライアントへ渡すようになりました。パッチコンポーネントに関するデータは system.processes および query_log に含まれます。 #2646

ClickHouse リリース 18.5

ClickHouse リリース 18.5.1, 2018-07-31

新機能:

  • ハッシュ関数 murmurHash2_32 を追加しました #2756

改善点:

  • 環境変数から設定ファイル内の値を設定できる from_env 属性を使用できるようになりました #2741
  • coalesceifNull、および nullIf 関数の大文字小文字を区別しないバージョンを追加しました #2752

バグ修正:

  • レプリカの起動時に発生する可能性があったバグを修正しました #2759

ClickHouse リリース 18.4

ClickHouse リリース 18.4.0, 2018-07-28

新機能:

  • 次のシステムテーブルを追加: formats, data_type_families, aggregate_function_combinators, table_functions, table_engines, collations #2721
  • remote または cluster テーブル関数の引数として、テーブルの代わりにテーブル関数を使用できるようにした #2708
  • レプリケーションプロトコルでの HTTP Basic 認証をサポート #2727
  • has 関数で、Enum 値の配列内を数値で検索できるようにした Maxim Khrisanfov
  • Kafka から読み取る際に任意のメッセージセパレータを指定できるようにした Amos Bird

改良:

  • ALTER TABLE t DELETE WHERE クエリは、WHERE 条件の影響を受けなかったデータパーツを書き換えないようにした #2694
  • ReplicatedMergeTree テーブル用の use_minimalistic_checksums_in_zookeeper オプションをデフォルトで有効化。この設定はバージョン 1.1.54378 (2018-04-16) で追加された。1.1.54378 より古いバージョンはインストールできなくなった。
  • ON CLUSTER を指定した KILL および OPTIMIZE クエリの実行をサポート Winter Zhang

バグ修正:

  • IN 式を含む集約で発生していた Column ... is not under an aggregate function and not in GROUP BY エラーを修正。このバグはバージョン 18.1.0 で導入された。(bbdd780b)
  • windowFunnel 集約関数のバグを修正 Winter Zhang
  • anyHeavy 集約関数のバグを修正 (a2101df2)。
  • countArray() 集約関数を使用した際にサーバがクラッシュする問題を修正。

後方互換性のない変更:

  • Kafka エンジンのパラメータが、Kafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_schema, kafka_num_consumers]) から Kafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_row_delimiter, kafka_schema, kafka_num_consumers]) に変更された。テーブルで kafka_schema または kafka_num_consumers パラメータを使用している場合は、メタデータファイル path/metadata/database/table.sql を手動で編集し、値が ''kafka_row_delimiter パラメータを追加する必要がある。

ClickHouse リリース 18.1

ClickHouse リリース 18.1.0, 2018-07-23

新機能:

  • 非レプリケートな MergeTree テーブルに対する ALTER TABLE t DELETE WHERE クエリへの対応(#2634)。
  • uniq* 系集約関数で任意の型を扱えるように対応(#2010)。
  • 比較演算子で任意の型を扱えるように対応(#2026)。
  • users.xml ファイルで、10.0.0.1/255.255.255.0 形式のサブネットマスクを設定できるようになりました。これは、中間にゼロが含まれる IPv6 ネットワークに対してマスクを使用するために必要です(#2637)。
  • arrayDistinct 関数を追加(#2670)。
  • SummingMergeTree エンジンが AggregateFunction 型カラムを扱えるようになりました(Constantin S. Pan)。

改良:

  • リリースバージョンの番号付け方式を変更しました。先頭の部分にはリリース年(西暦。モスクワタイムゾーンの年から 2000 を引いた値)、2 番目の部分にはメジャーな変更を表す番号(ほとんどのリリースで増加)、3 番目の部分にはパッチバージョンが含まれます。特にチェンジログで明記されていない限り、リリース間の後方互換性は維持されます。
  • 浮動小数点数から文字列への変換を高速化しました(Amos Bird)。
  • パースエラーにより挿入時に一部の行がスキップされた場合(input_allow_errors_num および input_allow_errors_ratio 設定を有効にしている場合に発生し得ます)、スキップされた行数がサーバーログに書き込まれるようになりました(Leonardo Cecchi)。

バグ修正:

  • 一時テーブルに対する TRUNCATE コマンドを修正(Amos Bird)。
  • 応答読み取り中のネットワークエラー発生時に ZooKeeper クライアントライブラリでまれに発生していたデッドロックを修正(c315200)。
  • Nullable 型への CAST 中に発生していたエラーを修正(#1322)。
  • 区間の境界が一致している場合に maxIntersection() 関数が誤った結果を返す問題を修正(Michael Furmur)。
  • 関数引数内の OR 式チェーンの誤った変換を修正(chenxing-xc)。
  • 別のサブクエリの内部に IN (subquery) 式を含むクエリでのパフォーマンス低下を修正(#2571)。
  • CAST 関数が大文字で記述されていない場合に、異なるバージョンのサーバー間で分散クエリ実行時の非互換性が発生していた問題を修正(fe8c4d6)。
  • 外部 DBMS へのクエリで、識別子に対するクォートが不足していた問題を修正(#2635)。

後方互換性のない変更:

  • 数値のゼロのみを含む文字列から DateTime への変換は行えません。例: SELECT toDateTime('0')。これはテーブルで DateTime DEFAULT '0' が動作しない理由でもあり、辞書における <null_value>0</null_value> が動作しない理由でもあります。解決策: 00000-00-00 00:00:00 に置き換えてください。

ClickHouse リリース 1.1

ClickHouse リリース 1.1.54394, 2018-07-12

新機能:

  • 集約関数 histogram を追加しました(Mikhail Surin)。
  • OPTIMIZE TABLE ... FINAL が、ReplicatedMergeTree に対してパーティションを指定せずに使用できるようになりました(Amos Bird)。

バグ修正:

  • レプリケートデータの送信およびダウンロード時の読み書きにおいて、ソケットのタイムアウト(1 秒)が非常に短すぎたために、ネットワークまたはディスクに負荷がある場合に大きなパーツをダウンロードできず(パーツのダウンロードを繰り返し試行する状態になる)、問題が発生していたのを修正しました。この不具合はバージョン 1.1.54388 で発生していました。
  • テーブルに重複するデータブロックを挿入した場合に、ZooKeeper で chroot を使用すると問題が発生する不具合を修正しました。
  • has 関数が Nullable 要素を持つ配列に対して正しく動作するようになりました(#2115)。
  • system.tables テーブルが分散クエリで正しく動作するようになりました。metadata_modification_time および engine_full カラムは非仮想カラムになりました。また、テーブルからこれらのカラムだけをクエリした場合に発生していたエラーを修正しました。
  • 空のデータブロックを挿入した後の、空の TinyLog テーブルの動作を修正しました(#2563)。
  • ZooKeeper 内のノード値が NULL の場合でも、system.zookeeper テーブルが動作するようになりました。

ClickHouse リリース 1.1.54390, 2018-07-06

新機能:

  • クエリを multipart/form-data 形式(query フィールド)で送信できるようになりました。これは、クエリ処理用に外部データも同時に送信する場合に便利です(Olga Hvostikova)。
  • CSV 形式のデータ読み込み時に、シングルクオートおよびダブルクオートの処理を有効/無効にできるようになりました。これは format_csv_allow_single_quotes および format_csv_allow_double_quotes 設定で構成できます(Amos Bird)。
  • OPTIMIZE TABLE ... FINAL が、非レプリケート版の MergeTree に対してパーティションを指定せずに使用できるようになりました(Amos Bird)。

改善:

  • テーブルインデックスを利用できる場合の IN 演算子の使用時に、パフォーマンスを改善し、メモリ消費量を削減し、メモリ消費量のトラッキングを正しく行うようにしました(#2584)。
  • データパーツ追加時の冗長なチェックサム検証を削除しました。これはレプリカ数が非常に多いケースで重要であり、そのような場合、合計のチェック回数が N^2(N の二乗)になっていました。
  • arrayEnumerateUniq 関数に対し、Array(Tuple(...)) 引数のサポートを追加しました(#2573)。
  • runningDifference 関数に Nullable のサポートを追加しました(#2594)。
  • 非常に多くの式が存在する場合のクエリ解析のパフォーマンスを改善しました(#2572)。
  • ReplicatedMergeTree テーブルでマージ対象のデータパーツの選択を高速化しました。ZooKeeper セッションの復旧も高速化しました(#2597)。
  • MergeTree テーブル用の format_version.txt ファイルが存在しない場合に再作成されるようになりました。これは、ファイルを含まないディレクトリ構造をコピーした後に ClickHouse を起動する場合に有用です(Ciprian Hacman)。

バグ修正:

  • ZooKeeper を使用する際、サーバー再起動前のテーブルのセッションおよび読み取り専用状態を復元できなくなる可能性があったバグを修正しました。
  • ZooKeeper を使用する際、セッションが中断された場合に古いノードが削除されないことがあるバグを修正しました。
  • Float 引数に対する quantileTDigest 関数のエラーを修正しました(このバグはバージョン 1.1.54388 で導入されました)(Mikhail Surin)。
  • 同じサイズの符号付き/符号なし整数型を相互変換する関数内に主キー列がある場合に、MergeTree テーブルのインデックスで発生していたバグを修正しました(#2603)。
  • macros が使用されているにもかかわらず、設定ファイルに定義されていない場合に発生していたセグメンテーションフォルトを修正しました(#2570)。
  • クライアント再接続時にデフォルトデータベースへ切り替わってしまう問題を修正しました(#2583)。
  • use_index_for_in_with_subqueries 設定が無効化されているときに発生していたバグを修正しました。

セキュリティ修正:

  • MySQL 接続時にファイル送信(LOAD DATA LOCAL INFILE)はできなくなりました。

ClickHouse Release 1.1.54388, 2018-06-28

新機能:

  • レプリケートされたテーブルに対する ALTER TABLE t DELETE WHERE クエリをサポートしました。この種のクエリの進行状況を追跡するために system.mutations テーブルを追加しました。
  • *MergeTree テーブルに対する ALTER TABLE t [REPLACE|ATTACH] PARTITION クエリをサポートしました。
  • TRUNCATE TABLE クエリをサポートしました(Winter Zhang)。
  • レプリケートされたテーブル向けに複数の新しい SYSTEM クエリを追加しました(RESTART REPLICASSYNC REPLICA[STOP|START] [MERGES|FETCHES|SENDS REPLICATED|REPLICATION QUEUES])。
  • MySQL エンジンを持つテーブルおよび対応するテーブル関数への書き込みが可能になりました(sundy-li)。
  • url() テーブル関数および URL テーブルエンジンを追加しました(Alexander Sapin)。
  • windowFunnel 集約関数を追加しました(sundy-li)。
  • 文字列用の新しい startsWith および endsWith 関数を追加しました(Vadim Plakhtinsky)。
  • numbers() テーブル関数でオフセットを指定できるようになりました(Winter Zhang)。
  • clickhouse-client のパスワードを対話的に入力できるようになりました。
  • サーバーログを syslog に送信できるようになりました(Alexander Krasheninnikov)。
  • 共有ライブラリをソースとする辞書でのログ出力をサポートしました(Alexander Sapin)。
  • カスタム CSV 区切り文字をサポートしました(Ivan Zhukov)。
  • date_time_input_format 設定を追加しました。この設定を 'best_effort' に切り替えると、DateTime 値を幅広い形式で読み取れるようになります。
  • データ難読化用ユーティリティ clickhouse-obfuscator を追加しました。使用例: パフォーマンステストで使用したデータの公開。

実験的機能:

  • and の引数を必要な箇所でのみ計算できるようにしました(Anastasia Tsarkova)。
  • 一部の式に対して、ネイティブコードへの JIT コンパイルが利用可能になりました(pyos)。

バグ修正:

  • DISTINCTORDER BY を含むクエリで重複が表示されなくなりました。
  • ARRAY JOINarrayFilter を含むクエリで誤った結果が返されなくなりました。
  • Nested 構造から配列カラムを読み取る際のエラーを修正しました(#2066)。
  • HAVING tuple IN (...) のような HAVING 句を含むクエリを解析する際のエラーを修正しました。
  • 再帰的なエイリアスを含むクエリを解析する際のエラーを修正しました。
  • すべての行をフィルタする PREWHERE 条件付きで ReplacingMergeTree から読み取る際のエラーを修正しました(#2525)。
  • HTTP インターフェイスでセッションを使用した場合に、ユーザープロファイル設定が適用されない問題を修正しました。
  • clickhouse-local におけるコマンドラインパラメータからの設定の適用方法を修正しました。
  • ZooKeeper クライアントライブラリが、サーバーから受信したセッションタイムアウト値を使用するようになりました。
  • ZooKeeper クライアントライブラリで、クライアントがサーバーからのレスポンスをタイムアウト値を超えて待機してしまうバグを修正しました。
  • パーティションキーのカラムに条件を持つクエリに対するパーツのプルーニングを修正しました(#2342)。
  • CLEAR COLUMN IN PARTITION 実行後でもマージが可能になりました(#2315)。
  • ODBC テーブル関数での型マッピングを修正しました(sundy-li)。
  • タイムゾーンあり/なしの DateTime 型の比較を修正しました(Alexander Bocharov)。
  • CAST 演算子の構文解析とフォーマットを修正しました。
  • Distributed テーブルエンジン向けマテリアライズドビューへの挿入を修正しました(Babacar Diassé)。
  • Kafka エンジンからマテリアライズドビューへデータを書き込む際のレースコンディションを修正しました(Yangkuan Liu)。
  • remote() テーブル関数における SSRF を修正しました。
  • 複数行モードにおける clickhouse-client の終了時の挙動を修正しました(#2510)。

Improvements:

  • レプリケートテーブルにおけるバックグラウンドタスクが、個別スレッドではなくスレッドプールで実行されるようになりました(Silviu Caragea)。
  • LZ4 圧縮のパフォーマンスを改善しました。
  • 多数の JOIN とサブクエリを含むクエリの解析が高速化されました。
  • ネットワークエラーが多すぎる場合、DNS キャッシュが自動的に更新されるようになりました。
  • いずれか 1 つのマテリアライズドビューへの挿入が、パーツ数が多すぎるために不可能な場合、テーブルへの挿入そのものが行われないようになりました。
  • QuerySelectQueryInsertQuery のイベントカウンタの不整合を修正しました。
  • タプル型が一致していれば、tuple IN (SELECT tuple) のような式が許可されるようになりました。
  • ZooKeeper を設定していなくても、レプリケートテーブルを持つサーバーを起動できるようになりました。
  • 利用可能な CPU コア数の計算時に、cgroups の制限が考慮されるようになりました(Atri Sharma)。
  • systemd 設定ファイルにおいて、設定ディレクトリに対する chown を追加しました(Mikhail Shiryaev)。

Build Changes:

  • ビルドに gcc8 コンパイラを使用できるようになりました。
  • サブモジュールから LLVM をビルドできるようになりました。
  • librdkafka ライブラリのバージョンを v0.11.4 に更新しました。
  • システムの libcpuid ライブラリを使用できるようになりました。ライブラリのバージョンは 0.4.0 に更新されました。
  • vectorclass ライブラリを使用したビルドを修正しました(Babacar Diassé)。
  • CMake がデフォルトで(-G Ninja を使用した場合と同様に)ninja 用のファイルを生成するようになりました。
  • libtermcap の代わりに libtinfo ライブラリを使用できるようになりました(Georgy Kondratiev)。
  • Fedora Rawhide におけるヘッダーファイルの競合を修正しました(#2520)。

Backward Incompatible Changes:

  • VerticalPretty* フォーマットでのエスケープを削除し、VerticalRaw フォーマットを削除しました。
  • 分散クエリで、バージョン 1.1.54388(またはそれ以降)のサーバーとそれ以前のバージョンのサーバーを同時に使用しており、かつクエリに AS キーワードなしの cast(x, 'Type') 式が含まれ、さらに cast という単語が大文字になっていない場合、Not found column cast(0, 'UInt8') in block のようなメッセージとともに例外がスローされます。解決策: クラスター全体のサーバーをアップデートしてください。

ClickHouse Release 1.1.54385, 2018-06-01

バグ修正:

  • 一部のケースで ZooKeeper の操作がブロックされてしまう不具合を修正しました。

ClickHouse Release 1.1.54383, 2018-05-22

バグ修正:

  • テーブルに多数のレプリカが存在する場合に、レプリケーションキューの処理が低速化する問題を修正しました。

ClickHouse Release 1.1.54381, 2018-05-14

バグ修正:

  • ClickHouse が ZooKeeper サーバーへの接続を失った際に、ZooKeeper 内でノードがリークする問題を修正しました。

ClickHouse Release 1.1.54380, 2018-04-21

新機能:

  • テーブル関数 file(path, format, structure) を追加しました。/dev/urandom からバイトを読み込む例: ln -s /dev/urandom /var/lib/clickhouse/user_files/randomclickhouse-client -q "SELECT * FROM file('random', 'RowBinary', 'd UInt8') LIMIT 10" ```。

改善:

  • サブクエリを () で囲むことで、クエリの可読性を向上できるようにしました。例: (SELECT 1) UNION ALL (SELECT 1)
  • system.processes テーブルに対する単純な SELECT クエリは、max_concurrent_queries 制限の対象外としました。

バグ修正:

  • MATERIALIZED VIEW からの IN 演算子による SELECT の誤った挙動を修正しました。
  • partition_key_column IN (...) のような式でのパーティションインデックスによるフィルタリングの誤動作を修正しました。
  • テーブルに対して REANAME が実行された場合、非リーダーレプリカ上で OPTIMIZE クエリを実行できない問題を修正しました。
  • 非リーダーレプリカ上で OPTIMIZE または ALTER クエリを実行する際の認可エラーを修正しました。
  • KILL QUERY がフリーズする問題を修正しました。
  • ZooKeeper クライアントライブラリの不具合を修正しました。この不具合により、ウォッチの喪失、分散 DDL キューのフリーズ、ZooKeeper 設定で空でない chroot プレフィックスを使用している場合のレプリケーションキューの遅延が発生していました。

後方互換性のない変更:

  • (a, b) IN (SELECT (a, b)) のような式のサポートを削除しました(同等の式 (a, b) IN (SELECT a, b) を使用できます)。以前のリリースでは、これらの式は WHERE でのフィルタリング結果が不定になるか、エラーの原因となっていました。

ClickHouse Release 1.1.54378, 2018-04-16

新機能:

  • サーバーを再起動せずにログレベルを変更できるようになりました。
  • SHOW CREATE DATABASE クエリを追加しました。
  • query_idclickhouse-client に渡せるようになりました (elBroom)。
  • 新しい設定: max_network_bandwidth_for_all_users
  • MATERIALIZED VIEW に対して ALTER TABLE ... PARTITION ... をサポートしました。
  • システムテーブルに、非圧縮形式でのデータパーツのサイズ情報を追加しました。
  • 分散テーブルに対するサーバー間暗号化をサポートしました(<remote_servers> 内のレプリカ設定で <secure>1</secure> を指定)。
  • Zookeeper に保存されるデータ量を最小化するため、ReplicatedMergeTree ファミリーのテーブルレベル設定を追加しました: use_minimalistic_checksums_in_zookeeper = 1
  • clickhouse-client のプロンプトを設定できるようになりました。デフォルトでは、サーバー名がプロンプトに表示されるようになりました。サーバーの表示名は変更可能であり、X-ClickHouse-Display-Name HTTP ヘッダーでも送信されます (Kirill Shvakov)。
  • Kafka エンジンに対して、複数のカンマ区切りの topics を指定できるようになりました (Tobias Adamson)。
  • クエリが KILL QUERY または replace_running_query によって停止された場合、不完全な結果ではなく Query was canceled 例外がクライアントに返されるようになりました。

Improvements:

  • ALTER TABLE ... DROP/DETACH PARTITION クエリがレプリケーションキューの先頭で実行されるようになりました。
  • テーブルに 1 つのデータパーツしかない場合でも、SELECT ... FINAL および OPTIMIZE ... FINAL を使用できるようになりました。
  • query_log テーブルが手動で削除された場合、その場で再作成されるようになりました (Kirill Shvakov)。
  • lengthUTF8 関数の実行速度を向上しました (zhang2014)。
  • シャード数が非常に多い場合の、Distributed テーブル (insert_distributed_sync = 1) への同期挿入のパフォーマンスを改善しました。
  • サーバーがクライアントから send_timeoutreceive_timeout 設定を受け取り、クライアントへの接続時にそれらを適用するようになりました(適用順序は逆で、サーバーソケットの send_timeout はクライアントから受け取った receive_timeout の値に、receive_timeoutsend_timeout の値にそれぞれ設定されます)。
  • Distributed テーブルへの非同期挿入におけるクラッシュ復旧をより堅牢にしました。
  • countEqual 関数の戻り値の型を UInt32 から UInt64 に変更しました (谢磊)。

Bug Fixes:

  • 左辺が Nullable のときの IN に関するエラーを修正しました。
  • タプルの構成要素の一部がテーブルインデックスに含まれている場合でも、IN でタプルを使用した際に正しい結果が返されるようになりました。
  • 分散クエリで max_execution_time 制限が正しく動作するようになりました。
  • system.columns テーブルで複合カラムのサイズを計算する際のエラーを修正しました。
  • 一時テーブル CREATE TEMPORARY TABLE IF NOT EXISTS. を作成する際のエラーを修正しました。
  • StorageKafka におけるエラーを修正しました (##2075)。
  • 一部の集約関数に無効な引数が渡された場合にサーバーがクラッシュする問題を修正しました。
  • DETACH DATABASE クエリが ReplicatedMergeTree テーブルのバックグラウンドタスクを停止できなかった不具合を修正しました。
  • 集約済みマテリアライズドビューへの挿入時に Too many parts 状態が発生しにくくなるようにしました (##2084)。
  • 同一レベルで、ある置換の後に別の置換を続けて行う必要がある場合の、設定ファイルにおける置換の再帰的処理を修正しました。
  • UNION ALL を含むクエリを使用する VIEW を作成する際のメタデータファイル内の構文を修正しました。
  • 複合キーを持つネストされたデータ構造の合計処理において、SummingMergeTree が正しく動作するようになりました。
  • ReplicatedMergeTree テーブルにおけるリーダー選出時に競合状態が発生する可能性を修正しました。

Build Changes:

  • ビルドが make の代わりに ninja をサポートし、リリースビルドではデフォルトで ninja を使用するようになりました。
  • パッケージ名を変更しました: clickhouse-server-baseclickhouse-common-static に、clickhouse-server-commonclickhouse-server に、clickhouse-common-dbgclickhouse-common-static-dbg にそれぞれ変更しました。インストールには clickhouse-server clickhouse-client を使用してください。後方互換性のため、旧パッケージ名もリポジトリで引き続き利用可能です。

Backward Incompatible Changes:

  • 左側に配列が指定された場合の IN 式に対する特別な解釈を削除しました。これまでは、式 arr IN (set) は「少なくとも 1 つの arr の要素が set に属している」と解釈されていました。この新しいバージョンで同じ動作を得るには、arrayExists(x -> x IN (set), arr) と書いてください。
  • Poco ライブラリでデフォルトで誤って有効化されていたソケットオプション SO_REUSEPORT の不正な使用を無効にしました。Linux では、listen 用にアドレス ::0.0.0.0 を同時に指定する理由はもはやないことに注意してください。IPv4 および IPv6 の両方で接続待ち受けを行うには(デフォルトのカーネル設定の場合)、:: だけを使用してください。設定ファイルで <listen_reuse_port>1</listen_reuse_port> を指定することで、以前のバージョンの動作に戻すこともできます。

ClickHouse Release 1.1.54370, 2018-03-16

New Features:

  • system.macros テーブルを追加し、設定ファイルが変更されたときにマクロが自動更新されるようにしました。
  • SYSTEM RELOAD CONFIG クエリを追加しました。
  • 同時に交差している区間 [left; right] の最大数を返す集約関数 maxIntersections(left_col, right_col) を追加しました。maxIntersectionsPosition(left, right) 関数は「最大」の区間の開始点を返します。(Michael Furmur)。

Improvements:

  • Replicated テーブルへのデータ挿入時に、ZooKeeper へのリクエスト数が減少しました(ユーザーレベルのエラーの大半が ZooKeeper ログから消えました)。
  • データセットにエイリアスを作成できるようにしました。例: WITH (1, 2, 3) AS set SELECT number IN set FROM system.numbers LIMIT 10.

Bug Fixes:

  • Distributed テーブルに対する Merge テーブルからの読み取り時に発生していた Illegal PREWHERE エラーを修正しました。
  • IPv4 のみの Docker コンテナで clickhouse-server を起動できるようにする修正を追加しました。
  • システムテーブル system.parts_columns tables. からの読み取り時に発生していたレースコンディションを修正しました。
  • Distributed テーブルへの同期挿入時の二重バッファリングを削除しました。これにより接続のタイムアウトが発生する可能性がありました。
  • 利用できないレプリカに対して SELECT クエリを開始する前に、過度に長く待機してしまうバグを修正しました。
  • system.parts テーブル内の日付が誤っていた問題を修正しました。
  • ZooKeeper クラスターの設定で chroot が空でない場合に、Replicated テーブルにデータを挿入できなくなっていたバグを修正しました。
  • 空の ORDER BY を持つテーブルに対する垂直マージアルゴリズムを修正しました。
  • リモートテーブルへのクエリで、リクエスト送信元サーバーに辞書が存在しない場合でも辞書を使用できる機能を復元しました。この機能はリリース 1.1.54362 で失われていました。
  • SELECT * FROM remote('server2', default.table) WHERE col IN (SELECT col2 FROM default.table) のようなクエリにおいて、IN の右側がローカルではなくリモートの default.table を使用すべき場合の動作を復元しました。この動作はバージョン 1.1.54358 で不正になっていました。
  • Not found column ... in block の不要なエラーレベルのログ出力を削除しました。

ClickHouse Release 1.1.54362, 2018-03-11

New Features:

  • 空の集合に対する GROUP BY なしの集約(例: SELECT count(*) FROM table WHERE 0)は、SQL 標準に準拠して、集約関数に対して NULL 値を持つ 1 行の結果を返すようになりました。以前の動作(空の結果を返す)に戻すには、empty_result_for_aggregation_by_empty_set を 1 に設定してください。
  • UNION ALL に対して型変換を追加しました。SQL 標準に準拠し、UNION ALL の各 SELECT 句では異なるエイリアス名を使用できます。
  • LIMIT BY 句で任意の式を使用できるようになりました。これまでは、SELECT 句で得られる列のみを使用することができました。
  • MergeTree テーブルのインデックスは、主キーを構成するカラムのタプルに対して IN が適用される場合に使用されます。例: WHERE (UserID, EventDate) IN ((123, '2000-01-01'), ...) (Anastasiya Tsarkova)。
  • クラスター間でのデータコピーおよび再シャーディングを行うための clickhouse-copier ツールを追加しました(ベータ版)。
  • 一貫性ハッシュ関数 yandexConsistentHashjumpConsistentHashsumburConsistentHash を追加しました。これらは、後続のリシャーディング時のネットワークトラフィック量を削減するためのシャーディングキーとして使用できます。
  • 追加された関数:arrayAny, arrayAll, hasAny, hasAll, arrayIntersect, arrayResize
  • arrayCumSum 関数を追加しました(Javi Santana)。
  • parseDateTimeBestEffortparseDateTimeBestEffortOrZeroparseDateTimeBestEffortOrNull 関数を追加し、非常に多様な形式で記述された文字列から DateTime を読み取れるようにしました。
  • 更新時に外部ディクショナリからデータの一部のみを再読み込みできるようになりました(前回の読み込み時よりも指定されたフィールドの値が大きいレコードだけを読み込みます)(Arsen Hakobyan)。
  • cluster テーブル関数を追加しました。例: cluster(cluster_name, db, table)remote テーブル関数は、クラスタ名が識別子として指定されている場合、最初の引数としてクラスタ名を受け取ることができます。
  • remote および cluster のテーブル関数は、INSERT クエリで使用できます。
  • system.tables テーブルに create_table_queryengine_full の仮想カラムを追加しました。metadata_modification_time カラムも仮想カラムです。
  • system.tables および system.databases テーブルに data_pathmetadata_path 列を追加し、system.parts および system.parts_columns テーブルに path 列を追加しました。
  • system.part_log テーブルにおけるマージに関する情報を追加しました。
  • system.query_log テーブルに対して任意のパーティショニングキーを使用できるようになりました (Kirill Shvakov)。
  • SHOW TABLES クエリで一時テーブルも表示されるようになりました。system.tables に一時テーブルと is_temporary 列を追加しました (zhang2014)。
  • DROP TEMPORARY TABLE および EXISTS TEMPORARY TABLE クエリを追加 (zhang2014)。
  • 一時テーブルでの SHOW CREATE TABLE サポート (zhang2014)。
  • 内部プロセスが使用する設定のための system_profile 構成パラメータを追加しました。
  • MongoDB 辞書で object_id を属性として読み込むことのサポート (Pavel Litvinenko)。
  • MongoDB ソースを使用する外部ディクショナリでデータを読み込む際に、デフォルト値として null を読み取れるようにしました(Pavel Litvinenko)。
  • シングルクォートで囲まずに、Unix タイムスタンプから Values 形式の DateTime 値を読み取る。
  • remote テーブル関数では、一部のレプリカに要求されたテーブルが存在しない場合でもフェイルオーバーがサポートされています。
  • 設定は、clickhouse-server を実行する際にコマンドラインから上書きできます。例:clickhouse-server -- --logger.level=information
  • FixedString 引数に対する empty 関数を実装しました。この関数は、文字列が全てヌルバイトから成る場合に 1 を返します (zhang2014)。
  • 一部のアドレスで待ち受けできない場合でもプロセスを終了せず、少なくともいずれかの待ち受けアドレスで待ち受けを継続するための設定パラメータ listen_try を追加しました(IPv4 または IPv6 のサポートが無効化されているシステムで有用です)。
  • VersionedCollapsingMergeTree テーブルエンジンを追加しました。
  • library 辞書ソースで、行および任意の数値型をサポート。
  • MergeTree テーブルは主キーを指定せずに使用できます(ORDER BY tuple() を指定する必要があります)。
  • Nullable 型は、引数が NULL でない場合、非 Nullable 型にキャストできます。
  • RENAME TABLEVIEW に対しても実行できます。
  • throwIf 関数を追加しました。
  • odbc_default_field_size オプションを追加しました。これにより、ODBC ソースから読み込まれる値の最大サイズを増やすことができます(デフォルトは 1024)。
  • system.processes テーブルと SHOW PROCESSLIST に、is_cancelled および peak_memory_usage 列が追加されました。

改善点:

  • 結果に対する制限およびクォータは、INSERT SELECT クエリや SELECT サブクエリの中間データには適用されなくなりました。
  • サーバー起動時に Replicated テーブルの状態をチェックする際に、force_restore_data が誤ってトリガーされる事例が減少しました。
  • allow_distributed_ddl オプションを追加しました。
  • MergeTree テーブルキーの式で、非決定的関数は使用できなくなりました。
  • config.d ディレクトリからの置換を含むファイルは、アルファベット順で読み込まれるようになりました。
  • 要素の一つが空配列である定数の多次元配列に対して、arrayElement 関数のパフォーマンスを改善しました。例: [[1], []][x]
  • 非常に大きな置換(例えば、非常に大きな IP ネットワークのリスト)を含む設定ファイルを使用する場合に、サーバーの起動が以前より高速になりました。
  • クエリ実行時には、テーブル値関数は 1 回だけ実行されるようになりました。以前は、remote および mysql テーブル値関数は、リモートサーバーからテーブル構造を取得するために同じクエリを 2 回実行していました。
  • MkDocs ドキュメントジェネレーターを使用するようになりました。
  • 他のカラムの DEFAULT/MATERIALIZED 式が依存しているテーブルカラムを削除しようとした場合、例外がスローされるようになりました (zhang2014)。
  • テキスト形式で空行を、Float データ型に対して数値 0 としてパースできる機能を追加しました。この機能は以前は利用可能でしたが、リリース 1.1.54342 で失われていました。
  • Enum 値を minmaxsum などのいくつかの関数で使用できるようになりました。この場合、対応する数値が使用されます。この機能は以前は利用可能でしたが、リリース 1.1.54337 で失われていました。
  • エイリアスを再帰的に展開した後の AST のサイズを制限するために、max_expanded_ast_elements を追加しました。

バグ修正:

  • 不要なカラムがサブクエリから誤って削除される、または UNION ALL を含むサブクエリから削除されないケースを修正しました。
  • ReplacingMergeTree テーブルにおけるマージのバグを修正しました。
  • Distributed テーブルでの同期挿入 (insert_distributed_sync = 1) を修正しました。
  • サブクエリ内に重複カラムが存在する場合の FULL および RIGHT JOIN の特定の使用で発生していたセグメンテーションフォルトを修正しました。
  • replace_running_query および KILL QUERY の特定の使用で発生していたセグメンテーションフォルトを修正しました。
  • system.dictionaries テーブル内の source および last_exception カラムの順序を修正しました。
  • DROP DATABASE クエリがメタデータファイルを削除しないバグを修正しました。
  • Dictionary データベースに対する DROP DATABASE クエリを修正しました。
  • 1 億件を超えるカーディナリティに対して uniqHLL12 および uniqCombined 関数の精度が低かった問題を修正しました (Alex Bocharov)。
  • INSERT クエリにおいて、明示的なデフォルト式を同時に計算する必要がある場合の暗黙のデフォルト値の計算を修正しました (zhang2014)。
  • MergeTree テーブルへのクエリが完了しない可能性があった、まれなケースを修正しました (chenxing-xc)。
  • すべてのシャードがローカルである場合に Distributed テーブルに対して CHECK クエリを実行するとクラッシュする問題を修正しました (chenxing.xc)。
  • 正規表現を使用する関数で発生していたわずかなパフォーマンス低下を修正しました。
  • 複雑な式から多次元配列を作成する際のパフォーマンス低下を修正しました。
  • メタデータを含む .sql ファイルに余分な FORMAT セクションが現れる可能性があったバグを修正しました。
  • 明示的に指定されたテーブルを参照する MATERIALIZED VIEW を削除しようとした際に、max_table_size_to_drop 制限が適用されてしまうバグを修正しました。
  • 古いクライアントとの非互換性を修正しました(古いクライアントには DateTime('timezone') 型のデータが送信されることがあり、これを解釈できませんでした)。
  • ALTER を使用して追加されたが、古いパーティションでは空である構造の Nested カラム要素を読み取る際、これらのカラムに対する条件が PREWHERE に移動された場合のバグを修正しました。
  • Merge テーブルへのクエリで仮想 _table カラムによるテーブルフィルタリングを行う際のバグを修正しました。
  • Distributed テーブルで ALIAS カラムを使用する際のバグを修正しました。
  • quantile 系の集約関数を含むクエリに対して動的コンパイルが行えなかったバグを修正しました。
  • 非常にまれなケースで、テーブル数が多い Merge テーブルや GLOBAL サブクエリを使用している場合に、クエリ実行パイプラインで発生していたレースコンディションを修正しました。
  • 複数の引数からの集約関数を使用する際に、サイズが異なる配列を arrayReduce 関数に渡すとクラッシュする問題を修正しました。
  • MATERIALIZED VIEW 内で UNION ALL を含むクエリの使用を禁止しました。
  • サーバー起動時に part_log システムテーブルの初期化中に発生していたエラーを修正しました(デフォルトでは part_log は無効になっています)。

後方互換性のない変更:

  • distributed_ddl_allow_replicated_alter オプションを削除しました。この動作はデフォルトで有効になっています。
  • strict_insert_defaults 設定を削除しました。この機能を使用していた場合は、[email protected] までご連絡ください。
  • UnsortedMergeTree エンジンを削除しました。

ClickHouse Release 1.1.54343, 2018-02-05

  • 分散 DDL クエリおよび Distributed テーブルのコンストラクタで、クラスタ名を定義するためのマクロのサポートを追加しました: CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table')
  • SELECT ... FROM table WHERE expr IN (subquery) のようなクエリが、table のインデックスを使用して処理されるようになりました。
  • Replicated テーブルへの挿入時の重複処理を改善し、レプリケーションキューの実行を遅くしないようにしました。

ClickHouse Release 1.1.54342, 2018-01-22

このリリースには、前のリリース 1.1.54337 のバグ修正が含まれます:

  • 1.1.54337 のリグレッションを修正しました: デフォルトユーザが読み取り専用アクセスのみを持つ場合、サーバが Cannot create database in readonly mode というメッセージとともに起動を拒否していました。
  • 1.1.54337 のリグレッションを修正しました: systemd を使用しているシステムで、ログが設定に関係なく常に syslog に書き込まれ、watchdog スクリプトはいまだに init.d を使用していました。
  • 1.1.54337 のリグレッションを修正しました: Docker イメージのデフォルト設定が誤っていました。
  • GraphiteMergeTree の非決定的な挙動を修正しました(ログメッセージ Data after merge is not byte-identical to the data on another replicas として現れることがあります)。
  • Replicated テーブルに対する OPTIMIZE クエリの後に、不整合なマージが発生する可能性のあるバグを修正しました(ログメッセージ Part ... intersects the previous part として現れることがあります)。
  • Buffer テーブルが、宛先テーブルに MATERIALIZED カラムが存在する場合でも正しく動作するようになりました(by zhang2014)。
  • NULL の実装におけるバグを修正しました。

ClickHouse Release 1.1.54337, 2018-01-18

新機能:

  • テーブル内での多次元配列およびタプル(Tuple データ型)の保存サポートを追加しました。
  • DESCRIBE および INSERT クエリ向けのテーブル関数をサポートしました。DESCRIBE でサブクエリを使用できるようにしました。例: DESC TABLE remote('host', default.hits)DESC TABLE (SELECT 1)INSERT INTO TABLE FUNCTION remote('host', default.hits)INSERT INTO に加えて INSERT INTO TABLE もサポートしました。
  • タイムゾーンのサポートを改善しました。DateTime データ型に対して、テキストフォーマットでのパースおよびフォーマットに使用されるタイムゾーンを注釈として指定できるようになりました。例: DateTime('Asia/Istanbul')DateTime 引数に対して関数内でタイムゾーンが指定された場合、戻り値の型はそのタイムゾーンを保持し、値は期待どおりに表示されます。
  • 関数 toTimeZonetimeDifftoQuartertoRelativeQuarterNum を追加しました。toRelativeHour / Minute / Second 関数は、引数として Date 型の値を受け取ることができます。now 関数名は大文字小文字を区別します。
  • toStartOfFifteenMinutes 関数を追加しました(Kirill Shvakov)。
  • クエリをフォーマットするための clickhouse format ツールを追加しました。
  • format_schema_path 設定パラメータを追加しました(Marek Vavruša)。これは Cap'n Proto フォーマットでスキーマを指定するために使用します。スキーマファイルは指定されたディレクトリ内にのみ配置できます。
  • 外部ディクショナリおよびモデルの設定に対する設定ファイル置換(incl および conf.d)のサポートを追加しました(Pavel Yakunin)。
  • system.settings テーブルにドキュメント用の列を追加しました(Kirill Shvakov)。
  • MergeTree テーブルのデータパーツごとのカラムサイズに関する情報を持つ system.parts_columns テーブルを追加しました。
  • ロード済みの CatBoost 機械学習モデルに関する情報を持つ system.models テーブルを追加しました。
  • リモートデータベースへアクセスするための mysql および odbc テーブル関数と、それに対応する MySQL および ODBC テーブルエンジンを追加しました。この機能はベータ段階です。
  • groupArray 集約関数に対して、AggregateFunction 型の引数を渡せるようにしました(これにより、ある集約関数の状態の配列を作成できます)。
  • 集約関数コンビネータのさまざまな組み合わせに対する制限を削除しました。たとえば、avgForEachIf だけでなく、異なる動作を持つ avgIfForEach 集約関数も使用できます。
  • -ForEach 集約関数コンビネータを、複数引数の集約関数の場合にも拡張しました。
  • 関数が非 Nullable な結果を返す場合であっても、Nullable 引数を持つ集約関数のサポートを追加しました(Silviu Caragea によるコントリビューション)。例: groupArraygroupUniqArraytopK
  • clickhouse-client 用に max_client_network_bandwidth を追加しました(Kirill Shvakov)。
  • readonly = 2 設定を持つユーザーが、一時テーブル(CREATE、DROP、INSERT...)を扱えるようにしました(Kirill Shvakov)。
  • Kafka エンジンで複数のコンシューマを使用するためのサポートを追加しました。Kafka 向けの設定オプションを拡張しました(Marek Vavruša)。
  • intExp3 および intExp4 関数を追加しました。
  • sumKahan 集約関数を追加しました。
  • to*Number*OrNull 関数を追加しました。ここで Number は数値型です。
  • INSERT SELECT クエリに対する WITH 句のサポートを追加しました(author: zhang2014)。
  • http_connection_timeouthttp_send_timeouthttp_receive_timeout 設定を追加しました。特に、これらの設定はレプリケーション用のデータパーツのダウンロードに使用されます。これらの設定を変更することで、ネットワーク過負荷時のフェイルオーバーをより高速に行うことができます。
  • Null 型テーブルに対する ALTER のサポートを追加しました(Anastasiya Tsarkova)。
  • reinterpretAsString 関数を、メモリ上で連続して格納されるすべてのデータ型に対して拡張しました。
  • clickhouse-local ツールに --silent オプションを追加しました。これは、クエリ実行情報を stderr に出力しないようにします。
  • テキストから Date 型の値を読み取る際に、月および/または日が 2 桁ではなく 1 桁で指定されるフォーマットのサポートを追加しました(Amos Bird)。

パフォーマンス最適化:

  • 文字列引数を取る集約関数 minmaxanyanyLastanyHeavyargMinargMax のパフォーマンスを改善しました。
  • 関数 isInfiniteisFiniteisNaNroundToExp2 のパフォーマンスを改善しました。
  • テキスト形式での Date および DateTime 型値のパースとフォーマットのパフォーマンスを改善しました。
  • 浮動小数点数のパースのパフォーマンスと精度を改善しました。
  • 左右のテーブルの両方に、USING に含まれない同名の列がある場合の JOIN のメモリ使用量を削減しました。
  • 数値計算の安定性を犠牲にすることで、集約関数 varSampvarPopstddevSampstddevPopcovarSampcovarPopcorr のパフォーマンスを改善しました。従来の関数は varSampStablevarPopStablestddevSampStablestddevPopStablecovarSampStablecovarPopStablecorrStable という名前で利用できます。

バグ修正:

  • DROP または DETACH PARTITION クエリ実行後のデータ重複排除の問題を修正しました。以前のバージョンでは、パーティションを削除して同じデータを再挿入すると、挿入されたブロックが重複と見なされるため、正しく動作しませんでした。
  • POPULATE を伴う CREATE MATERIALIZED VIEW クエリにおいて、WHERE 句が誤って解釈される可能性があったバグを修正しました。
  • zookeeper_servers 設定での root_path パラメータの使用に関するバグを修正しました。
  • Date 引数を toStartOfDay に渡した場合に想定外の結果となる問題を修正しました。
  • 結果が前年になる場合における addMonths および subtractMonths 関数と INTERVAL n MONTH の算術処理を修正しました。
  • UUID データ型に対する DISTINCTJOINuniq 集約関数および外部ディクショナリの不足していたサポートを追加しました(Evgeniy Ivanov)。UUID のサポートはまだ不完全です。
  • 行の合計がゼロになる場合の SummingMergeTree の挙動を修正しました。
  • Kafka エンジンに対するさまざまな修正を行いました(Marek Vavruša)。
  • Join テーブルエンジンの不正な挙動を修正しました(Amos Bird)。
  • FreeBSD および OS X におけるアロケータの不正な挙動を修正しました。
  • extractAll 関数が空のマッチをサポートするようになりました。
  • openssl の代わりに libressl を使用することを妨げていたエラーを修正しました。
  • 一時テーブルからの CREATE TABLE AS SELECT クエリを修正しました。
  • レプリケーションキュー更新の非アトミック性を修正しました。これにより、サーバー再起動までレプリカが同期しない状態になる可能性がありました。
  • gcdlcm、および modulo% 演算子)におけるオーバーフローの可能性を修正しました(Maks Skorokhod)。
  • umask を変更した後に -preprocessed ファイルが作成されるようになりました(umask は設定で変更可能です)。
  • カスタムパーティションキーを使用している場合の、パーツのバックグラウンドチェック(MergeTreePartChecker)におけるバグを修正しました。
  • テキストフォーマットにおけるタプル(Tuple データ型の値)のパースを修正しました。
  • multiIfarray およびその他の一部の関数に渡された互換性のない型に関するエラーメッセージを改善しました。
  • Nullable 型のサポートを再設計しました。サーバークラッシュにつながる可能性のあるバグを修正しました。INSERT SELECT での不正な型変換、HAVING および PREWHERE における Nullable の不十分なサポート、join_use_nulls モード、OR 演算子の引数としての Nullable 型など、NULL サポートに関連するほぼすべてのその他のバグを修正しました。
  • データ型の内部セマンティクスに関連するさまざまなバグを修正しました。例: SummingMergeTree における Enum 型フィールドの不要な加算、Pretty フォーマットでの Enum 型のアラインメントなど。
  • 複合カラムに対して許可される組み合わせに関するチェックをより厳格にしました。
  • FixedString データ型で非常に大きなパラメータを指定した際のオーバーフローを修正しました。
  • 汎用ケースにおける topK 集約関数のバグを修正しました。
  • -Array コンビネータを持つ n 項集約関数の引数に対して、配列サイズが等しいことを確認する不足していたチェックを追加しました。
  • clickhouse-client--pager におけるバグを修正しました(著者: ks1322)。
  • exp10 関数の精度を修正しました。
  • ドキュメントとの整合性を高めるため、visitParamExtract 関数の挙動を修正しました。
  • 不正なデータ型が指定された場合にクラッシュする問題を修正しました。
  • すべてのカラムが定数である場合の DISTINCT の挙動を修正しました。
  • タプル要素インデックスとして複雑な定数式を使用した tupleElement 関数を利用する場合のクエリフォーマットを修正しました。
  • range_hashed ディクショナリ向けの Dictionary テーブルにおけるバグを修正しました。
  • FULL および RIGHT JOIN の結果に過剰な行が含まれる原因となるバグを修正しました(Amos Bird)。
  • 設定のリロード中に config.d ディレクトリ内で一時ファイルを作成・削除した際にサーバーがクラッシュする問題を修正しました。
  • SYSTEM DROP DNS CACHE クエリを修正しました。キャッシュはフラッシュされていましたが、クラスターノードのアドレスが更新されていませんでした。
  • ビュー対象のテーブルに対して DETACH TABLE を実行した後の MATERIALIZED VIEW の挙動を修正しました(Marek Vavruša)。

ビルドの改善:

  • ビルドには pbuilder ツールが使用されます。ビルドプロセスはビルドホスト環境にほぼ完全に依存しません。
  • 異なる OS バージョンに対して単一のビルド成果物を使用します。パッケージとバイナリは、幅広い Linux システムと互換性を持つように作成されています。
  • clickhouse-test パッケージを追加しました。機能テストを実行するために使用できます。
  • ソースの tarball をリポジトリに公開できるようになりました。GitHub を使用せずにビルドを再現するために使用できます。
  • Travis CI との限定的な統合を追加しました。Travis のビルド時間制限により、デバッグビルドのみがテストされ、テストの一部のみが実行されます。
  • デフォルトビルドで Cap'n'Proto のサポートを追加しました。
  • ドキュメントソースのフォーマットを Restricted Text から Markdown に変更しました。
  • systemd のサポートを追加しました (Vladimir Smirnov)。一部の OS イメージとの非互換性のため、デフォルトでは無効化されており、手動で有効化できます。
  • 動的コード生成のために、clanglldclickhouse バイナリに同梱しました。clickhouse clang および clickhouse lld として呼び出すこともできます。
  • コードから GNU 拡張の使用を削除しました。-Wextra オプションを有効にしました。clang でビルドする場合、デフォルトは libstdc++ ではなく libc++ になります。
  • 各種ツールのビルドを高速化するために、clickhouse_parsers および clickhouse_common_io ライブラリを分離しました。

後方互換性のない変更:

  • Nullable 列を含む Log 型テーブルにおけるマークのフォーマットが後方互換性のない形で変更されました。これらのテーブルがある場合は、新しいサーバーバージョンを起動する前に、それらを TinyLog 型に変換する必要があります。これを行うには、metadata ディレクトリ内の該当する .sql ファイルで ENGINE = LogENGINE = TinyLog に置き換えます。テーブルに Nullable 列が存在しない場合、またはテーブルの型が Log でない場合は、何もする必要はありません。
  • experimental_allow_extended_storage_definition_syntax 設定を削除しました。現在この機能はデフォルトで有効になっています。
  • 混同を避けるため、runningIncome 関数は runningDifferenceStartingWithFirstvalue に名前が変更されました。
  • ARRAY JOIN がテーブルなしで FROM の直後に直接指定されている場合の FROM ARRAY JOIN arr 構文を削除しました (Amos Bird)。
  • デモ目的のみに使用されていた BlockTabSeparated フォーマットを削除しました。
  • 集約関数 varSampvarPopstddevSampstddevPopcovarSampcovarPopcorr の状態フォーマットを変更しました。これらの集約関数の状態を (対応する状態を持つ AggregateFunction データ型やマテリアライズドビューを使用して) テーブルに保存している場合は、[email protected] までご連絡ください。
  • 以前のサーバーバージョンには、ドキュメント化されていない機能がありました。集約関数がパラメータに依存していても、AggregateFunction データ型でパラメータを指定せずに記述できました。例: AggregateFunction(quantiles, UInt64)AggregateFunction(quantiles(0.5, 0.9), UInt64) の代わりに使用可能でした。この機能は現在は利用できなくなっています。ドキュメント化されてはいませんでしたが、将来のリリースで再度サポートする予定です。
  • Enum データ型は min/max 集約関数で使用できなくなりました。この機能は次のリリースで再び利用可能になる予定です。

アップグレード時の注意事項:

  • クラスターでローリングアップデートを実行する際、一部のレプリカが古いバージョンの ClickHouse を実行しており、他が新しいバージョンを実行しているタイミングでは、レプリケーションはいったん停止し、ログに unknown parameter 'shard' というメッセージが表示されます。クラスター内のすべてのレプリカが更新されると、レプリケーションは再開されます。
  • クラスターサーバーで異なるバージョンの ClickHouse が動作している場合、次の関数を使用する分散クエリで誤った結果が返される可能性があります: varSampvarPopstddevSampstddevPopcovarSampcovarPopcorr。すべてのクラスターノードを更新する必要があります。

2017 年の変更履歴