PolarDB for PostgreSQL (Compatible with Oracle) は、パーティションテーブルの構造を表示するためのシステムビューを提供します。
PolarDB for PostgreSQL (Compatible with Oracle) には、データベース内のパーティションテーブルに関する情報を表示するための次のシステムビューと機能があります。
pg_partitionated_table
列
列 | 説明 |
partrelid | このパーティション分割テーブルのpg_classエントリのOID。 |
partstrat | パーティション分割戦略。 有効な値:
|
partnatts | パーティションキーの列数。 |
partdepfid | このパーティションテーブルのデフォルトパーティションのpg_classエントリのOID。パーティションテーブルにデフォルトパーティションがない場合はゼロ。 |
partattrs | どのテーブル列がパーティションキーの一部であるかを示すpartnatts値の配列。 たとえば、 |
partclass | パーティションキーの各列には、使用する演算子クラスのOIDが含まれています。 |
partcollation | パーティションキーの各列には、パーティション分割に使用する照合順序のOIDが含まれ、列が照合可能なデータ型でない場合はゼロが含まれます。 |
partexprs | 単純な列参照ではないパーティションキー列の式ツリー ( これは、partattrsのゼロエントリごとに1つの要素を持つリストです。 すべてのパーティションキー列が単純参照の場合、値はnullです。 |
例
SELECT * FROM pg_partitioned_table;
partrelid | partstrat | partnatts | partdefid | partattrs | partclass | partcollation | partexprs
-----------+-----------+-----------+-----------+-----------+-----------+---------------+-----------
17124 | h | 1 | 0 | 1 | 10028 | 0 |
(1 row)
pg_partition_tree
この関数は、 PolarDB for PostgreSQL (Compatible with Oracle) 2.0クラスターでのみサポートされています。
この関数は、特定のパーティションテーブルまたはパーティションインデックスのパーティションツリー内のテーブルまたはインデックスを、パーティションごとに1行ずつ一覧表示します。 関数の引数はテーブル名です。 次の表に、戻り値の列を示します。
列
列 | 説明 |
rerid | パーティションの名前。 |
parentrelid | その直接の親パーティションの名前。 パーティションに直接親パーティションがない場合、このフィールドはnullです。 |
isleaf | パーティションがリーフパーティションであるかどうか。 |
level | 階層内のパーティションのレベル。 レベル値は、ルートとしての入力テーブルまたはインデックス、その直接の子パーティションの |
例
SELECT * FROM pg_partition_tree('idxpart');
relid | parentrelid | isleaf | level
----------+-------------+--------+-------
idxpart | | f | 0
idxpart0 | idxpart | t | 1
idxpart1 | idxpart | t | 1
(3 rows)
pg_class
pg_classカタログには、 PolarDB for PostgreSQL (Compatible with Oracle) クラスター内のテーブル、インデックス、シーケンス、およびその他の同様のオブジェクトに関するメタデータが含まれます。 次の表に、パーティションテーブルに関連するオブジェクトを示します。
カラム
列 | 説明 |
relkind | オブジェクトタイプ。 有効な値:
|
relhassubclass | テーブルまたはインデックスに継承子またはパーティションがある (またはあった) 場合はTrue |
relispartition | テーブルまたはインデックスがパーティションの場合はTrue |
relpartbound | テーブルがパーティションである場合のパーティション境界の内部表現 (relispartitionを参照) 。 |
例
SELECT relkind , relhassubclass, relispartition, pg_catalog.pg_get_expr(relpartbound ,oid) AS relpartbound FROM pg_class WHERE relname = 'sales_q1_2012';
relkind | relhassubclass | relispartition | relpartbound | relpartname
---------+----------------+----------------+------------------------------------------------------+-------------
r | f | t | FOR VALUES FROM (MINVALUE) TO ('01-APR-12 00:00:00') | q1_2012
(1 row)
pg_inherits
pg_inherits catalogは、テーブルおよびインデックスの継承階層に関する情報を記録します。 データベース内の直接の親子テーブルまたはインデックス関係ごとに1つのエントリがあります。
列
列 | 説明 |
inhrelid | パーティションのOID。 |
inhparent | 直接親パーティションのOID。 |
inhseqno | 子テーブルに複数の直接親がある場合 (多重継承) 、この数値は継承された列が配置される順序を示します。 カウントは1から始まる。 インデックスは、宣言型パーティション分割を使用する場合にのみ継承できるため、多重継承はできません。 |
inhdetachpending | デタッチ中のパーティションの場合はTrueです。 この列は、 PolarDB for PostgreSQL (Oracle互換) 2.0クラスターでのみ使用できます。 |
inhfinparent | このパーティションの最上位レベルの親テーブルのOID。 説明 この列は、 PolarDB for PostgreSQL (Oracle互換) 2.0クラスターでのみ使用できます。 |
部分名 | パーティション構造内のパーティションの名前。 説明 この列は、 PolarDB for PostgreSQL (Oracle互換) 2.0クラスターでのみ使用できます。 |
例
SELECT * FROM pg_inherits WHERE inhrelid = 19318;
inhrelid | inhparent | inhseqno | inhdetachpending | inhfinparent | partname
----------+-----------+----------+------------------+--------------+----------
19318 | 19192 | 1 | f | 0 |
(1 row)