All Products
Search
Document Center

Hologres:Extensions

Last Updated:Mar 13, 2026

Hologres mendukung pemuatan ekstensi untuk menambahkan fitur baru. Topik ini menjelaskan ekstensi yang didukung serta cara memuat, melihat, dan menguninstalnya.

Batasan

  • Sebuah ekstensi hanya dapat dimuat ke dalam satu schema per database. Misalnya, jika Anda memuat ekstensi ke dalam schema default suatu database, Anda tidak dapat memuat ekstensi yang sama ke dalam schema lain dari database tersebut.

  • Anda dapat memuat ekstensi ke dalam schema sistem global pg_catalog. Hal ini membuat fitur-fitur ekstensi tersedia untuk semua schema dalam database secara default. Jika Anda tidak menentukan schema, ekstensi akan dimuat ke dalam schema public.

  • Hanya akun dengan izin Superuser yang dapat memuat atau menguninstal ekstensi.

  • Saat ini, hanya ekstensi sistem bawaan yang didukung. Anda tidak dapat memuat ekstensi kustom atau eksternal.

Extension

Extension name

Scenarios

References

Usage notes

spm, slpm

Aktifkan sakelar untuk memanggil fungsi menggunakan model izin.

Use the simple permission model, Use the schema-level simple permission model

Dimuat ke dalam schema hologres secara default. Anda tidak dapat menentukan schema berbeda.

hive_compatible

Gunakan fungsi get_json_object().

JSON functions

Muat ekstensi ini ke dalam schema pg_catalog.

hologres_fdw

Lakukan kueri lintas-database di Hologres.

Cross-database queries (Beta)

  • Hanya didukung untuk dedicated instance. Tidak didukung untuk shared cluster.

  • Muat ekstensi ini ke dalam schema pg_catalog.

dlf_fdw

Baca data OSS menggunakan DLF.

Accelerate access to OSS data lakes based on DLF

Muat ekstensi ini ke dalam schema pg_catalog.

proxima

Gunakan Proxima untuk komputasi vektor.

Proxima vector computing

  • Hanya didukung untuk instans khusus, tidak didukung untuk kluster bersama.

  • Muat ekstensi ini ke dalam schema pg_catalog.

flow_analysis

Gunakan fungsi segmentasi pengguna dan analisis funnel.

Funnel functions, User segmentation functions

Dimuat ke dalam schema public secara default. Ekstensi ini hanya dapat dimuat ke dalam schema public.

roaringbitmap

Gunakan fungsi Roaring Bitmap.

RoaringBitmap functions

  • Hanya didukung untuk dedicated instance. Tidak didukung untuk shared cluster.

  • Dimuat ke dalam schema public secara default. Ekstensi ini hanya dapat dimuat ke dalam schema public.

hg_binlog

Konsumsi data Hologres Binlog.

Mengonsumsi data Binlog Hologres melalui JDBC

  • Hanya didukung untuk instance dedicated, tidak didukung untuk shared cluster.

  • Dimuat ke dalam schema hologres secara default; Anda tidak dapat menentukan schema lain.

postgis

Gunakan fungsi spasial.

PostGIS spatial functions

  • Hanya didukung pada instance dedicated, tidak didukung pada shared cluster.

  • Muat ekstensi ini ke dalam schema pg_catalog.

ClickHouse

Menyediakan fungsi yang kompatibel dengan ClickHouse untuk migrasi.

Import data from ClickHouse

  • Hanya didukung pada instance dedicated. Tidak didukung pada shared cluster.

  • Dimuat ke dalam schema public secara default. Ekstensi ini hanya dapat dimuat ke dalam schema public.

pgcrypto

Gunakan fungsi GEN_RANDOM_UUID.

Random data functions

Muat ekstensi ini ke dalam skema pg_catalog.

bsi

Gunakan fungsi BSI.

BSI functions

Dimuat ke dalam skema public secara default. Ekstensi ini hanya dapat dimuat ke dalam skema public.

hg_anon

Digunakan untuk data masking.

Data masking

Hanya dapat dimuat ke dalam skema pg_catalog.

mysql_compatible

Fungsi yang kompatibel dengan MySQL

MySQL-compatible functions

Dimuat ke dalam schema hologres secara default. Anda tidak dapat menentukan schema lain.

Load an extension

Anda dapat memuat ekstensi langsung ke dalam skema sistem pg_catalog, sehingga ekstensi tersebut tersedia untuk semua skema secara default. Bagian berikut menunjukkan sintaks dan contohnya.

Catatan

Jika Anda tidak menentukan skema, ekstensi akan dimuat ke dalam skema public secara default. Perhatikan bahwa beberapa ekstensi hanya dapat dimuat ke dalam skema tertentu. Untuk informasi selengkapnya, lihat Supported extensions.

  • Examples

    Perintah SQL untuk memuat ekstensi adalah sebagai berikut.

    -- Perintah ini memerlukan izin Superuser.
    CREATE extension IF NOT EXISTS <extension_name> SCHEMA <schema_name>;

    Parameter

    Description

    extension_name

    Nama ekstensi yang akan dimuat. Untuk daftar ekstensi yang didukung di Hologres, lihat tabel dalam topik ini.

    schema_name

    Nama schema tempat ekstensi dimuat. Jika Anda tidak menentukan schema, ekstensi akan dimuat ke dalam schema public secara default. Muat ekstensi ke pg_catalog agar tersedia di tingkat database.

  • Example

    Contoh berikut menunjukkan cara memuat ekstensi postgis ke dalam skema pg_catalog.

    CREATE extension if not exists postgis schema pg_catalog;

View loaded extensions in the current database

Anda dapat menjalankan perintah SQL berikut untuk melihat ekstensi yang telah dimuat di database saat ini, termasuk ekstensi yang dimuat secara default.

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;

Uninstall an extension

Perintah SQL untuk meng-uninstall ekstensi adalah sebagai berikut.

Penting

Jangan gunakan perintah DROP EXTENSION <extension_name> CASCADE; untuk melakukan penghapusan secara kaskade. Opsi CASCADE tidak hanya menghapus ekstensi, tetapi juga melakukan purge terhadap semua data terkait (seperti data PostGIS, RoaringBitmap, Proxima, Binlog, dan BSI) serta objek dependen (seperti metadata, tabel, view, dan data server).

-- Perintah ini memerlukan izin Superuser.
DROP extension <extension_name>;

Parameter

Description

extension_name

Nama ekstensi yang akan diuninstal. Untuk daftar ekstensi yang didukung di Hologres, lihat tabel dalam topik ini.

Example: Query an extension across schemas

Beberapa ekstensi hanya dapat dimuat ke dalam skema tertentu, bukan ke dalam pg_catalog. Sebagai contoh, ekstensi roaringbitmap hanya dapat dimuat ke dalam skema public. Jika sebuah tabel berada di skema selain public, kueri yang menggunakan fungsi Roaring Bitmap (RB) akan gagal dengan pesan error function xxx does not exist. Untuk mencegah hal ini, tambahkan awalan nama skema default pada nama fungsi saat memanggilnya. Contoh berikut menunjukkan cara menggunakan ekstensi roaringbitmap.

  1. Siapkan data.

    Buat tabel di skema selain public dan impor data.

    CREATE EXTENSION roaringbitmap;
    
    CREATE SCHEMA test;
    
    -- Buat tabel di schema yang ditentukan.
    CREATE TABLE test.t1 (
        id integer,
        bitmap roaringbitmap
    );
    
    -- Atur nilai BIT menjadi 1 untuk posisi array yang sesuai.
    INSERT INTO test.t1
    SELECT
        1,
        RB_BUILD (ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 200]);
    
    -- Atur nilai BIT menjadi 1 untuk posisi yang sesuai dari beberapa record input, lalu agregasikan menjadi satu roaringbitmap.
    INSERT INTO test.t1
    SELECT
        2,
        RB_BUILD_AGG (e)
    FROM
        GENERATE_SERIES(1, 100) e;
    
  2. Kueri data menggunakan fungsi RB di skema public. Kueri berhasil.

    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. Beralih ke skema yang ditentukan dan jalankan kueri dengan fungsi RB. Terjadi error.

    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;
    ERROR:  function rb_or(public.roaringbitmap, public.roaringbitmap) does not exist
  4. Solusi: Tambahkan awalan public pada fungsi RB agar fungsi tersebut dieksekusi di skema public.

    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;

FAQ

Ekstensi dimuat ke schema yang salah. Setelah beralih ke schema lain, Anda tidak dapat mengakses fungsi atau sintaksnya, dan muncul error function xxx does not exist.

  • Penyebab: Hal ini biasanya terjadi karena ekstensi dimuat ke dalam schema public. Setelah Anda beralih ke schema berbeda, ekstensi tersebut tidak lagi dapat diakses.

  • Solusi: Uninstal ekstensi tersebut, lalu muat ulang ke dalam schema pg_catalog. Dengan demikian, ekstensi akan dapat diakses dari semua schema. Contoh berikut menunjukkan cara melakukannya:

    Penting

    Saat menguninstal ekstensi, jangan gunakan sintaks DROP EXTENSION  <extension_name> CASCADE;. Perintah ini akan menghapus semua objek yang bergantung pada ekstensi dan dapat memengaruhi layanan Anda.

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