pg_partitioned_table 是一个 系统目录 表,它存储了在 pg_class 中定义且 relkind 为 'p' 的表的表分区信息。
pg_partitioned_table 于 PostgreSQL 10 中添加。
按 PostgreSQL 版本定义
pg_partitioned_table (PostgreSQL 19)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partdefid | oid | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | C | |
Indexes:
"pg_partitioned_table_partrelid_index" PRIMARY KEY, btree (partrelid)
pg_partitioned_table (PostgreSQL 18)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partdefid | oid | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | C | |
Indexes:
"pg_partitioned_table_partrelid_index" PRIMARY KEY, btree (partrelid)
pg_partitioned_table (PostgreSQL 17)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partdefid | oid | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | C | |
Indexes:
"pg_partitioned_table_partrelid_index" PRIMARY KEY, btree (partrelid)
pg_partitioned_table (PostgreSQL 16)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partdefid | oid | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | C | |
Indexes:
"pg_partitioned_table_partrelid_index" PRIMARY KEY, btree (partrelid)
pg_partitioned_table (PostgreSQL 15)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partdefid | oid | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | C | |
Indexes:
"pg_partitioned_table_partrelid_index" PRIMARY KEY, btree (partrelid)
pg_partitioned_table (PostgreSQL 14)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partdefid | oid | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | C | |
Indexes:
"pg_partitioned_table_partrelid_index" PRIMARY KEY, btree (partrelid)
pg_partitioned_table (PostgreSQL 13)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partdefid | oid | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | C | |
Indexes:
"pg_partitioned_table_partrelid_index" UNIQUE, btree (partrelid)
pg_partitioned_table (PostgreSQL 12)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partdefid | oid | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | C | |
Indexes:
"pg_partitioned_table_partrelid_index" UNIQUE, btree (partrelid)
pg_partitioned_table (PostgreSQL 11)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partdefid | oid | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | | |
Indexes:
"pg_partitioned_table_partrelid_index" UNIQUE, btree (partrelid)
pg_partitioned_table (PostgreSQL 10)
Table "pg_catalog.pg_partitioned_table"
Column | Type | Collation | Nullable | Default
---------------+--------------+-----------+----------+---------
partrelid | oid | | not null |
partstrat | "char" | | not null |
partnatts | smallint | | not null |
partattrs | int2vector | | not null |
partclass | oidvector | | not null |
partcollation | oidvector | | not null |
partexprs | pg_node_tree | | |
Indexes:
"pg_partitioned_table_partrelid_index" UNIQUE, btree (partrelid)
变更历史
- PostgreSQL 11
- 添加了列
partdefid(提交 6f6b99d1)
- 添加了列
- PostgreSQL 10
- 添加 (提交 f0e44751)
示例
从 PostgreSQL 分区文档 创建示例表后
postgres=# CREATE TABLE measurement (
city_id int not null,
logdate date not null,
peaktemp int,
unitsales int
) PARTITION BY RANGE (logdate);
CREATE TABLE
pg_partitioned_table 中会添加以下条目
postgres=# SELECT * FROM pg_partitioned_table WHERE partrelid='measurement'::REGCLASS\gx -[ RECORD 1 ]-+------ partrelid | 17824 partstrat | r partnatts | 1 partdefid | 0 partattrs | 2 partclass | 3122 partcollation | 0 partexprs |
参考资料
- PostgreSQL 文档: pg_partitioned_table
