Todos los productos
Search
Centro de documentos

Hologres:System tables

Última actualización: Sep 05, 2026

Hologres ofrece un conjunto de tablas del sistema para consultar metadatos, estadísticas, información de bloqueos y permisos de acceso. Este tema describe las columnas de cada tabla del sistema y las consultas SQL comunes que puede ejecutar sobre ellas.

Descripción general

Hologres expone dos categorías de tablas del sistema:

  • Tablas nativas de Hologres (con el prefijo hg): diseñadas específicamente para Hologres; abarcan propiedades y estadísticas específicas de Hologres compartidas en todos los nodos.

  • Tablas compatibles con PostgreSQL (con el prefijo pg o bajo information_schema): heredadas de PostgreSQL. Algunas columnas de estas tablas no aplican en Hologres porque es un sistema distribuido y no una instancia independiente de PostgreSQL.

Tabla

Origen

Descripción

hologres.hg_table_properties

Nativa de Hologres

Propiedades e índices de todas las tablas en la base de datos actual.

hologres_statistic.hg_table_statistic

Nativa de Hologres

Estadísticas de tablas compartidas en todos los nodos.

pg_catalog.pg_tables

Compatible con PostgreSQL

Metadatos de tablas, incluidos esquema, propietario e información de índices.

pg_catalog.pg_locks

Compatible con PostgreSQL

Información de bloqueos en tiempo de ejecución. Utilice esta tabla para diagnosticar sentencias DDL o consultas bloqueadas.

pg_catalog.pg_class

Compatible con PostgreSQL

Tabla de catálogo de PostgreSQL que contiene metadatos de relaciones. Se usa normalmente junto con otras tablas de pg_catalog.

pg_catalog.pg_stats

Compatible con PostgreSQL

Estadísticas a nivel de columna que utiliza el planificador de PostgreSQL en un solo nodo.

pg_catalog.pg_roles

Compatible con PostgreSQL

Roles y sus permisos en una instancia de Hologres.

information_schema.role_table_grants

Compatible con PostgreSQL

Permisos otorgados a roles sobre tablas y vistas.

Cómo identificar una tabla del sistema

Las tablas de Hologres se dividen en dos categorías: tablas del sistema y tablas creadas por el usuario. Utilice los siguientes métodos para distinguirlas:

  • Convención de nombres: Una tabla cuyo nombre tiene el prefijo hg es una tabla del sistema nativa de Hologres (por ejemplo, hologres.hg_table_properties). Una tabla con el prefijo pg es una tabla del sistema compatible con PostgreSQL (por ejemplo, pg_catalog.pg_tables). Las tablas cuyos nombres no tienen el prefijo hg ni pg son tablas creadas por el usuario.

  • Esquema: Las tablas del sistema residen en esquemas como hologres y pg_catalog. Las tablas creadas por el usuario residen de forma predeterminada en el esquema public.

  • Propietario: Ejecute hg_dump_script para ver el DDL de una tabla. Si el campo owner corresponde a una cuenta del sistema, se trata de una tabla del sistema. Si el campo owner corresponde a una cuenta de usuario regular, es una tabla creada por el usuario.

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

Las tablas del sistema bajo el esquema hologres (por ejemplo, hologres.hg_table_properties) no se pueden consultar directamente con SELECT. Use hg_dump_script para ver sus metadatos.

Limitaciones

  • Las tablas con el prefijo hg son tablas del sistema de Hologres. Las tablas con el prefijo pg son tablas del sistema de PostgreSQL. En versiones de Hologres anteriores a V1.3.22, no es posible unir tablas del sistema de PostgreSQL con tablas internas de Hologres, ni importar datos desde tablas del sistema de PostgreSQL hacia tablas internas de Hologres. Actualice a la versión V1.3.22 o posterior para eliminar esta restricción.

  • En Hologres, el campo de identificador de objeto (OID) en una tabla del sistema identifica de forma única relaciones como tablas, índices y vistas. Dado que Hologres es un sistema distribuido con varios nodos frontend (FE), los valores de OID pueden diferir entre nodos. Los resultados de consulta que incluyen valores de OID podrían ser inconsistentes entre nodos.

hologres.hg_table_properties

Esta tabla contiene información y propiedades de todas las tablas en la base de datos actual.

Columna

Descripción

table_namespace

El esquema que contiene la tabla. Hologres proporciona tres esquemas del sistema: hologres (tablas del sistema de Hologres), hologres_statistic (tablas de estadísticas) y pg_catalog (tablas de metadatos de PostgreSQL).

table_name

El nombre de la tabla. Las tablas del sistema incluyen: hologres.hg_insert_progress_stats, hologres.hg_table_properties, hologres.hg_table_group_properties, hologres_statistic.hg_table_statistic y pg_catalog.pg_stat_activity.

property_key

El nombre de la propiedad. Valores válidos: table_id, clustering_index_id, clustering_index_name, lifecycle_in_days (TTL; -1 significa validez permanente), storage_format (sst para tablas orientadas a filas; orc de forma predeterminada para tablas orientadas a columnas en V0.10 o posterior), table_group, schema_version, primary_key, orientation (row, column o row,column para almacenamiento híbrido fila-columna compatible con V1.1 y posterior), distribution_key, dictionary_encoding_columns, bitmap_columns, clustering_key, create_time, last_ddl_time, storage_mode (hot para almacenamiento estándar; cold para almacenamiento de acceso poco frecuente [IA]).

property_value

El valor de la propiedad.

pg_catalog.pg_tables

Esta tabla contiene metadatos de todas las tablas, incluidas las tablas creadas por el usuario y las tablas del sistema.

ColumnaDescripción
schemanameEl esquema que contiene la tabla. Hologres proporciona tres esquemas del sistema: hologres, pg_catalog y information_schema.
tablenameEl nombre de la tabla.
tableownerEl propietario de la tabla. holo_admin posee las tablas del sistema y este valor no se puede modificar. Las cuentas con el modelo de permisos simple (SPM) o el modelo de permisos a nivel de esquema (SLPM) habilitado aparecen como developer.
tablespaceNo aplica en Hologres.
hasindexestrue si la tabla tiene o tuvo un índice.
hasrulestrue si la tabla tiene o tuvo una regla de reescritura.
hastriggerstrue si la tabla tiene o tuvo un trigger.
rowsecurityNo aplica en Hologres.

pg_catalog.pg_locks

Esta tabla muestra información de bloqueos en tiempo de ejecución. Consulte esta tabla para determinar si un bloqueo está obstaculizando una sentencia DDL o una consulta.

Columna

Descripción

locktype

El tipo de objeto bloqueable. Valores válidos: relation (bloqueo de tabla) y advisory (bloqueo DDL). Los tipos de bloqueo de PostgreSQL extend, page, tuple, transactionid, virtualxid, object y userlock no aplican en Hologres.

database

El OID de la base de datos que contiene el objeto bloqueado.

relation

El OID de la tabla bloqueada. Es nulo si el objeto no es una tabla ni parte de una tabla.

virtualxid

El ID de transacción virtual del bloqueo. Es nulo si el objeto no es un ID de transacción virtual.

transactionid

El ID de transacción. Es nulo si el objeto no es un ID de transacción.

pid

El ID de proceso (PID) del proceso del servidor que mantiene o espera el bloqueo. Utilice este PID para buscar el proceso en pg_catalog.pg_stat_activity.

mode

El modo de bloqueo: bloqueo compartido o bloqueo exclusivo.

granted

true si el bloqueo se mantiene; false si se está esperando el bloqueo.

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

pg_catalog.pg_class

Esta tabla contiene información del catálogo de PostgreSQL para todas las relaciones (tablas, índices, vistas, entre otros). Normalmente se consulta junto con otras tablas de pg_catalog.

Dado que Hologres es un sistema distribuido con varios nodos FE, los valores de OID suelen ser diferentes entre nodos. Los resultados de consulta que contienen OID pueden ser inconsistentes.

Columna

Descripción

oid

El OID único de la relación.

relname

El nombre de la relación.

relnamespace

El OID del esquema que contiene la relación.

relowner

El propietario de la relación.

reltuples

El recuento estimado de filas que utiliza el planificador. Se actualiza mediante VACUUM, ANALYZE o sentencias DDL. En Hologres, esta columna especifica el recuento de filas de las estadísticas.

relallvisible

El número estimado de páginas totalmente visibles que utiliza el planificador. Se actualiza mediante VACUUM, ANALYZE o sentencias DDL. En Hologres, esta columna especifica la versión de las estadísticas.

relhasindex

true si la relación tiene o tuvo un índice.

relisshared

true si la tabla se comparte en todas las bases de datos del clúster (por ejemplo, pg_catalog.pg_database). No aplica en Hologres.

relpersistence

Persistencia de la tabla: p (permanente), u (sin registro) o t (temporal).

relkind

Tipo de relación: r (tabla), i (índice), S (secuencia), v (vista), m (vista materializada), c (tipo compuesto), t (tabla TOAST), f (tabla externa).

relnatts

El número de columnas de usuario, excluyendo las columnas del sistema.

relhaspkey

true si la relación tiene o tuvo una clave primaria.

relhassubclass

true si la relación tiene o tuvo una tabla hija heredada.

relacl

Permisos de acceso para la relación.

reloptions

Propiedades de la tabla. Por ejemplo, autovacuum_enabled=false indica que el vaciado automático y el análisis automático están deshabilitados para la tabla.

Columnas que no aplican en Hologres: reltype, reloftype, relam, relfilenode, reltablespace, relpages, reltoastrelid, relchecks, relhasoids, relhasrules, relhastriggers, relispopulated, relreplident, relfrozenxid, relminmxid.

hologres_statistic.hg_table_statistic

Esta tabla contiene estadísticas nativas de Hologres compartidas en todos los nodos. Se actualiza cuando ejecuta ANALYZE o cuando se ejecuta la función de análisis automático.

Columna

Descripción

unique_name

El identificador único de la tabla.

schema_version

La versión del esquema de la tabla.

statistic_version

La versión de las estadísticas.

statistics

El contenido de las estadísticas, codificado en Base64.

schema_name

El esquema que contiene la tabla.

table_name

El nombre de la tabla.

total_rows

El número total de filas en la tabla.

sample_rows

El número de filas muestreadas para la recopilación de estadísticas.

nattr

El número de columnas en la tabla.

used_attrs

Las columnas analizadas por la sentencia ANALYZE.

histogram_attrs

Las columnas para las cuales se recopilan estadísticas de histograma.

ndv_attrs

Las columnas para las cuales se recopilan estadísticas de valores distintos (NDV).

user_name

El usuario que ejecutó ANALYZE o activó el análisis automático.

analyze_timestamp

La hora en que se ejecutó ANALYZE o se activó el análisis automático.

analyze_cost

El tiempo que tardó en completarse ANALYZE o el análisis automático.

analyze_count

El número de veces que se ha ejecutado ANALYZE o se ha activado el análisis automático.

pg_catalog.pg_stats

Esta tabla contiene estadísticas a nivel de columna de PostgreSQL que utiliza el planificador de PostgreSQL de nodo único.

Columna

Descripción

schemaname

El nombre del esquema.

tablename

El nombre de la tabla.

attname

El nombre de la columna.

inherited

true si las estadísticas incluyen subcolumnas heredadas.

null_frac

La fracción de filas con valores nulos en esta columna.

avg_width

El ancho promedio (en bytes) de las entradas de la columna.

n_distinct

El número estimado de valores distintos si es positivo. Si es negativo, el valor absoluto representa la proporción de valores distintos respecto al total de filas (se usa cuando se espera que el número de valores distintos crezca con la tabla). Por ejemplo, -1 indica una columna única.

most_common_vals

Una lista de los valores más comunes en la columna. Es nulo si ningún valor es lo suficientemente común.

most_common_freqs

Las frecuencias de los valores más comunes, calculadas como ocurrencias divididas entre el total de filas. Es nulo si most_common_vals es nulo.

histogram_bounds

Valores que dividen el rango de valores de la columna en grupos de tamaño aproximadamente igual. Los valores en most_common_vals se excluyen de este histograma.

most_common_elems

Los valores de elementos no nulos más comunes dentro de los valores de columnas de tipo arreglo.

most_common_elem_freqs

Las frecuencias de los valores de elementos más comunes: la fracción de filas que contienen al menos una instancia de cada valor. Es nulo si most_common_elems es nulo.

Columnas que no aplican en Hologres: correlation, elem_count_histogram.

pg_catalog.pg_roles

Esta tabla enumera todos los roles en una instancia de Hologres y sus permisos.

Columna

Descripción

rolname

El nombre del rol.

rolsuper

t si el rol tiene privilegios de superusuario; f en caso contrario.

rolinherit

t si el rol hereda permisos de cualquier rol del que sea miembro; f en caso contrario.

rolcreaterole

t si el rol puede crear otros roles; f en caso contrario.

rolcreatedb

t si el rol puede crear bases de datos; f en caso contrario.

rolcanlogin

t si el rol puede conectarse a instancias; f en caso contrario.

rolconnlimit

El número máximo de conexiones simultáneas que el rol puede establecer. Si el valor es -1, no se ha configurado un límite máximo de conexiones simultáneas en Hologres.

oid

El OID único del rol.

Columnas que no aplican en Hologres: rolreplication, rolpassword, rolvaliduntil, rolbypassrls, rolconfig.

information_schema.role_table_grants

Esta tabla enumera los permisos otorgados a roles sobre tablas y vistas en una instancia de Hologres.

Columna

Descripción

grantor

El rol que otorgó el permiso.

grantee

El rol que recibió el permiso.

table_catalog

El nombre de la base de datos.

table_schema

El nombre del esquema.

table_name

El nombre de la tabla.

privilege_type

El tipo de permiso otorgado. Valores válidos: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER.

is_grantable

YES si el permiso se puede otorgar a otros; NO en caso contrario.

with_hierarchy

YES si el tipo de permiso es SELECT; NO en caso contrario.

Consultas SQL comunes

Todas las consultas de esta sección se pueden ejecutar mediante psql o cualquier cliente compatible con PostgreSQL.

Consultar propiedades e índices de tablas

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

Obtener el DDL de una tabla o vista

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

-- Retrieve the DDL for a view
SELECT hg_dump_script('<view_name>');
Si la consulta falla, instale primero la extensión hg_toolkit:
CREATE EXTENSION hg_toolkit;

Consultar el endpoint de la instancia

SHOW hg_frontend_endpoints;

Listar todas las bases de datos en la instancia actual

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 todas las asignaciones de usuarios en la base de datos actual

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 los esquemas en la base de datos actual

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 las tablas, tablas externas y vistas en la base de datos actual

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 las tablas y propietarios en el esquema actual (excluyendo tablas del 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 tablas hijas de una tabla padre

-- 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 tablas hijas con fecha de creación y tabla padre

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 las tablas externas y sus tablas correspondientes de MaxCompute

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 las vistas en la base de datos actual

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;

Buscar vistas que dependen de una tabla

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

Consultar comentarios de columnas y comentarios de tablas

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

Reemplace <schema_name>.<table_name> con el nombre real del esquema y de la tabla.

-- 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 los usuarios y roles en una base de datos

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 las extensiones en una base de datos

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;

Comprobar los permisos de una cuenta

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

Listar todos los usuarios de una instancia y sus permisos

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 las tablas sobre las que un usuario tiene permisos

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)
    );

Reemplace <user_id> con el ID de usuario real.

Listar todos los usuarios que tienen permisos sobre una tabla

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

Reemplace <schema_name>.<table_name> con el nombre real del esquema y de la tabla.