CREATE OR REPLACE FUNCTION public.pg_parts_size(text)
RETURNS bigint
AS $$
SELECT sum(pg_relation_size(oid))::bigint FROM pg_class WHERE oid IN
(SELECT inhrelid FROM pg_inherits WHERE inhparent =
(SELECT c.oid FROM pg_class c join pg_namespace n ON (n.oid=c.relnamespace) WHERE
nspname = substr($1,1,strpos($1,'.')-1) AND relname = substr($1,strpos($1,'.')+1,length($1))
)
)
$$ LANGUAGE sql;
pgods=# select pg_size_pretty(pg_relation_size('ods.ods_tblhits'));
pg_size_pretty
----------------
0 bytes
(1 row)
pgods=# select pg_size_pretty(pg_parts_size('ods.ods_tblhits'));
pg_size_pretty
----------------
165 GB
(1 row)
Sizing Up Your Partitions
Just a handy little function I wrote today to help determine the total size of your [http://www.postgresql.org/docs/current/interactive/ddl-partitioning.html partitioned tables] (inclusive of all your partitions). I had a plpgsql version but this one seems simpler. It doesnt include indexes but could be modified to do so. Hopefully it will be of use to others.