主な変更点
- JSON_ARRAYAGG関数は、ColumnStoreテーブルに対して分散集約関数としてサポートされており、列の値をJSON配列に集約するために使用できます。
- 以前のリリースでは、ColumnStoreテーブルのクエリでJSON_ARRAYAGG関数が呼び出され、ColumnStore選択ハンドラーが有効になっていると、次のエラーが発生する可能性がありました:
ERROR 1178 (42000): The storage engine for the table doesn't support Non supported aggregate type on the select clause - このリリース以降、ColumnStore選択ハンドラーが有効になっている場合、ColumnStoreテーブルのクエリで JSON_ARRAYAGG関数を呼び出すことができます。この関数は、列または式を引数として受け入れます。結果セットの全ての列に対して式が評価され、全ての値が1つのJSON配列に集約されます:
CREATE TABLE t (a INT, b INT)
ENGINE=ColumnStore;INSERT INTO t VALUES
(1,3), (1,5), (8,2), (5,7),
(5,6), (10,1), (6,4), (3,9),
(3,9), (7,2), (7,5), (2,6),
(9,10), (9,5), (4,8);SELECT a, JSON_ARRAYAGG(b)
FROM t
GROUP BY a;+------+------------------+
| a | JSON_ARRAYAGG(b) |
+------+------------------+
| 1 | [3,5] |
| 2 | [6] |
| 3 | [9,9] |
| 4 | [8] |
| 5 | [7,6] |
| 6 | [4] |
| 7 | [2,5] |
| 8 | [2] |
| 9 | [10,5] |
| 10 | [1] |
+------+------------------+ - 多くの場合、クエリがGROUP_CONCAT関数を使用する場合、代わりにJSON_ARRAYAGG関数を使用するようにクエリを変換できます。その主な利点は、JSON_ARRAYAGG関数がJSON配列を返し、JSONの読み取りと操作に使用できる多くの関数と外部ツールがあることです。
- 以前のリリースでは、ColumnStoreテーブルのクエリでJSON_ARRAYAGG関数が呼び出され、ColumnStore選択ハンドラーが有効になっていると、次のエラーが発生する可能性がありました:
- ヒストグラム統計の収集は、ColumnStoreテーブルでサポートされており、結合のコストベースの最適化に使用できます。
- 以前のリリースでは、ColumnStoreテーブルの複雑な結合を含むクエリは、次のエラーで失敗する可能性があります:
ERROR 1815 (HY000) at line 6: Internal error: IDB-1003: Circular joins are not supported. - このリリース以降、ColumnStoreテーブルのヒストグラム統計が使用可能な場合、ストレージエンジンはヒストグラム統計を使用して列の一意性を判断し、結合グラフをより効率的に処理できます。ColumnStoreテーブルのヒストグラム統計を収集するためには、ANALYZE TABLEステートメントを使用します:
ANALYZE TABLE t1;
- 以前のリリースでは、ColumnStoreテーブルの複雑な結合を含むクエリは、次のエラーで失敗する可能性があります:
修正された問題
データが失われる可能性があるもの
- ColumnStoreがS3互換ストレージを使用するように設定されている時、/etc/columnstore/storagemanager.cnfのエンドポイントとリージョンのパラメータがバケットが配置されているリージョンと同じリージョンを参照していない場合、ColumnStoreはクラウドストレージへのデータの送信に失敗しますが、 障害を検出しません。
- 以前のリリースでは、エンドポイントは失敗を示すHTTP 301ステータスコードをColumnStoreに送信していましたが、ColumnStoreはそれを誤って成功として扱いました。
- このリリース以降、ColumnStoreは失敗を正しく識別し、エラーメッセージを生成します:
S3Storage::putObject(): Bucket location not match provided endpoint:, bucket = BUCKET, endpoint = END
クラッシュ、ハング、ストールが発生する可能性があるもの
- ハッシュ結合を処理する時に、ExeMgrがSIGABRTでクラッシュする可能性があります。
予期しない動作が発生する可能性があるもの
- SELECTステートメントがSUM(COLUMN=VALUE)を呼び出すと、ステートメントは不明確なエラーメッセージで失敗します。
- 以前のリリースでは、次のエラーが発生しました:
ERROR 1815 (HY000): Internal error: std::bad_typeid - このリリース以降、次のエラーが発生します:
ERROR 1178 (42000): The storage engine for the table doesn't support MCS-2027: Non supported item in aggregate function SUM(COLUMN=VALUE).
- 以前のリリースでは、次のエラーが発生しました:
- ANALYZE ステートメントがSQLステートメントを引数として実行されると、ColumnStoreがエラーを返す場合があります。
- 以前のリリースでは、次のエラーが発生することがあります:
ERROR 1815 (HY000): Internal error: Unknown error - このリリース以降、エラーは発生しなくなり、実行計画が出力されます:
ANALYZE SELECT * FROM t1 WHERE c1 = 1; +------+---------------+-------+------+---------------+------+---------+------+------+--------+----------+------------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | r_rows | filtered | r_filtered | Extra |
+------+---------------+-------+------+---------------+------+---------+------+------+--------+----------+------------+-------+
| 1 | PUSHED SELECT | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
+------+---------------+-------+------+---------------+------+---------+------+------+--------+----------+------------+-------+
- 以前のリリースでは、次のエラーが発生することがあります:
- マルチノードのColumnStoreを持つプライマリノードのテーブルに列が追加されると、ColumnStoreはレプリカノードでテーブルに新しい列を2回追加しようとするため、レプリケーションエラーが発生します。
- 以前のリリースでは、レプリケーションが失敗した場合、次のようなメッセージがMariaDBエラーログに表示されます:
[ERROR] Slave SQL: Error 'Got error 1815 "Unknown error 1815" from storage engine ColumnStore' on query. Default database: 'db1'. Query: 'ALTER TABLE t1 ADD COLUMN (col2 varchar(100))', Gtid GTID_POS, Internal MariaDB error code: 1030
[Warning] Slave: Got error 1815 "Unknown error 1815" from storage engine ColumnStore Error_code: 1030
[ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'LOG_FILE' position LOG_POS; GTID position 'GTID_POS' - このリリース以降、ColumnStoreはレプリカノードでテーブルに新しい列を1回だけ追加するため、レプリケーションの失敗は発生しません。
- 以前のリリースでは、レプリケーションが失敗した場合、次のようなメッセージがMariaDBエラーログに表示されます:
- querytstatsが有効な時、クエリにLEFT JOINが含まれ、ON句にLOWER()関数が含まれていると、ColumnStoreログにエラーが書き込まれます。
- 以前のリリースでは、次のエラーがColumnStoreログに書き込まれます:
1e3afaf1eaef Calpont[135]: 37.906020 |0|0|0| E 00 CAL0000: /home/buildbot/buildbot/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/mariadb-10.6.8/storage/columnstore/columnstore/dbcon/joblist/tuplehashjoin.cpp@1095: assertion 'idlsz > 1' failed - このリリース以降、エラーを発生させずにクエリを実行できるようになりました。
- 以前のリリースでは、次のエラーがColumnStoreログに書き込まれます:
- TRUNCATE()関数が、数字を含むCHARまたはVARCHAR列で呼び出されると、正しくない値が返されます。
- マルチノードColumnStoreが共有ローカルストレージを使用するように設定されている場合、レプリカノードは、シャットダウン中にエクステントマップファイルのローカルコピーを複数回上書きできます。
- マルチノードColumnStoreでcolumnstore_use_import_for_batchinsert=ONが設定されている場合、トランザクションのINSERT INTO .. SELECTステートメントは、行が挿入されていないにもかかわらず、行が挿入されたと報告します。
- ExeMgrがMariaDBサーバーからの要求の処理を終了しても、ExeMgrのTCP接続は開いたままになり、そのスレッドは引き続き実行できます。これにより、ColumnStoreが必要以上のリソースを使用する可能性があります。
プラットフォーム
エンタープライズライフサイクルに合わせて、MariaDB Enterprise ColumnStore 22.08.8は
以下に対して提供されています。
- CentOS 7 (x86_64)
- Debian 11 (x86_64, ARM64)
- Red Hat Enterprise Linux 7 (x86_64)
- Red Hat Enterprise Linux 8 (x86_64, ARM64)
- Red Hat Enterprise Linux 9 (x86_64, ARM64)
- Rocky Linux 8 (x86_64, ARM64)
- Rocky Linux 9 (x86_64, ARM64)
- Ubuntu 20.04 (x86_64, ARM64)
- Ubuntu 22.04 (x86_64, ARM64)
MariaDB Enterprise ColumnStore 22.08.8のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/release-notes/mariadb-enterprise-columnstore-22-08/22-08-8/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。