Gostaria de saber se é possível renomear a tabela Postgres sem alterar o tipo em cascata para objetos dependentes? Por exemplo,
create table test_1(id int);
create function test_1_funct (param test_1[]) returns void as $body$
begin
return;
end
$body$
language plpgsql;
alter table test_1 rename to test_2 ;
-- function test_1_funct signature silently changed,
-- so it now accepts test_2[].
Eu quero emular um comportamento semelhante ao que o Oracle faria - marque a função inválida, deixe-me criar uma tabela com o nome antigo e recompilar a função sob demanda. Do jeito que está, não me deixa drop table test_2
.
Não é. Não deveria ser. As tabelas resolvem para um oid que representa sua relação.
Alterar seu "nome" é essencialmente uma atualização de catálogo no
relname
. De qualquer forma, como ficaria o que você está falando: o que aconteceria se você ligassetest_1_funct
depois da renomeação? Que tipo seria esperado?