2023.02.13

MariaDB

MariaDB Enterprise ColumnStore 22.08.8 GA版(リリース日:2023年2月10日)

主な変更点

  • 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テーブルでサポートされており、結合のコストベースの最適化に使用できます。
    • 以前のリリースでは、ColumnStoreテーブルの複雑な結合を含むクエリは、次のエラーで失敗する可能性があります:
      ERROR 1815 (HY000) at line 6: Internal error: IDB-1003: Circular joins are not supported.
    • このリリース以降、ColumnStoreテーブルのヒストグラム統計が使用可能な場合、ストレージエンジンはヒストグラム統計を使用して列の一意性を判断し、結合グラフをより効率的に処理できます。ColumnStoreテーブルのヒストグラム統計を収集するためには、ANALYZE TABLEステートメントを使用します:
      ANALYZE TABLE t1;

修正された問題

データが失われる可能性があるもの

  • 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回だけ追加するため、レプリケーションの失敗は発生しません。
  • 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
    • このリリース以降、エラーを発生させずにクエリを実行できるようになりました。
  • 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プロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。