説明
この関数は、パーティションテーブル内でデータを含むパーティションのパーティションキーの最大値を返します。
説明
V4.4.2バージョンでは、この関数はV4.4.2 BP3バージョンから導入されました。
制限事項と注意点
- 呼び出し元は、対象テーブルに対する SELECT オブジェクト権限を持っている必要があります(Oracleモードではオブジェクト権限による検証が行われます)。権限がない場合、呼び出しは失敗します。
- パラメータ内のテーブル名は定数(解析段階で確定可能な文字列リテラル)である必要があり、変数や非常数式をテーブル名パラメータとして使用することはサポートされていません。
- クエリ対象のテーブルはパーティションテーブルであり、かつパーティションタイプが Range または List であること。
- クエリ対象のテーブルは内部テーブルである必要があり、外部テーブルやDBlinkはサポートされていません。
- 単一列のパーティションキーのみサポートしています。複数列のパーティションキーはサポートされていません。
- 式パーティション(パーティションキーが単一列の直接参照ではなく、パーティション定義に式が含まれる場合)はサポートされていないため、この場合は
MAX_PTを使用できません。 - セカンダリパーティションテーブルの場合、パーティションの値のみを返します。
- すべてのパーティションが空の場合、NULLを返します。
- 同一パーティション内に異なるパーティション値が存在する場合、
MAX_PTの結果はundefinedとなり、そのパーティションから任意の1行の値を選択して返します。
構文
MAX_PT('[schema_name.]table_name')
パラメータの説明
注意
Oracleモードでは、スキーマ名とテーブル名は**大文字小文字を区別**し、データディクショナリに格納されている名前と一致している必要があります。二重引用符を使用せずに作成されたオブジェクトは、ディクショナリ内では通常大文字で表記されます。二重引用符を使用して作成された識別子は、作成時の大文字小文字で格納され、呼び出し時には文字列が完全に一致している必要があります。
schema_name:オプションです。テーブルが存在するスキーマ名を指定します。指定しない場合、デフォルトで現在のセッションのデフォルトスキーマにあるテーブルが対象となります。パラメータ文字列では、'schema_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 (1), PARTITION P1 VALUES (2), PARTITION P2 VALUES (3), PARTITION P3 VALUES (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') FROM DUAL;実行結果は次のとおりです:
+---------------------+ | MAX_PT('TEST_TBL1') | +---------------------+ | 4 | +---------------------+ 1 row in set