Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
bca9d0cd
Commit
bca9d0cd
authored
Aug 21, 2001
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add SCM_CREDS to get owner of unix-domain socket on BSD-like systems.
parent
04fdf73a
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
1019 additions
and
783 deletions
+1019
-783
doc/FAQ_japanese
doc/FAQ_japanese
+701
-653
doc/src/FAQ/FAQ_japanese.html
doc/src/FAQ/FAQ_japanese.html
+125
-104
src/backend/libpq/auth.c
src/backend/libpq/auth.c
+29
-5
src/backend/libpq/hba.c
src/backend/libpq/hba.c
+79
-11
src/backend/libpq/pg_hba.conf.sample
src/backend/libpq/pg_hba.conf.sample
+6
-6
src/include/libpq/pqcomm.h
src/include/libpq/pqcomm.h
+2
-1
src/interfaces/libpq/fe-auth.c
src/interfaces/libpq/fe-auth.c
+71
-3
src/interfaces/odbc/connection.c
src/interfaces/odbc/connection.c
+5
-0
src/interfaces/odbc/connection.h
src/interfaces/odbc/connection.h
+1
-0
No files found.
doc/FAQ_japanese
View file @
bca9d0cd
PostgreSQL(ポストグレス・キュー・エル)についてよくある質問(FAQ)
PostgreSQL(ポストグレス・キュー・エル)についてよくある質問
とその解答
(FAQ)
原文最終更新日:
Mon Apr 9 15:27
:47 EDT 2001
原文最終更新日:
Tue Jul 10 21:01
:47 EDT 2001
現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us)
現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us)
この文書の最新版は http://www.PostgreSQL.org/ で見ることができます。
この文書の最新版は http://www.PostgreSQL.org/ で見ることができます。
プラットホームに特有の質問については
:http://www.PostgreSQL.org/users-lounge/
プラットホームに特有の質問については
docs/faq.html
:http://www.PostgreSQL.org/users-lounge/
docs/faq.html
に回答があります。
に回答があります。
(以下、訳者による注釈を [訳注: と ] とで囲んで記します。)
[訳注:
[訳注:
(以下、訳者による注釈を [訳注: と ] とで囲んで記します。)
日本語版製作についてのメモは最後尾へ移動しました。
http://www.PostgreSQL.org/ にアクセスすると http://postgresql.nucba.ac.jp/
日本語版のこの文書は "User's Lounge" の "Collection of FAQs" の
にリダイレクトされ、"Not Found" になってしまうことがあります。その場合は、
"Japanese" という見出しのところにあります。
http://www.PostgreSQL.org/index.html
(http://www.PostgreSQL.org/docs/faq-japanese.html)
にアクセスしてみてください。
この和訳についてお気づきの点は(juk@jp.postgresql.org)までメールでお寄せ下さい。
日本語版の製作については以下の通りです。
最終更新日: 2001年04月15日
翻訳者: 桑村 潤 (Jun Kuwamura <juk@jp.postgresql.org>)
このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます):
田仲 稔(Minoru Tanaka <Tanaka.Minoru@keiken.co.jp>)
石井 達夫(Tatsuo Ishii <t-ishii@sra.co.jp>)
齊藤 知人(Tomohito Saitoh <tomos@elelab.nsc.co.jp>)
馬場 肇(Hajime Baba <baba@kusastro.kyoto-u.ac.jp>)
岡本 一幸(Kazuyuki Okamoto <kokamoto@itg.hitachi.co.jp>)
小菅 昭一(Shoichi Kosuge <s-kosuge@str.hitachi.co.jp>)
山下 義之(Yoshiyuki Yamashita <dica@eurus.dti.ne.jp>)
境 真太郎(Sintaro Sakai <s_sakai@mxn.mesh.ne.jp>)
生越 昌己(Masami Ogoshi <ogochan@zetabits.com>)
石川 俊行(Toshiyuki Ishikawa <tosiyuki@gol.com>)
本田 茂広(Shigehiro Honda <fwif0083@mb.infoweb.ne.jp>)
せせ じゅん(Jun Sese <sesejun@linet.gr.jp>)
をはじめ、ポストグレスに関する話題豊富な日本語ポストグレス・メーリングリスト、
和訳のきっかけを作ってくれた JF(Linux Japanese FAQ Mailing List)プロジェクト、その他、
直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの
皆さんに感謝します。
日本語版のこの文書はhttp://www.PostgreSQL.org/users-lounge/docs/faq-japanese.htmlにあるほか,
以下のサイトからもたどれます。
http://www.jp.postgresql.org/
http://www.rccm.co.jp/~juk/pgsql/
http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/
http://www.linux.or.jp/JF/
なお、この和訳に関するご意見は(juk@jp.postgresql.org)までお寄せ下さい。
]
]
------------------------------------------------------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一般的な質問
一般的な質問
1.1) PostgreSQLとは何ですか?
1.1) PostgreSQLとは何ですか?
1.2) PostgreSQLの著作権はどうなってますか?
1.2) PostgreSQLの著作権はどうなってますか?
1.3) PostgreSQLの動作するUnixプラットホームは?
1.3) PostgreSQLの動作するUnixプラットホームは?
1.4) Unix以外の移植版で使えるものは?
1.4) Unix以外の移植版で使えるものは?
1.5) PostgreSQLはどこから
手に入り
ますか?
1.5) PostgreSQLはどこから
入手でき
ますか?
1.6) サポートはどこで受けられますか?
1.6) サポートはどこで受けられますか?
1.7) 最新版は
何
ですか
1.7) 最新版は
どれ
ですか
1.8) どのような文書がありますか?
1.8) どのような文書がありますか?
1.9) 既知のバグや無い機能はどうやって見つけますか?
1.9) 既知のバグや
未だ
無い機能はどうやって見つけますか?
1.10) SQLはどうすれば学べますか?
1.10) SQLはどうすれば学べますか?
1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか?
1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか?
1.12) 開発チームにはどのように参加しますか?
1.12) 開発チームにはどのように参加しますか?
1.13) バグレポートはどのように発信しますか?
1.13) バグレポートはどのように発信しますか?
1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか?
1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか?
ユーザー・クライアントの質問
ユーザー・クライアントの質問
2.1) PostgreSQL の ODBC ドライバーはありますか?
2.1) PostgreSQL の ODBC ドライバーはありますか?
2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
2.3) PostgreSQL
はグラフィカル・ユーザインターフェースを持ちますか?リポートジ
2.3) PostgreSQL
にグラフィカル・ユーザインターフェースはありますか? レポー
ェネレータは?
埋め込み問い合わせ言語インターフェースは?
トジェネレータは?
埋め込み問い合わせ言語インターフェースは?
2.4) PostgreSQL と通信するにはどんな言語が使えますか?
2.4) PostgreSQL と通信するにはどんな言語が使えますか?
管理上の質問
管理上の質問
3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか?
3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか?
3.2) postmaster を走らせると、 Bad System Call とかコア・ダンプしたとのメッ
セー
3.2) postmaster を走らせると、 Bad System Call とかコア・ダンプしたとのメッ
ジが出ます。なぜですか?
セー
ジが出ます。なぜですか?
3.3) postmaster を走らせようとすると、 IpcMemoryCreate エラーが出ます。なぜ
です
3.3) postmaster を走らせようとすると、 IpcMemoryCreate エラーが出ます。なぜ
か?
です
か?
3.4) postmasterを走らせようとすると、 IpcSemaphoreCreate エラーが出ます。な
ぜで
3.4) postmasterを走らせようとすると、 IpcSemaphoreCreate エラーが出ます。な
すか?
ぜで
すか?
3.5) 他のホストから自分のPostgreSQLデータベースへのアクセスを防ぐにはどうし
ます
3.5) 他のホストから自分のPostgreSQLデータベースへのアクセスを防ぐにはどうし
か?
ます
か?
3.6) なぜ、他のマシンから自分のデータベースに接続できないのでしょうか?
3.6) なぜ、他のマシンから自分のデータベースに接続できないのでしょうか?
3.7) より良い性能を得るためには、データベース・エンジンをどのように調整すれ
ば良
3.7) より良い性能を得るためには、データベース・エンジンをどのように調整すれ
いですか?
ば良
いですか?
3.8) どのようなデバグ機能が使えますか?
3.8) どのようなデバグ機能が使えますか?
3.9) 接続しようとするときに 'Sorry, too many clients' が出ます。なぜですか?
3.9) 接続しようとするときに 'Sorry, too many clients' が出ます。なぜですか?
3.10) 自分のデータベース・ディレクトリにある pg_sorttemp.XXX ファイルは何で
すか
3.10) 自分のデータベース・ディレクトリにある pg_sorttemp.XXX ファイルは何で
?
すか
?
操作上の質問
操作上の質問
4.1) なぜ、システムはカンマや小数点や日付フォーマットで混乱するのですか?
4.1) なぜ、システムはカンマや小数点や日付フォーマットで混乱するのですか?
4.2) バイナリ・カーソルと通常
の
カーソルとの厳密な違いは何ですか?
4.2) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか?
4.3) 最初の数行のみを select するにはどうしますか?
4.3) 最初の数行のみを select するにはどうしますか?
4.4) テーブルやその他の情報のリストを psql で見るにはどうしますか?
4.4) テーブルやその他の情報のリストを psql で見るにはどうしますか?
4.5) テーブルから
の
列の削除はどのようにしますか?
4.5) テーブルから列の削除はどのようにしますか?
4.6) 行、テーブル、データベースの最大サイズは?
4.6) 行、テーブル、データベースの最大サイズは?
4.7) 一般的なテキストファイルからデータを保存するには、
データベースのディスク容
4.7) 一般的なテキストファイルからデータを保存するには、
データベースのディス
量はどのくらい必要ですか?
ク容
量はどのくらい必要ですか?
4.8) データベース内に定義されたテーブルやインデックスをどのように
見つけ出します
4.8) データベース内に定義されたテーブルやインデックスをどのように
して見つけ
か?
出します
か?
4.9) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜで
すか
4.9) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜで
?
すか
?
4.10) 問い合わせオブティマイザがどのように問い合わせを評価するかを見るにはど
う
4.10) 問い合わせオブティマイザがどのように問い合わせを評価するかを見るにはど
しますか?
う
しますか?
4.11) R-tree インデックスとは何ですか?
4.11) R-tree インデックスとは何ですか?
4.12) 遺伝的問い合わせ最適化とは何ですか?
4.12) 遺伝的問い合わせ最適化とは何ですか?
4.13) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実
4.13) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように
現しますか?
実現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのよう
4.14) 問い合わせの中で、フィールドが NULL であることを検出するにはどうしますか
に使いますか?
?
4.14) 問い合わせの中で、フィールドが NULL であることを検出するにはどうします
か?
4.15) 色々な文字型のそれぞれの違いは何ですか?
4.15) 色々な文字型のそれぞれの違いは何ですか?
4.16.1) 通番(serial)/自動増分フィールドはどのようにつくりますか?
4.16.1) 通番(serial)/自動増分フィールドはどのようにつくりますか?
4.16.2) SERIAL
インサートの値は
どうすれば得られますか?
4.16.2) SERIAL
データ型に挿入される値は、
どうすれば得られますか?
4.16.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使
わな
4.16.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使
いほうがよいのでしょうか?
わな
いほうがよいのでしょうか?
4.17) OID とは何ですか? TID とは何ですか?
4.17) OID とは何ですか? TID とは何ですか?
4.18) PostgreSQL で使われるいくつかの用語の意味は何ですか?
4.18) PostgreSQL で使われるいくつかの用語の意味は何ですか?
4.19) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るのはな
4.19) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るの
ぜですか?
はなぜですか?
4.20) どのバージョンの PostgreSQL を走らせているのかを調べるにはどうしますか?
4.20) どのバージョンの PostgreSQL を走らせているのかを調べるにはどうします
4.21) ラージオブジェクトの操作で、invalid large obj descriptorと出ます。なぜで
か?
すか?
4.21) ラージオブジェクトの操作で、invalid large obj descriptorと出ます。なぜ
ですか?
4.22) 現在の時刻がデフォルトとなるような列はどのようにつくりますか?
4.22) 現在の時刻がデフォルトとなるような列はどのようにつくりますか?
4.23) なぜ、INを使う副問い合わせがとても遅いのですか?
4.23) なぜ、INを使う副問い合わせがとても遅いのですか?
4.24) 外部結合(outer join)はどのように実現しますか?
4.24) 外部結合(outer join)はどのように実現しますか?
PostgreSQLの拡張についての質問
PostgreSQLの拡張についての質問
5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうの
5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしま
はなぜですか?
うのはなぜですか?
5.2) PostgreSQL 用に書いた粋な新しい型や関数は、どうすれば寄贈できますか?
5.2) PostgreSQL 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクト
に貢献したいのですが?
5.3) タプルを返す C言語の関数はどのように書きますか?
5.3) タプルを返す C言語の関数はどのように書きますか?
5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのは
なぜ
5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのは
ですか?
なぜ
ですか?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
------------------------------------------------------------------------
一般的な質問
一般的な質問
1.1) PostgreSQL とは何ですか?
1.1) PostgreSQL とは何ですか?
PostgreSQL は
POSTGRES データベース管理システムの改良版で、次世代 DBMS 研究用の
PostgreSQL は
次世代 DBMS 研究用のプロトタイプであった POSTGRES データベース
プロトタイプです。PostgreSQL は POSTGRES の強力なデータ・モデルと豊富なデータ・
管理システムの改良版です。PostgreSQL は POSTGRES の強力なデータ・モデルと豊
タイプ(型)を内包しつつ、POSTGRES で使われた PostQuel 問い合わせ言語を、拡張した
富なデータ・タイプ(型)を保持しながら、POSTGRES で使われた PostQuel 問い合わ
SQL のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利用できま
せ言語を、拡張した SQL のサブセットに置き換えています。PostgreSQL は無料で完
す。
全なソースを利用できま
す。
PostgreSQL の
すべての開発は、PostgreSQL 開発メーリングリストに参加しているイン
PostgreSQL の
開発は、PostgreSQL 開発メーリングリストに参加しているインターネ
ターネット上の開発者チームで行なっています。現在の座長は Marc G. Fournier (
ット上の開発者チームですべて行なわれています。現在の座長は Marc G. Fournier
scrappy@PostgreSQL.org )です。(以下に参加の仕方があります。)現在、このチームが
( scrappy@PostgreSQL.org )です。(以下に参加の仕方があります。)現在、このチー
PostgreSQL開発のすべての面倒を見
ます。
ムが PostgreSQL 開発のすべての面倒をみてい
ます。
Postgre
SQL 1.01 の著者は Andrew Yu と Jolly Chen でした。その他大勢の人々がこの
Postgre
s95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen でしたが、その他
コードの移植、テスト、デバグ、および、改良に貢献しました。PostgreSQL の派生元コ
大勢の人々がこのコードの移植、テスト、デバグ、および、改良に参加しました。
ードである POSTGRES はカリフォルニア大学バークレイ校において、 Michael
PostgreSQL の派生元コードである POSTGRES はカリフォルニア大学バークレイ校に
Stonebraker 教授の指揮のもと、多くの学生、卒業生、職業プログラマたちの努力によ
おいて、 Michael Stonebraker 教授の指揮のもと、多くの学生、卒業生、本職のプ
り作られました。
ログラマたちの努力によ
り作られました。
バークレイにおけるこのソフトウェアのもとの名前は Postgres でした
。SQL の機能が
バークレイにおけるこのソフトウェアのもとの名前は Postgres でした
が、SQL の機
追加された 1995 年にその名前は Postgres95 に変更されました。1996 年の終りにその
能が追加された 1995 年にその名前は Postgres95 に変更され、1996 年の終りにそ
名前は PostgreSQL に変更されました。 Post-Gres-Q-L.(ポスト - グレス - キュー -
の名前は PostgreSQL に変更されました。 Post-Gres-Q-L.(ポスト - グレス - キュ
エル) と発音します。
ー -
エル) と発音します。
1.2) PostgreSQL の著作権はどうなってますか?
1.2) PostgreSQL の著作権はどうなってますか?
PostgreSQL は下記の著作権に従います。
PostgreSQL は下記の著作権に従います。
[訳注:
[訳注:
正文は英語です。参考として、訳文を併記掲載します。
正文は英語です。参考として、訳文を併記掲載します。
]
]
PostgreSQL Data Base Management System
PostgreSQL Data Base Management System
Portions
copyright (c) 1996-2000, PostgreSQL Global Development Group Portions
Portions
Copyright (c) 1996-2000, PostgreSQL Global Development Group
Copyright (c) 1994-6 Regents of the University of California
Portions
Copyright (c) 1994-6 Regents of the University of California
Permission to use, copy, modify, and distribute this software and its
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement
is
documentation for any purpose, without fee, and without a written agreement
hereby granted, provided that the above copyright notice and this paragraph and
is hereby granted, provided that the above copyright notice and this
the following two paragraphs appear in all copies.
paragraph and
the following two paragraphs appear in all copies.
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
LOST
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION,
THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
DAMAGE.
SUCH
DAMAGE.
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING,
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN
THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
"AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
POSTGRESQL データベース管理システム
POSTGRESQL データベース管理システム
部分的著作権 (c) 1996-2001, PostgreSQL国際開発チーム
部分的著作権 (c) 1996-2001, PostgreSQL国際開発チーム
部分的著作権 (c) 1994-6 カリフォルニア大学本校
部分的著作権 (c) 1994-6 カリフォルニア大学本校
本ソフトウェアおよびその文書一式は上記の著作権表示と、この文章
本ソフトウェアおよびその文書一式は上記の著作権表示と、この文章
およびこれに続く二つの段落が全ての複製に添付されている限りにおい
およびこれに続く二つの段落が全ての複製に添付されている限りにおい
て、使用、複製、修正および配付の許可を、いかなる目的であっも、無
て、使用、複製、修正および配付の許可を、いかなる目的であっも、無
償でかつ同意書無しに行なえることをここに認めます。
償でかつ同意書無しに行なえることをここに認めます。
カリフォルニア大学は、いかなる当事者にたいしても、利益の壊失を
カリフォルニア大学は、いかなる当事者にたいしても、利益の壊失を
含む、直接的、間接的、特別、偶然あるいは必然的にかかわらず生じた
含む、直接的、間接的、特別、偶然あるいは必然的にかかわらず生じた
損害について、たとえカリフォルニア大学がこれらの損害について訴追
損害について、たとえカリフォルニア大学がこれらの損害について訴追
を受けていたとしても、一切の責任を負いません。
を受けていたとしても、一切の責任を負いません。
カリフォルニア大学は、商用目的における暗黙の保証と、特定目的で
カリフォルニア大学は、商用目的における暗黙の保証と、特定目的で
の適合性に関してはもとより、これらに限らず、いかなる保証も放棄す
の適合性に関してはもとより、これらに限らず、いかなる保証も放棄す
ることを明言します。以下に用意されたソフトウェアは「そのまま」を
ることを明言します。以下に用意されたソフトウェアは「そのまま」を
...
@@ -231,43 +201,42 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
...
@@ -231,43 +201,42 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
参考です。
参考です。
]
]
1.3) PostgreSQL の動作環境は?
1.3) PostgreSQL の動作環境は?
著者らは PostgreSQL のコンパイルとテストを次のプラットホーム上で行ないまし
た。
著者らは PostgreSQL のコンパイルとテストを次のプラットホーム上で行ないまし
(これらのうちのいくつかはコンパイルに gcc が必要です):
た。
(これらのうちのいくつかはコンパイルに gcc が必要です):
一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずで
す
一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずで
。リリースの時点で実際にテストを行なったことの報告がなされたプラットホームにつ
す。リリースの時点で実際にテストを行なったことの報告がなされたプラットホーム
いてはインストール手引書に列挙してあります。
につ
いてはインストール手引書に列挙してあります。
1.4) Unix以外の移植版で使えるものは?
1.4) Unix以外の移植版で使えるものは?
クライアント
クライアント
MS Windows プラットホーム上で、libpq C ライブラリ、psql、それとその他のイン
ター
MS Windows プラットホーム上で、libpq C ライブラリ、psql、それとその他のイン
フェースはコンパイル可能で、バイナリーが走ります。この場合、クライアントを MS
ターフェースは コンパイル可能で、バイナリーが走ります。この場合、クライアン
Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走
トを MS Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラット
るサーバと通信します。
ホーム上で走
るサーバと通信します。
Win32 libpq ライブラリと psql を作るために、win31.mak が配布に含まれてます。
Win32 libpq ライブラリと psql を作るために、win31.mak が配布に含まれてます。
PostgreSQLは ODBC クライアントとも通信できます。
PostgreSQLは ODBC クライアントとも通信できます。
サーバ
サーバ
現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベー
ス
現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベー
サーバは Windows NT と Win2k 上で稼働しています。配布に含まれるpgsql/doc/
スサーバは Windows NT と Win2k 上で稼働しています。配布に含まれる
FAQ_MSWINあるいはウェブサイトにある MS Windows FAQ をご覧下さい。Microsoft の素
pgsql/doc/FAQ_MSWINあるいはウェブサイトにある MS Windows FAQ をご覧下さい。
のプラットホームに移植する計画はありません。
Microsoft の素
のプラットホームに移植する計画はありません。
1.5) PostgreSQL はどこから
手に入り
ますか?
1.5) PostgreSQL はどこから
入手でき
ますか?
PostgreSQL の元の anonymous ftp サイトです:
PostgreSQL の元の anonymous ftp サイトです:
* ftp://ftp.PostgreSQL.org/pub/
・ ftp://ftp.PostgreSQL.org/pub/
ミラーサイトについては、我々のメイン Web ページをご覧下さい。
ミラーサイトについては、我々のメイン Web ページをご覧下さい。
[訳注:
[訳注:
以下は日本のミラーサイトです:
以下は日本のミラーサイトです:
...
@@ -285,44 +254,47 @@ PostgreSQL
...
@@ -285,44 +254,47 @@ PostgreSQL
Japan: ftp://ring.aist.go.jp/pub/misc/db/postgresql/
Japan: ftp://ring.aist.go.jp/pub/misc/db/postgresql/
]
]
1.6) サポートはどこで受けられますか?
1.6) サポートはどこで受けられますか?
主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に関す
主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に
ることであれば議論ができます。このリストへの参加のは、電子メールの本文(Subject
関することであれば議論ができます。このリストへの参加のは、電子メールの本文
行ではありません)に次の2行を書いて、
(Subject 行ではありません)に次の2行を書いて、
subscribe
subscribe
end
end
pgsql-general-request@PostgreSQL.org へ送って下さい。
pgsql-general-request@PostgreSQL.org へ送って下さい。
ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"に:
ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"
に:
subscribe
subscribe
end
end
と書いて pgsql-general-digest-request@PostgreSQL.org へ電子メールを送って下さい
。
ダイジェスト版は、メインリストが受信するメッセージ 30k 程度溜る毎にダイジェスト
と書いて pgsql-general-digest-request@PostgreSQL.org へ電子メールを送って下
版リストのメンバーに送付されます。
さい。
ダイジェスト版は、メインリストで受信するメッセージが 30k 程度溜る毎にダイジ
ェスト版リストのメンバーに送付されます。
バグ
のメーリングリストも利用できます。このリストへの参加は "本文"といっしょに:
バグ
レポート用のメーリングリストもあります。このリストへの参加は "本文"とい
bugs-request@PostgreSQL.org へ電子メールを送って下さい。
っしょに:
bugs-request@PostgreSQL.org へ電子メールを送って下さい。
開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子
メ
開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子
ールの本文に:
メ
ールの本文に:
subscribe
subscribe
end
end
と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。
と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。
PostgreSQL についてもっと詳しく知りたければ、次の postgreSQL WWWホームページ
か
PostgreSQL についてもっと詳しく知りたければ、次の postgreSQL WWWホームページ
らたどれます:
か
らたどれます:
http://www.PostgreSQL.org
http://www.PostgreSQL.org
IRC チャンネルも EFNet にあります。そのチャンネルは #PostgreSQL です。 unix コ
EFNet に #PostgreSQL という IRC チャンネルもあります。 unix コマンドでirc -c
マンドでirc -c
'#PostgreSQL' "$USER" irc.phoenix.net を使います。
'#PostgreSQL' "$USER" irc.phoenix.net を使います。
[訳注:
[訳注:
1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。
1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。
...
@@ -337,28 +309,27 @@ IRC
...
@@ -337,28 +309,27 @@ IRC
で検索することもできます。
で検索することもできます。
]
]
商用サポート会社のリストは
http://www.postgresql.org/users-lounge/commercial-support.htmlにあります。
商用サポート会社のリストはhttp://www.postgresql.org/users-lounge/
commercial-support.htmlにあります。
[訳注:
[訳注:
日本では、SRA Inc. オープンシステム事業部 にて商用サポートが行なわれています。
日本では、SRA Inc. オープンシステム事業部 にて商用サポートが行なわれています。
ミラクル・リナックス株式会社 で "Miracle Linux for PostgreSQL" の販売とサポートが
ミラクル・リナックス株式会社 で "Miracle Linux for PostgreSQL" の販売とサポートが
開始されました。
開始されました。
]
]
1.7) 最新版はどれですか
1.7) 最新版は何ですか
PostgreSQL の最新版はバージョン 7.1.2 です。
PostgreSQL の最新版はバージョン 7.0.3 です。
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。
1.8) どのような文書がありますか?
1.8) どのような文書がありますか?
配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)
お
配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)
よびいくつかの小さなテスト例題が含まれます。/doc ディレクトリをご覧下さい。また
およびいくつかの小さなテスト例題が含まれます。/doc ディレクトリをご覧下さ
、オンラインでのマニュアルを、 http://www.PostgreSQL.org/users-lounge/docs/ で
い。また、マニュアルは、 http://www.PostgreSQL.org/users-lounge/docs/ でオン
も閲覧できます。
ラインで
も閲覧できます。
PostgreSQL の本もあります。 http://www.PostgreSQL.org/docs/awbook.html
PostgreSQL の本もあります。 http://www.PostgreSQL.org/docs/awbook.html
...
@@ -367,31 +338,30 @@ PostgreSQL
...
@@ -367,31 +338,30 @@ PostgreSQL
翻訳作業が進行中。
翻訳作業が進行中。
]
]
psql も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴ら
psql も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴らしい
しい \d コマンドを持ちます。
\d コマンドを持ちます。
我々の Web サイトには、もっと沢山の文書があります。
我々の Web サイトには、もっと沢山の文書があります。
1.9) 既知のバグや無い機能はどうやって見つけますか?
1.9) 既知のバグや
未だ
無い機能はどうやって見つけますか?
PostgreSQLは拡張されたSQL-92のサブセットをサポートします。
我々のページの TODO
PostgreSQLは拡張されたSQL-92のサブセットをサポートします。
我々のページの
リストに、既知のバグや欠落機能や将来計画についての記述があります。
TODO
リストに、既知のバグや欠落機能や将来計画についての記述があります。
1.10) SQL はど
のように学べば良いで
すか?
1.10) SQL はど
うすれば学べま
すか?
http://www.PostgreSQL.org/docs/awbook.html にあるPostgreSQL本で SQL を教えて
い
http://www.PostgreSQL.org/docs/awbook.html にあるPostgreSQL本で SQL を教えて
ます。
い
ます。
素晴らしい学習書には、 http://w3.one.net/~jhoffman/sqltut.htm と
http://
素晴らしい学習書には、 http://w3.one.net/~jhoffman/sqltut.htm と
ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM.
http://
ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM.
とがあります。その他に、 "Teach Yourself SQL in 21 Days, Second Edition"
が、
とがあります。その他に、 "Teach Yourself SQL in 21 Days, Second Edition"
http://members.tripod.com/er4ebus/sql/index.htm にあります。
が、
http://members.tripod.com/er4ebus/sql/index.htm にあります。
多くのユーザに、 The Practical SQL Handbook, Bowman Judith S. et al.,
多くのユーザに、 The Practical SQL Handbook, Bowman Judith S. et al.,
Addison-Wesley が好評です。
その他に、The Complete Reference SQL, Groff et al.,
Addison-Wesley が好評です。
その他に、The Complete Reference SQL, Groff et
McGraw-Hill のようなのもあります。
al.,
McGraw-Hill のようなのもあります。
[訳注:
[訳注:
石井達夫氏による日本語の参考文献の紹介ページ
石井達夫氏による日本語の参考文献の紹介ページ
...
@@ -410,114 +380,114 @@ McGraw-Hill
...
@@ -410,114 +380,114 @@ McGraw-Hill
1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか?
1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか?
対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡単に扱
え
対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡単に扱
ます。
え
ます。
1.12) 開発チームにはどのように参加しますか?
1.12) 開発チームにはどのように参加しますか?
まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に含ま
まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に
れている PostgreSQL Developersの文書を読みます。2番目に、pgsql-hackers と
含まれている PostgreSQL Developersの文書を読みます。 2番目に、pgsql-hackers
pgsql-patches メーリング・リストを購読(subscribe)します。3番目に、高品質のパッ
と pgsql-patches メーリング・リストを購読(subscribe)します。 3番目に、高品
チをpgsql-patchesに発信します。およそ十人ちょっとの人達が、PostgreSQL CVSアーカ
質のパッチをpgsql-patchesに発信します。 およそ十人ちょっとの人達が、
イブにコミットする権限を持っています。そのそれぞれの人達が沢山の高品質なパッチ
PostgreSQL CVSアーカイブにコミットする権限を持っています。 そのそれぞれの人
を発信するので、現在コミッターとなっている人達はそれに追い付くのが大変ですが、
達が沢山の高品質なパッチを発信するので、現在コミッターとなっている人達はそれ
我々は彼らがコミットしたパッチは高品質であると確信しています。
に追い付くのが大変ですが、我々は彼らがコミットしたパッチは高品質であると確信
しています。
1.13) バグレポートはどのように発信しますか?
1.13) バグレポートはどのように発信しますか?
"bug-template" ファイルの項目を満たして、pgsql-bugs@PostgreSQL.orgに送って下
さ
"bug-template" ファイルの項目を満たして、pgsql-bugs@PostgreSQL.orgに送って下
い。
さ
い。
その前に http://postgreSQL.orgにある最新の FAQ をチェックして下さい。
その前に http://postgreSQL.orgにある最新の FAQ をチェックして下さい。
それと同時に ftp サイト ftp://ftp.postgreSQL.org/pub/で、もっと新しいバージ
ョン
それと同時に ftp サイト ftp://ftp.postgreSQL.org/pub/で、もっと新しいバージ
の PostgreSQL あるいはパッチをさがしてみて下さい。
ョン
の PostgreSQL あるいはパッチをさがしてみて下さい。
1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか?
1.14) 他のDBMSのと比べてPostgreSQLはどうなのですか?
ソフトウェアを計る方法にはいくつかあります。機能と性能と信頼性とサポートと価
格
ソフトウェアを計る方法にはいくつかあります。機能と性能と信頼性とサポートと価
です。
格
です。
機能(Features)
機能(Features)
PostgreSQLは、トランザクション、副問い合わせやトリガーやビューや外部キー参
PostgreSQLは、トランザクション、副問い合わせやトリガーやビューや外部キ
照や、そして、洗練されたロック機構など、大規模商用DBMSが持つ機能をほとんど
ー 参照や、そして、洗練されたロック機構など、大規模商用DBMSが持つ機能を
持っています。PostgreSQLは、さらに、ユーザ定義型や継承やマルチ- バージョン
ほ とんど持っています。PostgreSQLは、さらに、ユーザ定義型や継承やマルチ
・コンテンションなど、商用DBMSが持ち合わせない機能をいくつか持ち合わせてい
- バージョン・コンテンションなど、商用DBMSが持ち合わせない機能をいくつ
ます。外部キーの参照整合性(foreign key referential integrity)やロック・コン
か 持ち合わせています。外部キーの参照整合性(foreign key referential
テンションを減らすための外部競合状態制御 (outer concurrency control)は持ち
integrity)やロック・コンテンションを減らすための外部競合状態制御 (outer
合わせません。
concurrency control)は持ち合わせません。
性能(Performance)
性能(Performance)
PostgreSQLは二つのモードで走ります。普通のfsyncモードは、OSがクラッシュした
PostgreSQLは二つのモードで走ります。普通のfsyncモードは、OSがク ラッシ
り、数秒後に電源が落ちたりしたときのために、トランザクションが完了する毎に
ュしたり、数秒後に電源が落ちたりしたときのために、トランザクショ ンが完
ディスクに書き込み、すべてのデータをディスクに保存します。このモードでは、
了する毎にディスクに書き込み、すべてのデータをディスクに保存しま す。こ
ほとんどの商用データベースよりも遅くなりますが、その部分的な理由として、商
のモードでは、ほとんどの商用データベースよりも遅くなりますが、そ の部分
用のデータベースの中にはこのように保守的なディスク書き込みをデフォルトとし
的な理由として、商用のデータベースの中にはこのように保守的なディ スク書
ているものが少ないということもあります。 no-fsyncモードで、普通、PostgreSQL
き込みをデフォルトとしているものが少ないということもあります。 no-fsync
は商用データベースよりも速くなりますが、しかしながら、OSのクラッシュでデー
モードで、普通、PostgreSQLは商用データベースよりも速く なりますが、しか
タが破壊されるかもしれません。我々は、その中間モードを開発中で、それがうま
しながら、OSのクラッシュでデータが破壊されるかもしれま せん。我々は、そ
くゆくと、完全fsync モードほど性能を犠牲にすることなく、OSがクラッシュする
の中間モードを開発中で、それがうまくゆくと、完全fsync モードほど性能を
30秒前までのデータ整合性を保てるようになります。
犠牲にすることなく、OSがクラッシュする30秒前までのデー タ整合性を保てる
ようになります。
MySQLなどの特化型データベース・システムにくらべて、PostgreSQLの挿入/更新が
遅いのは、トランザクションによるオーバーヘッドがあるからです。もちろん、
MySQLなどの特化型データベース・システムにくらべて、PostgreSQLの挿入/
MySQLには上記のFeaturesの節に示すような機能はまったくありません。我々は、
更新が遅いのは、トランザクションによるオーバーヘッドがあるからです。も
PostgreSQLに柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛け
ちろん、MySQLには上記のFeaturesの節に示すような機能はまったくあ りませ
たりソースコードを解析したりして、性能の改善を続けています。PostgreSQL と
ん。我々は、PostgreSQLに柔軟性と機能性を組み込みながらも、絶えず、 プロ
MySQL とを比較している面白い Web ページが http://openacs.org/
ファイラーに掛けたりソースコードを解析したりして、性能の改善を続け てい
why-not-mysql.html にあります。
ます。PostgreSQL と MySQL とを比較している面白い Web ページが
http://openacs.org/why-not-mysql.html にあります。
PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複
数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有し
PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作しま
ます。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせること
す。 複数のバックエンド・プロセスが情報をロックしながらデータ・バッファ
ができます。
ーを 共有します。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPU
で走 らせることができます。
信頼性(Reliability)
信頼性(Reliability)
我々は、DBMSの信頼性が高くなくてはその価値が無いことを理解してます。十分テ
我々は、DBMSの信頼性が高くなくてはその価値が無いことを理解してます。十
ストして、安定したコードをバグを最小にしてからリリースするように勤めてます
分テストして、安定したコードをバグを最小にしてからリリースするように勤
。それぞれのリリースは少なくとも1カ月以上のベータ・テストを行ない、これまで
めてます。それぞれのリリースは少なくとも1カ月以上のベータ・テストを行
のリリースの履歴が、製品版として安定した堅固なリリースであることを物語って
ない、これまでのリリースの履歴が、製品版として安定した堅固なリリースで
います。この分野では、他のデータベースと比べても遜色がないことに自信を持っ
あることを物語っています。この分野では、他のデータベースと比べても遜色
ています。
がないことに自信を持っ
ています。
サポート(Support)
サポート(Support)
我々のメーリングリストは、遭遇するどんな問題についても解決を助けてくれる、
我々のメーリングリストは、遭遇するいかなる問題についても解決への手 助け
開発者やユーザの膨大なグループを擁しています。我々は問題の解決を保証するこ
をしてくれる、開発者やユーザの大きな集まりを提供しています。我々は 問題
とはできませんが、商用データベースであっても常に解決されるわけではありませ
の解決を保証することはできませんが、商用データベースであっても常に 解決
ん。開発者達、ユーザ・コミュニティ、マニュアル類、それに、ソースコードなど
されるわけではありません。開発者や、ユーザ・コミュニティ、マニュア ル
に直接アクセスできることよって、PostgreSQLのサポートは、他のDBMSサポートよ
類、それに、ソースコードなどへ直接アクセスできることよって、 PostgreSQL
りも優れたものとなっています。御要望に答えて、事柄毎の商用サポートもありま
のサポートは、他のDBMSサポートよりも優れたものとなっています。 御要望に
す(サポートFAQ項目をご覧下さい)。
答えて、事柄毎の商用サポートなどもあります(サポートFAQ項目をご覧 下さ
い)。
価格(Price)
価格(Price)
PostgreSQLの使用は、商用でも非商用でも、すべて無料です。上記に示してあるBSD
PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあ
スタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで商品に組み
るBSDスタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで
込むことができます。
商品に組み
込むことができます。
------------------------------------------------------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ユーザー・クライアントの質問
ユーザー・クライアントの質問
2.1) PostgreSQL のための ODBC ドライバーはありますか?
2.1) PostgreSQL のための ODBC ドライバーはありますか?
PsqlODBC と OpenLink ODBC の二つの ODBC ドライバーが利用可能です。
PsqlODBC と OpenLink ODBC の二つの ODBC ドライバーが利用可能です。
PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情
報は
PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情
ftp://ftp.PostgreSQL.org/pub/odbc/ から取得できます。
報は
ftp://ftp.PostgreSQL.org/pub/odbc/ から取得できます。
[訳注:
[訳注:
PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました:
PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました:
●http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html
●http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html
]
]
OpenLink ODBC は http://www.openlinksw.com/から入手できます。標準的な ODBC
クライアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム
(Win, Mac, Unix, VMS)から PostgreSQL の ODBC が利用できます。
OpenLink ODBC は http://www.openlinksw.com/から入手できます。標準的な ODBC クラ
たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリー
イアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム(Win,
ウェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.ukにお
Mac, Unix, VMS)から PostgreSQL の ODBC が利用できます。
願いします。 Programmer's Guide の ODBC の章もご覧ください。
たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリーウ
ェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.ukにお願いし
ます。 Programmer's Guide の ODBC の章もご覧ください。
2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
...
@@ -526,8 +496,9 @@ http://www.webtools.com
...
@@ -526,8 +496,9 @@ http://www.webtools.com
http://www.phone.net/home/mwm/hotlist/にも、もう一つあります。
http://www.phone.net/home/mwm/hotlist/にも、もう一つあります。
Web への拡張のためには、PHP が卓越したインターフェースとなっています。http://
Web への拡張のためには、PHP が卓越したインターフェースとなっています。
www.php.net/にあります。
http://www.php.net/にあります。
[訳注:
[訳注:
PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト
PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト
http://www.php.gr.jp/
http://www.php.gr.jp/
...
@@ -544,11 +515,8 @@ www.php.net/
...
@@ -544,11 +515,8 @@ www.php.net/
本家の方で国際化のMLも立ち上がっています。
本家の方で国際化のMLも立ち上がっています。
]
]
処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。
複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。
Perl を使った WDB を基にした WWW ゲートウェイはhttp://www.eol.ists.ca/~dunlop/
wdb-p95からダウンロードできます。
[訳注:
[訳注:
WDB は、Web から DataBase への Perl の Interface です。
WDB は、Web から DataBase への Perl の Interface です。
wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。
wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。
...
@@ -559,32 +527,30 @@ wdb-p95
...
@@ -559,32 +527,30 @@ wdb-p95
とがあります。その経緯はよくわかりません。
とがあります。その経緯はよくわかりません。
]
]
2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか? レポー
ト・ジェネレータは? 埋め込み問い合わせ言語へのインターフェースは?
2.3) PostgreSQL はグラフィカル・ユーザ・インターフェースを持っていますか?レポ
pgaccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、
ート・ジェネレータは?埋め込み問い合わせ言語へのインターフェースは?
この配布と共に出荷されます。Pgaccess にはレポート・ジェネレータもあります。
Web ページはhttp://www.flex.ro/pgaccessです。
pgaccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この
ecpg という C 言語のための埋め込み SQL 問い合わせ言語インターフェースもあり
配布と共に出荷されます。Pgaccess にはレポート・ジェネレータもあります。Web ペー
ます。
ジはhttp://www.flex.ro/pgaccessです。
ecpg という C 言語のための埋め込み SQL 問い合わせ言語インターフェースもあります
。
2.4) PostgreSQL と通信するにはどんな言語が使えますか?
2.4) PostgreSQL と通信するにはどんな言語が使えますか?
以下のものがあります:
以下のものがあります:
* C (libpq)
・ C (libpq)
* C++ (libpq++)
・ C++ (libpq++)
* 埋め込みC (ecpg)
・ 埋め込みC (ecpg)
* Java (jdbc)
・ Java (jdbc)
* Perl (perl5)
・ Perl (perl5)
* ODBC (odbc)
・ ODBC (odbc)
* Python (PyGreSQL)
・ Python (PyGreSQL)
* TCL (libpgtcl)
・ TCL (libpgtcl)
* C Easy API (libpgeasy)
・ C Easy API (libpgeasy)
* 埋め込みHTML (PHP from http://www.php.net)
・ 埋め込みHTML (PHP from http://www.php.net)
[訳注:
[訳注:
rubyの作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが
rubyの作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが
...
@@ -593,234 +559,244 @@ ecpg
...
@@ -593,234 +559,244 @@ ecpg
PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。
PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。
http://www.psn.co.jp/PostgreSQL/pgbash/
http://www.psn.co.jp/PostgreSQL/pgbash/
Bashコマンドラインでpostgres に問い合わせできます。
Bashコマンドラインでpostgres に問い合わせできます。
Perl のモジュールは古くからある Pg と DBI ドライバの DBD::Pg とがあり、
いずれも Edmund Mergl 氏によるもので CPAN サイトにあります。
]
]
------------------------------------------------------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
管理上の質問
管理上の質問
3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか?
3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか?
簡単な方法は、 configure を走らせるときに --prefix オプションを指定すること
です
簡単な方法は、 configure を走らせるときに --prefix オプションを指定すること
。
です
。
3.2) postmaster を走らせると、Bad System Call とかコア・ダンプしたとのメッセ
ー
3.2) postmaster を走らせると、Bad System Call とかコア・ダンプしたとのメッセ
ジが出ます。なぜですか?
ー
ジが出ます。なぜですか?
さまざまな問題が考えられますが、まず最初にあなたのカーネルに System V IPC の
拡
さまざまな問題が考えられますが、まず最初にあなたのカーネルに System V IPC の
張がインストールされているかを確認して見てください。PostgreSQL はカーネルによる
拡張がインストールされているかを確認して見てください。PostgreSQL はカーネル
共有メモリーとセマフォのサポートを必要とします。
による
共有メモリーとセマフォのサポートを必要とします。
3.3) postmaster を走らせようとすると、IpcMemoryCreate エラーが出ます。なぜで
す
3.3) postmaster を走らせようとすると、IpcMemoryCreate エラーが出ます。なぜで
か?
す
か?
カーネルが共有メモリーを持つ設定になっていなかったか、でなければ、カーネルに
対
カーネルが共有メモリーを持つ設定になっていなかったか、でなければ、カーネルに
して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大きさは
対して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大き
、使っているアーキテクチャとpostmaster を走らせるときに設定するバッファの数とバ
さは、使っているアーキテクチャとpostmaster を走らせるときに設定するバッファ
ックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッファサイズ
の数とバックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッ
のままで、少なくとも約1MBが必要です。 PostgreSQL Administrator's Gide に共有メ
ファサイズのままで、少なくとも約1MBが必要です。 PostgreSQL Administrator's
モリーとセマフォについての情報の詳細があります。
Gide に共有メ
モリーとセマフォについての情報の詳細があります。
3.4) postmasterを走らせようとすると、IpcSemaphoreCreate エラーが出ます。なぜ
で
3.4) postmasterを走らせようとすると、IpcSemaphoreCreate エラーが出ます。なぜ
すか?
で
すか?
もしエラーメッセージがIpcSemaphoreCreate: semget failed (No space left on
もしエラーメッセージがIpcSemaphoreCreate: semget failed (No space left on
device)であれば、カーネルが十分なセマフォを使えるように構成されていません。
device)であれば、カーネルが十分なセマフォを使えるように構成されていません。
Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要とします。とり
あ
Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要とします。とり
えずの解決策はpostmasterを起動するときに、バックエンドプロセスの数をより少なく
あえずの解決策はpostmasterを起動するときに、バックエンドプロセスの数をより少
制限をすることです。既定値の32より小さな数のパラメータを-Nで使います。より恒久
なく制限をすることです。既定値の32より小さな数のパラメータを-Nで使います。よ
的な解決策は、カーネルのSEMMNS と SEMMNI パラメータを増やすことです。
り恒久
的な解決策は、カーネルのSEMMNS と SEMMNI パラメータを増やすことです。
もし、エラーメッセージがなにか他のものであれば、カーネルの構成でまったくセマ
フ
もし、エラーメッセージがなにか他のものであれば、カーネルの構成でまったくセマ
ォのサポートをしていないかもしれません。 PostgreSQL Administrator's Gide に共有
フォのサポートをしていないかもしれません。 PostgreSQL Administrator's Gide
メモリーとセマフォについての情報の詳細があります。
に共有
メモリーとセマフォについての情報の詳細があります。
3.5) 他のホストから自分の PostgreSQL データベースへのアクセスを防ぐにはどう
しま
3.5) 他のホストから自分の PostgreSQL データベースへのアクセスを防ぐにはどう
すか?
しま
すか?
既定値では、PostgreSQL は unix ドメインソケットを使うローカルマシンからの接
続し
既定値では、PostgreSQL は unix ドメインソケットを使うローカルマシンからの接
か許しません。postmaster 起動に -i フラッグを加え、$PGDATA/pg_hba.conf ファイル
続しか許しません。postmaster 起動に -i フラッグを加え、$PGDATA/pg_hba.conf
を適切に直して、ホスト主導型の認証を使わないかぎりは他のマシンからは接続できな
ファイルを適切に直して、ホスト主導型の認証を使わないかぎりは他のマシンからは
いでしょう。これによりTCP/IPの接続が可能になります。
接続できな
いでしょう。これによりTCP/IPの接続が可能になります。
操作不能なセマフォも過度のデータベースアクセス中にクラッシュを引き起こすこと
が
操作不能なセマフォも過度のデータベースアクセス中にクラッシュを引き起こすこと
あります。
が
あります。
3.6) 他のマシンから自分のデータベースに接続できないのはなぜですか?
3.6) 他のマシンから自分のデータベースに接続できないのはなぜですか?
既定の設定ではローカルマシンからの unix ドメインのソケット接続しか許しませ
ん。
既定の設定ではローカルマシンからの unix ドメインのソケット接続しか許しませ
TCP/IP 接続を可能にするには postmaster が -i オプションで開始されていて、pgsql/
ん。TCP/IP 接続を可能にするには postmaster が -i オプションで開始されてい
data/pg_hba.conf ファイルに適切なホストの記載が追加されていることを確認してくだ
て、pgsql/data/pg_hba.conf ファイルに適切なホストの記載が追加されていること
さい。
を確認してくだ
さい。
3.7) よりよい性能を得るために、どのようにデータベース・エンジンを調整できますか
3.7) より良い性能を得るためには、データベース・エンジンをどのように調整すれ
?
ば良いですか?
確かにインデックスは問い合わせの速度を増します。EXPLAINコマンドで PostgreSQL が
どのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どのイン
デックスが使われているかを見ることができます。
もし INSERT を多用している場合は、COPY コマンドを使って大きなバッチ処理でそれを
行なうことを検討して下さい。これは、INSERT を別々に行なうよりもっと高速です。次
に、BEGIN WORK/COMMIT のトランザクション・ブロックの中に無い文は、それら自身が
それぞれのトランザクションに入っていると見なされます。いくつかの文を一つのトラ
ンザクション・ブロックの中で行なうことを考えて下さい。これによりトランザクショ
ンのオーバーヘッドが減ります。また、大きなデータの変更を行なう際はインデックス
を一度外して、作り直すことを考えてみて下さい。
チューニングのオプションがいくつかあります。postmaster を -o -F オプションで起
動することによって、fsync() を無効にすることができます。これによって、各トラン
ザクション毎に fsync() でディスクを更新するのを止めさせます。
postmaster -B オプションを使ってバックエンド・プロセスにより使われる共有メモリ
ー・バッファを大きくすることもできます。もし、このパラメータを高くしすぎると、
カーネルの共有メモリー空間の制限値を越えてしまっうために postmaster が走らなく
なるでしょう。既定値では、それぞれのバッファの大きさは 8K で、バッファ数は 64
です。
バックエンドを -S オプションを使って、それぞれのバックエンド・プロセスが一時的
確かにインデックスは問い合わせの速度を増します。EXPLAINコマンドで PostgreSQL
な並べ替えによって使うメモリーの最大サイズを増やすこともできます。その -S の値
がどのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どの
はキロバイト単位で、既定値は 512 (すなわち、512K)で
す。
インデックスが使われているかを見ることができま
す。
また、CLUSTER コマンドを使って、テーブルのデータをインデックスに合わせるために
もし INSERT を多用している場合は、COPY コマンドを使って大きなバッチ処理でそ
グループ化することもできます。詳しくは、オンラインマニュアルで CLUSTER を見て下
れを行なうことを検討して下さい。これは、INSERT を別々に行なうよりもっと高速
さい。
です。次に、BEGIN WORK/COMMIT のトランザクション・ブロックの中に無い文は、そ
れら自身がそれぞれのトランザクションに入っていると見なされます。いくつかの文
を一つのトランザクション・ブロックの中で行なうことを考えて下さい。これにより
トランザクションのオーバーヘッドが減ります。また、大きなデータの変更を行なう
際はインデックスを一度外して、作り直すことを考えてみて下さい。
チューニングのオプションがいくつかあります。postmaster を -o -F オプションで
起動することによって、fsync() を無効にすることができます。これによって、各ト
ランザクション毎に fsync() でディスクを更新するのを止めさせます。
postmaster -B オプションを使ってバックエンド・プロセスにより使われる共有メモ
リー・バッファを大きくすることもできます。もし、このパラメータを高くしすぎる
と、カーネルの共有メモリー空間の制限値を越えてしまっうために postmaster が走
らなくなるでしょう。既定値では、それぞれのバッファの大きさは 8K で、バッファ
数は 64 です。
バックエンドを -S オプションを使って、それぞれのバックエンド・プロセスが一時
的な並べ替えによって使うメモリーの最大サイズを増やすこともできます。 その -S
の値はキロバイト単位で、既定値は 512 (すなわち、512K)です。
また、CLUSTER コマンドを使って、テーブルのデータをインデックスに合わせるため
にグループ化することもできます。詳しくは、オンラインマニュアルで CLUSTER を
見て下さい。
3.8) どのようなデバグ機能が使えますか?
3.8) どのようなデバグ機能が使えますか?
PostgreSQL は、デバグのために意味のある、状態情報を報告するいくつかの機能を持ち
PostgreSQL は、デバグのために意味のある、状態情報を報告するいくつかの機能を
ます。
持ちます。
まず、--enable-cassert オプションで configure を走らせます。そうしてコンパイ
ルすることにより、沢山の assert() が、バックエンドの進捗状況を監視し、何か予
期せぬことが起きるとプログラムを停止するようになります。
まず、--enable-cassert オプションで configure を走らせます。そうしてコンパイル
postmaster と postgres の両方でいくつかのデバグ・オプションの利用ができま
す
ることにより、沢山の assert() が、バックエンドの進捗状況を監視し、何か予期せ
す
。まず、次のように postmaster を起動するときはいつでも、標準出力とエラー出
ぬことが起きるとプログラムを停止するようになります
。
力をログ・ファイルに送るようにしてあることを確かめて下さい
。
postmaster と postgres の両方でいくつかのデバグ・オプションの利用ができます。ま
ず、次のように postmaster を起動するときはいつでも、標準出力とエラー出力をログ
・ファイルに送るようにしてあることを確かめて下さい。
cd /usr/local/pgsql
cd /usr/local/pgsql
./bin/postmaster >server.log 2>&1 &
./bin/postmaster >server.log 2>&1 &
これにより PostgreSQL の最上部のディレクトリに server.log ファイルが置かれます
これにより PostgreSQL の最上部のディレクトリに server.log ファイルが置かれま
。このファイルはサーバーが遭遇した問題やエラーについて有用な情報を含みます。
す。このファイルはサーバーが遭遇した問題やエラーについて有用な情報を含みま
Postmaster は更に詳細な情報を報告するための -d オプションを持ちます。その -d オ
す。Postmaster は更に詳細な情報を報告するための -d オプションを持ちます。そ
プションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大きなログファ
の -d オプションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大き
イルを生成することに注意しなくてはなりません。
なログファイルを生成することに注意しなくてはなりません。
もし、postmasterが走っていなければ、postgresバックエンドをコマンド行から走らせ
もし、postmasterが走っていなければ、postgresバックエンドをコマンド行から走ら
ることができ、直接SQL文をタイプすることができます。このやりかたは、デバグ目的の
せることができ、直接SQL文をタイプすることができます。このやりかたは、デバグ
ときだけお奨めします。セミコロンではなく、改行が問い合わせの終りになることに注
目的のときだけお奨めします。セミコロンではなく、改行が問い合わせの終りになる
意してください。もし、デバグシンボルを入れてコンパイルしていれば、デバッガを使
ことに注意してください。もし、デバグシンボルを入れてコンパイルしていれば、デ
って何が起きているかを見ることができます。postmaster からバックエンドを開始した
バッガを使って何が起きているかを見ることができます。postmaster からバックエ
わけではないので、独立な環境で走っているのではなくロック/バックエンドとの対話
ンドを開始したわけではないので、独立な環境で走っているのではなくロック/バッ
の問題が重複することはありません。
クエンドとの対話の問題が重複することはありません。
もし、postmasterが走っていれば、あるウィンドウでpsqlを開始すると、psql で使われ
もし、postmasterが走っていれば、あるウィンドウでpsqlを開始すると、psql で使
る postgresプロセスのPIDが見つかります。デバッガを使ってpostgresのPIDにアタッチ
われる postgresプロセスのPIDが見つかります。デバッガを使ってpostgresのPIDに
(attach)します。デバッガの中からブレーク・ポイントをセットし、psqlから問い合わ
アタッチ(attach)します。デバッガの中からブレーク・ポイントをセットし、psqlか
せを発行します。デバグのためにpostgresを始動する場合は、PGOPTIONS="-W n" を設定
ら問い合わせを発行します。デバグのためにpostgresを始動する場合は、
でき、それから、psql を開始します。これにより、n 秒開始を遅らせるはずなので、デ
PGOPTIONS="-W n" を設定でき、それから、psql を開始します。これにより、n 秒開
バッガでアタッチして始動を順を追って見ることができます。
始を遅らせるはずなので、デバッガでアタッチして始動を順を追って見ることができ
ます。
postgreSQL プログラムには、デバグと性能測定にとても役に立つ -sや -Aや -t 等のオ
プションがあります。
postgreSQL プログラムには、デバグと性能測定にとても役に立つ -sや -Aや -t 等
のオプションがあります。
何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング(
プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフィー
何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング
ル・ファイルは pgsql/data/base/dbname ディレクトリに格納されるでしょう。クライ
(プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフ
アントのプロフィールはクライアントの現行ディレクトリに置かれるでしょう。
ィール・ファイルは pgsql/data/base/dbname ディレクトリに格納されるでしょう。
クライアントのプロフィールはクライアントの現行ディレクトリに置かれるでしょ
う。
3.9) 接続しようとするときに 'Sorry, too many clients' が出ます。なぜですか?
3.9) 接続しようとするときに 'Sorry, too many clients' が出ます。なぜですか?
postmasterが同時始動できるバックエンドプロセスに対する制限数を増やす必要があ
り
postmasterが同時始動できるバックエンドプロセスに対する制限数を増やす必要があ
ます。
り
ます。
PostgreSQL 6.5以降では、既定の最大プロセスは32プロセスです。適切な-Nの値で
PostgreSQL 6.5以降では、既定の最大プロセスは32プロセスです。適切な-Nの値で
postmasterを再起動することにより増加させることができます。既定の構成では-Nは
最
postmasterを再起動することにより増加させることができます。既定の構成では-Nは
大1024まで設定できます。もし、もっと必要であればinclude/config.hの中の
最
大1024まで設定できます。もし、もっと必要であればinclude/config.hの中の
MAXBACKENDSを増加させ、再構築します。もし、望むならconfigureの
MAXBACKENDSを増加させ、再構築します。もし、望むならconfigureの
--with-maxbackends切替を使って、-Nの既定値を構成時に設定できます。
--with-maxbackends切替を使って、-Nの既定値を構成時に設定できます。
もし、-N を 32よりも大きくするのであれば、-Bも既定の64より大きい値に増加させ
な
もし、-N を 32よりも大きくするのであれば、-Bも既定の64より大きい値に増加させ
くてはならないし、-B は少なくとも -N の2倍はなくてはならず、おそらく最高性能を
なくてはならないし、-B は少なくとも -N の2倍はなくてはならず、おそらく最高性
望むならばそれより大きい値が必要なはずです。バックエンドプロセスをたくさんにす
能を望むならばそれより大きい値が必要なはずです。バックエンドプロセスをたくさ
ると、いろいろなUnixカーネル構成パラメータも増やすことが必要になるかもしれませ
んにすると、いろいろなUnixカーネル構成パラメータも増やすことが必要になるかも
ん。共有メモリー・ブロックの最大値(SHMMAX)、セマフォの最大数(SEMMNSとSEMMNI)、
しれません。 共有メモリー・ブロックの最大値(SHMMAX)、 セマフォの最大数
プロセスの最大数(NPROC)、ユーザ毎の最大プロセス数(MAXUPRC)、開くファイルの最大
(SEMMNSとSEMMNI)、 プロセスの最大数(NPROC)、 ユーザ毎の最大プロセス数
数(NFILEとNINODE も確認事項に含まれます。 PostgreSQLに許されるバックエンドのプ
(MAXUPRC)、 開くファイルの最大数(NFILEとNINODE も確認事項に含まれます。
ロセス数が制限されているのは、システムのリソースを使い果してしまうことを避ける
PostgreSQLに許されるバックエンドのプロセス数が制限されているのは、 システム
ためです。
のリソースを使い果してしまうことを避ける
ためです。
6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更
する
6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更
には、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再構築が必
するには、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再
要でした。
構築が必
要でした。
3.10) 自分のデータベース・ディレクトリにある pg_sorttemp.XXXファイルは何です
か
3.10) 自分のデータベース・ディレクトリにある pg_sorttemp.XXXファイルは何です
?
か
?
問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし
問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし
ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大きなス
ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大き
ペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイ
なスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的な
ルがいくつか生成されます。
ファイルがいくつか生成されます。
一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバック
エンドがクラッシュしてしまうとそうはなりません。そのときバックエンドがひとつ
も走ってなければ、pg_tempNNN.NNファイルを消しても大丈夫です。
一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエ
ンドが潰れてしまうとそうなりません。もし、そのときバックエンドがひとつも走って
なければ、pg_tempNNN.NNファイルを消しても安全です。
[訳注:
[訳注:
SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog
SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog
付きで走らせた後、コンパイルとインストールを行ないます。
付きで走らせた後、コンパイルとインストールを行ないます。
次に、syslog.conf に local0.* の 出力先を指定し(環境変数で変更可能)、
次に、syslog.conf に local0.* の 出力先を指定し(環境変数で変更可能)、
syslogd に HUP シグナルを送って初期化しておきます。そして、
syslogd に HUP シグナルを送って初期化しておきます。そして、
$PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S
$PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S
オプション付きにてサーバモードで起動します。(バージョン 7.1 からは
オプション付きにてサーバモードで起動します。(バージョン 7.1 からは
pg_options は postgresql.conf になっています。)
pg_options は postgresql.conf になっています。)
]
]
------------------------------------------------------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作上の質問
操作上の質問
4.1) なぜ、システムはカンマや小数点や日付フォーマットで混乱するのですか?
4.1) なぜ、システムはカンマや小数点や日付フォーマットで混乱するのですか?
ロケールの設定を確かめて下さい。PostgreSQL は postmaster プロセスを走らせたユー
ロケールの設定を確かめて下さい。PostgreSQL は postmaster プロセスを走らせた
ザーのロケールの設定を使います。postgres とpsql には SET コマンドがあり、データ
ユーザーのロケールの設定を使います。postgres とpsql には SET コマンドがあ
書式を制御できます。これらをあなたの操作環境に合わせて設定して下さい。
り、データ書式を制御できます。これらをあなたの操作環境に合わせて設定して下さ
い。
4.2) バイナリ・カーソルと通常
の
カーソルとの厳密な違いは何ですか?
4.2) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか?
詳述は、オンラインマニュアルで DECLARE を見て下さい。
詳述は、オンラインマニュアルで DECLARE を見て下さい。
4.3)
問い合わせの
最初の数行のみを SELECT するにはどうしますか?
4.3) 最初の数行のみを SELECT するにはどうしますか?
オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を
使っ
オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を
てみて下さい。
使っ
てみて下さい。
たとえ、欲しいのは最初の数行だけでも、すべての問い合わせを評価しなくてはなら
な
たとえ、欲しいのは最初の数行だけでも、すべての問い合わせを評価しなくてはなら
いかもしれません。ORDER BY を持った問い合わせを考えてみて下さい。もし、ORDER BY
ないかもしれません。ORDER BY を持った問い合わせを考えてみて下さい。 もし、
に合ったインデックスがあるとすると PostgreSQLは要求された最初の数行だけで評価で
ORDER BYに合ったインデックスがあるとすると PostgreSQLは要求された最初の数行
きるかもしれませんが、でなれば、PostgreSQL は意図した行が生成されるまですべての
だけで評価できるかもしれませんが、でなれば、PostgreSQL は意図した行が生成さ
行を評価しなければならないかもしれません。
れるまですべての
行を評価しなければならないかもしれません。
4.4) テーブルやその他の情報のリストを psql で見るにはどうしますか?
4.4) テーブルやその他の情報のリストを psql で見るにはどうしますか?
psqlのソースコード
が書かれた pgsql/src/bin/psql/describe.c ファイルを読むことが
psqlのソースコード
として書かれた pgsql/src/bin/psql/describe.c ファイルを読
できます。そこには、psqlのバックスラッシュコマンドによる出力のためのSQLコマンド
むことがその答えです。 そこには、psqlのバックスラッシュコマンドによる出力の
が含まれています。 psql に -E オプションをつけて起動すれば、与えたコマンドを実
ためのSQLコマンドが含まれています。 psql に -E オプションをつけて起動すれ
行するための問い合わせが出力されます。
ば、与えたコマンドを実
行するための問い合わせが出力されます。
4.5) テーブルから
の
列の削除はどのようにしますか?
4.5) テーブルから列の削除はどのようにしますか?
ALTER TABLE DROP COLUMN はサポートしていませんが、その代わりにこうします:
ALTER TABLE DROP COLUMN はサポートしていませんが、その代わりにこうします:
SELECT ... -- 削除したい列以外の列をすべて選択します。
SELECT ... -- 削除したい列以外の列をすべて選択します。
INTO TABLE new_table
INTO TABLE new_table
FROM old_table;
FROM old_table;
DROP TABLE old_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
ALTER TABLE new_table RENAME TO old_table;
[訳注:列の追加は ALTER TABLE ADD COLUMN で行えます。]
[訳注:列の追加は ALTER TABLE ADD COLUMN で行えます。]
4.6) 行、テーブル、データベースの最大サイズは?
4.6) 行、テーブル、データベースの最大サイズは?
制限は以下のとおりです。
制限は以下のとおりです。
データベースの最大サイズ? 制限無し (60GB のデータベースも存在します)
データベースの最大サイズ? 制限無し (60GB のデータベースも存在します)
テーブルの最大サイズ? 16TB
テーブルの最大サイズ? 16TB
行の最大サイズ? 7.1以降で制限無し
行の最大サイズ? 7.1以降で制限無し
...
@@ -829,25 +805,27 @@ ALTER TABLE DROP COLUMN
...
@@ -829,25 +805,27 @@ ALTER TABLE DROP COLUMN
テーブル内での最大カラム数? カラムの型により250-1600
テーブル内での最大カラム数? カラムの型により250-1600
テーブル内での最大インデクス数? 制限無し
テーブル内での最大インデクス数? 制限無し
もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワップスペ
ー
もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワップスペ
スの大きさにより制限されます。性能はこれらの値がことのほか大きな時に煽りを受け
ースの大きさにより制限されます。性能はこれらの値がことのほか大きな時に煽りを
ます。
受け
ます。
最大テーブルサイズの16TBはオペレーティングシステムのラージ・ファイルサポートは
最大テーブルサイズの16TBはオペレーティングシステムによる巨大ファイルのサポー
必要としません。ラージ・テーブルは複数の1GBのファイルのように保存されます。
トは必要としません。巨大なテーブルは複数の1GBのファイルに分けて保存されます
ので、ファイルシステムの制限は重要ではありません。
デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム数とが
増加
デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム数とが
します。
増加
します。
4.7) 一般的なテキストファイルからデータを保存するには、データベースのディス
ク容
4.7) 一般的なテキストファイルからデータを保存するには、データベースのディス
量はどのくらい必要です?
ク容
量はどのくらい必要です?
PostgreSQL のデータベースに保存するには、普通のファイルの約6.5倍のディスク容量
PostgreSQL のデータベースに保存するには、普通のファイルの約6.5倍のディスク容
を必要とします。
量を必要とします。
各行に二つずつ整数を持つ 300,000行のファイルを考えてみましょう。ただのファイ
ルでは 2.4MB です。このデータを含む PostgreSQL データベースファイルの大きさ
は次のように約14MBと見積もることができます:
各行に二つずつ整数を持つ 300,000行のファイルを考えてみましょう。ただのファイル
では 2.4MB です。このデータを含む PostgreSQL データベースファイルの大きさは次の
ように約14MBと見積もることができます:
36 bytes: 各行のヘッダ(概算)
36 bytes: 各行のヘッダ(概算)
+ 8 bytes: 各4バイトの二つの整数(int)フィールド
+ 8 bytes: 各4バイトの二つの整数(int)フィールド
+ 4 bytes: ページ上のタップルへのポインタ
+ 4 bytes: ページ上のタップルへのポインタ
...
@@ -863,81 +841,80 @@ PostgreSQL
...
@@ -863,81 +841,80 @@ PostgreSQL
300000 data rows
300000 data rows
-------------------- = 1755 database pages
-------------------- = 1755 database pages
171 rows per page
171 rows per page
1755 database pages * 8192 bytes per page = 14,376,960 bytes (14MB)
1755 database pages * 8192 bytes per page = 14,376,960 bytes (14MB)
インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされ
る
インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされ
データを含む以上、それなりに大きくなります。
る
データを含む以上、それなりに大きくなります。
4.8) データベース内に定義されたテーブルやインデックスをどのように
見つけ出します
4.8) データベース内に定義されたテーブルやインデックスをどのように
して見つけ
か?
出します
か?
psql にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示しま
す。
psql にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示しま
バックスラッシュ・コマンドの種類を見るには \? を使って下さい。
す。
バックスラッシュ・コマンドの種類を見るには \? を使って下さい。
また、pgsql/src/tutorial/syscat.source ファイルを走らせてみて下さい。それ
は、沢
また、pgsql/src/tutorial/syscat.source ファイルを走らせてみて下さい。それ
山の SELECT 文により必要な情報をデータベースのシステム・テーブルから取り出して
は、沢山の SELECT 文により必要な情報をデータベースのシステム・テーブルから取
例示してくれます。
り出して
例示してくれます。
4.9) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜで
すか
4.9) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜで
?
すか
?
PostgreSQL は統計情報を自動的には保守しません。統計情報を更新するためには、
PostgreSQL は統計情報を自動的には保守しません。統計情報を更新するためには、
VACUUM を走らせなくてはなりません。統計情報が更新された後は、オブティマイザ
がテ
VACUUM を走らせなくてはなりません。統計情報が更新された後は、オブティマイザ
ーブルに何行あるかを知って、インデックスを使うべきかの決定をより良く下します。
がテーブルに何行あるかを知って、インデックスを使うべきかの決定をより良く下し
オブティマイザはテーブルが小さくて連続スキャンの方が速いであろう場合はインデッ
ます。オブティマイザはテーブルが小さくて連続スキャンの方が速いであろう場合は
クスを使わないことにご注意下さい。
インデッ
クスを使わないことにご注意下さい。
列特定の最適化統計のためにVACUUM ANALYZEを使います。VACUUM ANALYZEは複雑な複
合
列特定の最適化統計のためにVACUUM ANALYZEを使います。VACUUM ANALYZEは複雑な複
結合(multi-join)問い合わせのために大切ですので、オブティマイザはそれぞれのテー
合結合(multi-join)問い合わせのために大切ですので、オブティマイザはそれぞれの
ブルから返される行の数を見積ることができ、特定の結合順序を選びます。バックエン
テーブルから返される行の数を見積ることができ、特定の結合順序を選びます。バッ
ドはそれ自身では列の統計を保持しないので、定期的にそれらを集めるためには VACUUM
クエンドはそれ自身では列の統計を保持しないので、定期的にそれらを集めるために
ANALYZE を走らせなくてはなりません。
は VACUUM
ANALYZE を走らせなくてはなりません。
インデックスは ORDER BY 操作のためには普通は使われません。すなわち、順次スキャ
普通、インデックスは ORDER BY や結合の操作のためには使われません。ランダムな
ンに続く明示的ソートは、ディスクアクセスがより少なくて済むので、巨大なテーブル
ディスクアクセスはとても遅いので、順次スキャンに続く明示的ソートは、巨大なテ
の全件をインデックススキャンするよりも高速です。
ーブル
の全件をインデックススキャンするよりも高速です。
LIKE あるいは ~ のようなワイルドカード演算子(wild-card operators)を使うと
き、検
LIKE あるいは ~ のようなワイルドカード演算子(wild-card operators)を使うと
索の開始が文字列の始めの部分に固定されているときにのみ、インデックスが使われま
き、検索の開始が文字列の始めの部分に固定されているときにのみ、インデックスが
す。そういうわけで、インデックスを使うためには、LIKE 検索では%で始めないように
使われます。 そういうわけで、インデックスを使うためには、LIKE 検索では%で始
して、また、~(正規表現検索)は^ で始めるようにするべきです。 [訳注:強制的にイン
めないようにして、また、~(正規表現検索)は^ で始めるようにするべきです。 [訳
デックスを使うには SET enable_seqscan = off を実行します]
注:強制的にイン
デックスを使うには SET enable_seqscan = off を実行します]
4.10) 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るには
ど
4.10) 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るには
うしますか?
ど
うしますか?
オンラインマニュアルで EXPLAIN を見て下さい。
オンラインマニュアルで EXPLAIN を見て下さい。
4.11) R-tree インデックスとは何ですか?
4.11) R-tree インデックスとは何ですか?
R-tree インデックスは空間的なデータにインデックスを付けるために使われます。
ハッ
R-tree インデックスは空間的なデータにインデックスを付けるために使われます。
シュインデックスでは範囲の検索ができません。また、B-tree インデックスでは、1次
ハッシュインデックスでは範囲の検索ができません。また、B-tree インデックスで
元でしか範囲の検索ができません。R-tree インデックスであれば多次元のデータを扱え
は、1次元でしか範囲の検索ができません。R-tree インデックスであれば多次元の
ます。たとえば、もし R-tree インデックスを point 型の属性に付けることができると
データを扱えます。たとえば、もし R-tree インデックスを point 型の属性に付け
するとシステムは、「長方形に囲まれた点をすべて選択する」というような問い合わせ
ることができるとするとシステムは、「長方形に囲まれた点をすべて選択する」とい
に、より効率良く答えられます。
うような問い合わせ
に、より効率良く答えられます。
R-Tree の設計の原典となる権威ある論文は:
R-Tree の設計の原典となる権威ある論文は:
Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching." Proc
of
Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching." Proc
the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
of
the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
この論文は、Stonebraker 教授の "Readings in Database Systems" でも取り上げら
れ
この論文は、Stonebraker 教授の "Readings in Database Systems" でも取り上げら
ています。
れ
ています。
[訳注:
[訳注:
奈良先端大の石川佳治さんよりR-Tree関係の文献を紹介して頂きました。
奈良先端大の石川佳治さんよりR-Tree関係の文献を紹介して頂きました。
日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial data structures"
日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial data structures"
http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html
http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html
をご覧下さい。
をご覧下さい。
]
]
組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっ
組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっと高
と高い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょ
い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょっとした
っとした作業が必要でして、現在、我々はそれをどのようにするかについての文書を
作業が必要でして、現在、我々はそれをどのようにするかについての文書を持っていま
持っていません。
せん。
[訳注:
[訳注:
インターウィズの片岡さんが多次元幾何オブジェクトへの拡張作業中です。詳しくは、
インターウィズの片岡さんが多次元幾何オブジェクトへの拡張作業中です。詳しくは、
...
@@ -945,23 +922,37 @@ the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
...
@@ -945,23 +922,37 @@ the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
をご覧ください。
をご覧ください。
]
]
4.12) 遺伝的問い合わせ最適化とは何ですか?
4.12) 遺伝的問い合わせ最適化とは何ですか?
GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で
問合
GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で
わせを高速化します。これにより、しらみつぶしに探索を行なわなくても、大きな結合
問合わせを高速化します。これにより、しらみつぶしに探索を行なわなくても、大き
(join queries)を扱うことができるようになります。
な結合
(join queries)を扱うことができるようになります。
4.13) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実
4.13) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように
現しますか?
実現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのよう
に使いますか?
~演算子は正規表現照合を行ない、~* は大文字と小文字を区別しない
~演算子は正規表現照合を行ない、~* は大文字と小文字を区別しない
(case-insensitive)正規表現照合を行います。 PostgreSQL 7.1 以降では、大文字と小
(case-insensitive)正規表現照合を行います。 PostgreSQL 7.1 以降では、大文字と
文字を区別しない LIKE 演算子を ILIKE といいます。
小文字を区別しない LIKE 演算子を ILIKE といいます。
大文字と小文字を区別しない等値比較次のように表現できる:
SELECT *
FROM tab
WHERE lower(col) = 'abc'
標準インデックスでは使われず、しかしながら、もし関数インデックスを 作ったな
らそれが使われるでしょう。
CREATE INDEX tabindex on tab (lower(col));
WHERE lower(textfield) LIKE lower(pattern)
WHERE lower(textfield) LIKE lower(pattern)
4.14) 問い合わせの中で、フィールドが NULL であることを検出するにはどうします
か
4.14) 問い合わせの中で、フィールドが NULL であることを検出するにはどうします
?
か
?
IS NULLのカラムを IS NOT NULL で試してみて下さい。
IS NULLのカラムを IS NOT NULL で試してみて下さい。
...
@@ -975,186 +966,208 @@ VARCHAR(#) varchar 長
...
@@ -975,186 +966,208 @@ VARCHAR(#) varchar 長
TEXT text 長さの制限は最大行長による
TEXT text 長さの制限は最大行長による
BYTEA bytea 可変長のバイト配列
BYTEA bytea 可変長のバイト配列
内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージ
を
内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージ
受け取るときです。
を
受け取るときです。
上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バ
イ
上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バ
トがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言さ
イトがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は
れた大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTにより圧縮さ
宣言された大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTに
れたり複数行に渡って保存されたりして、ディスク上の空間は思ったより小さくなりま
より圧縮されたり複数行に渡って保存されたりして、ディスク上の空間は思ったより
す。
小さくなりま
す。
4.16.1) 通番(serial)/自動増分フィールドはどのようにつくりますか?
4.16.1) 通番(serial)/自動増分フィールドはどのようにつくりますか?
PostgreSQL は SERIAL データ型をサポートします。列上に通番とインデックスを自動作
PostgreSQL は SERIAL データ型をサポートします。列上に通番とインデックスを自
成します。たとえば、
動作成します。たとえば、
CREATE TABLE person (
id SERIAL,
CREATE TABLE person (
name TEXT
id SERIAL,
name TEXT
);
);
は自動的に次のように翻訳されます:
は自動的に次のように翻訳されます:
CREATE SEQUENCE person_id_seq;
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT
name TEXT
);
);
CREATE UNIQUE INDEX person_id_key ON person ( id );
CREATE UNIQUE INDEX person_id_key ON person ( id );
通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence をご覧
下さい。
また、各行のOIDフィールドを一意値として使うこともできます。しかしながら、もしも
通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence を
データベースをダンプしてりロードする必要がある場合は、OIDを温存するために
ご覧下さい。
pg_dump で -oオプションを使うか、または、COPY WITH OIDSオプションを使う必要があ
ります。 Bruce Momjian の(http://www.PostgreSQL.org/docs/aw_pgsql_book)の
また、各行のOIDフィールドを一意値として使うこともできます。しかしながら、も
Numbering Rowsの章にありあます。
しもデータベースをダンプしてりロードする必要がある場合は、OIDを温存するため
にpg_dump で -oオプションを使うか、または、COPY WITH OIDSオプションを使う必
要があります。 Bruce Momjian の
(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rowsの章にありあ
ます。
4.16.2) SERIALインサートの値はどうすれば得られますか?
4.16.2) SERIALデータ型に挿入される値は、どうすれば得られますか?
ひとつの方法は、nextval() 関数を使ってその値を挿入する前(before)に SEQUENCE
オブジェクトから次の SERIAL 値を取り出し、それから実際に挿入をすることです。
4.16.1 の例で使ったテーブルを使うとすると、次のようになります。
ひとつの方法は、nextval() 関数で挿入する前に(before) SEQUENCEオブジェクトから次
のSERIAL値を取り出し、それから実際に挿入をすることでしょう。 4.16.1の例で使った
テーブルを使うとすると、次のようになるでしょう。
$newSerialID = nextval('person_id_seq');
$newSerialID = nextval('person_id_seq');
INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal');
INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal');
そうして、$newSerialID に保存した新しい値を他の問い合わせに(たとえば、person テ
ーブルに対する外部鍵(foreign key)のように)使うとよいでしょう。自動的に作られた
そうして、$newSerialID に保存した新しい値を他の問い合わせに(たとえば、person
SEQUENCEオブジェクトの名前は、<table>_<serialcolumn>_seq のようになり、このうち
テーブルに対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作
、table と serialcolumn はそれぞれテーブルの名前とSERIAL列の名前です。
られたSEQUENCEオブジェクトの名前は、<table>_<serialcolumn>_seq のようにな
り、このうち、table と serialcolumn はそれぞれテーブルの名前とSERIAL列の名前
です。
あるいは、与えられたSERIAL値を、それが既定値として挿入された後で(after)、
あるいは、与えられたSERIAL値を、それが既定値として挿入された後で(after)、
currval() 関数を使って取り出すこともできます。たとえば、
currval() 関数を使って取り出すこともできます。たとえば、
INSERT INTO person (name) VALUES ('Blaise Pascal');
INSERT INTO person (name) VALUES ('Blaise Pascal');
$newID = currval('person_id_seq');
$newID = currval('person_id_seq');
最後に、INSERT文から返るOIDを使って、既定値をみつけることもできますが、しかし、
これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の DBD::Pg モジ
ュールを使えば、$sth->execute() の後に $sth->{pg_oid_status} を経由してその OID
値を使えるようにすることはできます。
4.16.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使わな
最後に、INSERT文から返るOIDを使って、既定値をみつけることもできますが、しか
いほうがよいのでしょうか?
し、これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の作った
DBD::Pg モジュールを使えば、$sth->execute() の後に $sth->{pg_oid_status} を
経由してその OID 値を使えるようにすることはできます。
4.16.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使
わないほうがよいのでしょうか?
ありません。バックエンドで処理されています
。
バックエンドが上手に処理するので、競合状態になることは有りません
。
4.17) OID とは何ですか? TID とは何ですか?
4.17) OID とは何ですか? TID とは何ですか?
OID とは一意の行 ID に対する PostgreSQL の答えです。PostgreSQL の中でつくられる
OID とは一意の行 ID に対する PostgreSQL の答えです。PostgreSQL の中でつくら
すべての行は一意の OID を得ます。initdb で(backend/access/transam.h から)発生さ
れるすべての行は一意の OID を得ます。initdb で発生される OID はすべて 16384
れる OID はすべて 16384より小さな値です。initdb 後のすべての OID (ユーザ作成)は
(backend/access/transam.h から)より小さな値です。initdb 後のすべての OID (ユ
それ以上の値になります。既定では、これらすべての OID はテーブル内やデータベース
ーザ作成)はそれ以上の値になります。 既定では、これらすべての OIDは一つのデー
内に留まらず、PostgreSQL のそのインストレーション全体内で一意であります。
ブルやデータベース内に留まらず、PostgreSQL インストレーション全体の中で一意
です。
PostgreSQL はテーブル間の行を結びつけるために、そのシステムテーブル内に OID を
使います。この OID は特定のユーザの行を識別するためや結合の中で使われることがで
PostgreSQL はテーブル間の行を結びつけるために、そのシステムテーブル内に OID
きます。OID の値を保存するためには OID 型を列に使うことを奨めます。より速くアク
を使います。この OID は特定のユーザの行を識別するためや結合の中で使われるこ
セスするために OID フィールドにインデックスを作ることができます。
とができます。OID の値を保存するためには OID 型を列に使うことを奨めます。よ
り速くアクセスするために OID フィールドにインデックスを作ることができます。
OID は、全てのデータベースから使われる中央領域から、全ての新しい行に割り当てら
OID は、全てのデータベースで使われる中央領域から、全ての新しい行に割り当てら
れます。OID を他の何かに変えたい、もしくは元の OID でテーブルをコピーしたいのな
れます。OID を他の何かに変えたい、あるいは元の OID もテーブルと一緒にコピー
ら、そうできない理由はありません。
したいのなら、できなくはありません。
CREATE TABLE new_table(old_oid oid, mycol int);
CREATE TABLE new (old_oid oid, mycol int);
SELECT old_oid, mycol INTO new FROM old;
SELECT old_oid, mycol INTO new FROM old;
COPY new TO '/tmp/pgtable';
COPY new TO '/tmp/pgtable';
DELETE FROM new;
DELETE FROM new;
COPY new WITH OIDS FROM '/tmp/pgtable';
COPY new WITH OIDS FROM '/tmp/pgtable';
OID は、4バイトの整数として保存されているので、40億を越えると溢れてしまうで
しょう。誰もこれが起きたと報告してくる人はいませんでしたが、そうなる前にこの
制限を取り除くことを計画しています。
OID は、4バイトの整数として保存されているので、40億を越えると溢れてしまうでしょ
TID は特定の物理行をそのブロックとオフセット値で識別するために使われます。
う。誰もこれが起きたと報告してくる人はいませんでしたが、そうなる前にこの制限を
TID は行が修正されたり再ロードされると変わります。それらの TID は、物理行を
取り除くことを計画しています。
指すためにインデックス記載で使われます。
TID は特定の物理行をそのブロックとオフセット値で識別するために使われます。TID
は行が修正されたり再ロードされると変わります。それらの TID は、物理行を指すため
にインデックス記載で使われます。
4.18) PostgreSQL で使われるいくつかの用語の意味は何ですか?
4.18) PostgreSQL で使われるいくつかの用語の意味は何ですか?
いくつかのソースコードや古い文書の中には、それぞの専門分野の中でもっと一般的に
いくつかのソースコードや古い文書の中には、それぞの専門分野の中でもっと一般的
使われる専門用語が使われています。
に使われる専門用語が使われています。
* テーブル(table)、関係(relation)、クラス(class)
・ テーブル(table)、関係(relation)、クラス(class)
* 行(row)、レコード(record)、タップル(tuple)
・ 行(row)、レコード(record)、タップル(tuple)
* 列(column)、フィールド(field)、属性(attribute)
・ 列(column)、フィールド(field)、属性(attribute)
* 取得(retrieve)、選択(select)
・ 取得(retrieve)、選択(select)
* 置換(replace)、更新(update)
・ 置換(replace)、更新(update)
* 追加(append)、挿入(insert)
・ 追加(append)、挿入(insert)
* OID, 連番(serial value)
・ OID, 連番(serial value)
* ポータル(portal), カーソル(cursor)
・ ポータル(portal), カーソル(cursor)
* 領域変数(range variable)、テーブル名(table name)、テーブル別名(table
・ 領域変数(range variable)、テーブル名(table name)、テーブル別名(table alias)
alias)
一般的なデータベース用語のリストは: http://www.comptechnews.com/~reaster/
一般的なデータベース用語のリストは:
dbdesign.html で見つけられます。
http://www.comptechnews.com/~reaster/dbdesign.html で見つけられます。
4.19) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るのはな
4.19) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るの
ぜですか?
はなぜですか?
もし、7.1 よりも古いバージョンをお使いの場合は、アップデートによってこの問題
を 解決できるでしょう。それと、システムの仮想メモリーを全て使い果たしてしま
っている可能性があるか、カーネルがあるリソースについてもつ制限値が低すぎる可
能性があります。 postmaster を始動する前にこれを試してみて下さい:
システムの仮想メモリーを全て使い果たしてしまっている可能性があるか、あるいはカ
ーネルがあるリソースについて低い制限値を持っている可能性があります。 postmaster
を開始する前にこれを試してみて下さい:
ulimit -d 262144
ulimit -d 262144
limit datasize 256m
limit datasize 256m
シェルによって、どちらかひとつが成功するでしょうが、これはプロセスのデータセ
グ
シェルによって、どちらかひとつが成功するでしょうが、これはプロセスのデータセ
メント制限をより高く設定し、たぶん問い合わせが完結するようになるでしょう。この
グメント制限をより高く設定し、たぶん問い合わせが完結するようになるでしょう。
コマンドは現行のプロセスと、このコマンドを走らせた後に作られる全てのサブプロセ
このコマンドは現行のプロセスと、このコマンドを走らせた後に作られる全てのサブ
スについて適用されます。バックエンドがとても多くのデータを返すためにSQL クライ
プロセスについて適用されます。バックエンドがとても多くのデータを返すために
アントで問題が続いているのであれば、クライアントを開始する前にこれを試してみて
SQL クライアントで問題が続いているのであれば、クライアントを開始する前にこれ
ください。
を試してみて
ください。
4.20) どのバージョンの PostgreSQL を走らせているかを調べるにはどうしますか?
4.20) どのバージョンの PostgreSQL を走らせているかを調べるにはどうしますか?
psql から select version(); をタイプします。
psql から select version(); をタイプします。
4.21) ラージ・オブジェクトの操作でinvalid large obj descriptor を受け取りま
した
4.21) ラージ・オブジェクトの操作でinvalid large obj descriptor を受け取りま
。なぜでしょうか?
した
。なぜでしょうか?
ラージ・オブジェクト操作をするときは、前後にBEGIN WORKとCOMMITを付ける必要が
あ
ラージ・オブジェクト操作をするときは、前後にBEGIN WORKとCOMMITを付ける必要が
ります。すなわち、lo_open ... lo_closeをはさみ込みます。
あ
ります。すなわち、lo_open ... lo_closeをはさみ込みます。
現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト・ハン
ド
現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト・ハン
ルを閉じることにより、lo_openコマンドが完了した直後に強制的にルールを実行します
ドルを閉じることにより、lo_openコマンドが完了した直後に強制的にルールを実行
。このため、最初にハンドルに対して何かをしようとすると、invalid large obj
します。このため、最初にハンドルに対して何かをしようとすると、invalid large
descriptor(ラージオブジェクトの記述子が不正)となります。それで、もし、トランザ
obj descriptor(ラージオブジェクトの記述子が不正)となります。それで、もし、ト
クションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエラ
ランザクションを使うのを忘れると、(少なくともほとんどの時間)働いていたコー
ーメッセージを出すのです。
ドがエラ
ーメッセージを出すのです。
もし、ODBCのようなクライアントインターフェースをお使いなら、auto-commit off
を設
もし、ODBCのようなクライアントインターフェースをお使いなら、auto-commit off
定する必要があるかもしれません。
を設
定する必要があるかもしれません。
4.22) 現在の時刻がデフォルトとなるような列はどのようにつくりますか?
4.22) 現在の時刻がデフォルトとなるような列はどのようにつくりますか?
now()を使います:
now()を使います:
CREATE TABLE test (x int, modtime timestamp DEFAULT now() );
CREATE TABLE test (x int, modtime timestamp DEFAULT now() );
4.23) なぜ、INを使う副問い合わせがとても遅いのですか?
4.23) なぜ、INを使う副問い合わせがとても遅いのですか?
現在、外部問い合わせの各行について副問い合わせの結果を順番にスキャンすることに
現在、外部問い合わせの各行について副問い合わせの結果を順番にスキャンすること
より、副問い合わせを外部問い合わせに結合しています。当面はINをEXISTSで置き換え
により、副問い合わせを外部問い合わせに結合しています。当面はINをEXISTSで置き
ることです:
換えることです:
SELECT *
SELECT *
FROM tab
FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2)
WHERE col1 IN (SELECT col2 FROM TAB2)
を、置き換えて:
を、置き換えて:
SELECT *
SELECT *
FROM tab
FROM tab
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
とします。この制限は将来のリリースで直したいと思っています。
とします。 この制限は将来のリリースで直したいと思っています。
4.24) 外部結合(outer join)はどのように実現しますか?
4.24) 外部結合(outer join)はどのように実現しますか?
PostgreSQL 7.1 以降ではSQL標準構文を使う外部結合(アウタージョイン)をサポートし
PostgreSQL 7.1 以降ではSQL標準構文を使う外部結合(アウタージョイン)をサポート
ます。ここに、例題が2つあります。
します。ここに、例題が2つあります。
SELECT *
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
あるいは
あるいは
SELECT *
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
FROM t1 LEFT OUTER JOIN t2 USING (col);
これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されなかっ
た行(t2 と一致しなかった行)も返しています。RIGHT 結合は t2 の結合されなかった行
これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されな
を加えるでしょう。FULL 結合は、一致した行に t1 と t2 からは結合されなかった行を
かった行(t2 と一致しなかった行)も返しています。RIGHT 結合は t2 の結合されな
返すでしょう。OUTER という言葉はオプションで LEFT, RIGHT, または FULL などの結
かった行を加えるでしょう。FULL 結合は、一致した行に t1 と t2 からは結合され
合を仮定されています。以前のリリースでは外部結合(outer join)をUNION と NOT IN
なかった行を返すでしょう。OUTER という言葉はオプションで LEFT, RIGHT, または
を使ってシミュレートできます。たとえば、tab1 と tab2 を結合するときは、次の問い
FULL などの結合を仮定されています。 以前のリリースでは外部結合(outer join)を
合わせで二つのテーブルを外部結合します。
UNION と NOT IN を使ってシミュレートできます。 たとえば、tab1 と tab2 を結合
するときは、次の問い合わせで二つのテーブルを外部結合します。
SELECT tab1.col1, tab2.col2
SELECT tab1.col1, tab2.col2
FROM tab1, tab2
FROM tab1, tab2
WHERE tab1.col1 = tab2.col1
WHERE tab1.col1 = tab2.col1
...
@@ -1164,33 +1177,68 @@ PostgreSQL 7.1
...
@@ -1164,33 +1177,68 @@ PostgreSQL 7.1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
ORDER BY col1
ORDER BY col1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
------------------------------------------------------------------------
PostgreSQLの拡張についての質問
5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうの
PostgreSQLの拡張についての質問
はなぜですか?
問題は色々と考えられます。まず最初に、作成したユーザ定義関数を単独のテストプロ
5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしま
グラムにして試してみて下さい。
うのはなぜですか?
5.2) PostgreSQL 用に書いた粋な新しい型や関数は、どうすれば寄贈できますか?
問題は色々と考えられますが、まず最初に、作成したユーザ定義関数を単独のテスト
プログラムにして試してみて下さい。
皆さんの行なった拡張を、pgsql-hackers メーリング・リストに送ってください。そし
5.2) PostgreSQL 用に書いたちょっと素敵な新しい型や関数を提供してプロジェクト
て、ゆくゆくはそうした拡張が contrib/ サブディレクトリの中に入ることになるでし
に貢献したいのですが?
ょう。
皆さんの行なった拡張を、pgsql-hackers メーリング・リストに送ってください。そ
して、ゆくゆくはそうした拡張が contrib/ サブディレクトリの中に入ることになる
でしょう。
5.3) タプルを返す C言語の関数はどのように書きますか?
5.3) タプルを返す C言語の関数はどのように書きますか?
原理的には可能ですが、これには究極の妙技を要しますので、著者のまわりでは未だ
誰
原理的には可能ですが、これには究極の妙技を要しますので、著者のまわりでは未だ
もやったことがありません。
誰
もやったことがありません。
5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜ
5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのは
ですか?
なぜですか?
いくつかの Makefile がインクルード・ファイルに対して適切な依存関係を持ってい
ません。make clean をしてからもう一度 make を行なわなくてはなりません。も
し、GCC をお使いであれば configure の --enable-depend オプションを使って、コ
ンパイラに依存関係を自動的に調べさせることもできます。
------------------------------------------------------------------------
いくつかの Makefile がインクルード・ファイルに対して適切な依存関係を持っていま
せん。make clean をしてからもう一度 make を行なわなくてはなりません。もし、GCC
をお使いであれば configure の --enable-depend オプションを使って、コンパイラに
依存関係を自動的に調べさせることもできます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[訳注:
[訳注:
日本語版の製作については以下の通りです。
最終更新日: 2001年07月05日
翻訳者: 桑村 潤 (Jun Kuwamura <juk@jp.postgresql.org>)
このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます):
田仲 稔(Minoru Tanaka <Tanaka.Minoru@keiken.co.jp>)
石井 達夫(Tatsuo Ishii <t-ishii@sra.co.jp>)
齊藤 知人(Tomohito Saitoh <tomos@elelab.nsc.co.jp>)
馬場 肇(Hajime Baba <baba@kusastro.kyoto-u.ac.jp>)
岡本 一幸(Kazuyuki Okamoto <kokamoto@itg.hitachi.co.jp>)
小菅 昭一(Shoichi Kosuge <s-kosuge@str.hitachi.co.jp>)
山下 義之(Yoshiyuki Yamashita <dica@eurus.dti.ne.jp>)
境 真太郎(Sintaro Sakai <s_sakai@mxn.mesh.ne.jp>)
生越 昌己(Masami Ogoshi <ogochan@zetabits.com>)
石川 俊行(Toshiyuki Ishikawa <tosiyuki@gol.com>)
本田 茂広(Shigehiro Honda <fwif0083@mb.infoweb.ne.jp>)
せせ じゅん(Jun Sese <sesejun@linet.gr.jp>)
神谷 英孝(Hidetaka Kamiya <hkamiya@catvmics.ne.jp>)
をはじめ、ポストグレスに関する話題豊富な日本語ポストグレス・メーリングリスト、
和訳のきっかけを作ってくれた JF(Linux Japanese FAQ Mailing List)プロジェクト、その他、
直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの
皆さんに感謝します。
日本語版のこの文書は、以下からもたどれます。
http://www.rccm.co.jp/~juk/pgsql/(FAQ和訳 PostgreSQL についてよくある質問)
http://www.linux.or.jp/JF/(PostgreSQL-FAQ.j)
http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/
なお、この和訳に関するご意見は(juk@jp.postgresql.org)までお寄せ下さい。
]
]
doc/src/FAQ/FAQ_japanese.html
View file @
bca9d0cd
...
@@ -5,9 +5,9 @@
...
@@ -5,9 +5,9 @@
<BODY
BGCOLOR=
"#FFFFFF"
TEXT=
"#000000"
LINK=
"#FF0000"
VLINK=
"#A00000"
ALINK=
"#0000FF"
>
<BODY
BGCOLOR=
"#FFFFFF"
TEXT=
"#000000"
LINK=
"#FF0000"
VLINK=
"#A00000"
ALINK=
"#0000FF"
>
<META
HTTP-EQUIV=
"Content-Type"
CONTENT=
"text/html; CHARSET=x-euc-jp"
>
<META
HTTP-EQUIV=
"Content-Type"
CONTENT=
"text/html; CHARSET=x-euc-jp"
>
<H1>
<H1>
PostgreSQL(ポストグレス・キュー・エル)についてよくある質問(FAQ)
</H1>
PostgreSQL(ポストグレス・キュー・エル)についてよくある質問
とその解答
(FAQ)
</H1>
<P>
<P>
原文最終更新日:
Mon Apr 9 15:27
:47 EDT 2001
原文最終更新日:
Tue Jul 10 21:01
:47 EDT 2001
<P>
<P>
現在の維持管理者: Bruce Momjian (
<A
現在の維持管理者: Bruce Momjian (
<A
HREF=
"mailto:pgman@candle.pha.pa.us"
>
pgman@candle.pha.pa.us
</A>
)
<BR><P>
HREF=
"mailto:pgman@candle.pha.pa.us"
>
pgman@candle.pha.pa.us
</A>
)
<BR><P>
...
@@ -24,48 +24,15 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
...
@@ -24,48 +24,15 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
<P>
<P>
<small><PRE>
<small><PRE>
(以下、訳者による注釈を [訳注: と ] とで囲んで記します。)
[訳注:
[訳注:
(以下、訳者による注釈を [訳注: と ] とで囲んで記します。)
日本語版製作についてのメモは最後尾へ移動しました。
http://www.PostgreSQL.org/ にアクセスすると http://postgresql.nucba.ac.jp/
日本語版のこの文書は "User's Lounge" の "Collection of FAQs" の
にリダイレクトされ、"Not Found" になってしまうことがあります。その場合は、
"Japanese" という見出しのところにあります。
<A
HREF=
"http://www.PostgreSQL.org/index.html"
>
http://www.PostgreSQL.org/index.html
</A>
(
<A
HREF=
"http://www.PostgreSQL.org/docs/faq-japanese.html"
>
http://www.PostgreSQL.org/docs/faq-japanese.html
</A>
)
にアクセスしてみてください。
この和訳についてお気づきの点は(
<A
HREF=
"mailto:juk@jp.postgresql.org"
>
juk@jp.postgresql.org
</A>
)までメールでお寄せ下さい。
日本語版の製作については以下の通りです。
最終更新日: 2001年04月15日
翻訳者: 桑村 潤 (
<A
HREF=
"mailto:juk@jp.postgresql.org"
>
Jun Kuwamura
<
juk@jp.postgresql.org
>
</A>
)
このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます):
田仲 稔(
<A
HREF=
"mailto:Tanaka.Minoru@keiken.co.jp"
>
Minoru Tanaka
<
Tanaka.Minoru@keiken.co.jp
>
</A>
)
石井 達夫(
<A
HREF=
"mailto:t-ishii@sra.co.jp"
>
Tatsuo Ishii
<
t-ishii@sra.co.jp
>
</A>
)
齊藤 知人(
<A
HREF=
"mailto:tomos@elelab.nsc.co.jp"
>
Tomohito Saitoh
<
tomos@elelab.nsc.co.jp
>
</A>
)
馬場 肇(
<A
HREF=
"mailto:baba@kusastro.kyoto-u.ac.jp"
>
Hajime Baba
<
baba@kusastro.kyoto-u.ac.jp
>
</A>
)
岡本 一幸(
<A
HREF=
"mailto:kokamoto@itg.hitachi.co.jp"
>
Kazuyuki Okamoto
<
kokamoto@itg.hitachi.co.jp
>
</A>
)
小菅 昭一(
<A
HREF=
"mailto:s-kosuge@str.hitachi.co.jp"
>
Shoichi Kosuge
<
s-kosuge@str.hitachi.co.jp
>
</A>
)
山下 義之(
<A
HREF=
"mailto:dica@eurus.dti.ne.jp"
>
Yoshiyuki Yamashita
<
dica@eurus.dti.ne.jp
>
</A>
)
境 真太郎(
<A
HREF=
"mailto:s_sakai@mxn.mesh.ne.jp"
>
Sintaro Sakai
<
s_sakai@mxn.mesh.ne.jp
>
</A>
)
生越 昌己(
<A
HREF=
"mailto:ogochan@zetabits.com"
>
Masami Ogoshi
<
ogochan@zetabits.com
>
</A>
)
石川 俊行(
<A
HREF=
"mailto:tosiyuki@gol.com"
>
Toshiyuki Ishikawa
<
tosiyuki@gol.com
>
</A>
)
本田 茂広(
<A
HREF=
"mailto:fwif0083@mb.infoweb.ne.jp"
>
Shigehiro Honda
<
fwif0083@mb.infoweb.ne.jp
>
</A>
)
せせ じゅん(
<A
HREF=
"mailto:sesejun@linet.gr.jp"
>
Jun Sese
<
sesejun@linet.gr.jp
>
</A>
)
をはじめ、ポストグレスに関する話題豊富な
<A
HREF=
"http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html"
>
日本語ポストグレス・メーリングリスト
</A>
、
和訳のきっかけを作ってくれた
<A
HREF=
"http://jf.linux.or.jp/"
>
JF(Linux Japanese FAQ Mailing List)プロジェクト
</A>
、その他、
直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの
皆さんに感謝します。
日本語版のこの文書は
<A
HREF=
"http://www.PostgreSQL.org/users-lounge/docs/faq-japanese.html"
>
http://www.PostgreSQL.org/users-lounge/docs/faq-japanese.html
</A>
にあるほか,
以下のサイトからもたどれます。
<A
HREF=
"http://www.jp.postgresql.org/"
>
http://www.jp.postgresql.org/
</A>
<A
HREF=
"http://www.rccm.co.jp/~juk/pgsql/"
>
http://www.rccm.co.jp/~juk/pgsql/
</A>
<A
HREF=
"http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/"
>
http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/
</A>
<A
HREF=
"http://www.linux.or.jp/JF/"
>
http://www.linux.or.jp/JF/
</A>
なお、この和訳に関するご意見は(
<A
HREF=
"mailto:juk@jp.postgresql.org"
>
juk@jp.postgresql.org
</A>
)までお寄せ下さい。
]
]
</PRE></small>
</PRE></small>
...
@@ -79,11 +46,11 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
...
@@ -79,11 +46,11 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
<A
HREF=
"#1.2"
>
1.2
</A>
) PostgreSQLの著作権はどうなってますか?
<BR>
<A
HREF=
"#1.2"
>
1.2
</A>
) PostgreSQLの著作権はどうなってますか?
<BR>
<A
HREF=
"#1.3"
>
1.3
</A>
) PostgreSQLの動作するUnixプラットホームは?
<BR>
<A
HREF=
"#1.3"
>
1.3
</A>
) PostgreSQLの動作するUnixプラットホームは?
<BR>
<A
HREF=
"#1.4"
>
1.4
</A>
) Unix以外の移植版で使えるものは?
<BR>
<A
HREF=
"#1.4"
>
1.4
</A>
) Unix以外の移植版で使えるものは?
<BR>
<A
HREF=
"#1.5"
>
1.5
</A>
) PostgreSQLはどこから
手に入り
ますか?
<BR>
<A
HREF=
"#1.5"
>
1.5
</A>
) PostgreSQLはどこから
入手でき
ますか?
<BR>
<A
HREF=
"#1.6"
>
1.6
</A>
) サポートはどこで受けられますか?
<BR>
<A
HREF=
"#1.6"
>
1.6
</A>
) サポートはどこで受けられますか?
<BR>
<A
HREF=
"#1.7"
>
1.7
</A>
) 最新版は
何
ですか
<BR>
<A
HREF=
"#1.7"
>
1.7
</A>
) 最新版は
どれ
ですか
<BR>
<A
HREF=
"#1.8"
>
1.8
</A>
) どのような文書がありますか?
<BR>
<A
HREF=
"#1.8"
>
1.8
</A>
) どのような文書がありますか?
<BR>
<A
HREF=
"#1.9"
>
1.9
</A>
) 既知のバグや無い機能はどうやって見つけますか?
<BR>
<A
HREF=
"#1.9"
>
1.9
</A>
) 既知のバグや
未だ
無い機能はどうやって見つけますか?
<BR>
<A
HREF=
"#1.10"
>
1.10
</A>
)
<font
size=
-1
>
SQL
</font>
はどうすれば学べますか?
<BR>
<A
HREF=
"#1.10"
>
1.10
</A>
)
<font
size=
-1
>
SQL
</font>
はどうすれば学べますか?
<BR>
<A
HREF=
"#1.11"
>
1.11
</A>
) PostgreSQLは西暦2000年問題(Y2K)に対応していますか?
<BR>
<A
HREF=
"#1.11"
>
1.11
</A>
) PostgreSQLは西暦2000年問題(Y2K)に対応していますか?
<BR>
<A
HREF=
"#1.12"
>
1.12
</A>
) 開発チームにはどのように参加しますか?
<BR>
<A
HREF=
"#1.12"
>
1.12
</A>
) 開発チームにはどのように参加しますか?
<BR>
...
@@ -95,8 +62,8 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
...
@@ -95,8 +62,8 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
<A
HREF=
"#2.1"
>
2.1
</A>
) PostgreSQL の
<font
size=
-1
>
ODBC
</font>
ドライバーはありますか?
<BR>
<A
HREF=
"#2.1"
>
2.1
</A>
) PostgreSQL の
<font
size=
-1
>
ODBC
</font>
ドライバーはありますか?
<BR>
<A
HREF=
"#2.2"
>
2.2
</A>
) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
<BR>
<A
HREF=
"#2.2"
>
2.2
</A>
) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
<BR>
<A
HREF=
"#2.3"
>
2.3
</A>
) PostgreSQL
はグラフィカル・ユーザインターフェースを持ち
ますか?
<A
HREF=
"#2.3"
>
2.3
</A>
) PostgreSQL
にグラフィカル・ユーザインターフェースはあり
ますか?
リ
ポートジェネレータは? 埋め込み問い合わせ言語インターフェースは?
<BR>
レ
ポートジェネレータは? 埋め込み問い合わせ言語インターフェースは?
<BR>
<A
HREF=
"#2.4"
>
2.4
</A>
) PostgreSQL と通信するにはどんな言語が使えますか?
<BR>
<A
HREF=
"#2.4"
>
2.4
</A>
) PostgreSQL と通信するにはどんな言語が使えますか?
<BR>
...
@@ -120,23 +87,24 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
...
@@ -120,23 +87,24 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
<H2><CENTER>
操作上の質問
</CENTER></H2>
<H2><CENTER>
操作上の質問
</CENTER></H2>
<A
HREF=
"#4.1"
>
4.1
</A>
) なぜ、システムはカンマや小数点や日付フォーマットで混乱するのですか?
<BR>
<A
HREF=
"#4.1"
>
4.1
</A>
) なぜ、システムはカンマや小数点や日付フォーマットで混乱するのですか?
<BR>
<A
HREF=
"#4.2"
>
4.2
</A>
) バイナリ・カーソルと通常
の
カーソルとの厳密な違いは何ですか?
<BR>
<A
HREF=
"#4.2"
>
4.2
</A>
) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか?
<BR>
<A
HREF=
"#4.3"
>
4.3
</A>
) 最初の数行のみを
<font
size=
-1
>
select
</font>
するにはどうしますか?
<BR>
<A
HREF=
"#4.3"
>
4.3
</A>
) 最初の数行のみを
<font
size=
-1
>
select
</font>
するにはどうしますか?
<BR>
<A
HREF=
"#4.4"
>
4.4
</A>
) テーブルやその他の情報のリストを
<I>
psql
</I>
で見るにはどうしますか?
<BR>
<A
HREF=
"#4.4"
>
4.4
</A>
) テーブルやその他の情報のリストを
<I>
psql
</I>
で見るにはどうしますか?
<BR>
<A
HREF=
"#4.5"
>
4.5
</A>
) テーブルから
の
列の削除はどのようにしますか?
<BR>
<A
HREF=
"#4.5"
>
4.5
</A>
) テーブルから列の削除はどのようにしますか?
<BR>
<A
HREF=
"#4.6"
>
4.6
</A>
) 行、テーブル、データベースの最大サイズは?
<BR>
<A
HREF=
"#4.6"
>
4.6
</A>
) 行、テーブル、データベースの最大サイズは?
<BR>
<A
HREF=
"#4.7"
>
4.7
</A>
) 一般的なテキストファイルからデータを保存するには、
<A
HREF=
"#4.7"
>
4.7
</A>
) 一般的なテキストファイルからデータを保存するには、
データベースのディスク容量はどのくらい必要ですか?
<BR>
データベースのディスク容量はどのくらい必要ですか?
<BR>
<A
HREF=
"#4.8"
>
4.8
</A>
) データベース内に定義されたテーブルやインデックスをどのように見つけ出しますか?
<BR>
<A
HREF=
"#4.8"
>
4.8
</A>
) データベース内に定義されたテーブルやインデックスをどのように
して
見つけ出しますか?
<BR>
<A
HREF=
"#4.9"
>
4.9
</A>
) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか?
<BR>
<A
HREF=
"#4.9"
>
4.9
</A>
) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか?
<BR>
<A
HREF=
"#4.10"
>
4.10
</A>
) 問い合わせオブティマイザがどのように問い合わせを評価するかを見るにはどうしますか?
<BR>
<A
HREF=
"#4.10"
>
4.10
</A>
) 問い合わせオブティマイザがどのように問い合わせを評価するかを見るにはどうしますか?
<BR>
<A
HREF=
"#4.11"
>
4.11
</A>
) R-tree インデックスとは何ですか?
<BR>
<A
HREF=
"#4.11"
>
4.11
</A>
) R-tree インデックスとは何ですか?
<BR>
<A
HREF=
"#4.12"
>
4.12
</A>
) 遺伝的問い合わせ最適化とは何ですか?
<BR>
<A
HREF=
"#4.12"
>
4.12
</A>
) 遺伝的問い合わせ最適化とは何ですか?
<BR>
<A
HREF=
"#4.13"
>
4.13
</A>
) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実現しますか?
<BR>
<A
HREF=
"#4.13"
>
4.13
</A>
) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実現しますか?大文字と小文字とを区別しない検索のためのインデックスはどのように使いますか?
<BR>
<A
HREF=
"#4.14"
>
4.14
</A>
) 問い合わせの中で、フィールドが
<font
size=
-1
>
NULL
</font>
であることを検出するにはどうしますか?
<BR>
<A
HREF=
"#4.14"
>
4.14
</A>
) 問い合わせの中で、フィールドが
<font
size=
-1
>
NULL
</font>
であることを検出するにはどうしますか?
<BR>
<A
HREF=
"#4.15"
>
4.15
</A>
) 色々な文字型のそれぞれの違いは何ですか?
<BR>
<A
HREF=
"#4.15"
>
4.15
</A>
) 色々な文字型のそれぞれの違いは何ですか?
<BR>
<A
HREF=
"#4.16.1"
>
4.16.1
</A>
) 通番(serial)/自動増分フィールドはどのようにつくりますか?
<BR>
<A
HREF=
"#4.16.1"
>
4.16.1
</A>
) 通番(serial)/自動増分フィールドはどのようにつくりますか?
<BR>
<A
HREF=
"#4.16.2"
>
4.16.2
</A>
)
<font
size=
-1
>
SERIAL
</font>
インサートの値は
どうすれば得られますか?
<BR>
<A
HREF=
"#4.16.2"
>
4.16.2
</A>
)
<font
size=
-1
>
SERIAL
</font>
データ型に挿入される値は、
どうすれば得られますか?
<BR>
<A
HREF=
"#4.16.3"
>
4.16.3
</A>
) 他のユーザとの競合状態を避けるためには、
<I>
currval()
</I>
と
<I>
nextval()
</I>
は使わないほうがよいのでしょうか?
<BR>
<A
HREF=
"#4.16.3"
>
4.16.3
</A>
) 他のユーザとの競合状態を避けるためには、
<I>
currval()
</I>
と
<I>
nextval()
</I>
は使わないほうがよいのでしょうか?
<BR>
<A
HREF=
"#4.17"
>
4.17
</A>
)
<font
size=
-1
>
OID
</font>
とは何ですか?
<font
size=
-1
>
TID
</font>
とは何ですか?
<BR>
<A
HREF=
"#4.17"
>
4.17
</A>
)
<font
size=
-1
>
OID
</font>
とは何ですか?
<font
size=
-1
>
TID
</font>
とは何ですか?
<BR>
<A
HREF=
"#4.18"
>
4.18
</A>
) PostgreSQL で使われるいくつかの用語の意味は何ですか?
<BR>
<A
HREF=
"#4.18"
>
4.18
</A>
) PostgreSQL で使われるいくつかの用語の意味は何ですか?
<BR>
...
@@ -150,7 +118,7 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
...
@@ -150,7 +118,7 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
<H2><CENTER>
PostgreSQLの拡張についての質問
</CENTER></H2>
<H2><CENTER>
PostgreSQLの拡張についての質問
</CENTER></H2>
<A
HREF=
"#5.1"
>
5.1
</A>
) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうのはなぜですか?
<BR>
<A
HREF=
"#5.1"
>
5.1
</A>
) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうのはなぜですか?
<BR>
<A
HREF=
"#5.2"
>
5.2
</A>
) PostgreSQL 用に書いた
粋な新しい型や関数は、どうすれば寄贈できますか
?
<BR>
<A
HREF=
"#5.2"
>
5.2
</A>
) PostgreSQL 用に書いた
ちょっと素敵な新しい型や関数を提供してプロジェクトに貢献したいのですが
?
<BR>
<A
HREF=
"#5.3"
>
5.3
</A>
) タプルを返す C言語の関数はどのように書きますか?
<BR>
<A
HREF=
"#5.3"
>
5.3
</A>
) タプルを返す C言語の関数はどのように書きますか?
<BR>
<A
HREF=
"#5.4"
>
5.4
</A>
) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか?
<BR>
<A
HREF=
"#5.4"
>
5.4
</A>
) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか?
<BR>
<P>
<P>
...
@@ -160,13 +128,13 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
...
@@ -160,13 +128,13 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
<H4><A
NAME=
"1.1"
>
1.1
</A>
) PostgreSQL とは何ですか?
</H4>
<H4><A
NAME=
"1.1"
>
1.1
</A>
) PostgreSQL とは何ですか?
</H4>
<P>
PostgreSQL は
POSTGRES データベース管理システムの改良版で、次世代
<font
size=
-1
>
DBMS
</font>
研究用のプロトタイプです。PostgreSQL は POSTGRES の強力なデータ・モデルと豊富なデータ・タイプ(型)を内包しつつ
、POSTGRES で使われた PostQuel 問い合わせ言語を、拡張した
<font
size=
-1
>
SQL
</font>
のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利用できます。
<P>
PostgreSQL は
次世代
<font
size=
-1
>
DBMS
</font>
研究用のプロトタイプであった POSTGRES データベース管理システムの改良版です。PostgreSQL は POSTGRES の強力なデータ・モデルと豊富なデータ・タイプ(型)を保持しながら
、POSTGRES で使われた PostQuel 問い合わせ言語を、拡張した
<font
size=
-1
>
SQL
</font>
のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利用できます。
<P>
PostgreSQL の
すべての開発は、PostgreSQL 開発メーリングリストに参加しているインターネット上の開発者チームで行なっています。現在の座長は Marc G. Fournier (
<A
HREF=
"mailto:scrappy@PostgreSQL.org"
>
scrappy@PostgreSQL.org
</A>
)です。(以下に参加の仕方があります。)現在、このチームが PostgreSQL開発のすべての 面倒を見
ます。
<P>
PostgreSQL の
開発は、PostgreSQL 開発メーリングリストに参加しているインターネット上の開発者チームですべて行なわれています。現在の座長は Marc G. Fournier (
<A
HREF=
"mailto:scrappy@PostgreSQL.org"
>
scrappy@PostgreSQL.org
</A>
)です。(以下に参加の仕方があります。)現在、このチームが PostgreSQL 開発のすべての面倒をみてい
ます。
<P>
Postgre
SQL 1.01 の著者は Andrew Yu と Jolly Chen でした。その他大勢の人々がこのコードの移植、テスト、デバグ、および、改良に貢献しました。PostgreSQL の派生元コードである POSTGRES はカリフォルニア大学バークレイ校において、 Michael Stonebraker 教授の指揮のもと、多くの学生、卒業生、職業
プログラマたちの努力により作られました。
<P>
Postgre
s95-1.01 の中心的な開発者は Andrew Yu と Jolly Chen でしたが、その他大勢の人々がこのコードの移植、テスト、デバグ、および、改良に参加しました。PostgreSQL の派生元コードである POSTGRES はカリフォルニア大学バークレイ校において、 Michael Stonebraker 教授の指揮のもと、多くの学生、卒業生、本職の
プログラマたちの努力により作られました。
<P>
バークレイにおけるこのソフトウェアのもとの名前は Postgres でした
。
<FONT
SIZE=
-1
>
SQL
</FONT>
の機能が追加された 1995 年にその名前は Postgres95 に変更されました。
1996 年の終りにその名前は PostgreSQL に変更されました。
<P>
バークレイにおけるこのソフトウェアのもとの名前は Postgres でした
が、
<FONT
SIZE=
-1
>
SQL
</FONT>
の機能が追加された 1995 年にその名前は Postgres95 に変更され、
1996 年の終りにその名前は PostgreSQL に変更されました。
<I>
Post-Gres-Q-L.
</I>
(ポスト - グレス - キュー - エル) と発音します。
<I>
Post-Gres-Q-L.
</I>
(ポスト - グレス - キュー - エル) と発音します。
...
@@ -182,7 +150,7 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
...
@@ -182,7 +150,7 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR><P>
<P>
<P>
PostgreSQL Data Base Management System
<P>
PostgreSQL Data Base Management System
<P>
Portions
c
opyright (c) 1996-2000, PostgreSQL Global Development Group
Portions
C
opyright (c) 1996-2000, PostgreSQL Global Development Group
Portions Copyright (c) 1994-6 Regents of the University of California
<P>
Portions Copyright (c) 1994-6 Regents of the University of California
<P>
Permission to use, copy, modify, and distribute this software and its
Permission to use, copy, modify, and distribute this software and its
...
@@ -254,7 +222,7 @@ MODIFICATIONS.
...
@@ -254,7 +222,7 @@ MODIFICATIONS.
<P>
<P>
<H4><A
NAME=
"1.5"
>
1.5
</A>
) PostgreSQL はどこから
手に入り
ますか?
</H4>
<H4><A
NAME=
"1.5"
>
1.5
</A>
) PostgreSQL はどこから
入手でき
ますか?
</H4>
<P>
PostgreSQL の元の anonymous ftp サイトです:
<P>
PostgreSQL の元の anonymous ftp サイトです:
<UL>
<UL>
...
@@ -304,9 +272,9 @@ MODIFICATIONS.
...
@@ -304,9 +272,9 @@ MODIFICATIONS.
と書いて
<A
HREF=
"mailto:pgsql-general-digest-request@PostgreSQL.org"
>
pgsql-general-digest-request@PostgreSQL.org
</A>
へ電子メールを送って下さい。
と書いて
<A
HREF=
"mailto:pgsql-general-digest-request@PostgreSQL.org"
>
pgsql-general-digest-request@PostgreSQL.org
</A>
へ電子メールを送って下さい。
<P>
ダイジェスト版は、メインリスト
が受信するメッセージ
30k 程度溜る毎にダイジェスト版リストのメンバーに送付されます。
<P>
ダイジェスト版は、メインリスト
で受信するメッセージが
30k 程度溜る毎にダイジェスト版リストのメンバーに送付されます。
<P>
バグ
のメーリングリストも利用でき
ます。このリストへの参加は "本文"といっしょに:
<P>
バグ
レポート用のメーリングリストもあり
ます。このリストへの参加は "本文"といっしょに:
<A
<A
HREF=
"mailto:bugs-request@PostgreSQL.org"
>
bugs-request@PostgreSQL.org
</A>
HREF=
"mailto:bugs-request@PostgreSQL.org"
>
bugs-request@PostgreSQL.org
</A>
...
@@ -329,7 +297,7 @@ HREF="mailto:bugs-request@PostgreSQL.org">bugs-request@PostgreSQL.org</A>
...
@@ -329,7 +297,7 @@ HREF="mailto:bugs-request@PostgreSQL.org">bugs-request@PostgreSQL.org</A>
</BLOCKQUOTE>
</BLOCKQUOTE>
<P>
<P>
IRC チャンネルも EFNet にあります。そのチャンネルは
<I>
#PostgreSQL
</I>
で
す。
EFNet に
<I>
#PostgreSQL
</I>
という IRC チャンネルもありま
す。
unix コマンドで
<tt>
irc -c '#PostgreSQL' "$USER" irc.phoenix.net
</tt>
unix コマンドで
<tt>
irc -c '#PostgreSQL' "$USER" irc.phoenix.net
</tt>
を使います。
<P>
を使います。
<P>
...
@@ -361,19 +329,19 @@ unix
...
@@ -361,19 +329,19 @@ unix
<P>
<P>
<H4><A
NAME=
"1.7"
>
1.7
</A>
) 最新版は
何
ですか
</H4>
<H4><A
NAME=
"1.7"
>
1.7
</A>
) 最新版は
どれ
ですか
</H4>
<P>
PostgreSQL の最新版はバージョン 7.
0.3
です。
<P>
PostgreSQL の最新版はバージョン 7.
1.2
です。
<P>
<P>
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。
<P>
<P>
<H4><A
NAME=
"1.8"
>
1.8
</A>
) どのような文書がありますか?
</H4>
<H4><A
NAME=
"1.8"
>
1.8
</A>
) どのような文書がありますか?
</H4>
<P>
配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)およびいくつかの小さなテスト例題が含まれます。
<I>
/doc
</I>
ディレクトリをご覧下さい。また、
オンラインでのマニュアルを
、
<A
<P>
配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)およびいくつかの小さなテスト例題が含まれます。
<I>
/doc
</I>
ディレクトリをご覧下さい。また、
マニュアルは
、
<A
HREF=
"http://www.PostgreSQL.org/users-lounge/docs/"
>
HREF=
"http://www.PostgreSQL.org/users-lounge/docs/"
>
http://www.PostgreSQL.org/users-lounge/docs/
</A>
http://www.PostgreSQL.org/users-lounge/docs/
</A>
でも閲覧できます。
で
オンラインで
も閲覧できます。
<P>
PostgreSQL の本もあります。
<A
<P>
PostgreSQL の本もあります。
<A
HREF=
"http://www.PostgreSQL.org/docs/awbook.html"
>
HREF=
"http://www.PostgreSQL.org/docs/awbook.html"
>
...
@@ -391,7 +359,7 @@ http://www.PostgreSQL.org/docs/awbook.html</A><P>
...
@@ -391,7 +359,7 @@ http://www.PostgreSQL.org/docs/awbook.html</A><P>
<P>
我々の Web サイトには、もっと沢山の文書があります。
<P>
我々の Web サイトには、もっと沢山の文書があります。
<P>
<P>
<H4><A
NAME=
"1.9"
>
1.9
</A>
) 既知のバグや無い機能はどうやって見つけますか?
<H4><A
NAME=
"1.9"
>
1.9
</A>
) 既知のバグや
未だ
無い機能はどうやって見つけますか?
</H4><P>
</H4><P>
PostgreSQLは拡張されたSQL-92のサブセットをサポートします。
PostgreSQLは拡張されたSQL-92のサブセットをサポートします。
...
@@ -400,7 +368,7 @@ PostgreSQL
...
@@ -400,7 +368,7 @@ PostgreSQL
TODO
</A>
リストに、既知のバグや欠落機能や将来計画についての記述があります。
TODO
</A>
リストに、既知のバグや欠落機能や将来計画についての記述があります。
<P>
<P>
<H3><A
NAME=
"1.10"
>
1.10
</A>
)
<font
size=
-1
>
SQL
</font>
はど
のように学べば良いで
すか?
</H3>
<H3><A
NAME=
"1.10"
>
1.10
</A>
)
<font
size=
-1
>
SQL
</font>
はど
うすれば学べま
すか?
</H3>
<P>
<P>
<A
HREF=
"http://www.PostgreSQL.org/docs/awbook.html"
>
<A
HREF=
"http://www.PostgreSQL.org/docs/awbook.html"
>
http://www.PostgreSQL.org/docs/awbook.html
</A>
http://www.PostgreSQL.org/docs/awbook.html
</A>
...
@@ -532,18 +500,19 @@ PostgreSQL
...
@@ -532,18 +500,19 @@ PostgreSQL
<DT>
<B>
サポート(Support)
</B>
<DT>
<B>
サポート(Support)
</B>
<DD>
<DD>
我々のメーリングリストは、遭遇するどんな問題についても解決を助けてくれ
我々のメーリングリストは、遭遇するいかなる問題についても解決への手
る、開発者やユーザの膨大なグループを擁しています。我々は問題の解決を保
助けをしてくれる、開発者やユーザの大きな集まりを提供しています。我々は
証することはできませんが、商用データベースであっても常に解決されるわけ
問題の解決を保証することはできませんが、商用データベースであっても常に
ではありません。開発者達、ユーザ・コミュニティ、マニュアル類、それに、
解決されるわけではありません。開発者や、ユーザ・コミュニティ、マニュア
ソースコードなどに直接アクセスできることよって、PostgreSQLのサポートは、
ル類、それに、ソースコードなどへ直接アクセスできることよって、
他の
<font
size=
-1
>
DBMS
</font>
サポートよりも優れたものとなっています。御要望に答えて、事柄毎
PostgreSQLのサポートは、他の
<font
size=
-1
>
DBMS
</font>
サポートよりも優れたものとなっています。
の商用サポートもあります(サポートFAQ項目をご覧下さい)。
御要望に答えて、事柄毎の商用サポートなどもあります(サポートFAQ項目をご覧
下さい)。
<DT>
<B>
価格(Price)
</B>
<DT>
<B>
価格(Price)
</B>
<DD>
<DD>
PostgreSQLの
使
用は、商用でも非商用でも、すべて無料です。上記に示してあ
PostgreSQLの
利
用は、商用でも非商用でも、すべて無料です。上記に示してあ
るBSDスタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで
るBSDスタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで
商品に組み込むことができます。
商品に組み込むことができます。
<BR><BR>
<BR><BR>
...
@@ -605,9 +574,7 @@ Programmer's Guide</A>
...
@@ -605,9 +574,7 @@ Programmer's Guide</A>
]
]
</PRE></small>
</PRE></small>
<P>
複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。
<P>
処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。
<P>
Perl を使った WDB を基にした WWW ゲートウェイは
<A
HREF=
"http://www.eol.ists.ca/~dunlop/wdb-p95"
>
http://www.eol.ists.ca/~dunlop/wdb-p95
</A>
からダウンロードできます。
<small><PRE>
<small><PRE>
[訳注:
[訳注:
...
@@ -622,7 +589,8 @@ Programmer's Guide</A>
...
@@ -622,7 +589,8 @@ Programmer's Guide</A>
</PRE></small>
</PRE></small>
<P>
<P>
<H4><A
NAME=
"2.3"
>
2.3
</A>
) PostgreSQL はグラフィカル・ユーザ・インターフェースを持っていますか? レポート・ジェネレータは? 埋め込み問い合わせ言語へのインターフェースは?
<H4><A
NAME=
"2.3"
>
2.3
</A>
) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?
レポート・ジェネレータは? 埋め込み問い合わせ言語へのインターフェースは?
</H4>
</H4>
<P>
<I>
pgaccess
</I>
と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この配布と共に出荷されます。
<I>
Pgaccess
</I>
にはレポート・ジェネレータもあります。Web ページは
<A
HREF=
"http://www.flex.ro/pgaccess"
>
http://www.flex.ro/pgaccess
</A>
です。
<P>
<I>
pgaccess
</I>
と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この配布と共に出荷されます。
<I>
Pgaccess
</I>
にはレポート・ジェネレータもあります。Web ページは
<A
HREF=
"http://www.flex.ro/pgaccess"
>
http://www.flex.ro/pgaccess
</A>
です。
...
@@ -657,6 +625,8 @@ Programmer's Guide</A>
...
@@ -657,6 +625,8 @@ Programmer's Guide</A>
PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。
PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。
<A
HREF=
"http://www.psn.co.jp/PostgreSQL/pgbash/"
>
http://www.psn.co.jp/PostgreSQL/pgbash/
</A>
<A
HREF=
"http://www.psn.co.jp/PostgreSQL/pgbash/"
>
http://www.psn.co.jp/PostgreSQL/pgbash/
</A>
Bashコマンドラインでpostgres に問い合わせできます。
Bashコマンドラインでpostgres に問い合わせできます。
Perl のモジュールは古くからある Pg と DBI ドライバの DBD::Pg とがあり、
いずれも Edmund Mergl 氏によるもので
<A
HREF=
"http://www.cpan.org/"
>
CPAN サイト
</A>
にあります。
]
]
</PRE></small>
</PRE></small>
...
@@ -706,7 +676,7 @@ PostgreSQL Administrator's Gide
...
@@ -706,7 +676,7 @@ PostgreSQL Administrator's Gide
<P>
既定の設定ではローカルマシンからの unix ドメインのソケット接続しか許しません。TCP/IP 接続を可能にするには postmaster が
<I>
-i
</I>
オプションで開始されていて、
<I>
pgsql/data/pg_hba.conf
</I>
ファイルに適切なホストの記載が追加されていることを確認してください。
<P>
既定の設定ではローカルマシンからの unix ドメインのソケット接続しか許しません。TCP/IP 接続を可能にするには postmaster が
<I>
-i
</I>
オプションで開始されていて、
<I>
pgsql/data/pg_hba.conf
</I>
ファイルに適切なホストの記載が追加されていることを確認してください。
<P>
<P>
<H4><A
NAME=
"3.7"
>
3.7
</A>
) より
よい性能を得るために、どのようにデータベース・エンジンを調整できま
すか?
<H4><A
NAME=
"3.7"
>
3.7
</A>
) より
良い性能を得るためには、データベース・エンジンをどのように調整すれば良いで
すか?
</H4>
</H4>
<P>
確かにインデックスは問い合わせの速度を増します。
<font
size=
-1
>
EXPLAIN
</font>
コマンドで PostgreSQL がどのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どのインデックスが使われているかを見ることができます。
<P>
確かにインデックスは問い合わせの速度を増します。
<font
size=
-1
>
EXPLAIN
</font>
コマンドで PostgreSQL がどのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どのインデックスが使われているかを見ることができます。
...
@@ -770,7 +740,7 @@ PostgreSQL
...
@@ -770,7 +740,7 @@ PostgreSQL
<P>
問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし
<font
size=
-1
>
ORDER BY
</font>
句を満たすためにバックエンドの
<I>
-S
</I>
パラメータで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイルがいくつか生成されます。
<P>
問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし
<font
size=
-1
>
ORDER BY
</font>
句を満たすためにバックエンドの
<I>
-S
</I>
パラメータで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイルがいくつか生成されます。
<P>
<P>
一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエンドが
潰れてしまうとそうなりません。もし、そのときバックエンドがひとつも走ってなければ、pg_tempNNN.NNファイルを消しても安全
です。
一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエンドが
クラッシュしてしまうとそうはなりません。そのときバックエンドがひとつも走ってなければ、pg_tempNNN.NNファイルを消しても大丈夫
です。
<small><PRE>
<small><PRE>
...
@@ -798,13 +768,13 @@ PostgreSQL
...
@@ -798,13 +768,13 @@ PostgreSQL
<P>
ロケールの設定を確かめて下さい。PostgreSQL は
<I>
postmaster
</I>
プロセスを走らせたユーザーのロケールの設定を使います。postgres とpsql には SET コマンドがあり、データ書式を制御できます。これらをあなたの操作環境に合わせて設定して下さい。
<P>
ロケールの設定を確かめて下さい。PostgreSQL は
<I>
postmaster
</I>
プロセスを走らせたユーザーのロケールの設定を使います。postgres とpsql には SET コマンドがあり、データ書式を制御できます。これらをあなたの操作環境に合わせて設定して下さい。
<P>
<P>
<H4><A
NAME=
"4.2"
>
4.2
</A>
) バイナリ・カーソルと通常
の
カーソルとの厳密な違いは何ですか?
<H4><A
NAME=
"4.2"
>
4.2
</A>
) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか?
</H4>
</H4>
<P>
詳述は、オンラインマニュアルで
<font
size=
-1
>
DECLARE
</font>
を見て下さい。
<P>
詳述は、オンラインマニュアルで
<font
size=
-1
>
DECLARE
</font>
を見て下さい。
<P>
<P>
<H4><A
NAME=
"4.3"
>
4.3
</A>
)
問い合わせの
最初の数行のみを
<font
size=
-1
>
SELECT
</font>
するにはどうしますか?
<H4><A
NAME=
"4.3"
>
4.3
</A>
) 最初の数行のみを
<font
size=
-1
>
SELECT
</font>
するにはどうしますか?
</H4>
</H4>
<P>
オンラインマニュアルで
<font
size=
-1
>
FETCH
</font>
を見てください。あるいは、SELECT ... LIMIT....を使ってみて下さい。
<P>
オンラインマニュアルで
<font
size=
-1
>
FETCH
</font>
を見てください。あるいは、SELECT ... LIMIT....を使ってみて下さい。
...
@@ -817,12 +787,12 @@ PostgreSQL
...
@@ -817,12 +787,12 @@ PostgreSQL
</H4>
</H4>
<P>
<P>
<I>
psql
</I>
のソースコード
が書かれた
<I>
pgsql/src/bin/psql/describe.c
</I>
ファイルを読むことができま
す。
<I>
psql
</I>
のソースコード
として書かれた
<I>
pgsql/src/bin/psql/describe.c
</I>
ファイルを読むことがその答えで
す。
そこには、psqlのバックスラッシュコマンドによる出力のための
<font
size=
-1
>
SQL
</font>
コマンドが含まれています。
<I>
psql
</I>
に
<I>
-E
</I>
オプションをつけて起動すれば、与えたコマンドを実行するための問い合わせが出力されます。
そこには、psqlのバックスラッシュコマンドによる出力のための
<font
size=
-1
>
SQL
</font>
コマンドが含まれています。
<I>
psql
</I>
に
<I>
-E
</I>
オプションをつけて起動すれば、与えたコマンドを実行するための問い合わせが出力されます。
<P>
<P>
<H4><A
NAME=
"4.5"
>
4.5
</A>
) テーブルから
の
列の削除はどのようにしますか?
<H4><A
NAME=
"4.5"
>
4.5
</A>
) テーブルから列の削除はどのようにしますか?
</H4>
</H4>
<P>
<font
size=
-1
>
ALTER TABLE DROP COLUMN
</font>
はサポートしていませんが、その代わりにこうします:
<P>
<font
size=
-1
>
ALTER TABLE DROP COLUMN
</font>
はサポートしていませんが、その代わりにこうします:
...
@@ -855,7 +825,7 @@ PostgreSQL
...
@@ -855,7 +825,7 @@ PostgreSQL
<P>
もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワップスペースの大きさにより制限されます。性能はこれらの値がことのほか大きな時に煽りを受けます。
<P>
もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワップスペースの大きさにより制限されます。性能はこれらの値がことのほか大きな時に煽りを受けます。
<P>
最大テーブルサイズの16TBはオペレーティングシステム
のラージ・ファイルサポートは必要としません。ラージ・テーブルは複数の1GBのファイルのように保存されます
。
<P>
最大テーブルサイズの16TBはオペレーティングシステム
による巨大ファイルのサポートは必要としません。巨大なテーブルは複数の1GBのファイルに分けて保存されますので、ファイルシステムの制限は重要ではありません
。
<P>
デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム数とが増加します。
<P>
デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム数とが増加します。
...
@@ -891,7 +861,7 @@ PostgreSQL
...
@@ -891,7 +861,7 @@ PostgreSQL
インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされるデータを含む以上、それなりに大きくなります。
インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされるデータを含む以上、それなりに大きくなります。
<P>
<P>
<H4><A
NAME=
"4.8"
>
4.8
</A>
) データベース内に定義されたテーブルやインデックスをどのように見つけ出しますか?
<H4><A
NAME=
"4.8"
>
4.8
</A>
) データベース内に定義されたテーブルやインデックスをどのように
して
見つけ出しますか?
</H4>
</H4>
<P>
<I>
psql
</I>
にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示します。バックスラッシュ・コマンドの種類を見るには \? を使って下さい。
<P>
<I>
psql
</I>
にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示します。バックスラッシュ・コマンドの種類を見るには \? を使って下さい。
...
@@ -905,7 +875,7 @@ PostgreSQL
...
@@ -905,7 +875,7 @@ PostgreSQL
<P>
列特定の最適化統計のために
<font
size=
-1
>
VACUUM ANALYZE
</font>
を使います。
<font
size=
-1
>
VACUUM ANALYZE
</font>
は複雑な複合結合(multi-join)問い合わせのために大切ですので、オブティマイザはそれぞれのテーブルから返される行の数を見積ることができ、特定の結合順序を選びます。バックエンドはそれ自身では列の統計を保持しないので、定期的にそれらを集めるためには
<font
size=
-1
>
VACUUM ANALYZE
</font>
を走らせなくてはなりません。
<P>
列特定の最適化統計のために
<font
size=
-1
>
VACUUM ANALYZE
</font>
を使います。
<font
size=
-1
>
VACUUM ANALYZE
</font>
は複雑な複合結合(multi-join)問い合わせのために大切ですので、オブティマイザはそれぞれのテーブルから返される行の数を見積ることができ、特定の結合順序を選びます。バックエンドはそれ自身では列の統計を保持しないので、定期的にそれらを集めるためには
<font
size=
-1
>
VACUUM ANALYZE
</font>
を走らせなくてはなりません。
<P>
インデックスは
<font
size=
-1
>
ORDER BY
</font>
操作のためには普通は使われません。すなわち、順次スキャンに続く明示的ソートは、ディスクアクセスがより少なくて済むので
、巨大なテーブルの全件をインデックススキャンするよりも高速です。
<P>
普通、インデックスは
<font
size=
-1
>
ORDER BY
</font>
や結合の操作のためには使われません。ランダムなディスクアクセスはとても遅いので、順次スキャンに続く明示的ソートは
、巨大なテーブルの全件をインデックススキャンするよりも高速です。
<P>
<font
size=
-1
>
LIKE
</font>
あるいは
<I>
~
</I>
のようなワイルドカード演算子(wild-card operators)を使うとき、検索の開始が文字列の始めの部分に固定されているときにのみ、インデックスが使われます。
<P>
<font
size=
-1
>
LIKE
</font>
あるいは
<I>
~
</I>
のようなワイルドカード演算子(wild-card operators)を使うとき、検索の開始が文字列の始めの部分に固定されているときにのみ、インデックスが使われます。
そういうわけで、インデックスを使うためには、
<font
size=
-1
>
LIKE
</font>
検索では
<I>
%
</I>
で始めないようにして、また、
<I>
~
</I>
(正規表現検索)は
<I>
^
</I>
で始めるようにするべきです。
そういうわけで、インデックスを使うためには、
<font
size=
-1
>
LIKE
</font>
検索では
<I>
%
</I>
で始めないようにして、また、
<I>
~
</I>
(正規表現検索)は
<I>
^
</I>
で始めるようにするべきです。
...
@@ -962,13 +932,31 @@ Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
...
@@ -962,13 +932,31 @@ Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
<P>
GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で問合わせを高速化します。これにより、しらみつぶしに探索を行なわなくても、大きな結合(join queries)を扱うことができるようになります。
<P>
GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で問合わせを高速化します。これにより、しらみつぶしに探索を行なわなくても、大きな結合(join queries)を扱うことができるようになります。
<P>
<P>
<H4><A
NAME=
"4.13"
>
4.13
</A>
) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実現しますか?
<H4><A
NAME=
"4.13"
>
4.13
</A>
) 正規表現での検索や大文字と小文字とを区別しない正規表現検索はどのように実現しますか?
大文字と小文字とを区別しない検索のためのインデックスはどのように使いますか?
</H4>
</H4>
<P>
<P>
<I>
~
</I>
演算子は正規表現照合を行ない、
<I>
~*
</I>
は大文字と小文字を区別しない(case-insensitive)正規表現照合を行います。 PostgreSQL 7.1 以降では、大文字と小文字を区別しない
<font
size=
-1
>
LIKE
</font>
演算子を
<font
size=
-1
>
ILIKE
</font>
といいます。
<I>
~
</I>
演算子は正規表現照合を行ない、
<I>
~*
</I>
は大文字と小文字を区別しない(case-insensitive)正規表現照合を行います。 PostgreSQL 7.1 以降では、大文字と小文字を区別しない
<font
size=
-1
>
LIKE
</font>
演算子を
<font
size=
-1
>
ILIKE
</font>
といいます。
<P>
大文字と小文字を区別しない等値比較次のように表現できる:
<PRE>
SELECT *
FROM tab
WHERE lower(col) = 'abc'
</PRE>
標準インデックスでは使われず、しかしながら、もし関数インデックスを
作ったならそれが使われるでしょう。
<PRE>
CREATE INDEX tabindex on tab (lower(col));
</PRE>
<PRE>
<PRE>
WHERE lower(textfield) LIKE lower(pattern)
WHERE lower(textfield) LIKE lower(pattern)
</PRE>
</PRE>
...
@@ -1026,18 +1014,16 @@ BYTEA bytea
...
@@ -1026,18 +1014,16 @@ BYTEA bytea
Bruce Momjian の
<A
HREF=
"http://www.PostgreSQL.org/docs/aw_pgsql_book"
>
(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rows
</A>
の章にありあます。
Bruce Momjian の
<A
HREF=
"http://www.PostgreSQL.org/docs/aw_pgsql_book"
>
(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rows
</A>
の章にありあます。
<H4><A
NAME=
"4.16.2"
>
4.16.2
</A>
)
<font
size=
-1
>
SERIAL
</font>
インサートの値は
どうすれば得られますか?
<H4><A
NAME=
"4.16.2"
>
4.16.2
</A>
)
<font
size=
-1
>
SERIAL
</font>
データ型に挿入される値は、
どうすれば得られますか?
</H4><P>
</H4><P>
ひとつの方法は、
<I>
nextval()
</I>
関数を使ってその値を挿入する
<I>
前(before)に
</I>
SEQUENCE オブジェクトから次の
<font
size=
-1
>
SERIAL
</font>
値を取り出し、それから実際に挿入をすることです。
<A
HREF=
"#4.16.1"
>
4.16.1
</A>
の例で使ったテーブルを使うとすると、次のようになります。
ひとつの方法は、
<I>
nextval()
</I>
関数で挿入する
<I>
前に(before)
</I>
SEQUENCEオブジェクトから次の
<font
size=
-1
>
SERIAL
</font>
値を取り出し、それから実際に挿入をすることでしょう。
<A
HREF=
"#4.16.1"
>
4.16.1
</A>
の例で使ったテーブルを使うとすると、次のようになるでしょう。
<PRE>
<PRE>
$newSerialID = nextval('person_id_seq');
$newSerialID = nextval('person_id_seq');
INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal');
INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal');
</PRE>
</PRE>
そうして、
<tt>
$newSerialID
</tt>
に保存した新しい値を他の問い合わせに(たとえば、
<tt>
person
</tt>
テーブルに対する外部
鍵
(foreign key)のように)使うとよいでしょう。自動的に作られた
<font
size=
-1
>
SEQUENCE
</font>
オブジェクトの名前は、
<
<I>
table
</I>
>
_
<
<I>
serialcolumn
</I>
>
_
<I>
seq
</I>
のようになり、このうち、
<I>
table
</I>
と
<I>
serialcolumn
</I>
はそれぞれテーブルの名前と
<font
size=
-1
>
SERIAL
</font>
列の名前です。
そうして、
<tt>
$newSerialID
</tt>
に保存した新しい値を他の問い合わせに(たとえば、
<tt>
person
</tt>
テーブルに対する外部
キー
(foreign key)のように)使うとよいでしょう。自動的に作られた
<font
size=
-1
>
SEQUENCE
</font>
オブジェクトの名前は、
<
<I>
table
</I>
>
_
<
<I>
serialcolumn
</I>
>
_
<I>
seq
</I>
のようになり、このうち、
<I>
table
</I>
と
<I>
serialcolumn
</I>
はそれぞれテーブルの名前と
<font
size=
-1
>
SERIAL
</font>
列の名前です。
<P>
<P>
あるいは、与えられた
<font
size=
-1
>
SERIAL
</font>
値を、それが既定値として挿入された
<I>
後で(after)
</I>
、
<I>
currval
</I>
() 関数を使って取り出すこともできます。たとえば、
あるいは、与えられた
<font
size=
-1
>
SERIAL
</font>
値を、それが既定値として挿入された
<I>
後で(after)
</I>
、
<I>
currval
</I>
() 関数を使って取り出すこともできます。たとえば、
...
@@ -1047,27 +1033,29 @@ BYTEA bytea
...
@@ -1047,27 +1033,29 @@ BYTEA bytea
$newID = currval('person_id_seq');
$newID = currval('person_id_seq');
</PRE>
</PRE>
最後に、
<font
size=
-1
>
INSERT
</font>
文から返る
<A
HREF=
"#4.17"
><font
size=
-1
>
OID
</font></A>
を使って、既定値をみつけることもできますが、しかし、これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の DBD::Pg モジュールを使えば、$sth->execute() の後に $sth-
&
gt{pg_oid_status} を経由してその OID 値を使えるようにすることはできます。
最後に、
<font
size=
-1
>
INSERT
</font>
文から返る
<A
HREF=
"#4.17"
><font
size=
-1
>
OID
</font></A>
を使って、既定値をみつけることもできますが、しかし、これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の
作った
DBD::Pg モジュールを使えば、$sth->execute() の後に $sth-
&
gt{pg_oid_status} を経由してその OID 値を使えるようにすることはできます。
<P>
<P>
<H4><A
NAME=
"4.16.3"
>
4.16.3
</A>
) 他のユーザとの競合状態を避けるためには、
<I>
currval()
</I>
と
<I>
nextval()
</I>
は使わないほうがよいのでしょうか?
<H4><A
NAME=
"4.16.3"
>
4.16.3
</A>
) 他のユーザとの競合状態を避けるためには、
<I>
currval()
</I>
と
<I>
nextval()
</I>
は使わないほうがよいのでしょうか?
</H4><P>
</H4><P>
ありません。バックエンドで処理されています
。
バックエンドが上手に処理するので、競合状態になることは有りません
。
<P>
<P>
<H4><A
NAME=
"4.17"
>
4.17
</A>
)
<font
size=
-1
>
OID
</font>
とは何ですか?
<font
size=
-1
>
TID
</font>
とは何ですか?
<H4><A
NAME=
"4.17"
>
4.17
</A>
)
<font
size=
-1
>
OID
</font>
とは何ですか?
<font
size=
-1
>
TID
</font>
とは何ですか?
</H4>
</H4>
<P>
<font
size=
-1
>
OID
</font>
とは一意の行 ID に対する PostgreSQL の答えです。PostgreSQL の中でつくられるすべての行は一意の
<font
size=
-1
>
OID
</font>
を得ます。
<I>
initdb
</I>
で(
<I>
backend/access/transam.h
</I>
から)発生される
<font
size=
-1
>
OID
</font>
はすべて 16384より小さな値です。
<I>
initdb
</I>
後のすべての
<font
size=
-1
>
OID
</font>
(ユーザ作成)はそれ以上の値になります。既定では、これらすべての
<font
size=
-1
>
OID
</font>
はテーブル内やデータベース内に留まらず、PostgreSQL のそのインストレーション全体内で一意であります。
<P>
<font
size=
-1
>
OID
</font>
とは一意の行 ID に対する PostgreSQL の答えです。PostgreSQL の中でつくられるすべての行は一意の
<font
size=
-1
>
OID
</font>
を得ます。
<I>
initdb
</I>
で発生される
<font
size=
-1
>
OID
</font>
はすべて 16384 (
<I>
backend/access/transam.h
</I>
から)より小さな値です。
<I>
initdb
</I>
後のすべての
<font
size=
-1
>
OID
</font>
(ユーザ作成)はそれ以上の値になります。
既定では、これらすべての
<font
size=
-1
>
OID
</font>
は一つのデーブルやデータベース内に留まらず、PostgreSQL インストレーション全体の中で一意です。
<P>
PostgreSQL はテーブル間の行を結びつけるために、そのシステムテーブル内に
<font
size=
-1
>
OID
</font>
を使います。この
<font
size=
-1
>
OID
</font>
は特定のユーザの行を識別するためや結合の中で使われることができます。
<font
size=
-1
>
OID
</font>
の値を保存するためには
<I>
OID
</I>
型を列に使うことを奨めます。より速くアクセスするために
<I>
OID
</I>
フィールドにインデックスを作ることができます。
<P>
PostgreSQL はテーブル間の行を結びつけるために、そのシステムテーブル内に
<font
size=
-1
>
OID
</font>
を使います。この
<font
size=
-1
>
OID
</font>
は特定のユーザの行を識別するためや結合の中で使われることができます。
<font
size=
-1
>
OID
</font>
の値を保存するためには
<I>
OID
</I>
型を列に使うことを奨めます。より速くアクセスするために
<I>
OID
</I>
フィールドにインデックスを作ることができます。
<P>
O
<font
size=
-1
>
ID
</font>
は、全てのデータベースから使われる中央領域から、全ての新しい行に割り当てられます。
<font
size=
-1
>
OID
</font>
を他の何かに変えたい、もしくは元の
<font
size=
-1
>
OID
</font>
でテーブルをコピーしたいのなら、そうできない理由はありません。
O
<font
size=
-1
>
ID
</font>
は、全てのデータベースで使われる中央領域から、全ての新しい行に割り当てられます。
<font
size=
-1
>
OID
</font>
を他の何かに変えたい、あるいは元の
<font
size=
-1
>
OID
</font>
もテーブルと一緒にコピーしたいのなら、できなくはありません。
<PRE>
<PRE>
CREATE TABLE new
_table
(old_oid oid, mycol int);
CREATE TABLE new
(old_oid oid, mycol int);
SELECT old_oid, mycol INTO new FROM old;
SELECT old_oid, mycol INTO new FROM old;
COPY new TO '/tmp/pgtable';
COPY new TO '/tmp/pgtable';
DELETE FROM new;
DELETE FROM new;
...
@@ -1108,9 +1096,9 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a>
...
@@ -1108,9 +1096,9 @@ http://www.comptechnews.com/~reaster/dbdesign.html</a>
<H4><A
NAME=
"4.19"
>
4.19
</A>
) エラーメッセージ
<I>
"ERROR: Memory exhausted in AllocSetAlloc()"
</I>
が出るのはなぜですか?
<H4><A
NAME=
"4.19"
>
4.19
</A>
) エラーメッセージ
<I>
"ERROR: Memory exhausted in AllocSetAlloc()"
</I>
が出るのはなぜですか?
</H4>
</H4>
<P>
<P>
システムの仮想メモリーを全て使い果たしてしまっている可能性があるか、あるいは
もし、7.1 よりも古いバージョンをお使いの場合は、アップデートによってこの問題を
カーネルがあるリソースについて低い制限値を持ってい
る可能性があります。
解決できるでしょう。それと、システムの仮想メモリーを全て使い果たしてしまっている可能性があるか、カーネルがあるリソースについてもつ制限値が低すぎ
る可能性があります。
<I>
postmaster
</I>
を
開始
する前にこれを試してみて下さい:
<I>
postmaster
</I>
を
始動
する前にこれを試してみて下さい:
<PRE>
<PRE>
ulimit -d 262144
ulimit -d 262144
...
@@ -1202,11 +1190,11 @@ PostgreSQL 7.1
...
@@ -1202,11 +1190,11 @@ PostgreSQL 7.1
<H4><A
NAME=
"5.1"
>
5.1
</A>
) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうのはなぜですか?
<H4><A
NAME=
"5.1"
>
5.1
</A>
) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうのはなぜですか?
</H4>
</H4>
<P>
問題は色々と考えられます
。
まず最初に、作成したユーザ定義関数を単独のテストプログラムにして試してみて下さい。
<P>
問題は色々と考えられます
が、
まず最初に、作成したユーザ定義関数を単独のテストプログラムにして試してみて下さい。
<P>
<P>
<H4><A
NAME=
"5.2"
>
5.2
</A>
) PostgreSQL 用に書いた
粋な新しい型や関数は、どうすれば寄贈できますか
?
<H4><A
NAME=
"5.2"
>
5.2
</A>
) PostgreSQL 用に書いた
ちょっと素敵な新しい型や関数を提供してプロジェクトに貢献したいのですが
?
</H4>
</H4>
<P>
皆さんの行なった拡張を、
<I>
pgsql-hackers
</I>
メーリング・リストに送ってください。そして、ゆくゆくはそうした拡張が
<I>
contrib/
</I>
サブディレクトリの中に入ることになるでしょう。
<P>
皆さんの行なった拡張を、
<I>
pgsql-hackers
</I>
メーリング・リストに送ってください。そして、ゆくゆくはそうした拡張が
<I>
contrib/
</I>
サブディレクトリの中に入ることになるでしょう。
...
@@ -1227,6 +1215,39 @@ PostgreSQL 7.1
...
@@ -1227,6 +1215,39 @@ PostgreSQL 7.1
<small><PRE>
<small><PRE>
[訳注:
[訳注:
日本語版の製作については以下の通りです。
最終更新日: 2001年07月05日
翻訳者: 桑村 潤 (
<A
HREF=
"mailto:juk@jp.postgresql.org"
>
Jun Kuwamura
<
juk@jp.postgresql.org
>
</A>
)
このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます):
田仲 稔(
<A
HREF=
"mailto:Tanaka.Minoru@keiken.co.jp"
>
Minoru Tanaka
<
Tanaka.Minoru@keiken.co.jp
>
</A>
)
石井 達夫(
<A
HREF=
"mailto:t-ishii@sra.co.jp"
>
Tatsuo Ishii
<
t-ishii@sra.co.jp
>
</A>
)
齊藤 知人(
<A
HREF=
"mailto:tomos@elelab.nsc.co.jp"
>
Tomohito Saitoh
<
tomos@elelab.nsc.co.jp
>
</A>
)
馬場 肇(
<A
HREF=
"mailto:baba@kusastro.kyoto-u.ac.jp"
>
Hajime Baba
<
baba@kusastro.kyoto-u.ac.jp
>
</A>
)
岡本 一幸(
<A
HREF=
"mailto:kokamoto@itg.hitachi.co.jp"
>
Kazuyuki Okamoto
<
kokamoto@itg.hitachi.co.jp
>
</A>
)
小菅 昭一(
<A
HREF=
"mailto:s-kosuge@str.hitachi.co.jp"
>
Shoichi Kosuge
<
s-kosuge@str.hitachi.co.jp
>
</A>
)
山下 義之(
<A
HREF=
"mailto:dica@eurus.dti.ne.jp"
>
Yoshiyuki Yamashita
<
dica@eurus.dti.ne.jp
>
</A>
)
境 真太郎(
<A
HREF=
"mailto:s_sakai@mxn.mesh.ne.jp"
>
Sintaro Sakai
<
s_sakai@mxn.mesh.ne.jp
>
</A>
)
生越 昌己(
<A
HREF=
"mailto:ogochan@zetabits.com"
>
Masami Ogoshi
<
ogochan@zetabits.com
>
</A>
)
石川 俊行(
<A
HREF=
"mailto:tosiyuki@gol.com"
>
Toshiyuki Ishikawa
<
tosiyuki@gol.com
>
</A>
)
本田 茂広(
<A
HREF=
"mailto:fwif0083@mb.infoweb.ne.jp"
>
Shigehiro Honda
<
fwif0083@mb.infoweb.ne.jp
>
</A>
)
せせ じゅん(
<A
HREF=
"mailto:sesejun@linet.gr.jp"
>
Jun Sese
<
sesejun@linet.gr.jp
>
</A>
)
神谷 英孝(
<A
HREF=
"mailto:hkamiya@catvmics.ne.jp"
>
Hidetaka Kamiya
<
hkamiya@catvmics.ne.jp
>
</A>
)
をはじめ、ポストグレスに関する話題豊富な
<A
HREF=
"http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html"
>
日本語ポストグレス・メーリングリスト
</A>
、
和訳のきっかけを作ってくれた
<A
HREF=
"http://jf.linux.or.jp/"
>
JF(Linux Japanese FAQ Mailing List)プロジェクト
</A>
、その他、
直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの
皆さんに感謝します。
日本語版のこの文書は、以下からもたどれます。
<A
HREF=
"http://www.rccm.co.jp/~juk/pgsql/"
>
http://www.rccm.co.jp/~juk/pgsql/
</A>
(FAQ和訳 PostgreSQL についてよくある質問)
<A
HREF=
"http://www.linux.or.jp/JF/"
>
http://www.linux.or.jp/JF/
</A>
(PostgreSQL-FAQ.j)
<A
HREF=
"http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/"
>
http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/
</A>
なお、この和訳に関するご意見は(
<A
HREF=
"mailto:juk@jp.postgresql.org"
>
juk@jp.postgresql.org
</A>
)までお寄せ下さい。
]
]
</PRE></small>
</PRE></small>
...
...
src/backend/libpq/auth.c
View file @
bca9d0cd
...
@@ -8,17 +8,22 @@
...
@@ -8,17 +8,22 @@
*
*
*
*
* IDENTIFICATION
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.6
2 2001/08/17 15:44:1
7 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.6
3 2001/08/21 00:33:2
7 momjian Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
#include "postgres.h"
#include "postgres.h"
#include <sys/types.h>
/* needed by in.h on Ultrix */
#include <sys/types.h>
#include <sys/socket.h>
/* for SCM_CREDS */
#ifdef SCM_CREDS
#include <sys/uio.h>
/* for struct iovec */
#include <sys/ucred.h>
#include <errno.h>
#endif
#include <netinet/in.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
#include "libpq/auth.h"
#include "libpq/auth.h"
#include "libpq/crypt.h"
#include "libpq/crypt.h"
#include "libpq/hba.h"
#include "libpq/hba.h"
...
@@ -28,12 +33,10 @@
...
@@ -28,12 +33,10 @@
#include "miscadmin.h"
#include "miscadmin.h"
static
void
sendAuthRequest
(
Port
*
port
,
AuthRequest
areq
);
static
void
sendAuthRequest
(
Port
*
port
,
AuthRequest
areq
);
static
int
checkPassword
(
Port
*
port
,
char
*
user
,
char
*
password
);
static
int
checkPassword
(
Port
*
port
,
char
*
user
,
char
*
password
);
static
int
old_be_recvauth
(
Port
*
port
);
static
int
old_be_recvauth
(
Port
*
port
);
static
int
map_old_to_new
(
Port
*
port
,
UserAuth
old
,
int
status
);
static
int
map_old_to_new
(
Port
*
port
,
UserAuth
old
,
int
status
);
static
void
auth_failed
(
Port
*
port
);
static
void
auth_failed
(
Port
*
port
);
static
int
recv_and_check_password_packet
(
Port
*
port
);
static
int
recv_and_check_password_packet
(
Port
*
port
);
static
int
recv_and_check_passwordv0
(
Port
*
port
);
static
int
recv_and_check_passwordv0
(
Port
*
port
);
...
@@ -493,6 +496,26 @@ ClientAuthentication(Port *port)
...
@@ -493,6 +496,26 @@ ClientAuthentication(Port *port)
break
;
break
;
case
uaIdent
:
case
uaIdent
:
#if !defined(SO_PEERCRED) && defined(SCM_CREDS)
/*
* If we are doing ident on unix-domain sockets,
* use SCM_CREDS only if it is defined and SO_PEERCRED isn't.
*/
#ifdef fc_uid
/* Receive credentials on next message receipt, BSD/OS */
{
int
on
=
1
;
if
(
setsockopt
(
port
->
sock
,
0
,
LOCAL_CREDS
,
&
on
,
sizeof
(
on
))
<
0
)
{
elog
(
FATAL
,
"pg_local_sendauth: can't do setsockopt: %s
\n
"
,
strerror
(
errno
));
return
;
}
}
#endif
if
(
port
->
raddr
.
sa
.
sa_family
==
AF_UNIX
)
sendAuthRequest
(
port
,
AUTH_REQ_SCM_CREDS
);
#endif
status
=
authident
(
port
);
status
=
authident
(
port
);
break
;
break
;
...
@@ -676,3 +699,4 @@ map_old_to_new(Port *port, UserAuth old, int status)
...
@@ -676,3 +699,4 @@ map_old_to_new(Port *port, UserAuth old, int status)
return
status
;
return
status
;
}
}
src/backend/libpq/hba.c
View file @
bca9d0cd
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
*
*
*
*
* IDENTIFICATION
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.6
4 2001/08/16 16:24:15
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.6
5 2001/08/21 00:33:27
momjian Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
...
@@ -18,9 +18,13 @@
...
@@ -18,9 +18,13 @@
#include <errno.h>
#include <errno.h>
#include <pwd.h>
#include <pwd.h>
#include <sys/types.h>
#include <fcntl.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/socket.h>
/* for SCM_CREDS */
#ifdef SCM_CREDS
#include <sys/uio.h>
/* for struct iovec */
#include <sys/ucred.h>
#endif
#include <netinet/in.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <unistd.h>
...
@@ -876,39 +880,103 @@ ident_unix(int sock, char *ident_user)
...
@@ -876,39 +880,103 @@ ident_unix(int sock, char *ident_user)
{
{
/* We didn't get a valid credentials struct. */
/* We didn't get a valid credentials struct. */
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
"
Could not get valid credentials from the UNIX socket
: %s
\n
"
,
"
ident_unix: error receiving credentials
: %s
\n
"
,
strerror
(
errno
));
strerror
(
errno
));
fputs
(
PQerrormsg
,
stderr
);
fputs
(
PQerrormsg
,
stderr
);
pqdebug
(
"%s"
,
PQerrormsg
);
pqdebug
(
"%s"
,
PQerrormsg
);
return
false
;
return
false
;
}
}
/* Convert UID to user login name */
pass
=
getpwuid
(
peercred
.
uid
);
pass
=
getpwuid
(
peercred
.
uid
);
if
(
pass
==
NULL
)
if
(
pass
==
NULL
)
{
{
/* Error - no username with the given uid */
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
"There is no entry in /etc/passwd with the socket's uid
\n
"
);
"ident_unix: unknown local user with uid %d
\n
"
,
fputs
(
PQerrormsg
,
stderr
);
fputs
(
PQerrormsg
,
stderr
);
pqdebug
(
"%s"
,
PQerrormsg
);
pqdebug
(
"%s"
,
PQerrormsg
);
return
false
;
return
false
;
}
}
StrNCpy
(
ident_user
,
pass
->
pw_name
,
IDENT_USERNAME_MAX
);
StrNCpy
(
ident_user
,
pass
->
pw_name
,
IDENT_USERNAME_MAX
+
1
);
return
true
;
return
true
;
#else
/* not SO_PEERCRED */
#elif defined(SCM_CREDS)
struct
msghdr
msg
;
/* Credentials structure */
#ifndef fc_uid
typedef
struct
cmsgcred
Cred
;
#define cruid cmcred_uid
#else
typedef
struct
fcred
Cred
;
#define cruid fc_uid
#endif
Cred
*
cred
;
/* Compute size without padding */
char
cmsgmem
[
sizeof
(
struct
cmsghdr
)
+
sizeof
(
Cred
)];
/* Point to start of first structure */
struct
cmsghdr
*
cmsg
=
(
struct
cmsghdr
*
)
cmsgmem
;
struct
iovec
iov
;
char
buf
;
struct
passwd
*
pw
;
memset
(
&
msg
,
0
,
sizeof
(
msg
));
msg
.
msg_iov
=
&
iov
;
msg
.
msg_iovlen
=
1
;
msg
.
msg_control
=
(
char
*
)
cmsg
;
msg
.
msg_controllen
=
sizeof
(
cmsgmem
);
memset
(
cmsg
,
0
,
sizeof
(
cmsgmem
));
/*
* The one character which is received here is not meaningful;
* its purposes is only to make sure that recvmsg() blocks
* long enough for the other side to send its credentials.
*/
iov
.
iov_base
=
&
buf
;
iov
.
iov_len
=
1
;
if
(
recvmsg
(
sock
,
&
msg
,
0
)
<
0
||
cmsg
->
cmsg_len
<
sizeof
(
cmsgmem
)
||
cmsg
->
cmsg_type
!=
SCM_CREDS
)
{
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
"ident_unix: error receiving credentials: %s
\n
"
,
strerror
(
errno
));
fputs
(
PQerrormsg
,
stderr
);
pqdebug
(
"%s"
,
PQerrormsg
);
return
false
;
}
cred
=
(
Cred
*
)
CMSG_DATA
(
cmsg
);
pw
=
getpwuid
(
cred
->
fc_uid
);
if
(
pw
==
NULL
)
{
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
"ident_unix: unknown local user with uid %d
\n
"
,
cred
->
fc_uid
);
fputs
(
PQerrormsg
,
stderr
);
pqdebug
(
"%s"
,
PQerrormsg
);
return
false
;
}
StrNCpy
(
ident_user
,
pw
->
pw_name
,
IDENT_USERNAME_MAX
+
1
);
return
true
;
#else
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
"
IDENT
auth is not supported on local connections on this platform
\n
"
);
"
'ident'
auth is not supported on local connections on this platform
\n
"
);
fputs
(
PQerrormsg
,
stderr
);
fputs
(
PQerrormsg
,
stderr
);
pqdebug
(
"%s"
,
PQerrormsg
);
pqdebug
(
"%s"
,
PQerrormsg
);
return
false
;
return
false
;
#endif
/* SO_PEERCRED */
#endif
}
}
/*
/*
...
...
src/backend/libpq/pg_hba.conf.sample
View file @
bca9d0cd
...
@@ -127,12 +127,12 @@
...
@@ -127,12 +127,12 @@
# ident: For TCP/IP connections, authentication is done by contacting
# ident: For TCP/IP connections, authentication is done by contacting
# the ident server on the client host. (CAUTION: this is only
# the ident server on the client host. (CAUTION: this is only
# as secure as the client machine!) On machines that support
# as secure as the client machine!) On machines that support
# SO_PEERCRED
socket requests, this method also works for
# SO_PEERCRED
or SCM_CREDS socket requests, this method also
#
local Unix-domain connections. AUTH_ARGUMENT is required:
#
works for local Unix-domain connections. AUTH_ARGUMENT is
#
it determines how to map remote user names to Postgres user
#
required: it determines how to map remote user names to
#
names. The AUTH_ARGUMENT is a map name found in the
#
Postgres user names. The AUTH_ARGUMENT is a map name found
#
$PGDATA/pg_ident.conf file. The connection is accepted if
#
in the $PGDATA/pg_ident.conf file. The connection is accepted
# that file contains an entry for this map name with the
#
if
that file contains an entry for this map name with the
# ident-supplied username and the requested Postgres username.
# ident-supplied username and the requested Postgres username.
# The special map name "sameuser" indicates an implied map
# The special map name "sameuser" indicates an implied map
# (not in pg_ident.conf) that maps each ident username to the
# (not in pg_ident.conf) that maps each ident username to the
...
...
src/include/libpq/pqcomm.h
View file @
bca9d0cd
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* $Id: pqcomm.h,v 1.5
7 2001/08/16 04:27:18
momjian Exp $
* $Id: pqcomm.h,v 1.5
8 2001/08/21 00:33:27
momjian Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
...
@@ -133,6 +133,7 @@ typedef struct StartupPacket
...
@@ -133,6 +133,7 @@ typedef struct StartupPacket
#define AUTH_REQ_PASSWORD 3
/* Password */
#define AUTH_REQ_PASSWORD 3
/* Password */
#define AUTH_REQ_CRYPT 4
/* crypt password */
#define AUTH_REQ_CRYPT 4
/* crypt password */
#define AUTH_REQ_MD5 5
/* md5 password */
#define AUTH_REQ_MD5 5
/* md5 password */
#define AUTH_REQ_SCM_CREDS 6
/* transfer SCM credentials */
typedef
uint32
AuthRequest
;
typedef
uint32
AuthRequest
;
...
...
src/interfaces/libpq/fe-auth.c
View file @
bca9d0cd
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
* exceed INITIAL_EXPBUFFER_SIZE (currently 256 bytes).
* exceed INITIAL_EXPBUFFER_SIZE (currently 256 bytes).
*
*
* IDENTIFICATION
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.5
5 2001/08/17 15:40:0
7 momjian Exp $
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.5
6 2001/08/21 00:33:2
7 momjian Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
...
@@ -30,6 +30,7 @@
...
@@ -30,6 +30,7 @@
#include "postgres_fe.h"
#include "postgres_fe.h"
/* XXX is there a reason these appear before the system defines? */
#include "libpq-fe.h"
#include "libpq-fe.h"
#include "libpq-int.h"
#include "libpq-int.h"
#include "fe-auth.h"
#include "fe-auth.h"
...
@@ -40,6 +41,13 @@
...
@@ -40,6 +41,13 @@
#else
#else
#include <unistd.h>
#include <unistd.h>
#include <fcntl.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
/* for SCM_CREDS */
#ifdef SCM_CREDS
#include <sys/uio.h>
/* for struct iovec */
#include <sys/ucred.h>
#endif
#include <sys/param.h>
/* for MAXHOSTNAMELEN on most */
#include <sys/param.h>
/* for MAXHOSTNAMELEN on most */
#ifndef MAXHOSTNAMELEN
#ifndef MAXHOSTNAMELEN
#include <netdb.h>
/* for MAXHOSTNAMELEN on some */
#include <netdb.h>
/* for MAXHOSTNAMELEN on some */
...
@@ -428,6 +436,53 @@ pg_krb5_sendauth(char *PQerrormsg, int sock,
...
@@ -428,6 +436,53 @@ pg_krb5_sendauth(char *PQerrormsg, int sock,
#endif
/* KRB5 */
#endif
/* KRB5 */
#ifdef SCM_CREDS
static
int
pg_local_sendauth
(
char
*
PQerrormsg
,
PGconn
*
conn
)
{
char
buf
;
struct
iovec
iov
;
struct
msghdr
msg
;
#ifndef fc_uid
/* Prevent padding */
char
cmsgmem
[
sizeof
(
struct
cmsghdr
)
+
sizeof
(
struct
cmsgcred
)];
/* Point to start of first structure */
struct
cmsghdr
*
cmsg
=
(
struct
cmsghdr
*
)
cmsgmem
;
#endif
/*
* The backend doesn't care what we send here, but it wants
* exactly one character to force recvmsg() to block and wait
* for us.
*/
buf
=
'\0'
;
iov
.
iov_base
=
&
buf
;
iov
.
iov_len
=
1
;
memset
(
&
msg
,
0
,
sizeof
(
msg
));
msg
.
msg_iov
=
&
iov
;
msg
.
msg_iovlen
=
1
;
#ifndef fc_uid
/* Create control header, FreeBSD */
msg
.
msg_control
=
cmsg
;
msg
.
msg_controllen
=
sizeof
(
cmsgmem
);
memset
(
cmsg
,
0
,
sizeof
(
cmsgmem
));
cmsg
.
hdr
.
cmsg_len
=
sizeof
(
cmsgmem
);
cmsg
.
hdr
.
cmsg_level
=
SOL_SOCKET
;
cmsg
.
hdr
.
cmsg_type
=
SCM_CREDS
;
#endif
if
(
sendmsg
(
conn
->
sock
,
&
msg
,
0
)
==
-
1
)
{
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
"pg_local_sendauth: sendmsg: %s
\n
"
,
strerror
(
errno
));
return
STATUS_ERROR
;
}
return
STATUS_OK
;
}
#endif
static
int
static
int
pg_password_sendauth
(
PGconn
*
conn
,
const
char
*
password
,
AuthRequest
areq
)
pg_password_sendauth
(
PGconn
*
conn
,
const
char
*
password
,
AuthRequest
areq
)
{
{
...
@@ -473,12 +528,13 @@ pg_password_sendauth(PGconn *conn, const char *password, AuthRequest areq)
...
@@ -473,12 +528,13 @@ pg_password_sendauth(PGconn *conn, const char *password, AuthRequest areq)
crypt_pwd
=
crypt
(
password
,
salt
);
crypt_pwd
=
crypt
(
password
,
salt
);
break
;
break
;
}
}
default
:
case
AUTH_REQ_PASSWORD
:
/* discard const so we can assign it */
/* discard const so we can assign it */
crypt_pwd
=
(
char
*
)
password
;
crypt_pwd
=
(
char
*
)
password
;
break
;
break
;
default:
return
STATUS_ERROR
;
}
}
ret
=
pqPacketSend
(
conn
,
crypt_pwd
,
strlen
(
crypt_pwd
)
+
1
);
ret
=
pqPacketSend
(
conn
,
crypt_pwd
,
strlen
(
crypt_pwd
)
+
1
);
if
(
areq
==
AUTH_REQ_MD5
)
if
(
areq
==
AUTH_REQ_MD5
)
free
(
crypt_pwd
);
free
(
crypt_pwd
);
...
@@ -551,6 +607,18 @@ fe_sendauth(AuthRequest areq, PGconn *conn, const char *hostname,
...
@@ -551,6 +607,18 @@ fe_sendauth(AuthRequest areq, PGconn *conn, const char *hostname,
return
STATUS_ERROR
;
return
STATUS_ERROR
;
}
}
break
;
break
;
case
AUTH_REQ_SCM_CREDS
:
#ifdef SCM_CREDS
if
(
pg_local_sendauth
(
PQerrormsg
,
conn
)
!=
STATUS_OK
)
return
STATUS_ERROR
;
#else
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
libpq_gettext
(
"SCM_CRED authentication method not supported
\n
"
));
return
STATUS_ERROR
;
#endif
break
;
default:
default:
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
snprintf
(
PQerrormsg
,
PQERRORMSG_LENGTH
,
libpq_gettext
(
"authentication method %u not supported
\n
"
),
areq
);
libpq_gettext
(
"authentication method %u not supported
\n
"
),
areq
);
...
...
src/interfaces/odbc/connection.c
View file @
bca9d0cd
...
@@ -726,6 +726,11 @@ CC_connect(ConnectionClass *self, char do_password)
...
@@ -726,6 +726,11 @@ CC_connect(ConnectionClass *self, char do_password)
self
->
errornumber
=
CONN_AUTH_TYPE_UNSUPPORTED
;
self
->
errornumber
=
CONN_AUTH_TYPE_UNSUPPORTED
;
return
0
;
return
0
;
case
AUTH_REQ_SCM_CREDS
:
self
->
errormsg
=
"Unix socket credential authentication not supported"
;
self
->
errornumber
=
CONN_AUTH_TYPE_UNSUPPORTED
;
return
0
;
default:
default:
self
->
errormsg
=
"Unknown authentication type"
;
self
->
errormsg
=
"Unknown authentication type"
;
self
->
errornumber
=
CONN_AUTH_TYPE_UNSUPPORTED
;
self
->
errornumber
=
CONN_AUTH_TYPE_UNSUPPORTED
;
...
...
src/interfaces/odbc/connection.h
View file @
bca9d0cd
...
@@ -94,6 +94,7 @@ typedef enum
...
@@ -94,6 +94,7 @@ typedef enum
#define AUTH_REQ_PASSWORD 3
#define AUTH_REQ_PASSWORD 3
#define AUTH_REQ_CRYPT 4
#define AUTH_REQ_CRYPT 4
#define AUTH_REQ_MD5 5
#define AUTH_REQ_MD5 5
#define AUTH_REQ_SCM_CREDS 6
/* Startup Packet sizes */
/* Startup Packet sizes */
#define SM_DATABASE 64
#define SM_DATABASE 64
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment