Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Write Postgres Extensions with Rust!

Write Postgres Extensions with Rust!

I will introduce you how to write PostgreSQL's extensions with Rust.
pgx(https://github.com/zombodb/pgx) is a framework that helps developing extensions.

The LT took place on December 22, 2020 at Shinjuku.rs # 13 (https://forcia.connpass.com/event/194229/).

Kentaro Matsumoto

December 22, 2020
Tweet

More Decks by Kentaro Matsumoto

Other Decks in Technology

Transcript

  1. 自己紹介 • 松本健太郎 (Kentaro MATSUMOTO) @matsu7874 • ソフトウェアエンジニア@フォルシア株式会社 ◦ Rustでインメモリデータベースを開発

    ◦ インターンの企画とか技術広報とか • 興味 ◦ Webアプリケーション ◦ 技術広報・エンジニア採用 ◦ 競技プログラミング 2
  2. 『実践Rustプログラミング入門』 共著 • 8月22日発売 ¥3,600(税別) 秀和システム • 12月1日 Kindle版発売! • 360/508ページくらい実践的な内容

    ◦ Webアプリ ◦ WebAssembly ◦ GUI ◦ 組み込み ◦ プロダクションで使う話など • Shinjuku.rsで知り合ったエンジニアで共著 3
  3. pgxの導入 $ cargo install cargo-pgx
 $ cargo pgx init
 


    
 7 • テスト用のPostgreSQL 10~13がインストールされる
  4. ハマったところ • 構造体xxxに対して、2つの関数が生成される ◦ 関数xxx_in(cstring)->xxx ◦ 関数xxx_out(xxx)->cstring ◦ PostgreSQLに実装されている型、例えばpoint型などと被る ◦

    関数定義のSQLを見れば原因がわかる! • 型パラメータを持った構造体はNG • 構造体のメソッドは別の関数経由で呼び出す • pg_externの関数でusizeを引数に取れないがエラーにならない。 17