PostgreSQL プログラマガイド

The PostgreSQL Development Team

PostgreSQL 開発チーム

Edited by

Thomas Lockhart

PostgreSQL
is Copyright © 1996-9 by the Postgres Global Development Group.

PostgreSQL
の版権 © 1996-9 は Postgres グローバル開発グループに帰属します。


Table of Contents
まとめ
1. はじめに
リソース
Terminology
表記
2000年問題
Copyrights and Trademarks
2. アーキテクチャ
Postgresアーキテクチャの概念
3. SQL の拡張: 概要
どのように拡張機能が動作するのか
Postgres の型システム
Postgres システムカタログについて
4. SQL の拡張: 関数
問合せ言語 (SQL) 関数
基本型を使った SQL 関数
複合型を使った SQL 関数
プログラミング言語関数
基本型を使用したプログラミング言語関数
複合型を使用したプログラミング言語関数
注意
5. SQLの拡張: 型
ユーザ定義型
ユーザ定義型に必要な関数
ラージオブジェクト
6. SQL の拡張: 演算子
演算子最適化に関する情報
COMMUTATOR
NEGATOR
RESTRICT
JOIN
HASHES
SORT1 and SORT2
7. SQLの拡張: 集約
8. Postgres のルールシステム
問合せツリーについて
問合せツリーのパーツ
ビューとルールシステム
Postgres におけるビューの実装
SELECT ルールの動き
非 SELECT 文のビュールール
Postgres における View の能力
実装による副作用
INSERT、 UPDATE および DELETE についてのルール
ビュールールに対しての差異
これらのルールの動作k
ビューとの協調
ルールとパーミッション
ルール対トリガ
9. インデックス拡張機能へのインターフェース
10. GiST インデックス
11. 手続き言語
手続き言語のインストール
PL/pgSQL
概要
説明
PL/Tcl
概要
説明
12. 動的ロード関数のリンク
ULTRIX
DEC OSF/1
SunOS 4.x, Solaris 2.x and HP-UX
13. Triggers
トリガーの生成
トリガーマネージャとの関係
データ変更時の可視性
14. サーバプログラム開発用インタフェース
インタフェース関数
SPI_connect — Connects your procedure to the SPI manager. はユーザ定義のプロシージャを SPI マネージャに接続します。
SPI_finish — Disconnects your procedure from the SPI manager. ユーザ定義のプロシージャを SPI マネージャから切断します。
SPI_exec — Creates an execution plan (parser+planner+optimizer) and executes a query. 実行計画(パーサ+プランナ+オプティマイザ)を生成し、問い合わせを 実行します。
SPI_prepare — Connects your procedure to the SPI manager. ユーザ定義のプロシージャをSPIマネージャに接続します。
SPI_saveplan — Saves a passed plan 渡された計画を保存します。
SPI_execp — Executes a plan from SPI_saveplan SPI_saveplan によって得られる計画を実行します。
サポート関数のインタフェース
SPI_copytuple — Makes copy of tuple in upper Executor context 上位エグゼキュータのコンテキスト内のタプルのコピーを作成します。
SPI_modifytuple — Modifies tuple of relation リレーション中のタプルを変更します。
SPI_fnumber — Finds the attribute number for specified attribute 指定属性の属性番号を検索します。
SPI_fname — Finds the attribute name for the specified attribute 指定属性の属性名を検索します。
SPI_getvalue — Returns the string value of the specified attribute 指定属性の値を文字列として返します。
SPI_getbinval — Returns the binary value of the specified attribute 指定属性のバイナリ値を返します。
SPI_gettype — Returns the type name of the specified attribute 指定属性の型名を返します。
SPI_gettypeid — Returns the type OID of the specified attribute 指定属性の OID 型を返します。
SPI_getrelname — Returns the name of the specified relation 指定リレーションの名前を返します。
SPI_palloc — Allocates memory in upper Executor context 上位エグゼキュータのコンテキスト内にメモリを割り当てます。
SPI_repalloc — Re-allocates memory in upper Executor context 上位エグゼキュータ内のメモリの再割り当てを行ないます。
SPI_pfree — Frees memory from upper Executor context 上位エグゼキュータのコンテキストのメモリを開放します。
メモリ管理
データ変更の可視性
15. ラージオブジェクト
歴史的な補遺
転置ラージオブジェクト
ラージオブジェクト・インタフェース
ラージオブジェクトの作成
ラージオブジェクトのインポート
ラージオブジェクトのエクスポート
既存ラージオブジェクトを開く
ラージオブジェクトにデータを書く
ラージオブジェクトのシーク
ラージオブジェクト記述子を閉じる
組み込み済みの登録された関数
LIBPQ からのラージオブジェクトへのアクセス
サンプルプログラム
16. libpq
データベース接続関数
問い合わせ実行関数
非同期問い合わせ処理
近道
非同期通知
COPY コマンドに関連した関数
libpq トレース関数
libpq 制御関数
ユーザ認証関数
環境変数
注意点
サンプルプログラム
サンプルプログラム 1
サンプルプログラム 2
サンプルプログラム 3
17. libpq C++ バインディング
制御と初期化
環境変数
libpq++ のクラス
コネクションクラス: PgConnection
データベースクラス: PgDatabase
データベース接続関数
問い合わせ実行関数
非同期通知
COPY コマンドに関連した関数
注意点
18. pgtcl
コマンド
pgtcl コマンドレファレンス情報
pg_connect — バックエンドサーバとの接続を開きます。
pg_disconnect — closes a connection to the backend serverバックエンドサーバとの接続を閉じます。
pg_conndefaults — obtain information about default connection parametersデフォルトの接続パラメータについての情報を入手します。
pg_exec — send a query string to the backend バックエンドに問い合わせを送信します。
pg_result — get information about a query result問い合わせ結果についての情報を得ます。
pg_select — loop over the result of a SELECT statementSELECT 文の結果を繰り返し処理します。
pg_listen — sets or changes a callback for asynchronous NOTIFY messages非同期 NOTIFY メッセージ用のコールバックを設定または変更します。
pg_lo_creat — create a large objectラージオブジェクトを作成します。
pg_lo_open — open a large objectラージオブジェクトを開きます。
pg_lo_close — close a large objectラージオブジェクトを閉じます。
pg_lo_read — read a large objectラージオブジェクトを読み込みます。
pg_lo_write — write a large objectラージオブジェクトに書き込みます。
pg_lo_lseek — seek to a position in a large objectラージオブジェクトの位置をシークします。
pg_lo_tell — return the current seek position of a large object現在のラージオブジェクトのシーク位置を返します
pg_lo_unlink — delete a large objectラージオブジェクトを削除します。
pg_lo_import — import a large object from a Unix fileUnix ファイルからラージオブジェクトをインポートします。
pg_lo_export — export a large object to a Unix fileラージオブジェクトを Unix ファイルにエクスポートします。
19. ecpg - C 言語への SQL の埋め込み
なぜ埋め込み SQL なのか?
コンセプト
ecpg の使い方
プリプロセッサ
ライブラリ
エラー処理
制限事項
他の RDBMS パッケージからの移植
インストール
開発者の方のために
今後しなければならないこと
プリプロセッサ
完成例
ライブラリ
20. ODBC インターフェース
背景
Windows アプリケーション
アプリケーションの作成
Unix へのインストール
ドライバの構築
コンフィギュレーション ファイル
ApplixWare
設定
よくある問題
ApplixWare ODBC 接続のデバッギング
ApplixWare デモの実行
便利なマクロ
サポート済みプラットホーム
21. JDBC インタフェース
JDBC インタフェースの構築
ドライバのコンパイル
ドライバのインストール
JDBC のためのデータベースの準備
ドライバの使用
JDBC の インポート
ドライバの読み込み
データベースへの接続
問い合わせの発行、及び、結果の処理
Statement インタフェースの使用
ResultSet インタフェースの使用
更新処理
接続を閉じる
ラージオブジェクトの使用
PostgresJDBC API への拡張
今後に読むべきもの
22. PostgreSQL 内部構造の概要
問合せのパス
接続の確立
パーサステージ
パーサ
変換プロセス
Postgres の rule システム
書き換えシステム
プランナ/オプティマイザ
可能性のあるプランの生成
プランのデータ構造
エクゼキュータ
23. pg_options
24. データベースシステムにおける遺伝的問い合わせ最適化
複雑な最適化問題としての問い合わせ応答処理
遺伝的アルゴリズム (GA)
Postgres における遺伝的問い合わせ最適化(GEQO
Postgres GEQO におけ る今後の実装作業
基本的な改善
参考資料
25. フロントエンド/バックエンド プロトコル
概要
プロトコル
開始
問い合わせ
関数呼び出し
通知応答
処理中リクエストの取消
終了
メッセージのデータ型
メッセージ形式
26. Postgres のシグナル
27. gcc のデフォルト値の最適化
28. バックエンドインターフェイス
BKI ファイルフォーマット
汎用コマンド
マクロコマンド
デバッグ命令
29. ページファイル
ページ構造
ファイル
バグ情報
DG1. The CVS リポジトリ(置き場所)
CVS のツリー構造
匿名(anonymous) CVS を通してソ ースを取得する
CVSup 経由でソースを取ってくる
CVSup クライアントシステムの 準備
CVSup クライアントを動かす
CVSup をインストールする
ソースからのインストール
DG2. 文書化
文書化に関するロードマップ
文書化プロジェクト
文書化用ソース
文書の構造
文書化用ファイル
文書の変換
スタイルと規定
SGML 記述用ツール
文書の構築
マニュアルページ
バージョン 6.5 用の印刷物の生成
テキスト形式の印刷物
ポストスクリプト形式の印刷物
ツールセット
Linux での RPM を使ったインストール
ツールのマニュアルインストール
別のツールキット
Bibliography
Title information Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"./reference.ced" sgml-exposed-tags:nil sgml-local-catalogs:"/usr/lib/sgml/CATALOG" sgml-local-ecat-files:nil End: Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:nil sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"./reference.ced" sgml-exposed-tags:nil sgml-local-catalogs:"/usr/lib/sgml/catalog" sgml-local-ecat-files:nil End: