Estou tentando avaliar algo. Eu quero criar um índice e obter seu tamanho em um bloco plpgsql.
Isso funciona:
haki=# create index ix on t(n);
CREATE INDEX
haki=# select pg_relation_size('ix');
pg_relation_size
------------------
22487040
Quando tento o mesmo em um bloco plpgsql, estou recebendo ERROR: relation "ix" does not exist
:
haki=# DO $$DECLARE
haki$# s int;
haki$# BEGIN
haki$# PERFORM 'create index ix on t(n)';
haki$# SELECT pg_relation_size('ix') INTO s;
haki$# RAISE NOTICE 'size is %', s;
haki$# END$$;
ERROR: relation "ix" does not exist
LINE 1: SELECT pg_relation_size('ix')
Eu estou supondo que tem algo a ver com o fato de que o DDL é transacional e o bloco não está comprometido (eu também posso estar errado!). No entanto, não consigo encontrar uma maneira de contornar isso.
É possível obter o tamanho de um índice criado em um bloco plpsql?