日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

系統表

更新時間:

本文將會為您介紹Hologres中的系統表以及每個表如何使用。

概述

Hologres系統表的組成如下表所示。

表名

使用場景

hologres.hg_table_properties

查看當前數據庫下Hologres所有表以及表屬性。

pg_catalog.pg_tables

查看表、視圖等關系的信息。

pg_catalog.pg_locks

查看表的鎖信息。

pg_catalog.pg_class

PostgreSQL原生元數據表,一般是結合其他PostgreSQL系統表一起使用,查看表關系等信息。

hologres_statistic.hg_table_statistic

Hologres的統計信息表,用于多節點共享統計信息存儲。

pg_catalog.pg_stats

PostgreSQL原生統計信息表,在單節點本地直接供planner使用。

pg_catalog.pg_roles

查看實例內角色及其權限信息。

information_schema.role_table_grants

查看用戶角色被授予對象(表、視圖等)的權限信息。

使用限制

  • 表名稱以hg開頭的是Hologres系統表,以pg開頭的是PostgreSQL系統表,簡稱PG系統表。PG系統表不能與業務創建的表進行關聯查詢,也不能將PG系統表的數據導入至業務創建的表中。

    說明

    Hologres 從V1.3.22版本開始,支持PG系統表與業務創建的表進行Join,以及將系統表數據導出到Hologres表,但需注意,如果存在Hologres不支持的數據類型,則無法導出到Hologres表,也無法與Hologres表進行Join。如果有需求請您升級實例。

  • 在Hologres中,系統表中的OID字段表示表、索引、視圖等關系的唯一標志符。但Postgres是單機系統,Hologres是分布式系統,有多個FE節點,每個FE節點的OID序列通常不相同。所以當查詢結果中有OID時,可能會出現OID結果不一致的情況。

hologres.hg_table_properties

hologres.hg_table_properties用于存放當前數據庫下的所有表和表屬性,包含如下字段。

字段

說明

table_namespace

Schema名稱,Hologres會包含3個系統Schema:

  • hologres:用于Hologres的系統表。

  • hologres_statistic:用于存放統計信息表。

  • pg_catalog:用于PostgreSQL原生的元數據表。

table_name

表名稱,Hologres包含多個系統表,如下。

  • hologres.hg_insert_progress_stats:insert進度信息。

  • hologres.hg_table_properties:表的索引、屬性信息。

  • hologres.hg_table_group_properties:Table Group元信息。

  • hologres_statistic.hg_table_statistic:存放統計信息。

  • pg_catalog.pg_stat_activity:Query運行數據。

property_key

表屬性,包含如下屬性。

  • table_id:表的ID信息,后端會給每個表分配一個ID,方便身份識別。

  • clustering_index_id:Clustering索引的ID信息。

  • clustering_index_name:Clustering索引的名稱。

  • lifecycle_in_days:表的生存時間TTL,值為-1表示永久生效,目前Hologres不支持修改。

  • storage_format:表數據的存儲格式,行存表為sst,列存表從HologresV0.10版本開始默認為orc

  • table_group:表所在的Table Group名稱。

  • schema_version:表的版本信息。

  • primary_key:表的主鍵信息。

  • orientation:表的存儲模式,有以下三種模式。

    • row:行存。

    • column:列存。

    • row,column:行列混存(HologresV1.1版本開始支持)。

  • distribution_key:設置的分布列信息。

  • dictionary_encoding_columns:設置的字典編碼列信息。

  • bitmap_columns:設置的Bitmap編碼列。

  • clustering_key:設置的Clustering key(聚簇索引)信息。

  • create_time:表的創建時間。

  • last_ddl_time:最后執行DDL的時間。

  • storage_mode:表的分層存儲屬性。

    • hot:標準存儲

    • cold:低頻存儲

property_value

表屬性的值。

pg_catalog.pg_tables

pg_tables保存表的元信息,包含如下字段。

字段

描述

schemaname

表所在的Schema名稱,除了業務創建的Schema外,還包含系統Schema名稱如下。

  • hologres:保存Hologres的系統表。

  • pg_catalog:保存Postgres的元數據信息。

  • information_schema:保存當前數據庫對象信息的視圖。

tablename

表名稱。

tableowner

表的Owner。

developer用戶組:開啟了簡單權限模型(SPM)或者基于Schema級別的簡單權限模型(簡稱SLPM)。

tablespace

Hologres無此概念,無需關注

hasindexes

如果表有(或最近有過)任何一個索引,此列為true。

hasrules

如果表有(或曾經有過)規則,此列為true。

hastriggers

如果表有(或曾經有過)觸發器,此列為true。

rowsecurity

如果表上啟用了安全性規則,此列為true。在Hologres中無需關注。

pg_catalog.pg_locks

pg_locks記錄運行時的鎖信息,常用于當發現DDL卡住或者Query卡住時,定位是否有鎖,其字段如下。

字段

說明

locktype

鎖的類型,包含如下類型。

  • relation:表鎖。

  • extend、page、tuple、transactionid、virtualxid、object、userlock:Postgres原生鎖,在Hologres內無需關注。

  • advisory:DDL鎖。

database

目標所在的數據庫的對象標識符(OID)。

relation

表的對象標識符(OID),如果目標不是表,也不是表的一部分,則為null。

page

在Hologres內無需關注。

tuple

在Hologres內無需關注。

virtualxid

事務的虛擬ID,如果目標不是虛擬事務ID,就為null。

transactionid

事務的ID,如果目標不是事務ID,就為null。

classid

包含該目標的系統表的對象標識符(OID),如果目標不是普通數據庫對象,則為null。在Hologres內無需關注。

objid

在Hologres內無需關注。

objsubid

在Hologres內無需關注。

virtualtransaction

持有或者等待此鎖的事務ID。在Hologres內無需關注。

pid

持有或者等待這個鎖的服務器進程的進程 ID,可以通過pg_stat_activity這個表查看進程信息。

mode

這個進程的鎖模式,分為共享鎖和排他鎖等模式。

granted

  • 如果持有鎖,為true。

  • 如果等待鎖,為false。

fastpath

  • 如果鎖通過快速路徑獲得為true。

  • 如果通過主鎖表獲得為false。

在Hologres內無需關注。

pg_catalog.pg_class

pg_class用于保存原生Postgres的所有系統信息,包含如下字段。

名字

說明

oid

表、索引、視圖等關系的唯一標志符。

說明

Postgres是單機系統,Hologres是分布式系統,有多個FE節點,每個FE節點的OID序列通常不相同。所以當查詢結果中有OID時,可能會出現OID結果不一致的情況。

relname

表、索引、視圖等關系的名稱。

relnamespace

包含這個關系的Schema的OID。

reltype

在Hologres內無需關注。

reloftype

在Hologres內無需關注。

relowner

關系的Owner。

relam

在Hologres內無需關注。

relfilenode

在Hologres內無需關注。

reltablespace

在Hologres內無需關注。

relpages

在Hologres內無需關注。

reltuples

表中行的數目。只是查詢規劃器使用的一個估計值,由VACUUM、ANALYZE和幾個DDL命令更新。在Hologres中用作統計信息的行數。

relallvisible

在表的可見映射中標記所有可見的頁的數目。只是查詢規劃器使用的一個估計值, 由VACUUM、ANALYZE 和幾個 DDL 命令更新。在Hologres中用作統計信息的版本

reltoastrelid

在Hologres內無需關注。

relhasindex

如果它是一個表而且至少有(或者最近有過)一個索引,則為true。

relisshared

如果該表在整個集群中由所有數據庫共享則為true。只有某些系統表(比如pg_database)是共享的,在Hologres內無需關注。

relpersistence

有如下值。

  • p:permanent table(永久表)。

  • u:unlogged table(未加載的表)。

  • t: temporary table (臨時表)。

relkind

有如下值。

  • r:ordinary table(普通表)。

  • i: index(索引)。

  • S:sequence(序列)。

  • v:view(視圖)。

  • m: materialized view(物化視圖)。

  • c: composite type(復合類型)。

  • t: TOAST table(TOAST 表)。

  • f:foreign table(外部表)。

relnatts

表中列的數目(不包含系統字段)。

relchecks

表里的CHECK約束的數目,詳情請參見pg_constraint,在Hologres內無需關注。

relhasoids

如果為關系中每行都生成一個OID則為true。在Hologres內無需關注。

relhaspkey

如果這個表有一個(或者曾經有一個)主鍵,則為true。

relhasrules

如果這個表有(或曾經有)規則就為true,詳情請參見pg_rewrite。在Hologres內無需關注。

relhastriggers

如果表有(或者曾經有)觸發器,則為true,詳情見pg_trigger。在Hologres內無需關注。

relhassubclass

如果表有(或者曾經有)任何繼承的子表,則為true。

relispopulated

在Hologres內無需關注。

relreplident

在Hologres內無需關注。

relfrozenxid

在Hologres內無需關注。

relminmxid

在Hologres內無需關注。

relacl

訪問權限。詳情請參見GRANTREVOKE

reloptions

表的屬性,例如autovacuum_enabled=false代表關閉此表的autovacuum/autoanalyze功能。

hologres_statistic.hg_table_statistic

Hologres的統計信息表,其字段如下。

字段

說明

unique_name

表的唯一標志。

schema_version

表的版本號。

statistic_version

統計信息版本。

statistics

統計信息內容,Base64編碼。

schema_name

表所在Schema名稱。

table_name

表名稱。

total_rows

總行數。

sample_rows

本統計信息的采樣行數。

nattr

表的字段個數。

used_attrs

Analyze用到的字段。

histogram_attrs

具備直方圖統計信息的字段。

ndv_attrs

具備distinct value統計信息的字段。

user_name

Analyze或者Auto Analyze的執行者。

analyze_timestamp

Analyze或者Auto Analyze的執行開始時間。

analyze_cost

Analyze或者Auto Analyze的耗時。

analyze_count

Analyze或者Auto Analyze的次數。

pg_catalog.pg_stats

pg_stats用于保存Postgres原生的統計信息,字段如下。

字段

說明

schemaname

Schema名稱。

tablename

表名稱。

attname

列名(字段名)。

inherited

如果為true,表示此行包括繼承子列。

null_frac

記錄中字段為空的百分比。

avg_width

列的平均字節寬度。

n_distinct

  • 大于零,表示列中distinct值的估計個數。

  • 小于零,是distinct值個數除以行數的負值(當ANALYZE認為distinct值的數量會隨著表增長而增加時采用負值的形式,而如果認為列具有固定數量的distinct值時采用正值的形式)。

例如,-1表示一個唯一列,即其中distinct值的個數等于行數。

most_common_vals

列中Most Common Values的一個列表(如果沒有任何一個值看起來比其他值更常用,此列為空)。

most_common_freqs

Most Common Values值的頻率列表,即每一個常用值的出現次數除以總行數(如果most_common_vals為空,則此列為空)。

histogram_bounds

將列值劃分成大小接近的組的值列表,即直方圖列表。如果存在most_common_vals,其中的值會被直方圖計算所忽略。

correlation

在Hologres內無需關注。

most_common_elems

在列值中,Most Common Values出現的非空元素列表。

most_common_elem_freqs

Most Common Values值的頻度列表,即含有至少一個給定值實例的行的分數。(如果most_common_elems為空,則此列為空)。

elem_count_histogram

在Hologres中無需關注。

pg_catalog.pg_roles

pg_roles用于存放實例內角色及其權限信息,字段如下。

字段

說明

rolname

角色名稱。

rolsuper

角色是否具有超級用戶權限,取值如下。

  • f:無超級用戶權限。

  • t:有超級用戶權限。

rolinherit

如果此角色是另一個角色的成員,角色是否能自動繼承,取值如下。

  • f:不可以繼承另一個角色的權限。

  • t:可以繼承另一個角色的權限。

rolcreaterole

能否創建更多角色,取值如下。

  • f:不可以創建更多角色。

  • t:可以創建更多角色。

rolcreatedb

能否創建數據庫,取值如下。

  • f:不可以創建數據庫。

  • t:可以創建數據庫。

rolcanlogin

角色是否能登錄實例,取值如下。

  • f:不可以登錄實例。

  • t:可以登錄實例。

rolreplication

在Hologres內無需關注。

rolconnlimit

用戶的連接數限制,-1表示無限制。

rolpassword

在Hologres內無需關注。

rolvaliduntil

在Hologres內無需關注。

rolbypassrls

在Hologres內無需關注。

rolconfig

在Hologres內無需關注。

oid

角色的ID,唯一標志符。

information_schema.role_table_grants

Hologres實例中用戶角色被授予對象(表、視圖等)的權限信息表,其字段如下。

字段

描述

grantor

授權方角色。

grantee

被授權方角色。

table_catalog

數據庫名稱。

table_schema

Schema名稱。

table_name

表名稱。

privilege_type

被授予權限的類型:

  • SELECT。

  • INSERT。

  • UPDATE。

  • DELETE。

  • TRUNCATE。

  • REFERENCES。

  • TRIGGER。

is_grantable

如果權限是可授予的,則此列值為YES,否則為NO

with_hierarchy

權限類型為SELECT時,此列值為YES,其他權限類型時值為NO

常用SQL

一些常見命令可以通過psql簡寫來實現,詳情請參見psql。同時也可以根據業務情況選擇使用如下提供的常見SQL。

查看表對應的Hologres索引和屬性信息

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

tablename為表名稱。

查看表/視圖DDL

select hg_dump_script('<tablename>'); -- 表DDL
select hg_dump_script('<viewname>');  -- 視圖DDL
說明

如果執行失敗,需要使用如下命令在DB中創建extension。

create extension hg_toolkit;

查看實例的Endpoint

除了在Hologres管理控制臺查看實例的Endpoint外,還可以通過以下命令查看實例的Endpoint。

show hg_frontend_endpoints;

查看當前實例下的所有數據庫

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;

列出當前數據庫下所有User Mapping

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;

列出當前數據庫下所有Schema

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;

列出當前數據庫下所有表、外表和視圖

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;

查看當前Schema下所有表以及表Owner(不包含系統表)

--查看當前DB下所有表(包含系統表)
SELECT * FROM pg_tables


--查看當前schema下所有表以及表owner(不包含系統表)
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;
            

查看父表對應的所有子表

-- 含分區鍵值
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'
;



-- 不含分區鍵值
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';

查看所有子表的創建時間和所屬父表

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;

查看所有外部表以及外部表對應的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')
;
            

列出當前數據庫下所有視圖

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;

查看表被哪些view依賴

select * from information_schema.view_table_usage where table_name = '<table_name>';

查看表或者表字段的注釋

  • 查看指定表中字段的注釋:

    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;

    其中schema.tablename{Schema名稱}.{表名稱}

  • 查看表的注釋并且包含表的Owner等相關信息。

    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;
    
    
    --返回結果示例
                            List of relations
     Schema | Name | Type  |      Owner       |  Size   | Description
    --------+------+-------+------------------+---------+-------------
     public | a    | table | 1365937xxxx | xxxx bytes | abcdef
    (1 row)
  • 只查看指定表的注釋信息:

    select pg_catalog.obj_description('<tablename>'::regclass::oid, 'pg_class') as "Description";
    
    --返回結果示例
    Description
    ------------
    abcdef

    其中tablename為指定表名稱。

列出當前數據庫下所有用戶和角色

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;

列出當前數據庫下所有EXTENSIONS

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;

查看某個賬號的對應權限

SELECT * FROM pg_roles where rolname='<uid>'

查看當前實例下所有的用戶以及權限示例

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;

查看一個用戶有權限的所有表

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

查看一張表有權限的所有用戶

select rolname from pg_roles where has_table_privilege(rolname, '<schemaname>.<tablename>',
 'SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER');