A partir do PostGIS 2.3, a extensão do postgis foi alterada para não permitir mais a realocação. Todas as chamadas de função agora são qualificadas pelo esquema.
Embora essa alteração tenha corrigido alguns problemas com a restauração do banco de dados, ela criou um problema, pois se você instalou o PostGIS em um esquema diferente daquele que você desejava, não é intuitivo como movê-lo para um esquema diferente. Felizmente há uma maneira de fazer isso.
Para este exemplo, o PostGIS foi instalado no esquema padrão para demonstrar como movê-lo para outro esquema. Você pode executar estas etapas usando o psql, pgAdmin ou qualquer outra ferramenta desejada.
A maioria das pessoas tem seu esquema padrão configurado como public, caso você não especifique explicitamente um esquema na instalação, geralmente o PostGIS será instalado no esquema public.
CREATE EXTENSION postgis;
Agora vou criar um novo esquema para movê-lo e adicionar este esquema ao search_path:
CREATE SCHEMA postgis; ALTER DATABASE mydb SET search_path = public, postgis;
Se você estiver executando o PostGIS 2.3 ou superior, tente mudar para um esquema diferente usando o comando abaixo:
ALTER EXTENSION postgis SET SCHEMA postgis;
Isso irá falhar e o banco irá lhe apresentar o seguinte erro “ERRO: a extensão “postgis” não suporta SET SCHEMA”.
Para permitir o movimento, siga estes passos:
UPDATE pg_extension SET extrelocatable = TRUE WHERE extname = 'postgis'; ALTER EXTENSION postgis SET SCHEMA postgis; ALTER EXTENSION postgis UPDATE TO "2.4.1next"; ALTER EXTENSION postgis UPDATE TO "2.4.1";
Observe o uso da expressão next. É necessário utilizar a expressão next nesta etapa para atualizar todas as referências das funções do esquema atual para o novo do esquema. Next é projetado para permitir a atualização de uma extensão do postgis para uma versão já existente. Tentar executar UPDATE TO “2.4.1” quando você já está no 2.4.1 acionaria um erro, pois você já está nessa versão.
Fonte: PostGIS