Topik ini menjelaskan tabel sistem di Hologres dan cara menggunakannya.
Ikhtisar
Berikut adalah penjelasan tentang tabel sistem di Hologres.
Nama Tabel | Deskripsi |
Berisi informasi tentang semua tabel dalam database saat ini dan properti dari tabel-tabel tersebut. | |
Berisi informasi tentang hubungan antara objek seperti tabel dan tampilan. | |
Berisi informasi kunci pada tabel. | |
Berisi informasi seperti hubungan antar tabel. Tabel ini adalah tabel metadata PostgreSQL dan biasanya digunakan bersama dengan tabel sistem PostgreSQL lainnya. | |
Berisi statistik Hologres. Data ini dibagikan di antara beberapa node. | |
Berisi statistik PostgreSQL. Data ini digunakan oleh perencana pada satu node. | |
Berisi peran dalam instans Hologres dan izin mereka. | |
Berisi izin yang diberikan kepada peran pada objek seperti tabel dan tampilan. |
Batasan
Tabel dengan nama yang dimulai dengan
hgmerupakan tabel sistem Hologres, sedangkan tabel dengan nama yang dimulai denganpgadalah tabel sistem PostgreSQL. Anda tidak dapat menggabungkan tabel sistem PostgreSQL dengan tabel internal Hologres yang dibuat oleh pengguna untuk menanyakan data. Selain itu, Anda juga tidak dapat mengimpor data dari tabel sistem PostgreSQL ke tabel internal Hologres.CatatanPada Hologres versi V1.3.22 atau lebih baru, Anda dapat menggabungkan tabel sistem PostgreSQL dengan tabel internal Hologres yang dibuat oleh pengguna serta mengimpor data dari tabel sistem PostgreSQL ke tabel internal Hologres. Namun, jika tabel sistem PostgreSQL berisi tipe data yang tidak didukung oleh Hologres, operasi tersebut tidak dapat dilakukan. Untuk melaksanakan operasi ini, tingkatkan instans Hologres Anda ke versi V1.3.22 atau lebih baru.
Di Hologres, bidang pengenal objek (OID) dalam tabel sistem menentukan pengenal unik dari hubungan antar objek seperti tabel, indeks, dan tampilan. PostgreSQL adalah sistem mandiri, sedangkan Hologres adalah sistem terdistribusi. Instans Hologres memiliki beberapa node FE. Dalam banyak kasus, nilai OID pada setiap node FE berbeda. Jika hasil kueri mencakup nilai OID, nilai-nilai tersebut mungkin tidak konsisten.
hologres.hg_table_properties
Tabel sistem hologres.hg_table_properties berisi informasi tentang semua tabel dalam database saat ini beserta propertinya. Berikut adalah deskripsi kolom-kolom dalam tabel sistem hologres.hg_table_properties.
Kolom | Deskripsi |
table_namespace | Nama skema tempat tabel milik. Hologres menyediakan skema sistem berikut:
|
table_name | Nama tabel. Hologres menyediakan tabel sistem berikut:
|
property_key | Properti tabel. Tabel memiliki properti berikut:
|
property_value | Nilai properti tabel. |
pg_catalog.pg_tables
Tabel sistem pg_catalog.pg_tables berisi metadata tabel. Berikut adalah deskripsi kolom-kolom dalam tabel sistem pg_catalog.pg_tables.
Kolom | Deskripsi |
schemaname | Nama skema tempat tabel milik. Selain skema yang Anda buat, Hologres menyediakan skema sistem berikut:
|
tablename | Nama tabel. |
tableowner | Pemilik tabel. Nilai valid: developer: akun dengan model izin sederhana (SPM) atau model izin tingkat skema (SLPM) diaktifkan. |
tablespace | Kolom ini tidak berlaku di Hologres. |
hasindexes | Nilainya benar jika tabel memiliki atau pernah memiliki indeks. |
hasrules | Nilainya benar jika tabel memiliki atau pernah memiliki aturan. |
hastriggers | Nilainya benar jika tabel memiliki atau pernah memiliki pemicu. |
rowsecurity | Nilainya benar jika tabel memiliki aturan keamanan yang diaktifkan. Kolom ini tidak berlaku di Hologres. |
pg_catalog.pg_locks
Tabel sistem pg_catalog.pg_locks berisi informasi kunci runtime dan biasanya digunakan untuk mengidentifikasi apakah ada kunci yang menyebabkan pernyataan DDL atau kueri gagal dieksekusi. Berikut adalah deskripsi kolom-kolom dalam tabel sistem pg_catalog.pg_locks.
Kolom | Deskripsi |
locktype | Jenis kunci. Nilai valid:
|
database | OID database tempat objek berada. |
relation | OID tabel. Jika objek bukan tabel atau bagian dari tabel, kolom ini memiliki nilai null. |
page | Kolom ini tidak berlaku di Hologres. |
tuple | Kolom ini tidak berlaku di Hologres. |
virtualxid | ID virtual transaksi. Jika objek bukan ID transaksi virtual, kolom ini memiliki nilai null. |
transactionid | ID transaksi. Jika objek bukan ID transaksi, kolom ini memiliki nilai null. |
classid | OID tabel sistem yang berisi objek. Jika objek bukan objek database reguler, kolom ini memiliki nilai null. Kolom ini tidak berlaku di Hologres. |
objid | Kolom ini tidak berlaku di Hologres. |
objsubid | Kolom ini tidak berlaku di Hologres. |
virtualtransaction | ID transaksi yang memegang atau menunggu kunci. Kolom ini tidak berlaku di Hologres. |
pid | ID proses server yang memegang atau menunggu kunci. Anda dapat menanyakan informasi proses dalam tabel pg_catalog.pg_stat_activity. |
mode | Mode kunci proses. Mode kunci termasuk kunci bersama dan kunci eksklusif. |
granted |
|
fastpath |
Kolom ini tidak berlaku di Hologres. |
pg_catalog.pg_class
Tabel sistem pg_catalog.pg_class berisi semua informasi sistem PostgreSQL. Berikut adalah deskripsi kolom-kolom dalam tabel sistem pg_catalog.pg_class.
Kolom | Deskripsi |
oid | Pengenal unik dari hubungan antar objek seperti tabel, indeks, dan tampilan. Catatan PostgreSQL adalah sistem mandiri, sedangkan Hologres adalah sistem terdistribusi. Instans Hologres memiliki beberapa node FE. Dalam kebanyakan kasus, nilai OID dari semua node FE berbeda. Jika hasil kueri berisi nilai OID, nilai-nilai OID mungkin tidak konsisten. |
relname | Nama hubungan antar objek seperti tabel, indeks, dan tampilan. |
relnamespace | OID skema yang berisi hubungan. |
reltype | Kolom ini tidak berlaku di Hologres. |
reloftype | Kolom ini tidak berlaku di Hologres. |
relowner | Pemilik hubungan. |
relam | Kolom ini tidak berlaku di Hologres. |
relfilenode | Kolom ini tidak berlaku di Hologres. |
reltablespace | Kolom ini tidak berlaku di Hologres. |
relpages | Kolom ini tidak berlaku di Hologres. |
reltuples | Jumlah baris dalam tabel. Ini hanya angka perkiraan yang digunakan oleh perencana. Anda dapat mengubah nilai ini menggunakan pernyataan VACUUM, ANALYZE, atau DDL. Kolom ini digunakan untuk menentukan jumlah baris statistik di Hologres. |
relallvisible | Jumlah halaman yang ditandai semua terlihat dalam peta visibilitas tabel. Ini hanya angka perkiraan yang digunakan oleh perencana. Anda dapat mengubah nilai ini menggunakan pernyataan VACUUM, ANALYZE, atau DDL. Kolom ini digunakan untuk menentukan versi statistik di Hologres. |
reltoastrelid | Kolom ini tidak berlaku di Hologres. |
relhasindex | Nilainya benar jika tabel memiliki atau pernah memiliki indeks. |
relisshared | Nilainya benar jika tabel dibagikan di seluruh semua database dalam kluster. Hanya tabel sistem tertentu seperti tabel sistem pg_catalog.pg_database yang dibagikan. Kolom ini tidak berlaku di Hologres. |
relpersistence | Nilai valid:
|
relkind | Nilai valid:
|
relnatts | Jumlah kolom dalam tabel. Kolom sistem dikecualikan. |
relchecks | Jumlah batasan cek pada tabel. Kolom ini tidak berlaku di Hologres |
relhasoids | Nilainya benar jika OID dihasilkan untuk setiap baris hubungan. Kolom ini tidak berlaku di Hologres. |
relhaspkey | Nilainya benar jika tabel memiliki atau pernah memiliki kunci utama. |
relhasrules | Nilainya benar jika tabel memiliki atau pernah memiliki aturan. Kolom ini tidak berlaku di Hologres. |
relhastriggers | Nilainya benar jika tabel memiliki atau pernah memiliki pemicu. Kolom ini tidak berlaku di Hologres. |
relhassubclass | Nilainya benar jika tabel memiliki atau pernah memiliki tabel anak yang diwarisi. |
relispopulated | Kolom ini tidak berlaku di Hologres. |
relreplident | Kolom ini tidak berlaku di Hologres. |
relfrozenxid | Kolom ini tidak berlaku di Hologres. |
relminmxid | Kolom ini tidak berlaku di Hologres. |
relacl | Izin akses. |
reloptions | Properti tabel. Misalnya, string autovacuum_enabled=false menunjukkan bahwa fitur auto-vacuum dan auto-analyze dinonaktifkan untuk tabel. |
hologres_statistic.hg_table_statistic
Tabel sistem hologres_statistic.hg_table_statistic berisi statistik Hologres. Berikut adalah deskripsi kolom-kolom dalam tabel sistem hologres_statistic.hg_table_statistic.
Kolom | Deskripsi |
unique_name | Pengenal unik tabel. |
schema_version | Versi tabel. |
statistic_version | Versi statistik. |
statistics | Isi statistik, yang dikodekan dalam Base64. |
schema_name | Nama skema tempat tabel milik. |
table_name | Nama tabel. |
total_rows | Jumlah total baris dalam tabel. |
sample_rows | Jumlah baris yang diambil sampel untuk statistik. |
nattr | Jumlah kolom dalam tabel. |
used_attrs | Kolom yang digunakan untuk pernyataan ANALYZE. |
histogram_attrs | Kolom yang berisi statistik histogram. |
ndv_attrs | Kolom yang berisi statistik nilai unik. |
user_name | Pengguna yang mengeksekusi pernyataan ANALYZE atau menggunakan fitur auto-analyze. |
analyze_timestamp | Waktu ketika pernyataan ANALYZE dieksekusi atau waktu ketika fitur auto-analyze digunakan. |
analyze_cost | Jumlah waktu yang dikonsumsi oleh pernyataan ANALYZE atau fitur auto-analyze. |
analyze_count | Jumlah kali pernyataan ANALYZE dieksekusi atau jumlah kali fitur auto-analyze digunakan. |
pg_catalog.pg_stats
Tabel sistem pg_catalog.pg_stats berisi statistik PostgreSQL. Berikut adalah deskripsi kolom-kolom dalam tabel sistem pg_catalog.pg_stats.
Kolom | Deskripsi |
schemaname | Nama skema. |
tablename | Nama tabel. |
attname | Nama kolom. |
inherited | Jika nilai kolom ini benar, kolom ini mencakup subkolom yang diwarisi. |
null_frac | Pecahan kolom yang memiliki nilai null. |
avg_width | Lebar rata-rata dalam byte dari entri kolom. |
n_distinct |
Sebagai contoh, -1 menunjukkan kolom unik di mana jumlah nilai unik sama dengan jumlah baris. |
most_common_vals | Daftar nilai paling umum dalam kolom. Kolom ini memiliki nilai null jika tidak ada nilai dalam kolom ini yang umum. |
most_common_freqs | Daftar frekuensi nilai paling umum. Nilai dihitung dengan membagi jumlah kemunculan setiap nilai umum dengan jumlah total baris. Kolom ini memiliki nilai null jika kolom most_common_vals memiliki nilai null. |
histogram_bounds | Daftar nilai yang membagi nilai-nilai kolom menjadi kelompok dengan nilai kira-kira sama. Jika kolom most_common_vals ada, nilai dalam kolom most_common_vals dihilangkan dari perhitungan histogram ini. |
correlation | Kolom ini tidak berlaku di Hologres. |
most_common_elems | Daftar nilai elemen non-null yang paling sering muncul dalam nilai-nilai kolom. |
most_common_elem_freqs | Daftar frekuensi nilai elemen paling umum. Ini adalah pecahan baris yang mengandung setidaknya satu instance dari nilai yang diberikan. Kolom ini memiliki nilai null jika kolom most_common_elems memiliki nilai null. |
elem_count_histogram | Kolom ini tidak berlaku di Hologres. |
pg_catalog.pg_roles
Tabel sistem pg_catalog.pg_roles berisi peran dalam instans Hologres beserta izinnya. Berikut adalah deskripsi kolom-kolom dalam tabel sistem pg_catalog.pg_roles.
Kolom | Deskripsi |
rolname | Nama peran. |
rolsuper | Menunjukkan apakah peran memiliki izin superuser. Nilai valid:
|
rolinherit | Menunjukkan apakah peran dapat mewarisi izin peran lain jika peran tersebut adalah anggota peran lain. Nilai valid:
|
rolcreaterole | Menunjukkan apakah peran dapat membuat lebih banyak peran. Nilai valid:
|
rolcreatedb | Menunjukkan apakah peran dapat membuat database. Nilai valid:
|
rolcanlogin | Menunjukkan apakah peran dapat terhubung ke instans. Nilai valid:
|
rolreplication | Kolom ini tidak berlaku di Hologres. |
rolconnlimit | Jumlah maksimum koneksi bersamaan yang dapat dibuat peran. Jika nilainya -1, jumlah maksimum koneksi bersamaan tidak dikonfigurasikan di Hologres. |
rolpassword | Kolom ini tidak berlaku di Hologres. |
rolvaliduntil | Kolom ini tidak berlaku di Hologres. |
rolbypassrls | Kolom ini tidak berlaku di Hologres. |
rolconfig | Kolom ini tidak berlaku di Hologres. |
oid | ID unik peran. |
information_schema.role_table_grants
Tabel information_schema.role_table_grants berisi izin yang diberikan kepada peran pada objek seperti tabel dan tampilan dalam instans Hologres. Berikut adalah deskripsi kolom-kolom dalam tabel information_schema.role_table_grants.
Kolom | Deskripsi |
grantor | Peran pemberi izin. |
grantee | Peran penerima izin. |
table_catalog | Nama database. |
table_schema | Nama skema. |
table_name | Nama tabel. |
privilege_type | Jenis izin yang diberikan. Nilai valid:
|
is_grantable | Nilainya |
with_hierarchy | Nilainya |
Pernyataan SQL Umum
Beberapa pernyataan umum dapat dieksekusi di psql, aplikasi klien PostgreSQL. Untuk informasi lebih lanjut, lihat psql. Anda dapat menggunakan pernyataan SQL berikut sesuai kebutuhan bisnis Anda.
Mengeksekusi indeks dan properti tabel di Hologres
SELECT * FROM hologres.hg_table_properties where table_name = '<tablename>';Parameter tablename menentukan nama tabel.
Mengeksekusi pernyataan DDL yang digunakan untuk membuat tabel dan tampilan
select hg_dump_script('<tablename>'); -- Mengeksekusi pernyataan DDL yang digunakan untuk membuat tabel.
select hg_dump_script('<viewname>'); -- Mengeksekusi pernyataan DDL yang digunakan untuk membuat tampilan.Jika pernyataan sebelumnya gagal dieksekusi, Anda harus mengeksekusi pernyataan berikut untuk menginstal ekstensi di database:
create extension hg_toolkit;Mengeksekusi titik akhir instans
Untuk menanyakan titik akhir instans, Anda dapat menggunakan konsol Hologres atau mengeksekusi pernyataan berikut:
show hg_frontend_endpoints;Mengeksekusi 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;Mengeksekusi 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;Mengeksekusi 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;Mengeksekusi semua tabel internal, tabel asing, 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;Mengeksekusi semua tabel (tidak termasuk tabel sistem) dalam skema saat ini dan pemilik tabel-tabel tersebut
-- Mengeksekusi semua tabel dalam database saat ini. Tabel sistem termasuk.
SELECT * FROM pg_tables
-- Mengeksekusi semua tabel dalam skema saat ini dan pemilik tabel-tabel tersebut. Tabel sistem dikecualikan.
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;
Mengeksekusi semua tabel anak yang sesuai dengan tabel induk
-- Mengeksekusi tabel anak yang sesuai dengan tabel induk dengan menentukan 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'
;
-- Mengeksekusi tabel anak yang sesuai dengan tabel induk tanpa menentukan 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';Mengeksekusi waktu pembuatan dan tabel induk dari semua tabel anak
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;Mengeksekusi semua tabel asing dan tabel MaxCompute yang sesuai dengan tabel asing tersebut
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')
;
Mengeksekusi 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;Mengeksekusi tampilan yang bergantung pada tabel
select * from information_schema.view_table_usage where table_name = '<table_name>';Mengeksekusi komentar pada tabel dan komentar pada bidang dalam tabel
Mengeksekusi komentar pada bidang dalam 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.tablename>'::regclass::oid ORDER BY a.attnum;Dalam contoh ini, schema.tablename menunjukkan
{Nama Skema}.{Nama Tabel}.Mengeksekusi komentar dan informasi terkait tentang tabel, seperti pemilik tabel.
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; -- Hasil berikut dikembalikan: Daftar relasi Schema | Name | Type | Owner | Size | Description --------+------+-------+------------------+---------+------------- public | a | table | 1365937xxxx | xxxx bytes | abcdef (1 baris)Mengeksekusi komentar pada tabel tertentu.
select pg_catalog.obj_description('<tablename>'::regclass::oid, 'pg_class') as "Description"; -- Hasil berikut dikembalikan: Description ------------ abcdefDalam contoh ini, tablename menunjukkan nama tabel yang ingin Anda tanyakan komentarnya.
Mengeksekusi semua pengguna dan peran 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;Mengeksekusi 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 != 'holo_dump_stat'
AND e.extname != 'query_log'
AND e.extname != 'plpgsql'
ORDER BY
1;Mengeksekusi izin akun
SELECT * FROM pg_roles where rolname='<uid>'Mengeksekusi semua pengguna instans dan izin mereka
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;Mengeksekusi semua tabel tempat 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('<USERID>', c.relowner, 'USAGE'::text)
OR has_table_privilege('<USERID>', c.oid, 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'::text)
OR has_any_column_privilege('<USERID>', c.oid, 'SELECT, INSERT, UPDATE, REFERENCES'::text));Mengeksekusi semua pengguna yang memiliki izin pada tabel
select rolname from pg_roles where has_table_privilege(rolname, '<schemaname>.<tablename>',
'SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER');