Repolode
pgcentralfoundation

pgcentralfoundation/pgrx

PostgreSQL拡張をRustで開発するためのフレームワーク。Postgresの複数バージョンに対応したセットアップ、実行、テスト、パッケージ化のツールを備えています。

スター
4,823
フォーク
342
未解決の Issue
343
最終コミット
8 日前

これは何?

pgrxは、RustでPostgreSQL拡張を開発するためのフレームワークです。Rustの関数、型、列挙型をPostgresのオブジェクトに対応付け、それらのSQLスキーマを自動生成します。そのため、拡張機能をすべてRustで実装しながら、関数やカスタム型をSQLから利用できるようにします。

cargo-pgrxサブコマンドが開発ワークフローを管理します。新しい拡張プロジェクトの作成、Postgresの各バージョンのダウンロードとビルド、拡張機能を読み込んだ対話型psqlセッションの起動、複数バージョンのPostgresを対象にしたテスト、インストール用パッケージの作成が可能です。単一のコードベースでPostgres 13〜18と19のベータ版をサポートしています。

このフレームワークは安全性を重視しています。Rustのパニックはプロセスではなくトランザクションを中断するPostgresエラーに変換され、メモリ管理にはRustのdropセマンティクスが適用されます。また、SPI、メモリコンテキスト、フック、低レベルの処理向けの生のpg_sysバインディングにもアクセスできます。

主な機能

  • 01cargo-pgrxコマンドで拡張機能のひな形作成、実行、テスト、パッケージ化が可能
  • 02単一のコードベースでPostgres 13〜18をサポート
  • 03#[pg_extern]などのRustアノテーションからSQLスキーマを自動生成
  • 04deriveマクロでカスタムPostgres型や列挙型を定義
  • 05パニックを、トランザクションだけを中断するPostgresエラーに変換
  • 06SPI、メモリコンテキスト、フック、生のpg_sys内部機能にアクセス

ユースケース

  • RustでカスタムPostgresデータ型やインデックス関連の関数を作成する
  • SQLクエリから使えるよう、RustライブラリをラップするPostgreSQL拡張を開発する
  • CIで複数のPostgresメジャーバージョンを対象に拡張機能をテストする

クイックスタート

  1. 1

    cargo-pgrx サブコマンドをインストールする

    cargo install --locked cargo-pgrx
  2. 2

    PGRX のホームディレクトリを初期化する(対応する PostgreSQL のバージョンをダウンロードしてコンパイルします)

    cargo pgrx init
  3. 3

    新しい拡張機能プロジェクトを作成する

    cargo pgrx new my_extension
  4. 4

    psql でサンプル拡張機能を実行する

    cargo pgrx run

使う前に知っておきたいこと

  • プロジェクトのメタデータでライセンスが明確に指定されていないため、使用前にリポジトリのライセンスを確認してください。
  • 初期化の手順では複数の PostgreSQL バージョンをダウンロードしてコンパイルするため、時間とディスク容量が必要です。
  • クロスコンパイルは nix 環境でのみ実演されており、他の環境では手動で設定する必要があります。

収録されている特集

トピック

#postgres#postgresql#rust#database-extension#pg-extension#sql#postgresql-extension#rustlang

よくある質問

pgrx とは?
PostgreSQL拡張をRustで開発するためのフレームワーク。Postgresの複数バージョンに対応したセットアップ、実行、テスト、パッケージ化のツールを備えています。 pgrxは、RustでPostgreSQL拡張を開発するためのフレームワークです。Rustの関数、型、列挙型をPostgresのオブジェクトに対応付け、それらのSQLスキーマを自動生成します。そのため、拡張機能をすべてRustで実装しながら、関数やカスタム型をSQLから利用できるようにします。
pgrx は無料で使えますか?ライセンスは?
pgrx は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
pgrx は今もメンテナンスされていますか?
活発にメンテナンス中。pgrx の最終コミットは 2026年10月30日 です。
pgrx は何に使えますか?
RustでカスタムPostgresデータ型やインデックス関連の関数を作成する SQLクエリから使えるよう、RustライブラリをラップするPostgreSQL拡張を開発する CIで複数のPostgresメジャーバージョンを対象に拡張機能をテストする
pgrx のインストール方法は?
cargo-pgrx サブコマンドをインストールする: cargo install --locked cargo-pgrx PGRX のホームディレクトリを初期化する(対応する PostgreSQL のバージョンをダウンロードしてコンパイルします): cargo pgrx init 新しい拡張機能プロジェクトを作成する: cargo pgrx new my_extension psql でサンプル拡張機能を実行する: cargo pgrx run
pgrx はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/pgcentralfoundation/pgrx

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト