説明
この関数は、パーティションテーブルのデータがあるパーティションのパーティションキーの最大値を返します。
説明
V4.4.2バージョンでは、この関数はV4.4.2 BP3バージョンから導入されました。
使用上の制限と注意事項
- 呼び出し元は対象テーブルに対する SELECT 権限が必要です(MySQLモードではテーブルレベルの権限検証が適用されます)。権限がない場合、呼び出しは失敗します。
- パラメータのテーブル名は 定数 でなければなりません(解析段階で特定可能な文字列リテラル)。変数や非常数式をテーブル名パラメータとして使用することはサポートされていません。
- クエリ対象のテーブルはパーティションテーブルであり、パーティションタイプは Range または List である必要があります。
- クエリ対象のテーブルは 内部テーブル でなければならず、外部テーブルやDBlinkはサポートされていません。
- 単一列 のパーティションキーのみサポートされています。複数列 のパーティションキーはサポートされていません。
- 式パーティション(パーティションキーが単一列の直接参照ではなく、パーティション定義に式が含まれる場合)はサポートされていません。この場合、
MAX_PTを使用できません。 - セカンダリパーティションテーブルの場合、パーティションの値のみが返されます。
- すべてのパーティションが空の場合、NULLが返されます。
- 同一パーティション内に異なるパーティション値が存在する場合、
MAX_PTの結果はundefinedとなり、そのパーティションから任意の1行の値を選択して返します。
構文
MAX_PT('[database_name.]table_name')
パラメータの説明
database_name:オプションです。テーブルが存在するデータベース名を表します。指定しない場合、デフォルトでは 現在のセッション のデフォルトデータベース内のテーブルが対象となります。また、'db_name.table_name'の形式で、最初の文字列パラメータにデータベース名とテーブル名を同時に指定することもできます(最大1つの.で区切ります)。table_name:テーブル名を表します。データベース名とテーブル名は、現在のセッションの大文字小文字戦略と有効な文字規則に従って解析され、データディクショナリに格納されている名前(大文字小文字を含む)と一致している必要があります。
戻り値
データがあるパーティションのうち、最大の(max() 比較ロジックによる)パーティション値を返します。データ型とパーティションキーの型は同じでなければなりません。
例
パーティションテーブル
test_tbl1を作成します。obclient> CREATE TABLE test_tbl1 (col1 INT, col2 INT, col3 INT) PARTITION BY LIST (col1) ( PARTITION P0 VALUES IN (1), PARTITION P1 VALUES IN (2), PARTITION P2 VALUES IN (3), PARTITION P3 VALUES IN (4) );テストデータを挿入します
obclient> INSERT INTO test_tbl1 VALUES (1,1,1), (2,2,2), (3,3,3), (4,4,4), (1,1,2), (2,2,2);実行結果は次のとおりです:
Query OK, 6 rows affected Records: 6 Duplicates: 0 Warnings: 0テーブル
test_tbl1のデータが存在するパーティションのパーティションキーの最大値を確認します。obclient> SELECT MAX_PT('test_tbl1');実行結果は次のとおりです:
+---------------------+ | MAX_PT('test_tbl1') | +---------------------+ | 4 | +---------------------+ 1 row in set