Todos os produtos
Search
Central de documentação

Hologres:System tables

Última atualização: Aug 18, 2026

O Hologres oferece um conjunto de tabelas de sistema para consultar metadados, estatísticas, informações de bloqueio e permissões de acesso. Este tópico aborda as colunas de cada tabela de sistema e consultas SQL comuns executáveis nessas tabelas.

Visão geral

O Hologres expõe duas categorias de tabelas de sistema:

  • Tabelas nativas do Hologres (com prefixo hg): desenvolvidas especificamente para o Hologres, abrangendo propriedades e estatísticas específicas compartilhadas entre todos os nós.

  • Tabelas compatíveis com PostgreSQL (com prefixo pg ou sob information_schema): herdadas do PostgreSQL. Algumas colunas nessas tabelas não se aplicam ao Hologres, pois ele é um sistema distribuído, e não uma instância independente do PostgreSQL.

Tabela

Origem

Descrição

hologres.hg_table_properties

Nativa do Hologres

Propriedades e índices de todas as tabelas no banco de dados atual.

hologres_statistic.hg_table_statistic

Nativa do Hologres

Estatísticas de tabelas compartilhadas entre todos os nós.

pg_catalog.pg_tables

Compatível com PostgreSQL

Metadados da tabela, incluindo schema, proprietário e informações de índice.

pg_catalog.pg_locks

Compatível com PostgreSQL

Informações de bloqueio em tempo de execução. Utilize esta tabela para diagnosticar instruções DDL ou consultas bloqueadas.

pg_catalog.pg_class

Compatível com PostgreSQL

Tabela de catálogo do PostgreSQL contendo metadados de relações. Geralmente usada em conjunto com outras tabelas do pg_catalog.

pg_catalog.pg_stats

Compatível com PostgreSQL

Estatísticas no nível de coluna usadas pelo planejador do PostgreSQL em um único nó.

pg_catalog.pg_roles

Compatível com PostgreSQL

Funções e suas permissões em uma instância do Hologres.

information_schema.role_table_grants

Compatível com PostgreSQL

Permissões concedidas a funções em tabelas e visualizações.

Como identificar uma tabela de sistema

As tabelas do Hologres dividem-se em duas categorias: tabelas de sistema e tabelas criadas pelo usuário. Utilize os métodos a seguir para diferenciá-las:

  • Convenção de nomenclatura: Um nome de tabela com o prefixo hg indica uma tabela de sistema nativa do Hologres (por exemplo, hologres.hg_table_properties). Já o prefixo pg identifica uma tabela de sistema compatível com PostgreSQL (por exemplo, pg_catalog.pg_tables). Tabelas sem os prefixos hg ou pg são tabelas criadas pelo usuário.

  • Schema: As tabelas de sistema residem em schemas como hologres e pg_catalog. Por padrão, as tabelas criadas pelo usuário ficam no schema public.

  • Proprietário: Execute hg_dump_script para visualizar o DDL de uma tabela. Se o campo owner for uma conta de sistema, trata-se de uma tabela de sistema. Caso o campo owner seja uma conta de usuário comum, a tabela foi criada pelo usuário.

-- View the DDL of a system table. The owner is a system account.
SELECT hg_dump_script('hologres.hg_table_properties');

-- View the DDL of a user-created table. The owner is the current user account.
SELECT hg_dump_script('public.my_table');
Nota

Não é possível consultar diretamente com SELECT as tabelas de sistema sob o schema hologres (por exemplo, hologres.hg_table_properties). Use hg_dump_script para visualizar seus metadados.

Limitações

  • Tabelas com o prefixo hg são tabelas de sistema do Hologres. Tabelas com o prefixo pg são tabelas de sistema do PostgreSQL. Em versões do Hologres anteriores à V1.3.22, não é possível unir tabelas de sistema do PostgreSQL com tabelas internas do Hologres nem importar dados das tabelas de sistema do PostgreSQL para tabelas internas do Hologres. Atualize para a versão V1.3.22 ou posterior para remover essa restrição.

  • No Hologres, o campo de identificador de objeto (OID) em uma tabela de sistema identifica exclusivamente relações como tabelas, índices e visualizações. Como o Hologres é um sistema distribuído com vários nós de frontend (FE), os valores de OID podem diferir entre os nós. Consequentemente, resultados de consultas que incluem valores de OID podem apresentar inconsistências entre os nós.

hologres.hg_table_properties

Esta tabela contém informações e propriedades de todas as tabelas no banco de dados atual.

Coluna

Descrição

table_namespace

Schema que contém a tabela. O Hologres fornece três schemas de sistema: hologres (tabelas de sistema do Hologres), hologres_statistic (tabelas de estatísticas) e pg_catalog (tabelas de metadados do PostgreSQL).

table_name

Nome da tabela. As tabelas de sistema incluem: hologres.hg_insert_progress_stats, hologres.hg_table_properties, hologres.hg_table_group_properties, hologres_statistic.hg_table_statistic e pg_catalog.pg_stat_activity.

property_key

Nome da propriedade. Valores válidos: table_id, clustering_index_id, clustering_index_name, lifecycle_in_days (TTL; -1 significa validade permanente), storage_format (sst para tabelas orientadas a linhas; orc por padrão para tabelas orientadas a colunas na V0.10 ou posterior), table_group, schema_version, primary_key, orientation (row, column ou row,column para armazenamento híbrido linha-coluna suportado na V1.1 e posterior), distribution_key, dictionary_encoding_columns, bitmap_columns, clustering_key, create_time, last_ddl_time, storage_mode (hot para armazenamento padrão; cold para armazenamento de Acesso Infrequente (IA)).

property_value

Valor da propriedade.

pg_catalog.pg_tables

Esta tabela contém metadados de todas as tabelas, incluindo tabelas criadas pelo usuário e tabelas de sistema.

ColunaDescrição
schemanameSchema que contém a tabela. O Hologres fornece três schemas de sistema: hologres, pg_catalog e information_schema.
tablenameNome da tabela.
tableownerProprietário da tabela. O holo_admin possui as tabelas de sistema e esse valor não pode ser alterado. Contas com o modelo de permissão simples (SPM) ou modelo de permissão no nível de schema (SLPM) ativado aparecem como developer.
tablespaceNão aplicável no Hologres.
hasindexestrue se a tabela tem ou teve um índice.
hasrulestrue se a tabela tem ou teve uma regra de reescrita.
hastriggerstrue se a tabela tem ou teve um gatilho.
rowsecurityNão aplicável no Hologres.

pg_catalog.pg_locks

Esta tabela exibe informações de bloqueio em tempo de execução. Consulte-a para determinar se um bloqueio está impedindo a execução de uma instrução DDL ou consulta.

Coluna

Descrição

locktype

Tipo do objeto bloqueável. Valores válidos: relation (bloqueio de tabela) e advisory (bloqueio DDL). Os tipos de bloqueio do PostgreSQL extend, page, tuple, transactionid, virtualxid, object e userlock não se aplicam ao Hologres.

database

OID do banco de dados que contém o objeto bloqueado.

relation

OID da tabela bloqueada. Nulo se o objeto não for uma tabela ou parte de uma tabela.

virtualxid

ID de transação virtual do bloqueio. Nulo se o objeto não for um ID de transação virtual.

transactionid

ID da transação. Nulo se o objeto não for um ID de transação.

pid

ID do processo (PID) do processo do servidor que mantém ou aguarda o bloqueio. Use este PID para localizar o processo em pg_catalog.pg_stat_activity.

mode

Modo de bloqueio: bloqueio compartilhado ou bloqueio exclusivo.

granted

true se o bloqueio estiver mantido; false se o bloqueio estiver sendo aguardado.

Columns not applicable in Hologres: page, tuple, classid, objid, objsubid, virtualtransaction, fastpath.

pg_catalog.pg_class

Esta tabela contém informações do catálogo PostgreSQL para todas as relações (tabelas, índices, visualizações, entre outros). Normalmente, é consultada em conjunto com outras tabelas do pg_catalog.

Como o Hologres é um sistema distribuído com múltiplos nós FE, os valores de OID geralmente diferem entre os nós. Resultados de consultas contendo OIDs podem ser inconsistentes.

Coluna

Descrição

oid

OID exclusivo da relação.

relname

Nome da relação.

relnamespace

OID do schema que contém a relação.

relowner

Proprietário da relação.

reltuples

Contagem estimada de linhas usada pelo planejador. Atualizada por VACUUM, ANALYZE ou instruções DDL. No Hologres, esta coluna especifica a contagem de linhas das estatísticas.

relallvisible

Número estimado de páginas totalmente visíveis usado pelo planejador. Atualizado por VACUUM, ANALYZE ou instruções DDL. No Hologres, esta coluna especifica a versão das estatísticas.

relhasindex

true se a relação tem ou teve um índice.

relisshared

true se a tabela for compartilhada entre todos os bancos de dados no cluster (por exemplo, pg_catalog.pg_database). Não aplicável no Hologres.

relpersistence

Persistência da tabela: p (permanente), u (não registrada) ou t (temporária).

relkind

Tipo de relação: r (tabela), i (índice), S (sequência), v (visualização), m (visualização materializada), c (tipo composto), t (tabela TOAST), f (tabela externa).

relnatts

Número de colunas de usuário, excluindo colunas de sistema.

relhaspkey

true se a relação tem ou teve uma chave primária.

relhassubclass

true se a relação tem ou teve uma tabela filha herdada.

relacl

Permissões de acesso para a relação.

reloptions

Propriedades da tabela. Por exemplo, autovacuum_enabled=false indica que o auto-vacuum e o auto-analyze estão desativados para a tabela.

Colunas não aplicáveis no Hologres: reltype, reloftype, relam, relfilenode, reltablespace, relpages, reltoastrelid, relchecks, relhasoids, relhasrules, relhastriggers, relispopulated, relreplident, relfrozenxid, relminmxid.

hologres_statistic.hg_table_statistic

Esta tabela contém estatísticas nativas do Hologres compartilhadas entre todos os nós. Ela é atualizada quando você executa ANALYZE ou quando o recurso de auto-analyze é acionado.

Coluna

Descrição

unique_name

Identificador exclusivo da tabela.

schema_version

Versão do schema da tabela.

statistic_version

Versão das estatísticas.

statistics

Conteúdo das estatísticas, codificado em Base64.

schema_name

Schema que contém a tabela.

table_name

Nome da tabela.

total_rows

Número total de linhas na tabela.

sample_rows

Número de linhas amostradas para coleta de estatísticas.

nattr

Número de colunas na tabela.

used_attrs

Colunas analisadas pela instrução ANALYZE.

histogram_attrs

Colunas para as quais estatísticas de histograma são coletadas.

ndv_attrs

Colunas para as quais estatísticas de valores distintos (NDV) são coletadas.

user_name

Usuário que executou ANALYZE ou acionou o auto-analyze.

analyze_timestamp

Horário em que ANALYZE foi executado ou o auto-analyze foi acionado.

analyze_cost

Tempo gasto por ANALYZE ou pelo auto-analyze para concluir.

analyze_count

Número de vezes que ANALYZE foi executado ou o auto-analyze foi acionado.

pg_catalog.pg_stats

Esta tabela contém estatísticas no nível de coluna do PostgreSQL usadas pelo planejador do PostgreSQL de nó único.

Coluna

Descrição

schemaname

Nome do schema.

tablename

Nome da tabela.

attname

Nome da coluna.

inherited

true se as estatísticas incluírem subcolunas herdadas.

null_frac

Fração de linhas com valores nulos nesta coluna.

avg_width

Largura média (em bytes) das entradas da coluna.

n_distinct

Número estimado de valores distintos, se positivo. Se negativo, o valor absoluto representa a proporção de valores distintos em relação ao total de linhas (usado quando se espera que o número de valores distintos cresça junto com a tabela). Por exemplo, -1 indica uma coluna única.

most_common_vals

Lista dos valores mais comuns na coluna. Nulo se nenhum valor for suficientemente comum.

most_common_freqs

Frequências dos valores mais comuns, calculadas como ocorrências divididas pelo total de linhas. Nulo se most_common_vals for nulo.

histogram_bounds

Valores que dividem o intervalo de valores da coluna em grupos de tamanho aproximadamente igual. Valores em most_common_vals são excluídos deste histograma.

most_common_elems

Valores de elementos não nulos mais comuns dentro de valores de coluna do tipo array.

most_common_elem_freqs

Frequências dos valores de elementos mais comuns: a fração de linhas contendo pelo menos uma instância de cada valor. Nulo se most_common_elems for nulo.

Colunas não aplicáveis no Hologres: correlation, elem_count_histogram.

pg_catalog.pg_roles

Esta tabela lista todas as funções em uma instância do Hologres e suas permissões.

Coluna

Descrição

rolname

Nome da função.

rolsuper

t se a função tiver privilégios de superusuário; f caso contrário.

rolinherit

t se a função herdar permissões de qualquer função da qual seja membro; f caso contrário.

rolcreaterole

t se a função puder criar outras funções; f caso contrário.

rolcreatedb

t se a função puder criar bancos de dados; f caso contrário.

rolcanlogin

t se a função puder se conectar a instâncias; f caso contrário.

rolconnlimit

Número máximo de conexões simultâneas que a função pode estabelecer. Se o valor for -1, o número máximo de conexões simultâneas não está configurado no Hologres.

oid

OID exclusivo da função.

Colunas não aplicáveis no Hologres: rolreplication, rolpassword, rolvaliduntil, rolbypassrls, rolconfig.

information_schema.role_table_grants

Esta tabela lista as permissões concedidas a funções em tabelas e visualizações em uma instância do Hologres.

Coluna

Descrição

grantor

Função que concedeu a permissão.

grantee

Função que recebeu a permissão.

table_catalog

Nome do banco de dados.

table_schema

Nome do schema.

table_name

Nome da tabela.

privilege_type

Tipo de permissão concedida. Valores válidos: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER.

is_grantable

YES se a permissão puder ser concedida a outros; NO caso contrário.

with_hierarchy

YES se o tipo de permissão for SELECT; NO caso contrário.

Consultas SQL comuns

Todas as consultas nesta seção podem ser executadas usando psql ou qualquer cliente compatível com PostgreSQL.

Consultar propriedades e índices de tabela

SELECT * FROM hologres.hg_table_properties WHERE table_name = '<table_name>';

Recuperar o DDL de uma tabela ou visualização

-- Retrieve the DDL for a table
SELECT hg_dump_script('<table_name>');

-- Retrieve the DDL for a view
SELECT hg_dump_script('<view_name>');
Se a consulta falhar, instale primeiro a extensão hg_toolkit:
CREATE EXTENSION hg_toolkit;

Consultar o endpoint da instância

SHOW hg_frontend_endpoints;

Listar todos os bancos de dados na instância atual

SELECT
    d.datname AS "Name",
    pg_catalog.pg_get_userbyid(d.datdba) AS "Owner",
    pg_catalog.pg_encoding_to_char(d.encoding) AS "Encoding",
    d.datcollate AS "Collate",
    d.datctype AS "Ctype",
    pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
WHERE d.datname != 'postgres'
    AND d.datname != 'template0'
    AND d.datname != 'template1'
ORDER BY 1;

Listar todos os mapeamentos de usuário no banco de dados atual

SELECT
    um.srvname AS "Server",
    um.usename AS "User name"
FROM pg_catalog.pg_user_mappings um
WHERE um.srvname != 'query_log_store_server'
ORDER BY 1, 2;

Listar todos os schemas no banco de dados atual

SELECT
    n.nspname AS "Name",
    pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"
FROM pg_catalog.pg_namespace n
WHERE n.nspname !~ '^pg_'
    AND n.nspname <> 'information_schema'
    AND n.nspname != 'hologres'
    AND n.nspname != 'hologres_sample'
    AND n.nspname != 'hologres_statistic'
    AND n.nspname !~ '^hg_'
    AND n.nspname !~ '^holo_'
ORDER BY 1;

Listar todas as tabelas, tabelas externas e visualizações no banco de dados atual

SELECT
    n.nspname AS "Schema",
    c.relname AS "Name",
    CASE c.relkind
        WHEN 'r' THEN 'table'
        WHEN 'v' THEN 'view'
        WHEN 'm' THEN 'materialized view'
        WHEN 'i' THEN 'index'
        WHEN 'S' THEN 'sequence'
        WHEN 's' THEN 'special'
        WHEN 'f' THEN 'foreign table'
        WHEN 'p' THEN 'partitioned table'
        WHEN 'I' THEN 'partitioned index'
    END AS "Type",
    pg_catalog.pg_get_userbyid(c.relowner) AS "Owner"
FROM pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'S', 'f', '')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
    AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1, 2;

Listar todas as tabelas e proprietários no schema atual (excluindo tabelas de sistema)

-- Include system tables
SELECT * FROM pg_tables;

-- Exclude system tables
SELECT
    n.nspname AS "Schema",
    c.relname AS "Name",
    CASE c.relkind
        WHEN 'r' THEN 'table'
        WHEN 'v' THEN 'view'
        WHEN 'm' THEN 'materialized view'
        WHEN 'i' THEN 'index'
        WHEN 'S' THEN 'sequence'
        WHEN 's' THEN 'special'
        WHEN 'f' THEN 'foreign table'
        WHEN 'p' THEN 'partitioned table'
        WHEN 'I' THEN 'partitioned index'
    END AS "Type",
    pg_catalog.pg_get_userbyid(c.relowner) AS "Owner"
FROM pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'S', 'f', '')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
    AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1, 2;

Listar tabelas filhas de uma tabela pai

-- With partition key values
SELECT
    c.oid::pg_catalog.regclass,
    c.relkind,
    pg_catalog.pg_get_expr(c.relpartbound, c.oid)
FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i
WHERE c.oid = i.inhrelid
    AND i.inhparent::pg_catalog.regclass = '<parent_table_name>'::pg_catalog.regclass
ORDER BY pg_catalog.pg_get_expr(c.relpartbound, c.oid) = 'DEFAULT';

-- Without partition key values
SELECT
    nmsp_parent.nspname AS parent_schema,
    parent.relname AS parent,
    nmsp_child.nspname AS child_schema,
    child.relname AS child
FROM pg_inherits
    JOIN pg_class parent ON pg_inherits.inhparent = parent.oid
    JOIN pg_class child ON pg_inherits.inhrelid = child.oid
    JOIN pg_namespace nmsp_parent ON nmsp_parent.oid = parent.relnamespace
    JOIN pg_namespace nmsp_child ON nmsp_child.oid = child.relnamespace
WHERE parent.relname = '<parent_table_name>';

Listar tabelas filhas com horário de criação e tabela pai

SELECT
    cn.nspname AS child_schema_name,
    c.relname AS child_table_name,
    pn.nspname AS parent_schema_name,
    p.relname AS parent_table_name,
    to_timestamp(cp.property_value::bigint) AS create_time
FROM pg_inherits i
    LEFT JOIN pg_class p ON p.oid = i.inhparent
    LEFT JOIN pg_namespace pn ON pn.oid = p.relnamespace
    LEFT JOIN pg_class c ON c.oid = i.inhrelid
    LEFT JOIN pg_namespace cn ON cn.oid = c.relnamespace
    LEFT JOIN hologres.hg_table_properties cp
        ON cp.property_key = 'create_time'
        AND cp.table_namespace = pn.nspname
        AND cp.table_name = c.relname;

Listar todas as tabelas externas e suas tabelas MaxCompute correspondentes

SELECT
    n.nspname,
    c.relname,
    s.srvname,
    pg_catalog.array_to_string(
        ARRAY(
            SELECT pg_catalog.quote_ident(option_name) || ' ' || pg_catalog.quote_literal(option_value)
            FROM pg_catalog.pg_options_to_table(ftoptions)
        ),
        ', '
    )
FROM pg_catalog.pg_foreign_table f,
    pg_catalog.pg_foreign_server s,
    pg_catalog.pg_class c,
    pg_catalog.pg_namespace n
WHERE s.oid = f.ftserver
    AND c.oid = f.ftrelid
    AND c.relnamespace = n.oid
    AND n.nspname NOT IN ('hologres', 'hologres_statistic', 'pg_catalog', 'pg_toast');

Listar todas as visualizações no banco de dados atual

SELECT
    n.nspname AS "Schema",
    c.relname AS "Name",
    CASE c.relkind
        WHEN 'r' THEN 'table'
        WHEN 'v' THEN 'view'
        WHEN 'm' THEN 'materialized view'
        WHEN 'i' THEN 'index'
        WHEN 'S' THEN 'sequence'
        WHEN 's' THEN 'special'
        WHEN 'f' THEN 'foreign table'
        WHEN 'p' THEN 'partitioned table'
        WHEN 'I' THEN 'partitioned index'
    END AS "Type",
    pg_catalog.pg_get_userbyid(c.relowner) AS "Owner"
FROM pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('v', '')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
    AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1, 2;

Encontrar visualizações que dependem de uma tabela

SELECT * FROM information_schema.view_table_usage WHERE table_name = '<table_name>';

Consultar comentários de coluna e comentários de tabela

-- Query column comments for a table
SELECT
    a.attname AS "Column",
    pg_catalog.format_type(a.atttypid, a.atttypmod) AS "Type",
    a.attnotnull AS "Nullable",
    pg_catalog.col_description(a.attrelid, a.attnum) AS "Description"
FROM pg_catalog.pg_attribute a
WHERE a.attnum > 0
    AND NOT a.attisdropped
    AND a.attrelid = '<schema_name>.<table_name>'::regclass::oid
ORDER BY a.attnum;

Substitua <schema_name>.<table_name> pelo schema e nome da tabela reais.

-- Query table comments and related metadata (owner, size)
SELECT
    n.nspname AS "Schema",
    c.relname AS "Name",
    CASE c.relkind
        WHEN 'r' THEN 'table'
        WHEN 'v' THEN 'view'
        WHEN 'm' THEN 'materialized view'
        WHEN 'i' THEN 'index'
        WHEN 'S' THEN 'sequence'
        WHEN 's' THEN 'special'
        WHEN 'f' THEN 'foreign table'
        WHEN 'p' THEN 'table'
        WHEN 'I' THEN 'index'
    END AS "Type",
    pg_catalog.pg_get_userbyid(c.relowner) AS "Owner",
    pg_catalog.pg_size_pretty(pg_catalog.pg_table_size(c.oid)) AS "Size",
    pg_catalog.obj_description(c.oid, 'pg_class') AS "Description"
FROM pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'S', 'f', '')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
    AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1, 2;
-- Query the comment on a specific table
SELECT pg_catalog.obj_description('<table_name>'::regclass::oid, 'pg_class') AS "Description";

Listar todos os usuários e funções em um banco de dados

SELECT
    r.rolname,
    r.rolsuper,
    r.rolinherit,
    r.rolcreaterole,
    r.rolcreatedb,
    r.rolcanlogin,
    r.rolconnlimit,
    r.rolvaliduntil,
    ARRAY(
        SELECT b.rolname
        FROM pg_catalog.pg_auth_members m
            JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
        WHERE m.member = r.oid
    ) AS memberof,
    r.rolreplication,
    r.rolbypassrls
FROM pg_catalog.pg_roles r
WHERE r.rolname !~ '^pg_'
    AND r.rolname != 'holo_admin'
ORDER BY 1;

Listar todas as extensões em um banco de dados

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
WHERE e.extname != 'hg_admin_cmd'
    AND e.extname != 'holo_dump_stat'
    AND e.extname != 'holo_funcs'
    AND e.extname != 'holo_link'
    AND e.extname != 'holo_system_admin'
    AND e.extname != 'query_log'
    AND e.extname != 'plpgsql'
ORDER BY 1;

Verificar as permissões de uma conta

SELECT * FROM pg_roles WHERE rolname = '<uid>';

Listar todos os usuários de uma instância e suas permissões

SELECT
    r.rolname,
    r.rolsuper,
    r.rolinherit,
    r.rolcreaterole,
    r.rolcreatedb,
    r.rolcanlogin,
    r.rolconnlimit,
    r.rolvaliduntil,
    ARRAY(
        SELECT b.rolname
        FROM pg_catalog.pg_auth_members m
            JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
        WHERE m.member = r.oid
    ) AS memberof,
    r.rolreplication,
    r.rolbypassrls
FROM pg_catalog.pg_roles r
WHERE r.rolname !~ '^pg_'
ORDER BY 1;

Listar todas as tabelas nas quais um usuário tem permissões

SELECT
    current_database()::information_schema.sql_identifier AS table_catalog,
    nc.nspname::information_schema.sql_identifier AS table_schema,
    c.relname::information_schema.sql_identifier AS table_name,
    CASE
        WHEN nc.oid = pg_my_temp_schema() THEN 'LOCAL TEMPORARY'::text
        WHEN c.relkind = ANY (ARRAY['r'::"char", 'p'::"char"]) THEN 'BASE TABLE'::text
        WHEN c.relkind = 'v'::"char" THEN 'VIEW'::text
        WHEN c.relkind = 'f'::"char" THEN 'FOREIGN'::text
        ELSE NULL::text
    END::information_schema.character_data AS table_type,
    CASE
        WHEN (c.relkind = ANY (ARRAY['r'::"char", 'p'::"char"]))
            OR (c.relkind = ANY (ARRAY['v'::"char", 'f'::"char"])
            AND (pg_relation_is_updatable(c.oid::regclass, false) & 8) = 8)
        THEN 'YES'::text
        ELSE 'NO'::text
    END::information_schema.yes_or_no AS is_insertable_into,
    CASE
        WHEN t.typname IS NOT NULL THEN 'YES'::text
        ELSE 'NO'::text
    END::information_schema.yes_or_no AS is_typed,
    NULL::character varying::information_schema.character_data AS commit_action
FROM pg_namespace nc
    JOIN pg_class c ON nc.oid = c.relnamespace
    LEFT JOIN (pg_type t JOIN pg_namespace nt ON t.typnamespace = nt.oid) ON c.reloftype = t.oid
WHERE (c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'f'::"char", 'p'::"char"]))
    AND NOT pg_is_other_temp_schema(nc.oid)
    AND (
        pg_has_role('<user_id>', c.relowner, 'USAGE'::text)
        OR has_table_privilege('<user_id>', c.oid, 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'::text)
        OR has_any_column_privilege('<user_id>', c.oid, 'SELECT, INSERT, UPDATE, REFERENCES'::text)
    );

Substitua <user_id> pelo ID de usuário real.

Listar todos os usuários que têm permissões em uma tabela

SELECT rolname
FROM pg_roles
WHERE has_table_privilege(rolname, '<schema_name>.<table_name>',
    'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER');

Substitua <schema_name>.<table_name> pelo schema e nome da tabela reais.