with base_objects as (
select
case
when c.relkind = 'r' then 'TABLE'
when c.relkind = 'v' then 'VIEW'
when c.relkind = 'm' then 'MATERIALIZED VIEW'
when c.relkind = 'i' then 'INDEX'
when c.relkind = 'S' then 'SEQUENCE'
when c.relkind = 'f' then 'FOREIGN TABLE'
when c.relkind = 'p' then 'PARTITIONED TABLE'
when c.relkind = 'I' then 'PARTITIONED INDEX'
else 'OTHER'
end as object_type
from pg_class c
join pg_namespace n on n.oid = c.relnamespace
where n.nspname = 'myschema'
union all
select
case p.prokind
when 'f' then 'FUNCTION'
when 'p' then 'PROCEDURE'
when 'a' then 'AGGREGATE'
when 'w' then 'WINDOW'
else 'OTHER'
end as object_type
from pg_proc p
join pg_namespace n on n.oid = p.pronamespace
where n.nspname = 'myschema'
union all
select 'TYPE'
from pg_type t
join pg_namespace n on n.oid = t.typnamespace
where n.nspname = 'myschema'
and t.typtype in ('c', 'e', 'd') -- composite, enum, domain
union all
select 'CONSTRAINT'
from pg_constraint c
join pg_namespace n on n.oid = c.connamespace
where n.nspname = 'myschema'
)
select object_type, count(*)
from base_objects
group by object_type
order by object_type;
Minimalistic Oracle contains a collection of practical examples from my encounters with Oracle technologies. When relevant, I also write about other technologies, like Linux or PostgreSQL. Many of the posts starts with "how to" since they derive directly from my own personal experience. My goal is to provide simple examples, so that they can be easily adapted to other situations.
Friday, October 31, 2025
PostgreSQL query that mimics Oracle's DBA_OBJECTS aggregation
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment