Usando o psql, como listar extensões instaladas em um banco de dados?

Respostas:

363

No psql isso seria

\dx

Consulte o manual para obter detalhes: http://www.postgresql.org/docs/current/static/app-psql.html

Fazendo isso em SQL simples, seria uma seleção em pg_extension:

SELECT * 
FROM pg_extension

http://www.postgresql.org/docs/current/static/catalog-pg-extension.html

um cavalo sem nome
fonte
@SoichiHayashi: então provavelmente você está usando uma versão antiga Postgres
a_horse_with_no_name
Estou executando o servidor PostgreSQL 9.3.5, mas estou usando o cliente psql 8.4.20 que acompanha o CentOS 6.5. Talvez eu precise instalar a versão mais recente do psql?
Soichi Hayashi
@SoichiHayashi \dx é um psql comando que foi introduzido com 9.0 quando o create extensionrecurso foi lançado. Então, sim, você também precisa atualizar o seu psql(você sempre deve usar a psqlversão que corresponde à sua versão do banco de dados)
a_horse_with_no_name
1
Que ironia. stackoverflow.com/questions/9463318/… Um dos comentários foi que tais perguntas (e a incapacidade geral de fazer coisas realmente difíceis como \?) incomodariam a_horse_with_no_name: D. Para ser justo, esta resposta contém outras informações úteis.
John Powell
11
talvez você possa mencionar a consulta SQL completa para a lista:select * from pg_extension
icl7126
82

Além disso, se você deseja saber quais extensões estão disponíveis no seu servidor: SELECT * FROM pg_available_extensions

Dave Glassborow
fonte
5

Esta consulta SQL fornece uma saída semelhante a \dx:

SELECT e.extname AS "Name", e.extversion AS "Version", n.nspname AS "Schema", c.description AS "Description" 
FROM pg_catalog.pg_extension e 
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace 
LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass 
ORDER BY 1;

Obrigado a https://blog.dbi-services.com/listing-the-extensions-available-in-postgresql/

hit3k
fonte