こちらの記事の続きです。
以下のページに記載の分です。
- 2.16.7 Other Limitations(MySQL HeatWave User Guide)
これらについても MySQL HeatWave User Guide に記載された内容を翻訳してそのまま列挙します。
2023/9/9 時点(MySQL バージョン 8.1.0-u2-cloud)の情報です。
今後、制限が変わる可能性があります。
その他の制限
以下のものが使用不可です(HeatWave にオフロードされず MySQL DB で実行されます)。
- デフォルト以外の SQL モードのほとんど
- 使用できるのは MySQL HeatWave User Guide の 2.11 Supported SQL Modes に列挙された以下のもののみ
- デフォルト
-
ONLY_FULL_GROUP_BY
・STRICT_TRANS_TABLES
・NO_ZERO_IN_DATE
・NO_ZERO_DATE
・ERROR_FOR_DIVISION_BY_ZERO
・NO_ENGINE_SUBSTITUTION
-
- それ以外
-
ANSI_QUOTES
・HIGH_NOT_PRECEDENCE
・IGNORE_SPACE
・NO_BACKSLASH_ESCAPES
・REAL_AS_FLOAT
・TIME_TRUNCATE_FRACTIONAL
-
- デフォルト
- 使用できるのは MySQL HeatWave User Guide の 2.11 Supported SQL Modes に列挙された以下のもののみ
-
gb18030_chinese_ci
文字セットと照合順序 -
GROUP BY
節のWITH ROLLUP
修飾子-
DISTINCT
の集約を含むクエリ -
GROUP BY
キーが重複しているクエリ
-
-
COUNT(NULL)
が非集約演算子の入力引数として使用されるケース -
ORDER BY
句またはLIMIT
句を持つ、異なるデータ型を持つ列(カラム)間、辞書エンコード列(カラム)間、またはENUM
列(カラム)間のUNION ALL
-
ORDER BY
・LIMIT
の有無にかかわらず、異なるデータ型を持つ列(カラム)間、辞書エンコード列間、またはENUM
列間のUNION
-
ORDER BY
・LIMIT
の有無にかかわらず、異なるデータ型を持つ列(カラム)間、辞書エンコード列間、ENUM
列間のUNION
およびUNION ALL
がIN
句またはEXISTS
句で指定されたサブクエリ内で使用されるケース - 比較述語、
GROUP BY
、JOIN
などで、キー列がDOUBLE PRECISION
のケース - リレーショナルデータの型変換
- 例:
SELECT CONCAT(2, L_COMMENT) from LINEITEM;
- 例:
- 式やその他の関数を使用した
YEAR
型データのクエリ- 例:
SELECT YEAR(d) + 1 FROM t1;
- 例:
- 異なる照合順序を持つ列を含む文字列操作
- 明示的なパーティション選択
- 24.5 Partition Selection(MySQL 8.0 Reference Manual) を参照
- カラム接頭辞を持つ主キー
- 仮想生成列(Virtual generated columns)
- トリガの一部として実行されるクエリ
- ストアド・プログラムを呼び出すクエリ
- ストアド・プログラムの一部として実行されるクエリ
- マルチ・ステートメント・トランザクションの一部であるクエリ
- マテリアライズド・ビュー
- 通常ビューの使用については 2.3.9 Using Views(MySQL HeatWave User Guide ) を参照
- 通常の
SELECT
クエリの部分的なクエリ・オフロード- クエリのすべての要素がサポートされている場合にクエリ全体がオフロードされ、そうでない場合、クエリはデフォルトで MySQL DB システムで実行される
- HeatWave は
CREATE TABLE ... SELECT
およびINSERT ... SELECT
ステートメントをサポートしており、操作のSELECT
部分のみが HeatWave にオフロードされる - 2.3 Running Queries(MySQL HeatWave User Guide) を参照
-
[H]H:MM
の形式で UTC からのオフセットとして指定され、先頭に+
または-
が付く形式のtimezone
を指定するSET timezone = timezone
-
UNIX_TIMESTAMP()
関数とFROM_UNIXTIME()
関数のみこの形式のタイムゾーン指定をサポート
-
- 名前付きタイムゾーン
- タイムゾーンについては 5.1.15 MySQL Server でのタイムゾーンのサポート(MySQL 8.0 リファレンスマニュアル) を参照
- 中間および最終クエリ結果の行サイズが 4MB を超えるケース
- 派生(derived)テーブルに対する連続フィルタ操作
- 例:テーブル
t1
のテーブルスキャンでテーブルtt1
のフィルタ(x < 7)
を使用し、WHERE
句でテーブルtt1
の連続フィルタ(tt1.x > 5)
を使用
- 例:テーブル
SELECT * FROM (SELECT * FROM t1 WHERE x < 7) tt1,
(SELECT * FROM t1 WHERE x < y) tt2
WHERE tt1.x > 5 AND tt1.x = tt2.x;
- 再帰 CTE(共通テーブル式)
- MySQL DB が
SUPER_READ_ONLY
モードで実行されているケースでのデータのロード・アンロード・リカバリなど、ALTER TABLE
を含む操作- MySQL DB のディスク容量が特定の期間、設定した容量以下になると、MySQL DB は
SUPER_READ_ONLY
モードになる- ヘルス・モニター(Oracle Cloud Infrastructure ドキュメント) を参照
- MySQL DB のディスク容量が特定の期間、設定した容量以下になると、MySQL DB は