Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
武田 憲太郎
September 03, 2026
Programming
160
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LL言語やWebフレームワークの PostgreSQL対応 〜DBの機能がユーザーに届くまで〜
第57回 PostgreSQLアンカンファレンス@オンライン
2026-09-03 21:40 -
https://pgunconf.connpass.com/event/402653/
武田 憲太郎
September 03, 2026
More Decks by 武田 憲太郎
See All by 武田 憲太郎
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
1k
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
510
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
6
3.1k
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
2.2k
php-src is waitingfor your contribution or: How to Level Up Your PHP Skills with php-src
kentaroutakeda
0
110
REST API設計の実践 – ベストプラクティスとその落とし穴
kentaroutakeda
4
2.2k
Inertia.jsのサーバサイド実装から学ぶ依存逆転原則の応用
kentaroutakeda
1
250
私の愛したLaravel 〜レールを超えたその先へ〜
kentaroutakeda
13
6.6k
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
2.5k
Other Decks in Programming
See All in Programming
App Intentsのビルドプロセスを支える技術
kntkymt
0
410
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3k
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.7k
setup-vp GitLab対応の裏側
naokihaba
0
120
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
7.9k
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
260
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
Jetpack Compose メカニズム
skydoves
0
460
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
270
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
330
Java 27新機能 / Java 27 new features
kishida
2
150
Building an Out-of-Order CPU
latte72
1
790
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Building the Perfect Custom Keyboard
takai
2
880
The SEO Collaboration Effect
kristinabergwall1
1
570
Abbi's Birthday
coloredviolet
4
10k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Optimizing for Happiness
mojombo
378
71k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
520
Transcript
LL言語やWebフレームワークの PostgreSQL対応 〜DBの機能がユーザーに届くまで〜 第57回 PostgreSQLアンカンファレンス@オンライン 武田 憲太郎 / @KentarouTakeda
自己紹介 武田 憲太郎 / @KentarouTakeda Webアプリケーション開発者 / OSSコントリビューター • PostgreSQLユーザー歴:
2001年〜 • Webアプリケーションのバックエンドとして利用 • Laravelコントリビューター: 2022年〜 • Eloquent ORMが中心 • PHP本体(php-src)コントリビューター: 2024年〜 • pdo̲pgsql(SQL抽象化レイヤーの PostgreSQLドライバ)が主 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 2
ドライバ開発を通じて見えた課題感 PostgreSQLの機能がLL言語のユーザーに届くまで(PHPの場合) API PostgreSQL PQsetSingleRowMode() 9.2 / 2012年 ext/pgsql libpqラッパ
pdo_pgsql 抽象化層 非対応 2025年(13年) PQenterPipelineMode() 14 / 2021年 断念(2023年) 非対応 PQsetChunkedRowsMode() 17 / 2024年 2024年11月(2ヶ月) 2026年11月予定 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 3
pdo̲pgsqlでのチャンクフェッチ対応 $statement = $pdo->prepare( 'SELECT * FROM bench', [Pdo¥Pgsql::ATTR_CHUNK_SIZE =>
1000] ); 対応PR: php/php-src#23210 (2026年11月 PHP 8.6 リリース予定) 補足: pdo̲pgsql(SQL抽象)ではなく ext/pgsql(libpqラッパ)は2024年11月に対応 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 4
対応前の予想と現実 予想: 数日で対応できるはず • 単一行モードの拡張で良いはず • PQsetChunkedRowsMode() のラッパー 現実: 所要時間2週間以上
→ 対応完了後の延長戦 • 対応中に既存機能のバグをいくつか発見 • バグの共通項は「状態管理」 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 5
フロントエンド側カーソル制御の既存バグ修正 • まだバックエンドに送っていない文を破棄 • バックエンドがエラーとして拒否した文を破棄 • エラー状態のトランザクション内での CLOSE 文 •
ロールバックされた WITH HOLD カーソルの解放 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 6
COPY とそれ以外との競合 PQresultStatus が致命的なエラーを示した場合 であっても、libpqがエラー情報を完全に処理でき るようにNULLポインタが返されるまで PQgetResult を呼び出さなければなりません。 PostgreSQL 18.4文書
32.4. 非同期コマンドの処理 より 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 7
COPY とそれ以外との競合(実例) • COPY_* 状態の drain はビジーループでハング • 多くの言語やツールがこのバグを経験している •
pgbenchはこのバグを6年間抱えていた • psqlは堅牢化のつもりでこのループを呼び込んだ • COPY と PQsetChunkedRowsMode() 組み合わせ • ここを「入口」に様々なものを見つける • COPY と PQsetSingleRowMode() 組み合わせ • 既存バグを直さないと新機能を実装できない 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 8
対応が断念されたパイプラインモード • 2023年3月: ext/pgsql パイプラインモード対応 • php/php-src#10868 • 2023年11月: PHP
8.3 GAの3日前にリバート • php/php-src#12735 • 再導入の動きはなく現在も非対応 「libpqの薄いラッパ」が既存の状態管理を壊し、 メンテナもレビュアーもそのことに気づかなかった 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 9
パイプラインモード: 他の言語やライブラリの状況 • node-postgres(古いが非同期前提) • 2021年11月: Issueからの要望 • (複数のPRが頓挫した末に) •
2026年8月: 対応 • psycopg3(リライト) • 2022年8月: 対応(3.1でPipeline mode) 「接続の状態」を設計に織り込んだライブラリは 実装成功に至る 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 10
バックエンド側の機能追加がユーザーに届かない • DBドライバは「初期に作られる」 • 「一度作ったらそう変えられない」領域 • 抽象化レイヤーを上るほど対応に時間がかかる • ドライバ →
言語 → ライブラリ → FW 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 11
WebアプリケーションFWの存在 • Web系プログラマーの多くは FWを通じてアプリを書いている • マルチDB対応のFWにベンダー固有機能を 入れるのはそれなりの理由が要る • 言語側も、FWの対応状況に モチベーションが左右される
2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 12
PostgreSQLの躍進(Laravelの場合) • 旧来: 「マルチDB対応が可能なら入れる」 • json演算子・全文検索・幾何データ型など • 最近: pgvectorがブレイクスルー •
2026年 コサイン距離: <=> をラップした様々なAPI • PostgreSQL先行 • 現在: 「DB依存機能も、有用なら入れる」 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 13
立場ごとの考え • Webアプリケーション開発者 • DBレイヤーの高度な機能を業務アプリに持ち込むのは避けたい • ただし、便利な機能なら使わせて欲しい、ごくシンプルに • FWのコントリビューター •
マルチDB対応製品は、デザインが難しくマージの障壁も高い • LL言語のコントリビューター • FW側の対応が見えないとモチベーションを保ちづらい • バックエンド開発者 • 皆さんの考えを教えてください • 新機能やAPIを検討する時、何を重視し、 どんなクライアント実装を想定しますか? 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 14
ユーザー あるいは 別レイヤーの開発者の立場から 見えた景色を共有しました ありがとうございました