
2026/02/06 0:09
Pg-dev-container は、PostgreSQL 用に準備されたまま実行できる VS Code 開発コンテナです。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
概要
デバッグを有効にした PostgreSQL(最適化なし、アサーションオン、デバッグシンボル付き)をビルドする VS Code 開発コンテナです。開発者は同じ環境内で簡易 C 拡張 () をコンパイル・インストールし、そのコードをステップ実行できます。hello_world
動作手順
- 前提条件 – VS Code、Docker、および Dev Containers 拡張機能をインストールします。
- リポジトリを開くと、VS Code が「Reopen in Container」を促します。コンテナはベースイメージを取得し、ビルドツールをインストールして PostgreSQL をコンパイル(数分かかる場合があります)。
- エディタにソースツリーを追加:
。code --add /usr/local/src/postgresql- 起動後、ターミナルを開きデータベースを作成 (
) し、接続(createdb test)します。サーバーはコンテナ内で自動的に起動します。psql test- 配布されている
拡張をビルド:hello_worldに移動し、src/extensions/01_hello_world/、make、sudo make installを実行。make installcheck- 利用可能な拡張を確認:
。データベースで有効化:SELECT * FROM pg_available_extensions;。関数は呼び出せます (CREATE EXTENSION hello_world;)。SELECT hello_world('Mr X');- デバッグ –
にブレークポイントを設定し、デバッグ開始 (F5)、PostgreSQL バックエンドプロセスを選択してクエリを実行しブレークポイントに到達。デバッグビューでローカル変数とコールスタックが表示され、コードをステップ実行するかhello_world.cのvarlena.cなど PostgreSQL 内部へジャンプ (F12) できます。text_to_cstring()
重要性
開発者は PostgreSQL 拡張作業のために再現可能で完全にデバッグ可能な環境を手に入れ、セットアップ時間を短縮し、データベース内部を深く検査できるようになります。
本文
Visual Studio Code – 開発コンテナ – PostgreSQL
本プロジェクトは、PostgreSQL 用の VS Code 開発コンテナを提供します。
コンテナにはデバッグに必要なすべてのツールが含まれ、デバッグビルド(最適化されず、アサーション有効、デバッグシンボル付き)の PostgreSQL が入っています。ビルドは本番用より遅くなりますが、拡張機能の開発・テストに便利です。
前提条件
| 項目 | 要件 |
|---|---|
| VS Code | インストール済み |
| Docker | インストール済み |
| VS Code Dev Containers 拡張機能 | インストール済み |
プロジェクトを開く
- VS Code を起動します。
- このリポジトリを開きます。
- プロンプトが表示されたら Reopen in Container(コンテナで再オープン)を選択します。
VS Code がベースイメージをダウンロードし、ツールをインストールして PostgreSQL をコンパイルします(詳細は show log で確認してください)。
初回起動
コンテナのビルドが完了したら、PostgreSQL のソースコードを VS Code に追加します。
code --add /usr/local/src/postgresql
注意: VS Code がウィンドウの再読み込みを求める場合があります。
これでソースコードを閲覧でき、全文検索(例:
add_path() を検索)も利用できます。
PostgreSQL への接続
コンテナは自動的に PostgreSQL サーバーを起動します。
統合ターミナルから次のように操作します。
createdb test # データベース作成 psql test # 接続 CREATE TABLE test (id INTEGER); SELECT * FROM test; \q # psql を終了 dropdb test # データベース削除
拡張機能のインストール
簡単な
hello_world 拡張機能が付属しています。
-
ビルド&インストール
cd src/extensions/01_hello_world/ make sudo make install # lib と extensions ディレクトリへの書き込みは root が必要 make installcheck # テスト実行(一時 DB を作成し SQL を走らせる) -
データベースにインストール
CREATE EXTENSION hello_world; -
インストール確認
SELECT * FROM pg_available_extensions; \dx -
関数を使用
SELECT hello_world('Mr X');
デバッガの使い方
-
VS Code で
を開きます。hello_world.c -
行番号横のドットをクリックしてブレークポイントを設定します。
-
別ターミナルでテストデータベースに接続:
psql test -
VS Code で F5 を押し、
というバックエンドプロセスを選択します。postgresql: vscode test [local] idle -
ターミナルから
を実行。SELECT hello_world('Mr X'); -
デバッガがブレークポイントで停止し、ローカル変数・スタックトレースの確認やステップ実行などが可能です。
ヒント: 関数名(例:
)を F12 で押すと、その実装へジャンプできます(text_to_cstring()など)。varlena.c
ガイド終了