Todos os produtos
Search
Central de documentação

Hologres:System tables

Última atualização: Jun 28, 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 de 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.

Limitações

  • As tabelas com prefixo hg são tabelas de sistema do Hologres. As tabelas com 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. 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

O 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

O 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

O 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 versão V0.10 ou posterior), table_group, schema_version, primary_key, orientation (row, column ou row,column para armazenamento híbrido linha-coluna suportado na versão 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

O 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
schemanameO schema que contém a tabela. O Hologres fornece três schemas de sistema: hologres, pg_catalog e information_schema.
tablenameO nome da tabela.
tableownerO proprietá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 se aplica ao 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 se aplica ao 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

O 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

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

relation

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

virtualxid

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

transactionid

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

pid

O 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

O 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 vários 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

O OID exclusivo da relação.

relname

O nome da relação.

relnamespace

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

relowner

O proprietário da relação.

reltuples

A 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

O 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 se aplica ao 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

O 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

O identificador exclusivo da tabela.

schema_version

A versão do schema da tabela.

statistic_version

A versão das estatísticas.

statistics

O conteúdo das estatísticas, codificado em Base64.

schema_name

O schema que contém a tabela.

table_name

O nome da tabela.

total_rows

O número total de linhas na tabela.

sample_rows

O número de linhas amostradas para coleta de estatísticas.

nattr

O número de colunas na tabela.

used_attrs

As colunas analisadas pela instrução ANALYZE.

histogram_attrs

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

ndv_attrs

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

user_name

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

analyze_timestamp

O momento em que ANALYZE foi executado ou o auto-analyze foi acionado.

analyze_cost

O tempo necessário para concluir ANALYZE ou o auto-analyze.

analyze_count

O 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

O nome do schema.

tablename

O nome da tabela.

attname

O nome da coluna.

inherited

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

null_frac

A fração de linhas com valores nulos nesta coluna.

avg_width

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

n_distinct

O 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 exclusiva.

most_common_vals

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

most_common_freqs

As 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. Os valores em most_common_vals são excluídos deste histograma.

most_common_elems

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

most_common_elem_freqs

As 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

O 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

O 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

O 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

A função que concedeu a permissão.

grantee

A função que recebeu a permissão.

table_catalog

O nome do banco de dados.

table_schema

O nome do schema.

table_name

O nome da tabela.

privilege_type

O 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 tabelas

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ários 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 colunas e comentários de tabelas

-- 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.