pgrx: RustでPostgres拡張を書く

· databases devtools · Source ↗

要約

  • pgrxは、PostgreSQL拡張をRustで記述するためのフレームワーク。慣用的な安全性、自動スキーマ生成、cargoベースの開発ツールチェーンを備え、Postgres 13〜18をサポートする。

ポイント

  • cargo-pgrxが開発サイクル全体を担う: スキャフォールド、複数PGバージョンの初期化、psqlでのインタラクティブ実行、バージョンをまたいだユニットテスト、配布用パッケージング。
  • Rustのpanicはelog(ERROR)経由でPostgresのERRORに変換され、プロセスではなくトランザクションをアボートする。メモリ管理はRustのdropセマンティクスに従い、elog(ERROR)をまたいでも機能する。
  • #[pg_extern]#[pg_trigger]#[derive(PostgresType)]#[derive(PostgresEnum)]により、Rustの関数と型を最小限のボイラープレートでPostgresに公開できる。
  • SQLスキーマはRustの型から自動生成される。Postgres↔Rustの型マッピングはrange、JSON/JSONB、UUID、配列、数値型をカバーする。
  • スレッド利用は明示的に非対応: Postgresの内部関数をスレッドから呼び出してはならず、Postgresとの非同期インタラクションは未検証領域とされている。

Hacker Newsのコメント

  • 現時点で目立ったHN上の議論はなし。

Original | Discuss on HN


英語版: Pgrx: Build Postgres Extensions with Rust · Original source