すべてのプロダクト
Search
ドキュメントセンター

Hologres:拡張機能

最終更新日:Mar 13, 2026

Hologres は、新しい特徴を追加するために拡張機能をロードすることをサポートしています。このトピックでは、サポートされている拡張機能について説明し、それらをロード、表示、アンインストールする方法を解説します。

制限事項

  • 拡張機能は、データベースごとに 1 つのスキーマにのみロードできます。たとえば、データベースのデフォルトスキーマに拡張機能をロードした場合、そのデータベースの他のスキーマに同じ拡張機能をロードすることはできません。

  • 拡張機能は、グローバルな pg_catalog システムスキーマにロードできます。これにより、拡張機能の特徴はデフォルトでデータベース内のすべてのスキーマで利用可能になります。スキーマを指定しない場合、拡張機能は public スキーマにロードされます。

  • Superuser 権限を持つアカウントのみが拡張機能をロードまたはアンインストールできます。

  • 現在、組み込みシステム拡張機能のみがサポートされています。カスタム拡張機能や外部拡張機能をロードすることはできません。

拡張機能

拡張機能名

シナリオ

参照

注意事項

spm, slpm

権限モデルを使用して関数を呼び出すためのスイッチをオンにします。

簡易権限モデルの使用, スキーマレベルの簡易権限モデルの使用

デフォルトで hologres スキーマにロードされます。別のスキーマを指定することはできません。

hive_compatible

get_json_object() 関数を使用します。

JSON 関数

この拡張機能を pg_catalog スキーマにロードします。

hologres_fdw

Hologres でクロスデータベースクエリを実行します。

クロスデータベースクエリ (ベータ版)

  • 専用型インスタンスのみでサポートされています。共有クラスターではサポートされていません。

  • この拡張機能を pg_catalog スキーマにロードします。

dlf_fdw

DLF を使用して OSS データを読み取ります。

DLF に基づく OSS データレイクへのアクセスを高速化

この拡張機能を pg_catalog スキーマにロードします。

proxima

Proxima を使用してベクターコンピューティングを行います。

Proxima ベクターコンピューティング

  • 専用型インスタンスのみでサポートされています。共有クラスターではサポートされていません。

  • この拡張機能を pg_catalog スキーマにロードします。

flow_analysis

ユーザーセグメンテーションおよびファネル分析関数を使用します。

ファネル関数, ユーザーセグメンテーション関数

デフォルトで public スキーマにロードされます。public スキーマにのみロードできます。

roaringbitmap

Roaring Bitmap 関数を使用します。

RoaringBitmap 関数

  • 専用型インスタンスのみでサポートされています。共有クラスターではサポートされていません。

  • デフォルトで public スキーマにロードされます。public スキーマにのみロードできます。

hg_binlog

Hologres Binlog データを消費します。

JDBC を使用して Hologres Binlog データを消費する

  • 専用型インスタンスのみでサポートされています。共有クラスターではサポートされていません。

  • デフォルトで hologres スキーマにロードされます。別のスキーマを指定することはできません。

postgis

空間関数を使用します。

PostGIS 空間関数

  • 専用型インスタンスのみでサポートされています。共有クラスターではサポートされていません。

  • この拡張機能を pg_catalog スキーマにロードします。

clickhouse

ClickHouse と互換性のある移行用関数を提供します。

ClickHouse からデータをインポートする

  • 専用型インスタンスのみでサポートされています。共有クラスターではサポートされていません。

  • デフォルトで public スキーマにロードされます。public スキーマにのみロードできます。

pgcrypto

GEN_RANDOM_UUID 関数を使用します。

ランダムデータ関数

この拡張機能を pg_catalog スキーマにロードします。

bsi

BSI 関数を使用します。

BSI 関数

デフォルトで public スキーマにロードされます。public スキーマにのみロードできます。

hg_anon

データマスキングに使用されます。

データマスキング

pg_catalog スキーマにのみロードできます。

mysql_compatible

MySQL 互換関数

MySQL 互換関数

デフォルトで hologres スキーマにロードされます。別のスキーマを指定することはできません。

拡張機能のロード

拡張機能は pg_catalog システムスキーマに直接ロードできます。これにより、拡張機能はデフォルトですべてのスキーマで利用可能になります。以下のセクションでは、構文と例を示します。

説明

スキーマを指定しない場合、拡張機能はデフォルトで public スキーマにロードされます。一部の拡張機能は特定のスキーマにのみロードできることに注意してください。詳細については、「サポートされている拡張機能」をご参照ください。

  • 拡張機能をロードするための SQL コマンドは次のとおりです。

    -- このコマンドには Superuser 権限が必要です。
    CREATE extension IF NOT EXISTS <extension_name> SCHEMA <schema_name>;

    パラメーター

    説明

    extension_name

    ロードする拡張機能の名前。Hologres でサポートされている拡張機能のリストについては、このトピックの表をご参照ください。

    schema_name

    拡張機能をロードするスキーマの名前。スキーマを指定しない場合、拡張機能はデフォルトで public スキーマにロードされます。データベースレベルで利用可能にするには、拡張機能を pg_catalog にロードします。

  • 次の例は、postgis 拡張機能を pg_catalog スキーマにロードする方法を示しています。

    CREATE extension if not exists postgis schema pg_catalog;

現在のデータベースでロードされている拡張機能の表示

現在のデータベースにロードされている拡張機能を表示するには、次の SQL コマンドを実行します。これには、デフォルトでロードされている拡張機能も含まれます。

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;

拡張機能のアンインストール

拡張機能をアンインストールするための SQL コマンドは次のとおりです。

重要

カスケードアンインストールを実行するために、DROP EXTENSION <extension_name> CASCADE; コマンドを使用しないでください。CASCADE コマンドは、拡張機能を削除するだけでなく、関連するすべてのデータ (PostGIS、RoaringBitmap、Proxima、Binlog、BSI データなど) および依存オブジェクト (メタデータ、テーブル、ビュー、サーバーデータなど) も消去します。

-- このコマンドには Superuser 権限が必要です。
DROP extension <extension_name>;

パラメーター

説明

extension_name

アンインストールする拡張機能の名前。Hologres でサポートされている拡張機能のリストについては、このトピックの表をご参照ください。

例: スキーマをまたいだ拡張機能のクエリ

一部の拡張機能は、pg_catalog ではなく、特定のスキーマにのみロードできます。たとえば、roaringbitmap 拡張機能は public スキーマにのみロードできます。public 以外のスキーマにテーブルが存在する場合、Roaring Bitmap (RB) 関数を使用するクエリは、function xxx does not exist というエラーで失敗します。これを防ぐには、関数を呼び出すときに、関数名にデフォルトのスキーマ名をプレフィックスとして付けます。次の例は、roaringbitmap 拡張機能の使用方法を示しています。

  1. データの準備。

    public 以外のスキーマにテーブルを作成し、データをインポートします。

    CREATE EXTENSION roaringbitmap;
    
    CREATE SCHEMA test;
    
    -- 指定されたスキーマにテーブルを作成します。
    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 スキーマで 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. 指定されたスキーマに切り替えて、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;
    ERROR:  function rb_or(public.roaringbitmap, public.roaringbitmap) does not exist
  4. 解決策: public スキーマで関数を実行するために、RB 関数に 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;

よくある質問

拡張機能が誤ったスキーマにロードされました。スキーマを切り替えた後、その関数や構文にアクセスできず、function xxx does not exist エラーが報告されます。

  • 原因: これは通常、拡張機能が public スキーマにロードされたために発生します。別のスキーマに切り替えると、拡張機能にアクセスできなくなります。

  • 解決策: 拡張機能をアンインストールし、pg_catalog スキーマに再ロードします。これにより、拡張機能はすべてのスキーマからアクセス可能になります。次の例は、その方法を示しています。

    重要

    拡張機能をアンインストールする際は、DROP EXTENSION <extension_name> CASCADE; 構文を使用しないでください。このコマンドは、拡張機能に依存するすべてのオブジェクトを削除するため、ご利用のサービスに影響を与える可能性があります。

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