Написать запрос прямо к ней — это же в остальном обычная таблица.
Тогда как можно получить список партиций базовой таблицы?
Не, мне надо классический sql заросом
Почему? Но если уж надо, стоит его классически "содрать" из psql с помощью \set ECHO_HIDDEN yes. ;)
Доступа через консоль нет, запросы могу делать только через sql а на это \set ECHO_HIDDEN yes ругается
А почему нет-то? Если Вы можете подключиться любым клиентом, то возможно использовать и psql (у него набор методов подключения шире всех, если что). Ну вот я вытащил этот запрос из \d+: SELECT c.oid::pg_catalog.regclass, c.relkind, pg_catalog.pg_get_expr(c.relpartbound, c.oid) FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid = i.inhrelid AND i.inhparent = '26643' ORDER BY pg_catalog.pg_get_expr(c.relpartbound, c.oid) = 'DEFAULT', c.oid::pg_catalog.regclass::pg_catalog.text; i.inhparent = '26643' — это OID нужной таблицы, скорее всего. В общем, протестируйте / поправьте.
если вдруг у вас postgres 12 (или новее), то там появились спец. функции для этого.
Интересно а как бы его модифицировать чтоб не по i.inhparent искать а по названию базовой таблицы?
Попробуйте вместо i.inhparent = <oid> написать i.inhparent = 'название_таблицы'::regclass, например. Если нужно, то со схемой.
Ну это прям вообще круто))
Обсуждают сегодня