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

Extension擴展

Hologres中支持加載擴展(Extension)以實現更豐富的功能,本文為您介紹Hologres中支持的Extension擴展以及如何加載、查看、卸載Extension。

使用限制

  • 一個數據庫只能在一個Schema下加載一次Extension。例如在某數據庫的默認Schema下加載了Extension,則此數據庫下其他的Schema不能再加載Extension。

  • 可以將extension加載在全局空間pg_catalog系統Schema下,默認該數據庫的所有Schema都能訪問該Extension的功能;如果不指定Schema,則會默認加載在public Schema下。

  • 賬號具有Superuser權限才能加載、卸載Extension。

  • 目前僅支持加載系統內置Extension,不支持加載自定義及外部Extension。

Extension擴展

Extension名稱

適用場景

相關文檔

使用說明

spm、slpm

開啟權限模型調用函數的開關。

簡單權限模型的使用基于Schema級別的簡單權限模型的使用

默認加載到hologres Schema下,不能指定Schema。

hive_compatible

使用get_json_object()函數。

JSON函數

建議加載到pg_catalog Schema下。

hologres_fdw

Hologres跨庫查詢。

跨庫查詢(Beta)

  • 僅獨享實例支持,共享集群不支持。

  • 建議加載到pg_catalog Schema下。

dlf_fdw

通過DLF讀取OSS數據。

OSS數據湖加速

建議加載到pg_catalog Schema下。

proxima

使用Proxima進行向量計算。

Proxima向量計算

  • 僅獨享實例支持,共享集群不支持。

  • 建議加載到pg_catalog Schema下。

flow_analysis

使用明細圈人、漏斗分析函數。

漏斗函數明細圈人函數

默認加載到public Schema下,且只能加載到public Schema下,不能加載到其他Schema。

roaringbitmap

使用Roaring Bitmap函數。

RoaringBitmap函數

  • 僅獨享實例支持,共享集群不支持。

  • 默認加載到public Schema下,且只能加載到public Schema下,不能加載到其他Schema。

hg_binlog

消費Hologres Binlog。

通過JDBC消費Hologres Binlog

  • 僅獨享實例支持,共享集群不支持。

  • 默認加載到hologres Schema下,不能指定Schema。

foreign_table_exposer

針對特定BI工具優化訪問外表。

Power BI

建議加載到pg_catalog Schema下。

postgis

使用空間函數。

PostGIS空間函數

  • 僅獨享實例支持,共享集群不支持。

  • 建議加載到pg_catalog Schema下。

clickhouse

兼容ClickHouse遷移函數。

從ClickHouse導入

  • 僅獨享實例支持,共享集群不支持。

  • 默認加載到public Schema下,且只能加載到public Schema下,不能加載到其他Schema。

pgcrypto

GEN_RANDOM_UUID函數使用。

隨機數據函數

建議加載到pg_catalog Schema下。

bsi

BSI函數使用。

BSI函數

默認加載到public Schema下,且只能加載到public Schema下,不能加載到其他Schema。

hg_anon

數據脫敏使用。

數據脫敏

只能加載到pg_catalog Schema下。

mysql_compatible

MySQL兼容函數

MySQL兼容函數

默認加載到hologres Schema下,不能指定Schema。

加載Extension

加載Extension時,建議將Extension直接加載到pg_catalog系統Schema下,默認所有Schema都能使用該Extension,加載語法及示例如下:

說明

如果未指定Schema,則Extension會被默認加載到public Schema下。但需注意,部分Extension只能加載到指定的Schema下,詳情請參見Extension擴展

  • 語法示例

    加載Extension的SQL命令如下。

    -- 需Superuser權限執行
    CREATE extension IF NOT EXISTS <extension_name> SCHEMA <schema_name>;

    參數

    說明

    extension_name

    需要加載的extension名稱,Hologres支持的部分Extension參見本文上述列表。

    schema_name

    加載Extension所在的schema名稱。如果不指定schema,則會默認在public下加載Extension,建議加載在pg_catalog下,數據庫級別可用。

  • 使用示例

    在pg_catalog下加載postgis擴展示例如下。

    CREATE extension if not exists postgis schema pg_catalog;

查看當前數據庫已加載Extension

通過如下SQL命令可以查看當前數據庫下已加載的Extension,包括系統默認加載的Extension。

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
    ORDER BY        1;

卸載Extension

卸載Extension的SQL命令如下。

重要

不推薦使用DROP EXTENSION <extension_name> CASCADE;命令級聯卸載Extension。CASCADE(級聯)刪除命令不僅會刪除指定擴展本身,還會一并清除擴展數據(例如PostGIS數據、RoaringBitmap數據、Proxima數據、Binlog數據、BSI數據等)以及依賴該擴展的對象(包括元數據、表、視圖、Server數據等)。

-- 需Superuser權限執行
DROP extension <extension_name>;

參數

說明

extension_name

需要卸載的Extension名稱,Hologres支持的部分Extension參見本文上述列表。

跨Schema查詢Extension示例

部分Extension只能被加載到指定的Schema下,不能被加載到pg_catalog,例如roaringbitmap extension只能被加載到public Schema下,當表存在于非public Schema時,使用RB函數查詢會報錯function xxx does not exist,因此在使用函數時需要加上函數的默認Schema名稱。roaringbitmap Extension的使用示例如下。

  1. 數據準備。

    創建非public Schema的表并導入數據。

    CREATE EXTENSION roaringbitmap;
    
    CREATE SCHEMA test;
    
    --創建表在指定Schema下
    CREATE TABLE test.t1 (
        id integer,
        bitmap roaringbitmap
    );
    
    --數組位置對應的BIT值為1
    INSERT INTO test.t1
    SELECT
        1,
        RB_BUILD (ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 200]);
    
    --將輸入的多條記錄的值對應位置的BIT值設置為1,最后聚合為一個roaringbitmap
    INSERT INTO test.t1
    SELECT
        2,
        RB_BUILD_AGG (e)
    FROM
        GENERATE_SERIES(1, 100) e;
    
  2. public Schema下使用RB函數查詢,成功執行。

    SELECT
        RB_OR (a.bitmap, b.bitmap)
    FROM (
        SELECT
            bitmap
        FROM
            test.t1
        WHERE
            id = 1) AS a,
        (
            SELECT
                bitmap
            FROM
                test.t1
            WHERE
                id = 2) AS b;
  3. 切換到指定Schema使用RB函數查詢,報錯。

    set search_path to test;
    SELECT
        RB_OR (a.bitmap, b.bitmap)
    FROM (
        SELECT
            bitmap
        FROM
            test.t1
        WHERE
            id = 1) AS a,
        (
            SELECT
                bitmap
            FROM
                test.t1
            WHERE
                id = 2) AS b;
    RROR:  function rb_or(public.roaringbitmap, public.roaringbitmap) does not exist
  4. 解決方法:在RB函數前加public Schema,將函數放入public Schema執行。

    SELECT
        public.RB_OR (a.bitmap, b.bitmap)
    FROM (
        SELECT
            bitmap
        FROM
            test.t1
        WHERE
            id = 1) AS a,
        (
            SELECT
                bitmap
            FROM
                test.t1
            WHERE
                id = 2) AS b;

常見問題

Extension被加載到了錯誤的Schema下,導致切換Schema后無法訪問對應的函數或語法,報錯function xxx does not exist

  • 問題原因:通常是因為Extension被加載到了public Schema下,切換Schema后,無法訪問。

  • 解決方法:卸載Extension,并將Extension重新加載到pg_catalog Schema下,這樣所有的Schema都能訪問。示例如下:

    重要

    卸載Extension時,不建議使用DROP EXTENSION  <extension_name> CASCADE;的語法,否則會將該Extension依賴的相關對象全部刪除,容易對業務產生影響。

    drop extension hologres_fdw;
    
    create extension if not exists hologres_fdw schema pg_catalog;