Desejo atualizar um banco de dados Postgres 9.6 no CloudSQL (GCP) até a versão 13. Como a exportação/importação de SQL é o único caminho de atualização compatível, exportei o banco de dados PG9.6 e tentei importá-lo para uma nova instância PG13.
A importação falha com o seguinte erro:
ERROR: function public.pg_stat_statements_reset() does not exist
Eu percebi que é acionado pela seguinte linha no dump:
GRANT ALL ON FUNCTION public.pg_stat_statements_reset() TO somerandomuser;
Quando tento executar essa única linha manualmente na nova instância PG13, também recebo o erro. O mesmo acontece no PG12.
No PG11, porém, funciona bem.
Verifiquei se a pg_stat_statements
extensão está instalada em todas as instâncias de banco de dados testadas:
SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version is not null;
name | default_version | installed_version | comment
--------------------+-----------------+-------------------+------------------------------------------------------------------------
pg_stat_statements | 1.8 | 1.8 | track planning and execution statistics of all SQL statements executed
(1 row)
Não consegui encontrar nenhuma documentação sobre uma alteração importante que afete isso. Alguma idéia de por que não está funcionando?
Adicionamos argumentos
pg_stat_statements_reset
durante o ciclo de desenvolvimento do postgresql 12 (na verdade, na versão 1.7 da própria extensão). Esses novos argumentos têm valores padrão, mas de qualquer maneirafoo()
efoo(param int DEFAULT 0)
são funções diferentes do ponto de vista do postgresql. Você precisa substituir este GRANT paraTambém devido à natureza da extensão pg_stat_statements, você pode simplesmente descartar a extensão antes de atualizar e criar novamente mais tarde.