mirror of
https://github.com/postgres/postgres.git
synced 2025-06-17 17:02:08 +03:00
psql: Add information in \d+ about foreign partitions and child tables
\d+ is already able to show if a partition or a child table is "PARTITIONED" via its relkind, hence the addition of a keyword for "FOREIGN" in the relation description is basically free. Author: Ian Lawrence Barwick Reviewed-by: Tom Lane, Michael Paquier Discussion: https://postgr.es/m/CAB8KJ=iwzbEz2HR9EhNxQLVhMk2G_OYtQPJ9V=jWLadseggrOA@mail.gmail.com
This commit is contained in:
@ -3445,6 +3445,8 @@ describeOneTableDetails(const char *schemaname,
|
|||||||
if (child_relkind == RELKIND_PARTITIONED_TABLE ||
|
if (child_relkind == RELKIND_PARTITIONED_TABLE ||
|
||||||
child_relkind == RELKIND_PARTITIONED_INDEX)
|
child_relkind == RELKIND_PARTITIONED_INDEX)
|
||||||
appendPQExpBufferStr(&buf, ", PARTITIONED");
|
appendPQExpBufferStr(&buf, ", PARTITIONED");
|
||||||
|
else if (child_relkind == RELKIND_FOREIGN_TABLE)
|
||||||
|
appendPQExpBufferStr(&buf, ", FOREIGN");
|
||||||
if (strcmp(PQgetvalue(result, i, 2), "t") == 0)
|
if (strcmp(PQgetvalue(result, i, 2), "t") == 0)
|
||||||
appendPQExpBufferStr(&buf, " (DETACH PENDING)");
|
appendPQExpBufferStr(&buf, " (DETACH PENDING)");
|
||||||
if (i < tuples - 1)
|
if (i < tuples - 1)
|
||||||
|
@ -1404,7 +1404,7 @@ CREATE FOREIGN TABLE ft2 () INHERITS (fd_pt1)
|
|||||||
c1 | integer | | not null | | plain | |
|
c1 | integer | | not null | | plain | |
|
||||||
c2 | text | | | | extended | |
|
c2 | text | | | | extended | |
|
||||||
c3 | date | | | | plain | |
|
c3 | date | | | | plain | |
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1449,7 +1449,7 @@ ALTER FOREIGN TABLE ft2 INHERIT fd_pt1;
|
|||||||
c1 | integer | | not null | | plain | |
|
c1 | integer | | not null | | plain | |
|
||||||
c2 | text | | | | extended | |
|
c2 | text | | | | extended | |
|
||||||
c3 | date | | | | plain | |
|
c3 | date | | | | plain | |
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1483,7 +1483,7 @@ Server: s0
|
|||||||
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
||||||
Inherits: fd_pt1
|
Inherits: fd_pt1
|
||||||
Child tables: ct3,
|
Child tables: ct3,
|
||||||
ft3
|
ft3, FOREIGN
|
||||||
|
|
||||||
\d+ ct3
|
\d+ ct3
|
||||||
Table "public.ct3"
|
Table "public.ct3"
|
||||||
@ -1522,7 +1522,7 @@ ALTER TABLE fd_pt1 ADD COLUMN c8 integer;
|
|||||||
c6 | integer | | | | plain | |
|
c6 | integer | | | | plain | |
|
||||||
c7 | integer | | not null | | plain | |
|
c7 | integer | | not null | | plain | |
|
||||||
c8 | integer | | | | plain | |
|
c8 | integer | | | | plain | |
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1540,7 +1540,7 @@ Server: s0
|
|||||||
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
||||||
Inherits: fd_pt1
|
Inherits: fd_pt1
|
||||||
Child tables: ct3,
|
Child tables: ct3,
|
||||||
ft3
|
ft3, FOREIGN
|
||||||
|
|
||||||
\d+ ct3
|
\d+ ct3
|
||||||
Table "public.ct3"
|
Table "public.ct3"
|
||||||
@ -1596,7 +1596,7 @@ ALTER TABLE fd_pt1 ALTER COLUMN c8 SET STORAGE EXTERNAL;
|
|||||||
c6 | integer | | not null | | plain | |
|
c6 | integer | | not null | | plain | |
|
||||||
c7 | integer | | | | plain | |
|
c7 | integer | | | | plain | |
|
||||||
c8 | text | | | | external | |
|
c8 | text | | | | external | |
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1614,7 +1614,7 @@ Server: s0
|
|||||||
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
||||||
Inherits: fd_pt1
|
Inherits: fd_pt1
|
||||||
Child tables: ct3,
|
Child tables: ct3,
|
||||||
ft3
|
ft3, FOREIGN
|
||||||
|
|
||||||
-- drop attributes recursively
|
-- drop attributes recursively
|
||||||
ALTER TABLE fd_pt1 DROP COLUMN c4;
|
ALTER TABLE fd_pt1 DROP COLUMN c4;
|
||||||
@ -1629,7 +1629,7 @@ ALTER TABLE fd_pt1 DROP COLUMN c8;
|
|||||||
c1 | integer | | not null | | plain | 10000 |
|
c1 | integer | | not null | | plain | 10000 |
|
||||||
c2 | text | | | | extended | |
|
c2 | text | | | | extended | |
|
||||||
c3 | date | | | | plain | |
|
c3 | date | | | | plain | |
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1642,7 +1642,7 @@ Server: s0
|
|||||||
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
||||||
Inherits: fd_pt1
|
Inherits: fd_pt1
|
||||||
Child tables: ct3,
|
Child tables: ct3,
|
||||||
ft3
|
ft3, FOREIGN
|
||||||
|
|
||||||
-- add constraints recursively
|
-- add constraints recursively
|
||||||
ALTER TABLE fd_pt1 ADD CONSTRAINT fd_pt1chk1 CHECK (c1 > 0) NO INHERIT;
|
ALTER TABLE fd_pt1 ADD CONSTRAINT fd_pt1chk1 CHECK (c1 > 0) NO INHERIT;
|
||||||
@ -1669,7 +1669,7 @@ SELECT relname, conname, contype, conislocal, coninhcount, connoinherit
|
|||||||
Check constraints:
|
Check constraints:
|
||||||
"fd_pt1chk1" CHECK (c1 > 0) NO INHERIT
|
"fd_pt1chk1" CHECK (c1 > 0) NO INHERIT
|
||||||
"fd_pt1chk2" CHECK (c2 <> ''::text)
|
"fd_pt1chk2" CHECK (c2 <> ''::text)
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1684,7 +1684,7 @@ Server: s0
|
|||||||
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
FDW options: (delimiter ',', quote '"', "be quoted" 'value')
|
||||||
Inherits: fd_pt1
|
Inherits: fd_pt1
|
||||||
Child tables: ct3,
|
Child tables: ct3,
|
||||||
ft3
|
ft3, FOREIGN
|
||||||
|
|
||||||
DROP FOREIGN TABLE ft2; -- ERROR
|
DROP FOREIGN TABLE ft2; -- ERROR
|
||||||
ERROR: cannot drop foreign table ft2 because other objects depend on it
|
ERROR: cannot drop foreign table ft2 because other objects depend on it
|
||||||
@ -1716,7 +1716,7 @@ ALTER FOREIGN TABLE ft2 INHERIT fd_pt1;
|
|||||||
Check constraints:
|
Check constraints:
|
||||||
"fd_pt1chk1" CHECK (c1 > 0) NO INHERIT
|
"fd_pt1chk1" CHECK (c1 > 0) NO INHERIT
|
||||||
"fd_pt1chk2" CHECK (c2 <> ''::text)
|
"fd_pt1chk2" CHECK (c2 <> ''::text)
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1746,7 +1746,7 @@ ALTER TABLE fd_pt1 ADD CONSTRAINT fd_pt1chk3 CHECK (c2 <> '') NOT VALID;
|
|||||||
c3 | date | | | | plain | |
|
c3 | date | | | | plain | |
|
||||||
Check constraints:
|
Check constraints:
|
||||||
"fd_pt1chk3" CHECK (c2 <> ''::text) NOT VALID
|
"fd_pt1chk3" CHECK (c2 <> ''::text) NOT VALID
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1773,7 +1773,7 @@ ALTER TABLE fd_pt1 VALIDATE CONSTRAINT fd_pt1chk3;
|
|||||||
c3 | date | | | | plain | |
|
c3 | date | | | | plain | |
|
||||||
Check constraints:
|
Check constraints:
|
||||||
"fd_pt1chk3" CHECK (c2 <> ''::text)
|
"fd_pt1chk3" CHECK (c2 <> ''::text)
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1804,7 +1804,7 @@ ALTER TABLE fd_pt1 RENAME CONSTRAINT fd_pt1chk3 TO f2_check;
|
|||||||
f3 | date | | | | plain | |
|
f3 | date | | | | plain | |
|
||||||
Check constraints:
|
Check constraints:
|
||||||
"f2_check" CHECK (f2 <> ''::text)
|
"f2_check" CHECK (f2 <> ''::text)
|
||||||
Child tables: ft2
|
Child tables: ft2, FOREIGN
|
||||||
|
|
||||||
\d+ ft2
|
\d+ ft2
|
||||||
Foreign table "public.ft2"
|
Foreign table "public.ft2"
|
||||||
@ -1862,7 +1862,7 @@ CREATE FOREIGN TABLE fd_pt2_1 PARTITION OF fd_pt2 FOR VALUES IN (1)
|
|||||||
c2 | text | | | | extended | |
|
c2 | text | | | | extended | |
|
||||||
c3 | date | | | | plain | |
|
c3 | date | | | | plain | |
|
||||||
Partition key: LIST (c1)
|
Partition key: LIST (c1)
|
||||||
Partitions: fd_pt2_1 FOR VALUES IN (1)
|
Partitions: fd_pt2_1 FOR VALUES IN (1), FOREIGN
|
||||||
|
|
||||||
\d+ fd_pt2_1
|
\d+ fd_pt2_1
|
||||||
Foreign table "public.fd_pt2_1"
|
Foreign table "public.fd_pt2_1"
|
||||||
@ -1934,7 +1934,7 @@ ALTER TABLE fd_pt2 ATTACH PARTITION fd_pt2_1 FOR VALUES IN (1);
|
|||||||
c2 | text | | | | extended | |
|
c2 | text | | | | extended | |
|
||||||
c3 | date | | | | plain | |
|
c3 | date | | | | plain | |
|
||||||
Partition key: LIST (c1)
|
Partition key: LIST (c1)
|
||||||
Partitions: fd_pt2_1 FOR VALUES IN (1)
|
Partitions: fd_pt2_1 FOR VALUES IN (1), FOREIGN
|
||||||
|
|
||||||
\d+ fd_pt2_1
|
\d+ fd_pt2_1
|
||||||
Foreign table "public.fd_pt2_1"
|
Foreign table "public.fd_pt2_1"
|
||||||
@ -1962,7 +1962,7 @@ ALTER TABLE fd_pt2_1 ADD CONSTRAINT p21chk CHECK (c2 <> '');
|
|||||||
c2 | text | | | | extended | |
|
c2 | text | | | | extended | |
|
||||||
c3 | date | | | | plain | |
|
c3 | date | | | | plain | |
|
||||||
Partition key: LIST (c1)
|
Partition key: LIST (c1)
|
||||||
Partitions: fd_pt2_1 FOR VALUES IN (1)
|
Partitions: fd_pt2_1 FOR VALUES IN (1), FOREIGN
|
||||||
|
|
||||||
\d+ fd_pt2_1
|
\d+ fd_pt2_1
|
||||||
Foreign table "public.fd_pt2_1"
|
Foreign table "public.fd_pt2_1"
|
||||||
|
Reference in New Issue
Block a user