exec-ddl
CREATE TABLE pg_class (
    oid oid PRIMARY KEY,
    relname text NOT NULL,
    relnamespace oid NOT NULL,
    reltype oid NOT NULL,
    relowner oid NOT NULL,
    relam oid NOT NULL,
    relfilenode oid NOT NULL,
    reltablespace oid NOT NULL,
    relpages bigint NOT NULL,
    reltuples double precision NOT NULL,
    relallvisible bigint NOT NULL,
    reltoastrelid oid NOT NULL,
    relhasindex boolean NOT NULL,
    relisshared boolean NOT NULL,
    relpersistence text NOT NULL,
    relistemp boolean NOT NULL,
    relkind text NOT NULL,
    relnatts bigint NOT NULL,
    relchecks bigint NOT NULL,
    relhasoids boolean NOT NULL,
    relhaspkey boolean NOT NULL,
    relhasrules boolean NOT NULL,
    relhastriggers boolean NOT NULL,
    relhassubclass boolean NOT NULL,
    relfrozenxid bigint NOT NULL,
    relacl text[],
    reloptions text[],
    UNIQUE INDEX pg_class_relname_nsp_index (relname, relnamespace),
    INDEX pg_class_tblspc_relfilenode_index (reltablespace, relfilenode)
);
----
TABLE pg_class
 ├── oid oid not null
 ├── relname string not null
 ├── relnamespace oid not null
 ├── reltype oid not null
 ├── relowner oid not null
 ├── relam oid not null
 ├── relfilenode oid not null
 ├── reltablespace oid not null
 ├── relpages int not null
 ├── reltuples float not null
 ├── relallvisible int not null
 ├── reltoastrelid oid not null
 ├── relhasindex bool not null
 ├── relisshared bool not null
 ├── relpersistence string not null
 ├── relistemp bool not null
 ├── relkind string not null
 ├── relnatts int not null
 ├── relchecks int not null
 ├── relhasoids bool not null
 ├── relhaspkey bool not null
 ├── relhasrules bool not null
 ├── relhastriggers bool not null
 ├── relhassubclass bool not null
 ├── relfrozenxid int not null
 ├── relacl string[]
 ├── reloptions string[]
 ├── INDEX primary
 │    └── oid oid not null
 ├── INDEX pg_class_relname_nsp_index
 │    ├── relname string not null
 │    ├── relnamespace oid not null
 │    └── oid oid not null (storing)
 └── INDEX pg_class_tblspc_relfilenode_index
      ├── reltablespace oid not null
      ├── relfilenode oid not null
      └── oid oid not null

exec-ddl
CREATE TABLE pg_namespace (
    oid oid PRIMARY KEY,
    nspname text NOT NULL,
    nspowner oid NOT NULL,
    nspacl text[],
    UNIQUE INDEX pg_namespace_nspname_index (nspname)
);
----
TABLE pg_namespace
 ├── oid oid not null
 ├── nspname string not null
 ├── nspowner oid not null
 ├── nspacl string[]
 ├── INDEX primary
 │    └── oid oid not null
 └── INDEX pg_namespace_nspname_index
      ├── nspname string not null
      └── oid oid not null (storing)

exec-ddl
CREATE TABLE pg_tablespace (
    oid oid PRIMARY KEY,
    spcname text NOT NULL,
    spcowner oid NOT NULL,
    spclocation text NOT NULL,
    spcacl text[],
    spcoptions text[],
    UNIQUE INDEX pg_tablespace_spcname_index (spcname)
);
----
TABLE pg_tablespace
 ├── oid oid not null
 ├── spcname string not null
 ├── spcowner oid not null
 ├── spclocation string not null
 ├── spcacl string[]
 ├── spcoptions string[]
 ├── INDEX primary
 │    └── oid oid not null
 └── INDEX pg_tablespace_spcname_index
      ├── spcname string not null
      └── oid oid not null (storing)

exec-ddl
CREATE TABLE pg_inherits (
    inhrelid oid NOT NULL,
    inhparent oid NOT NULL,
    inhseqno bigint NOT NULL,
    PRIMARY KEY (inhrelid, inhseqno),
    INDEX pg_inherits_parent_index (inhparent)
);
----
TABLE pg_inherits
 ├── inhrelid oid not null
 ├── inhparent oid not null
 ├── inhseqno int not null
 ├── INDEX primary
 │    ├── inhrelid oid not null
 │    └── inhseqno int not null
 └── INDEX pg_inherits_parent_index
      ├── inhparent oid not null
      ├── inhrelid oid not null
      └── inhseqno int not null

exec-ddl
CREATE TABLE pg_index (
    indexrelid oid PRIMARY KEY,
    indrelid oid NOT NULL,
    indnatts bigint NOT NULL,
    indisunique boolean NOT NULL,
    indisprimary boolean NOT NULL,
    indisexclusion boolean NOT NULL,
    indimmediate boolean NOT NULL,
    indisclustered boolean NOT NULL,
    indisvalid boolean NOT NULL,
    indcheckxmin boolean NOT NULL,
    indisready boolean NOT NULL,
    indislive boolean NOT NULL,
    indisreplident boolean NOT NULL,
    indkey bigint[] NOT NULL,
    indcollation bigint NOT NULL,
    indclass bigint NOT NULL,
    indoption bigint NOT NULL,
    indexprs text,
    indpred text,
    INDEX pg_index_indrelid_index (indrelid)
)
----
TABLE pg_index
 ├── indexrelid oid not null
 ├── indrelid oid not null
 ├── indnatts int not null
 ├── indisunique bool not null
 ├── indisprimary bool not null
 ├── indisexclusion bool not null
 ├── indimmediate bool not null
 ├── indisclustered bool not null
 ├── indisvalid bool not null
 ├── indcheckxmin bool not null
 ├── indisready bool not null
 ├── indislive bool not null
 ├── indisreplident bool not null
 ├── indkey int[] not null
 ├── indcollation int not null
 ├── indclass int not null
 ├── indoption int not null
 ├── indexprs string
 ├── indpred string
 ├── INDEX primary
 │    └── indexrelid oid not null
 └── INDEX pg_index_indrelid_index
      ├── indrelid oid not null
      └── indexrelid oid not null

exec-ddl
CREATE TABLE pg_foreign_table (
    ftrelid oid PRIMARY KEY,
    ftserver oid NOT NULL,
    ftoptions text[]
);
----
TABLE pg_foreign_table
 ├── ftrelid oid not null
 ├── ftserver oid not null
 ├── ftoptions string[]
 └── INDEX primary
      └── ftrelid oid not null

exec-ddl
CREATE TABLE pg_foreign_server (
    oid oid PRIMARY KEY,
    srvname text NOT NULL,
    srvowner oid NOT NULL,
    srvfdw oid NOT NULL,
    srvtype text,
    srvversion text,
    srvacl text[],
    srvoptions text[],
    UNIQUE INDEX pg_foreign_server_name_index (srvname)
);
----
TABLE pg_foreign_server
 ├── oid oid not null
 ├── srvname string not null
 ├── srvowner oid not null
 ├── srvfdw oid not null
 ├── srvtype string
 ├── srvversion string
 ├── srvacl string[]
 ├── srvoptions string[]
 ├── INDEX primary
 │    └── oid oid not null
 └── INDEX pg_foreign_server_name_index
      ├── srvname string not null
      └── oid oid not null (storing)

opt
SELECT c.oid,
       n.nspname AS schemaname,
       c.relname AS tablename,
       c.relacl,
       pg_get_userbyid(c.relowner) AS tableowner,
       obj_description(c.oid) AS description,
       c.relkind,
       ci.relname AS CLUSTER,
       c.relhasoids AS hasoids,
       c.relhasindex AS hasindexes,
       c.relhasrules AS hasrules,
       t.spcname AS TABLESPACE,
       c.reloptions AS param,
       c.relhastriggers AS hastriggers,
       c.relpersistence AS unlogged,
       ft.ftoptions,
       fs.srvname,
       c.reltuples,
       (
          (SELECT count(*)
           FROM pg_inherits
           WHERE inhparent = c.oid) > 0) AS inhtable,
       i2.nspname AS inhschemaname,
       i2.relname AS inhtablename
FROM pg_class AS c
LEFT JOIN pg_namespace AS n
ON n.oid = c.relnamespace
LEFT JOIN pg_tablespace AS t
ON t.oid = c.reltablespace
LEFT JOIN
(
    pg_inherits AS i
    INNER JOIN pg_class AS c2
    ON i.inhparent = c2.oid
    LEFT JOIN pg_namespace AS n2
    ON n2.oid = c2.relnamespace
) AS i2
ON i2.inhrelid = c.oid
LEFT JOIN pg_index AS ind
ON (ind.indrelid = c.oid) AND (ind.indisclustered = 't')
LEFT JOIN pg_class AS ci
ON ci.oid = ind.indexrelid
LEFT JOIN pg_foreign_table AS ft
ON ft.ftrelid = c.oid
LEFT JOIN pg_foreign_server AS fs
ON ft.ftserver = fs.oid
WHERE ((c.relkind = 'r'::CHAR) OR (c.relkind = 'f'::CHAR)) AND (n.nspname = 'public')
----
project
 ├── columns: oid:1(oid) schemaname:29(string) tablename:2(string) relacl:26(string[]) tableowner:133(string) description:134(string) relkind:17(string) cluster:92(string) hasoids:20(bool) hasindexes:13(bool) hasrules:22(bool) tablespace:33(string) param:27(string[]) hastriggers:23(bool) unlogged:15(string) ftoptions:120(string[]) srvname:122(string) reltuples:10(float) inhtable:135(bool) inhschemaname:69(string) inhtablename:42(string)
 ├── fd: ()-->(29), (1)-->(2,10,13,15,17,20,22,23,26,27,133,134), (2)-->(1,10,13,15,17,20,22,23,26,27,133,134)
 ├── group-by
 │    ├── columns: pg_class.oid:1(oid) pg_class.relname:2(string) pg_class.relowner:5(oid) pg_class.reltuples:10(float) pg_class.relhasindex:13(bool) pg_class.relpersistence:15(string) pg_class.relkind:17(string) pg_class.relhasoids:20(bool) pg_class.relhasrules:22(bool) pg_class.relhastriggers:23(bool) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.nspname:29(string) spcname:33(string) pg_class.relname:42(string) pg_namespace.nspname:69(string) pg_class.relname:92(string) ftoptions:120(string[]) srvname:122(string) count_rows:132(int) rownum:136(int!null)
 │    ├── grouping columns: rownum:136(int!null)
 │    ├── key: (136)
 │    ├── fd: ()-->(29), (1)-->(2,5,10,13,15,17,20,22,23,26,27), (2)-->(1,5,10,13,15,17,20,22,23,26,27), (136)-->(1,2,5,10,13,15,17,20,22,23,26,27,29,33,42,69,92,120,122,132)
 │    ├── right-join
 │    │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null) pg_tablespace.oid:32(oid) spcname:33(string) pg_inherits.inhrelid:38(oid) pg_inherits.inhparent:39(oid) pg_class.oid:41(oid) pg_class.relname:42(string) pg_class.relnamespace:43(oid) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string) indexrelid:72(oid) indrelid:73(oid) indisclustered:79(bool) pg_class.oid:91(oid) pg_class.relname:92(string) ftrelid:118(oid) ftserver:119(oid) ftoptions:120(string[]) pg_foreign_server.oid:121(oid) srvname:122(string) pg_inherits.inhparent:130(oid) rownum:136(int!null)
 │    │    ├── fd: ()-->(3,28,29), (1)-->(2,5,8,10,13,15,17,20,22,23,26,27), (2)-->(1,5,8,10,13,15,17,20,22,23,26,27), (3)==(28), (28)==(3), (32)-->(33), (33)-->(32), (41)-->(42,43), (42,43)-->(41), (39)==(41), (41)==(39), (68)~~>(69), (69)~~>(68), (72)-->(73), ()~~>(79), (91)-->(92), (118)-->(119,120), (121)-->(122), (122)-->(121), (136)-->(1,2,5,8,10,13,15,17,20,22,23,26,27,32,33,38,39,41-43,68,69,72,73,79,91,92,118-122)
 │    │    ├── scan pg_inherits
 │    │    │    └── columns: pg_inherits.inhparent:130(oid!null)
 │    │    ├── row-number
 │    │    │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null) pg_tablespace.oid:32(oid) spcname:33(string) pg_inherits.inhrelid:38(oid) pg_inherits.inhparent:39(oid) pg_class.oid:41(oid) pg_class.relname:42(string) pg_class.relnamespace:43(oid) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string) indexrelid:72(oid) indrelid:73(oid) indisclustered:79(bool) pg_class.oid:91(oid) pg_class.relname:92(string) ftrelid:118(oid) ftserver:119(oid) ftoptions:120(string[]) pg_foreign_server.oid:121(oid) srvname:122(string) rownum:136(int!null)
 │    │    │    ├── key: (136)
 │    │    │    ├── fd: ()-->(3,28,29), (1)-->(2,5,8,10,13,15,17,20,22,23,26,27), (2)-->(1,5,8,10,13,15,17,20,22,23,26,27), (3)==(28), (28)==(3), (32)-->(33), (33)-->(32), (41)-->(42,43), (42,43)-->(41), (39)==(41), (41)==(39), (68)~~>(69), (69)~~>(68), (72)-->(73), ()~~>(79), (91)-->(92), (118)-->(119,120), (121)-->(122), (122)-->(121), (136)-->(1-3,5,8,10,13,15,17,20,22,23,26-29,32,33,38,39,41-43,68,69,72,73,79,91,92,118-122)
 │    │    │    └── left-join (lookup pg_foreign_server)
 │    │    │         ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null) pg_tablespace.oid:32(oid) spcname:33(string) pg_inherits.inhrelid:38(oid) pg_inherits.inhparent:39(oid) pg_class.oid:41(oid) pg_class.relname:42(string) pg_class.relnamespace:43(oid) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string) indexrelid:72(oid) indrelid:73(oid) indisclustered:79(bool) pg_class.oid:91(oid) pg_class.relname:92(string) ftrelid:118(oid) ftserver:119(oid) ftoptions:120(string[]) pg_foreign_server.oid:121(oid) srvname:122(string)
 │    │    │         ├── key columns: [119] = [121]
 │    │    │         ├── fd: ()-->(3,28,29), (1)-->(2,5,8,10,13,15,17,20,22,23,26,27), (2)-->(1,5,8,10,13,15,17,20,22,23,26,27), (3)==(28), (28)==(3), (32)-->(33), (33)-->(32), (41)-->(42,43), (42,43)-->(41), (39)==(41), (41)==(39), (68)~~>(69), (69)~~>(68), (72)-->(73), ()~~>(79), (91)-->(92), (118)-->(119,120), (121)-->(122), (122)-->(121)
 │    │    │         ├── left-join (lookup pg_foreign_table)
 │    │    │         │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null) pg_tablespace.oid:32(oid) spcname:33(string) pg_inherits.inhrelid:38(oid) pg_inherits.inhparent:39(oid) pg_class.oid:41(oid) pg_class.relname:42(string) pg_class.relnamespace:43(oid) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string) indexrelid:72(oid) indrelid:73(oid) indisclustered:79(bool) pg_class.oid:91(oid) pg_class.relname:92(string) ftrelid:118(oid) ftserver:119(oid) ftoptions:120(string[])
 │    │    │         │    ├── key columns: [1] = [118]
 │    │    │         │    ├── fd: ()-->(3,28,29), (1)-->(2,5,8,10,13,15,17,20,22,23,26,27), (2)-->(1,5,8,10,13,15,17,20,22,23,26,27), (3)==(28), (28)==(3), (32)-->(33), (33)-->(32), (41)-->(42,43), (42,43)-->(41), (39)==(41), (41)==(39), (68)~~>(69), (69)~~>(68), (72)-->(73), ()~~>(79), (91)-->(92), (118)-->(119,120)
 │    │    │         │    ├── left-join (lookup pg_class)
 │    │    │         │    │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null) pg_tablespace.oid:32(oid) spcname:33(string) pg_inherits.inhrelid:38(oid) pg_inherits.inhparent:39(oid) pg_class.oid:41(oid) pg_class.relname:42(string) pg_class.relnamespace:43(oid) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string) indexrelid:72(oid) indrelid:73(oid) indisclustered:79(bool) pg_class.oid:91(oid) pg_class.relname:92(string)
 │    │    │         │    │    ├── key columns: [72] = [91]
 │    │    │         │    │    ├── fd: ()-->(3,28,29), (1)-->(2,5,8,10,13,15,17,20,22,23,26,27), (2)-->(1,5,8,10,13,15,17,20,22,23,26,27), (3)==(28), (28)==(3), (32)-->(33), (33)-->(32), (41)-->(42,43), (42,43)-->(41), (39)==(41), (41)==(39), (68)~~>(69), (69)~~>(68), (72)-->(73), ()~~>(79), (91)-->(92)
 │    │    │         │    │    ├── right-join
 │    │    │         │    │    │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null) pg_tablespace.oid:32(oid) spcname:33(string) pg_inherits.inhrelid:38(oid) pg_inherits.inhparent:39(oid) pg_class.oid:41(oid) pg_class.relname:42(string) pg_class.relnamespace:43(oid) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string) indexrelid:72(oid) indrelid:73(oid) indisclustered:79(bool)
 │    │    │         │    │    │    ├── fd: ()-->(3,28,29), (1)-->(2,5,8,10,13,15,17,20,22,23,26,27), (2)-->(1,5,8,10,13,15,17,20,22,23,26,27), (3)==(28), (28)==(3), (32)-->(33), (33)-->(32), (41)-->(42,43), (42,43)-->(41), (39)==(41), (41)==(39), (68)~~>(69), (69)~~>(68), (72)-->(73), ()~~>(79)
 │    │    │         │    │    │    ├── select
 │    │    │         │    │    │    │    ├── columns: pg_inherits.inhrelid:38(oid) pg_inherits.inhparent:39(oid) pg_class.oid:41(oid) pg_class.relname:42(string) pg_class.relnamespace:43(oid) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string) indexrelid:72(oid!null) indrelid:73(oid!null) indisclustered:79(bool!null)
 │    │    │         │    │    │    │    ├── key: (72)
 │    │    │         │    │    │    │    ├── fd: ()-->(79), (72)-->(73)
 │    │    │         │    │    │    │    ├── scan pg_index
 │    │    │         │    │    │    │    │    ├── columns: pg_inherits.inhrelid:38(oid) pg_inherits.inhparent:39(oid) pg_class.oid:41(oid) pg_class.relname:42(string) pg_class.relnamespace:43(oid) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string) indexrelid:72(oid!null) indrelid:73(oid!null) indisclustered:79(bool!null)
 │    │    │         │    │    │    │    │    ├── key: (72)
 │    │    │         │    │    │    │    │    └── fd: (72)-->(73,79)
 │    │    │         │    │    │    │    └── filters [type=bool, outer=(79), constraints=(/79: [/true - /true]; tight), fd=()-->(79)]
 │    │    │         │    │    │    │         └── indisclustered = true [type=bool, outer=(79), constraints=(/79: [/true - /true]; tight)]
 │    │    │         │    │    │    ├── right-join
 │    │    │         │    │    │    │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null) pg_tablespace.oid:32(oid) spcname:33(string) pg_inherits.inhrelid:38(oid) pg_inherits.inhparent:39(oid) pg_class.oid:41(oid) pg_class.relname:42(string) pg_class.relnamespace:43(oid) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string)
 │    │    │         │    │    │    │    ├── fd: ()-->(3,28,29), (1)-->(2,5,8,10,13,15,17,20,22,23,26,27), (2)-->(1,5,8,10,13,15,17,20,22,23,26,27), (3)==(28), (28)==(3), (32)-->(33), (33)-->(32), (41)-->(42,43), (42,43)-->(41), (39)==(41), (41)==(39), (68)~~>(69), (69)~~>(68)
 │    │    │         │    │    │    │    ├── left-join
 │    │    │         │    │    │    │    │    ├── columns: pg_inherits.inhrelid:38(oid!null) pg_inherits.inhparent:39(oid!null) pg_class.oid:41(oid!null) pg_class.relname:42(string!null) pg_class.relnamespace:43(oid!null) pg_namespace.oid:68(oid) pg_namespace.nspname:69(string)
 │    │    │         │    │    │    │    │    ├── fd: (41)-->(42,43), (42,43)-->(41), (39)==(41), (41)==(39), (68)-->(69), (69)-->(68)
 │    │    │         │    │    │    │    │    ├── inner-join
 │    │    │         │    │    │    │    │    │    ├── columns: pg_inherits.inhrelid:38(oid!null) pg_inherits.inhparent:39(oid!null) pg_class.oid:41(oid!null) pg_class.relname:42(string!null) pg_class.relnamespace:43(oid!null)
 │    │    │         │    │    │    │    │    │    ├── fd: (41)-->(42,43), (42,43)-->(41), (39)==(41), (41)==(39)
 │    │    │         │    │    │    │    │    │    ├── scan pg_inherits
 │    │    │         │    │    │    │    │    │    │    └── columns: pg_inherits.inhrelid:38(oid!null) pg_inherits.inhparent:39(oid!null)
 │    │    │         │    │    │    │    │    │    ├── scan pg_class@pg_class_relname_nsp_index
 │    │    │         │    │    │    │    │    │    │    ├── columns: pg_class.oid:41(oid!null) pg_class.relname:42(string!null) pg_class.relnamespace:43(oid!null)
 │    │    │         │    │    │    │    │    │    │    ├── key: (41)
 │    │    │         │    │    │    │    │    │    │    └── fd: (41)-->(42,43), (42,43)-->(41)
 │    │    │         │    │    │    │    │    │    └── filters [type=bool, outer=(39,41), constraints=(/39: (/NULL - ]; /41: (/NULL - ]), fd=(39)==(41), (41)==(39)]
 │    │    │         │    │    │    │    │    │         └── pg_inherits.inhparent = pg_class.oid [type=bool, outer=(39,41), constraints=(/39: (/NULL - ]; /41: (/NULL - ])]
 │    │    │         │    │    │    │    │    ├── scan pg_namespace@pg_namespace_nspname_index
 │    │    │         │    │    │    │    │    │    ├── columns: pg_namespace.oid:68(oid!null) pg_namespace.nspname:69(string!null)
 │    │    │         │    │    │    │    │    │    ├── key: (68)
 │    │    │         │    │    │    │    │    │    └── fd: (68)-->(69), (69)-->(68)
 │    │    │         │    │    │    │    │    └── filters [type=bool, outer=(43,68), constraints=(/43: (/NULL - ]; /68: (/NULL - ]), fd=(43)==(68), (68)==(43)]
 │    │    │         │    │    │    │    │         └── pg_namespace.oid = pg_class.relnamespace [type=bool, outer=(43,68), constraints=(/43: (/NULL - ]; /68: (/NULL - ])]
 │    │    │         │    │    │    │    ├── left-join (lookup pg_tablespace)
 │    │    │         │    │    │    │    │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null) pg_tablespace.oid:32(oid) spcname:33(string)
 │    │    │         │    │    │    │    │    ├── key columns: [8] = [32]
 │    │    │         │    │    │    │    │    ├── key: (1,32)
 │    │    │         │    │    │    │    │    ├── fd: ()-->(3,28,29), (1)-->(2,5,8,10,13,15,17,20,22,23,26,27), (2)-->(1,5,8,10,13,15,17,20,22,23,26,27), (3)==(28), (28)==(3), (32)-->(33), (33)-->(32)
 │    │    │         │    │    │    │    │    ├── inner-join
 │    │    │         │    │    │    │    │    │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[]) pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null)
 │    │    │         │    │    │    │    │    │    ├── key: (1)
 │    │    │         │    │    │    │    │    │    ├── fd: ()-->(3,28,29), (1)-->(2,5,8,10,13,15,17,20,22,23,26,27), (2)-->(1,5,8,10,13,15,17,20,22,23,26,27), (3)==(28), (28)==(3)
 │    │    │         │    │    │    │    │    │    ├── select
 │    │    │         │    │    │    │    │    │    │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[])
 │    │    │         │    │    │    │    │    │    │    ├── key: (1)
 │    │    │         │    │    │    │    │    │    │    ├── fd: (1)-->(2,3,5,8,10,13,15,17,20,22,23,26,27), (2,3)-->(1,5,8,10,13,15,17,20,22,23,26,27)
 │    │    │         │    │    │    │    │    │    │    ├── scan pg_class
 │    │    │         │    │    │    │    │    │    │    │    ├── columns: pg_class.oid:1(oid!null) pg_class.relname:2(string!null) pg_class.relnamespace:3(oid!null) pg_class.relowner:5(oid!null) pg_class.reltablespace:8(oid!null) pg_class.reltuples:10(float!null) pg_class.relhasindex:13(bool!null) pg_class.relpersistence:15(string!null) pg_class.relkind:17(string!null) pg_class.relhasoids:20(bool!null) pg_class.relhasrules:22(bool!null) pg_class.relhastriggers:23(bool!null) pg_class.relacl:26(string[]) pg_class.reloptions:27(string[])
 │    │    │         │    │    │    │    │    │    │    │    ├── key: (1)
 │    │    │         │    │    │    │    │    │    │    │    └── fd: (1)-->(2,3,5,8,10,13,15,17,20,22,23,26,27), (2,3)-->(1,5,8,10,13,15,17,20,22,23,26,27)
 │    │    │         │    │    │    │    │    │    │    └── filters [type=bool, outer=(17)]
 │    │    │         │    │    │    │    │    │    │         └── (pg_class.relkind = 'r'::CHAR) OR (pg_class.relkind = 'f'::CHAR) [type=bool, outer=(17)]
 │    │    │         │    │    │    │    │    │    ├── scan pg_namespace@pg_namespace_nspname_index
 │    │    │         │    │    │    │    │    │    │    ├── columns: pg_namespace.oid:28(oid!null) pg_namespace.nspname:29(string!null)
 │    │    │         │    │    │    │    │    │    │    ├── constraint: /29: [/'public' - /'public']
 │    │    │         │    │    │    │    │    │    │    ├── cardinality: [0 - 1]
 │    │    │         │    │    │    │    │    │    │    ├── key: ()
 │    │    │         │    │    │    │    │    │    │    └── fd: ()-->(28,29)
 │    │    │         │    │    │    │    │    │    └── filters [type=bool, outer=(3,28), constraints=(/3: (/NULL - ]; /28: (/NULL - ]), fd=(3)==(28), (28)==(3)]
 │    │    │         │    │    │    │    │    │         └── pg_namespace.oid = pg_class.relnamespace [type=bool, outer=(3,28), constraints=(/3: (/NULL - ]; /28: (/NULL - ])]
 │    │    │         │    │    │    │    │    └── true [type=bool]
 │    │    │         │    │    │    │    └── filters [type=bool, outer=(1,38), constraints=(/1: (/NULL - ]; /38: (/NULL - ]), fd=(1)==(38), (38)==(1)]
 │    │    │         │    │    │    │         └── pg_inherits.inhrelid = pg_class.oid [type=bool, outer=(1,38), constraints=(/1: (/NULL - ]; /38: (/NULL - ])]
 │    │    │         │    │    │    └── filters [type=bool, outer=(1,73), constraints=(/1: (/NULL - ]; /73: (/NULL - ]), fd=(1)==(73), (73)==(1)]
 │    │    │         │    │    │         └── indrelid = pg_class.oid [type=bool, outer=(1,73), constraints=(/1: (/NULL - ]; /73: (/NULL - ])]
 │    │    │         │    │    └── true [type=bool]
 │    │    │         │    └── true [type=bool]
 │    │    │         └── true [type=bool]
 │    │    └── filters [type=bool, outer=(1,130), constraints=(/1: (/NULL - ]; /130: (/NULL - ]), fd=(1)==(130), (130)==(1)]
 │    │         └── pg_inherits.inhparent = pg_class.oid [type=bool, outer=(1,130), constraints=(/1: (/NULL - ]; /130: (/NULL - ])]
 │    └── aggregations [outer=(1,2,5,10,13,15,17,20,22,23,26,27,29,33,42,69,92,120,122,130)]
 │         ├── count [type=int, outer=(130)]
 │         │    └── variable: pg_inherits.inhparent [type=oid, outer=(130)]
 │         ├── const-agg [type=oid, outer=(1)]
 │         │    └── variable: pg_class.oid [type=oid, outer=(1)]
 │         ├── const-agg [type=string, outer=(2)]
 │         │    └── variable: pg_class.relname [type=string, outer=(2)]
 │         ├── const-agg [type=oid, outer=(5)]
 │         │    └── variable: pg_class.relowner [type=oid, outer=(5)]
 │         ├── const-agg [type=float, outer=(10)]
 │         │    └── variable: pg_class.reltuples [type=float, outer=(10)]
 │         ├── const-agg [type=bool, outer=(13)]
 │         │    └── variable: pg_class.relhasindex [type=bool, outer=(13)]
 │         ├── const-agg [type=string, outer=(15)]
 │         │    └── variable: pg_class.relpersistence [type=string, outer=(15)]
 │         ├── const-agg [type=string, outer=(17)]
 │         │    └── variable: pg_class.relkind [type=string, outer=(17)]
 │         ├── const-agg [type=bool, outer=(20)]
 │         │    └── variable: pg_class.relhasoids [type=bool, outer=(20)]
 │         ├── const-agg [type=bool, outer=(22)]
 │         │    └── variable: pg_class.relhasrules [type=bool, outer=(22)]
 │         ├── const-agg [type=bool, outer=(23)]
 │         │    └── variable: pg_class.relhastriggers [type=bool, outer=(23)]
 │         ├── const-agg [type=string[], outer=(26)]
 │         │    └── variable: pg_class.relacl [type=string[], outer=(26)]
 │         ├── const-agg [type=string[], outer=(27)]
 │         │    └── variable: pg_class.reloptions [type=string[], outer=(27)]
 │         ├── const-agg [type=string, outer=(29)]
 │         │    └── variable: pg_namespace.nspname [type=string, outer=(29)]
 │         ├── const-agg [type=string, outer=(33)]
 │         │    └── variable: spcname [type=string, outer=(33)]
 │         ├── const-agg [type=string, outer=(42)]
 │         │    └── variable: pg_class.relname [type=string, outer=(42)]
 │         ├── const-agg [type=string, outer=(69)]
 │         │    └── variable: pg_namespace.nspname [type=string, outer=(69)]
 │         ├── const-agg [type=string, outer=(92)]
 │         │    └── variable: pg_class.relname [type=string, outer=(92)]
 │         ├── const-agg [type=string[], outer=(120)]
 │         │    └── variable: ftoptions [type=string[], outer=(120)]
 │         └── const-agg [type=string, outer=(122)]
 │              └── variable: srvname [type=string, outer=(122)]
 └── projections [outer=(1,2,5,10,13,15,17,20,22,23,26,27,29,33,42,69,92,120,122,132)]
      ├── pg_get_userbyid(pg_class.relowner) [type=string, outer=(5)]
      ├── obj_description(pg_class.oid) [type=string, outer=(1)]
      └── count_rows > 0 [type=bool, outer=(132)]
