All Products
Search
Document Center

Hologres:Tabel sistem

Last Updated:Mar 27, 2026

Hologres menyediakan serangkaian tabel sistem untuk mengkueri metadata, statistik, informasi lock, dan izin akses. Topik ini mencakup kolom-kolom setiap tabel sistem serta kueri SQL umum yang dapat Anda jalankan terhadapnya.

Ikhtisar

Hologres menyediakan dua kategori tabel sistem:

  • Tabel native Hologres (diawali dengan hg): dirancang khusus untuk Hologres dan berisi properti serta statistik spesifik Hologres yang dibagikan di seluruh node.

  • Tabel kompatibel PostgreSQL (diawali dengan pg atau berada di bawah information_schema): diwarisi dari PostgreSQL. Beberapa kolom dalam tabel-tabel ini tidak berlaku di Hologres karena Hologres merupakan sistem terdistribusi, bukan instans PostgreSQL standalone.

TabelSumberDeskripsi
hologres.hg_table_propertiesNatif HologresProperti dan indeks semua tabel di database saat ini.
hologres_statistic.hg_table_statisticNative HologresStatistik tabel yang dibagikan di seluruh node.
pg_catalog.pg_tablesKompatibel PostgreSQLMetadata tabel, termasuk skema, pemilik, dan informasi indeks.
pg_catalog.pg_locksKompatibel PostgreSQLInformasi lock waktu proses. Gunakan tabel ini untuk mendiagnosis pernyataan DDL atau kueri yang diblokir.
pg_catalog.pg_classKompatibel PostgreSQLTabel katalog PostgreSQL yang berisi metadata relasi. Biasanya digunakan bersama tabel pg_catalog lainnya.
pg_catalog.pg_statsKompatibel PostgreSQLStatistik tingkat kolom yang digunakan oleh planner PostgreSQL pada satu node.
pg_catalog.pg_rolesKompatibel PostgreSQLRole dan izinnya dalam sebuah instans Hologres.
information_schema.role_table_grantsKompatibel PostgreSQLIzin yang diberikan kepada role pada tabel dan tampilan.

Batasan

  • Tabel yang diawali dengan hg adalah tabel sistem Hologres, sedangkan yang diawali dengan pg adalah tabel sistem PostgreSQL. Pada versi Hologres sebelum V1.3.22, Anda tidak dapat melakukan join antara tabel sistem PostgreSQL dengan tabel internal Hologres atau mengimpor data dari tabel sistem PostgreSQL ke tabel internal Hologres. Tingkatkan ke V1.3.22 atau versi yang lebih baru untuk menghapus batasan ini.

  • Di Hologres, bidang object identifier (OID) dalam tabel sistem secara unik mengidentifikasi relasi seperti tabel, indeks, dan tampilan. Karena Hologres adalah sistem terdistribusi dengan beberapa node frontend (FE), nilai OID dapat berbeda antar node. Akibatnya, hasil kueri yang mencakup nilai OID mungkin tidak konsisten di berbagai node.

hologres.hg_table_properties

Tabel ini berisi informasi dan properti untuk semua tabel di database saat ini.

KolomDeskripsi
table_namespaceSkema yang berisi tabel tersebut. Hologres menyediakan tiga skema sistem: hologres (tabel sistem Hologres), hologres_statistic (tabel statistik), dan pg_catalog (tabel metadata PostgreSQL).
table_nameNama tabel. Tabel sistem meliputi: hologres.hg_insert_progress_stats, hologres.hg_table_properties, hologres.hg_table_group_properties, hologres_statistic.hg_table_statistic, dan pg_catalog.pg_stat_activity.
property_keyNama properti. Nilai yang valid: table_id, clustering_index_id, clustering_index_name, lifecycle_in_days (TTL; -1 berarti berlaku permanen), storage_format (sst untuk tabel berorientasi baris; orc secara default untuk tabel berorientasi kolom di V0.10 atau versi lebih baru), table_group, schema_version, primary_key, orientation (row, column, atau row,column untuk penyimpanan hibrida baris-kolom yang didukung di V1.1 dan versi lebih baru), distribution_key, dictionary_encoding_columns, bitmap_columns, clustering_key, create_time, last_ddl_time, storage_mode (hot untuk penyimpanan standar; cold untuk penyimpanan Infrequent Access (IA)).
property_valueNilai properti tersebut.

pg_catalog.pg_tables

Tabel ini berisi metadata untuk semua tabel, termasuk tabel yang dibuat pengguna dan tabel sistem.

KolomDeskripsi
schemanameSkema yang berisi tabel tersebut. Hologres menyediakan tiga skema sistem: hologres, pg_catalog, dan information_schema.
tablenameNama tabel.
tableownerPemilik tabel. Tabel sistem dimiliki oleh holo_admin dan nilai ini tidak dapat diubah. Akun dengan model izin sederhana (SPM) atau model izin tingkat skema (SLPM) yang diaktifkan akan ditampilkan sebagai developer.
tablespaceTidak berlaku di Hologres.
hasindexestrue jika tabel memiliki atau pernah memiliki indeks.
hasrulestrue jika tabel memiliki atau pernah memiliki aturan penulisan ulang.
hastriggerstrue jika tabel memiliki atau pernah memiliki pemicu.
rowsecurityTidak berlaku di Hologres.

pg_catalog.pg_locks

Tabel ini menampilkan informasi lock waktu proses. Kueri tabel ini untuk menentukan apakah suatu lock memblokir pernyataan DDL atau kueri.

KolomDeskripsi
locktypeJenis objek yang dapat dilock. Nilai yang valid: relation (lock tabel) dan advisory (lock DDL). Jenis lock PostgreSQL extend, page, tuple, transactionid, virtualxid, object, dan userlock tidak berlaku di Hologres.
databaseOID database yang berisi objek yang dilock.
relationOID tabel yang dilock. Null jika objek bukan tabel atau bagian dari tabel.
virtualxidID transaksi virtual dari lock tersebut. Null jika objek bukan ID transaksi virtual.
transactionidID transaksi. Null jika objek bukan ID transaksi.
pidID proses (PID) proses server yang memegang atau menunggu lock tersebut. Gunakan PID ini untuk mencari proses di pg_catalog.pg_stat_activity.
modeMode lock: lock shared atau lock eksklusif.
grantedtrue jika lock sedang dipegang; false jika lock sedang ditunggu.

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

pg_catalog.pg_class

Tabel ini berisi informasi katalog PostgreSQL untuk semua relasi (tabel, indeks, tampilan, dan lainnya). Biasanya dikueri bersama tabel pg_catalog lainnya.

Karena Hologres adalah sistem terdistribusi dengan beberapa node FE, nilai OID biasanya berbeda di berbagai node. Hasil kueri yang berisi OID mungkin tidak konsisten.
KolomDeskripsi
oidOID unik dari relasi tersebut.
relnameNama relasi tersebut.
relnamespaceOID skema yang berisi relasi tersebut.
relownerPemilik relasi tersebut.
reltuplesPerkiraan jumlah baris yang digunakan oleh planner. Diperbarui oleh pernyataan VACUUM, ANALYZE, atau DDL. Di Hologres, kolom ini menentukan jumlah baris statistik.
relallvisiblePerkiraan jumlah halaman all-visible yang digunakan oleh planner. Diperbarui oleh pernyataan VACUUM, ANALYZE, atau DDL. Di Hologres, kolom ini menentukan versi statistik.
relhasindextrue jika relasi memiliki atau pernah memiliki indeks.
relissharedtrue jika tabel dibagikan di seluruh database dalam kluster (misalnya, pg_catalog.pg_database). Tidak berlaku di Hologres.
relpersistencePersistensi tabel: p (permanen), u (unlogged), atau t (temporary).
relkindJenis relasi: r (tabel), i (indeks), S (sequence), v (tampilan), m (tampilan yang di-materialisasi), c (tipe komposit), t (tabel TOAST), f (tabel eksternal).
relnattsJumlah kolom pengguna, tidak termasuk kolom sistem.
relhaspkeytrue jika relasi memiliki atau pernah memiliki primary key.
relhassubclasstrue jika relasi memiliki atau pernah memiliki tabel anak yang diwariskan.
relaclIzin akses untuk relasi tersebut.
reloptionsProperti tabel. Misalnya, autovacuum_enabled=false menunjukkan bahwa auto-vacuum dan auto-analyze dinonaktifkan untuk tabel tersebut.

Kolom yang tidak berlaku di Hologres: reltype, reloftype, relam, relfilenode, reltablespace, relpages, reltoastrelid, relchecks, relhasoids, relhasrules, relhastriggers, relispopulated, relreplident, relfrozenxid, relminmxid.

hologres_statistic.hg_table_statistic

Tabel ini berisi statistik native Hologres yang dibagikan di seluruh node. Tabel ini diperbarui ketika Anda menjalankan ANALYZE atau ketika fitur auto-analyze dijalankan.

KolomDeskripsi
unique_namePengenal unik tabel tersebut.
schema_versionVersi skema tabel tersebut.
statistic_versionVersi statistik.
statisticsKonten statistik, dikodekan dalam Base64.
schema_nameSkema yang berisi tabel tersebut.
table_nameNama tabel tersebut.
total_rowsJumlah total baris dalam tabel tersebut.
sample_rowsJumlah baris yang disampel untuk pengumpulan statistik.
nattrJumlah kolom dalam tabel tersebut.
used_attrsKolom yang dianalisis oleh pernyataan ANALYZE.
histogram_attrsKolom yang dikumpulkan statistik histogramnya.
ndv_attrsKolom yang dikumpulkan statistik nilai-distinct (NDV)-nya.
user_namePengguna yang menjalankan ANALYZE atau memicu auto-analyze.
analyze_timestampWaktu saat ANALYZE dijalankan atau auto-analyze dipicu.
analyze_costWaktu yang dibutuhkan oleh ANALYZE atau auto-analyze untuk menyelesaikan.
analyze_countJumlah kali ANALYZE dijalankan atau auto-analyze dipicu.

pg_catalog.pg_stats

Tabel ini berisi statistik tingkat kolom PostgreSQL yang digunakan oleh planner PostgreSQL single-node.

KolomDeskripsi
schemanameNama skema.
tablenameNama tabel.
attnameNama kolom.
inheritedtrue jika statistik mencakup subkolom yang diwariskan.
null_fracBagian baris yang memiliki nilai null pada kolom ini.
avg_widthLebar rata-rata (dalam byte) entri kolom.
n_distinctPerkiraan jumlah nilai distinct jika positif. Jika negatif, nilai absolutnya adalah rasio nilai distinct terhadap jumlah total baris (digunakan ketika jumlah nilai distinct diperkirakan bertambah seiring pertumbuhan tabel). Misalnya, -1 menunjukkan kolom unik.
most_common_valsDaftar nilai paling umum dalam kolom tersebut. Null jika tidak ada nilai yang cukup umum.
most_common_freqsFrekuensi nilai paling umum, dihitung sebagai jumlah kemunculan dibagi jumlah total baris. Null jika most_common_vals null.
histogram_boundsNilai yang membagi rentang nilai kolom menjadi kelompok-kelompok berukuran kira-kira sama. Nilai dalam most_common_vals dikecualikan dari histogram ini.
most_common_elemsNilai elemen non-null paling umum dalam nilai kolom bertipe array.
most_common_elem_freqsFrekuensi nilai elemen paling umum: bagian baris yang berisi setidaknya satu instance dari setiap nilai. Null jika most_common_elems null.

Kolom yang tidak berlaku di Hologres: correlation, elem_count_histogram.

pg_catalog.pg_roles

Tabel ini mencantumkan semua role dalam sebuah instans Hologres beserta izinnya.

KolomDeskripsi
rolnameNama role.
rolsupert jika role memiliki hak istimewa superuser; f jika tidak.
rolinheritt jika role mewarisi izin dari role apa pun yang menjadi anggotanya; f jika tidak.
rolcreaterolet jika role dapat membuat role lain; f jika tidak.
rolcreatedbt jika role dapat membuat database; f jika tidak.
rolcanlogint jika role dapat terhubung ke instans; f jika tidak.
rolconnlimitJumlah maksimum koneksi bersamaan yang dapat dibuat oleh role tersebut. Jika nilainya -1, jumlah maksimum koneksi bersamaan tidak dikonfigurasi di Hologres.
oidOID unik dari role tersebut.

Kolom yang tidak berlaku di Hologres: rolreplication, rolpassword, rolvaliduntil, rolbypassrls, rolconfig.

information_schema.role_table_grants

Tabel ini mencantumkan izin yang diberikan kepada role pada tabel dan tampilan dalam sebuah instans Hologres.

KolomDeskripsi
grantorRole yang memberikan izin tersebut.
granteeRole yang menerima izin tersebut.
table_catalogNama database.
table_schemaNama skema.
table_nameNama tabel.
privilege_typeJenis izin yang diberikan. Nilai yang valid: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER.
is_grantableYES jika izin tersebut dapat diberikan kepada pihak lain; NO jika tidak.
with_hierarchyYES jika jenis izin adalah SELECT; NO jika tidak.

Kueri SQL umum

Semua kueri dalam bagian ini dapat dijalankan menggunakan psql atau klien kompatibel PostgreSQL apa pun.

Kueri properti dan indeks tabel

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

Ambil DDL untuk tabel atau tampilan

-- Ambil DDL untuk tabel
SELECT hg_dump_script('<table_name>');

-- Ambil DDL untuk tampilan
SELECT hg_dump_script('<view_name>');
Jika kueri gagal, instal ekstensi hg_toolkit terlebih dahulu:
CREATE EXTENSION hg_toolkit;

Kueri titik akhir instans

SHOW hg_frontend_endpoints;

Daftar semua database dalam instans saat ini

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;

Daftar semua pemetaan pengguna dalam database saat ini

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;

Daftar semua skema dalam database saat ini

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;

Daftar semua tabel, tabel eksternal, dan tampilan dalam database saat ini

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;

Daftar semua tabel dan pemiliknya dalam skema saat ini (tidak termasuk tabel sistem)

-- Sertakan tabel sistem
SELECT * FROM pg_tables;

-- Kecualikan tabel sistem
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;

Daftar tabel anak dari tabel induk

-- Dengan nilai kunci partisi
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';

-- Tanpa nilai kunci partisi
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>';

Daftar tabel anak dengan waktu pembuatan dan tabel induk

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;

Daftar semua tabel eksternal dan tabel MaxCompute yang sesuai

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

Daftar semua tampilan dalam database saat ini

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;

Temukan tampilan yang bergantung pada tabel

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

Kueri komentar kolom dan komentar tabel

-- Kueri komentar kolom untuk tabel
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;

Ganti <schema_name>.<table_name> dengan nama skema dan tabel yang sebenarnya.

-- Kueri komentar tabel dan metadata terkait (pemilik, ukuran)
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;
-- Kueri komentar pada tabel tertentu
SELECT pg_catalog.obj_description('<table_name>'::regclass::oid, 'pg_class') AS "Description";

Daftar semua pengguna dan role dalam database

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;

Daftar semua ekstensi dalam database

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;

Periksa izin akun

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

Daftar semua pengguna instans dan izinnya

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;

Daftar semua tabel di mana pengguna memiliki izin

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

Ganti <user_id> dengan ID pengguna yang sebenarnya.

Daftar semua pengguna yang memiliki izin pada tabel

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

Ganti <schema_name>.<table_name> dengan nama skema dan tabel yang sebenarnya.