バグレポートガイドライン

PostgreSQLに関してバグを発見した場合、ぜひ連絡してください。 最大限の注意を払っても、全てのプラットフォーム、全ての環境でPostgreSQLの機能全てが正常に動くことは保証できないので、バグレポートはPostgreSQLをより信頼性の高いものにするために、大変重要になります。

下記の助言は、バグレポートが有効的に活用されるためのものです。 これに従う義務はありませんが、沿った方がより有益なものとなるでしょう。

発見されたバグはただちに修正されるとは限りません。 そのバグが明確で、重大で、他の多くのユーザにも影響を与えるものであれば、すぐに修正される可能性が高いでしょう。 また、より新しいバージョンに変えて、そこでも同じようなことが起こるかを確認してもらうようにお勧めする場合もあります。 あるいは、現在計画中の大きな変更が終了するまでバグを修正できないと判断する場合もあります。 また、そのバグ修正はとても難易度が高いもので、後回しになることも考えられます。 早急に処置が必要な場合は、商用サポートの購入を検討してください。

バグの特定

バグ報告を行う前に、ドキュメントを読み、もう一度読み返し、実行しようとしている処理が実行可能かどうか確認してください。 実行可能かどうかが不明な場合は、その旨を報告してください。 それはある意味ドキュメントのバグです。 また、ドキュメントに書かれていることと実際の結果が異なる場合はそれはバグとなります。 以下のような状況が考えられます。 しかしこれらに限定しているわけではありません。

ここでは、"プログラム"とはバックエンドサーバだけではなく、全ての実行可能ファイルを意味します。

プログラムの実行が遅かったり、リソースを大量に使用するのは必ずしもバグではありません。 アプリケーションを改善するためには、ドキュメントを読んだり、メーリングリストで尋ねてみたりしてください。 標準SQLの要求に応じない場合、その機能の互換性を明確にうたっていない限り、それはバグとは言えません。

また、以降に進む前にTODOリストやFAQで、そのバグが既知のものかどうか確認してください。 もしTODOリストから情報を読み取ることができなければ、問題を報告してください。 少なくともTODOリストをわかりやすくすることができます。

報告すべきこと

バグ報告で最も重要なことは、全ての事実を明確に記述し、また、記述されたものは事実のみである、ということです。 何が起こったのか、または、プログラムのどこが問題か、"何々が起こっているようだ"などの憶測や推測を記述しないでください。 実装にさほど詳しくない方の推測は正しくない場合があり、有効なバグ報告になりません。 実装に精通している方の場合でも、根拠のある説明は参考情報となりますが、やはり正しい事実が一番役に立ちます。 バグを修正するためには、まず開発者自身がそのバグを再現する必要があります。 ありのままの事実を報告するのは単刀直入(多くの場合画面からメッセージをコピー&ペーストを行うのみ)ですが、えてして、重要でないだろうと想像したり、省いても理解してもらえるだろうと思い込むことにより重要な情報が洩れてしまう場合がかなり多くあります。

全てのバグ報告では、下記の内容が記述されていなければいけません。

バグ報告が長文になってもそれは仕方がないことなので、気にしないでください。 一度に全ての情報を入手できる方が、開発者から情報を催促するよりも手間暇がかかりません。 その一方、ファイルが大きいならば、その情報に誰か興味があるかを最初に尋ねるのが得策かもしれません。 記事にバグ報告に冠するこの他のティップスの概要があります。

問題を解決させる入力を見つけ出すための試行錯誤に時間をかけないでください。 これはおそらく問題解決の助けになりません。 バグが即座に修正されない場合、その間を利用して様々と試してみてください。 繰り返しになりますが、バグがなぜあるのかを解明するのに余計な時間を取る必要はありません。 開発者の方が十分速くそれを見つけ出します。

バグ報告をする際、理解しやすい用語を使用してください。 このソフトウェアパッケージ全体は"PostgreSQL"と呼ばれていますが、略して"Postgres"とも呼ばれます。 特にバックエンドサーバに関して述べる時は、そのように明記し、"PostgreSQLのクラッシュ"とは記述しないでください。 1つのバックエンドサーバのクラッシュとその親プロセス"postgres"のクラッシュとはかなり異なります。 1つのバックエンドがダウンしてしまったことを"サーバのクラッシュ"とは記述しないでください。 その逆の場合にも当てはまります。 また、"psql"対話式フロントエンドなどのクライアントプログラムはバックエンドとは完全に分離されています。 問題がクライアント側かサーバ側かの切り分けを試みてください。

バグ報告先

一般的には、というバグ報告用メーリングリストにバグ報告を送ってください。 バグ報告の題名には、エラーメッセージの一部分などわかりやすいものを使ってください。

他に、プロジェクトのWebサイトにあるバグ報告フォームの項目を埋める方法があります。 この方法で入力したバグ報告は、メーリングリストに送信されます。

バグ報告にセキュリティが関連する場合や公開アーカイブからすぐに閲覧できることを好まない場合、pgsql-bugsには送信しないでください。 セキュリティ問題は密やかにに報告することができます。

などのユーザ向けのメーリングリストには決してバグ報告を送らないでください。 これらのメーリングリストはユーザからの質問に答えるためのもので、ほとんどの購読者はバグ報告を受け取りたくないと思われます。 もっと重要な点は、この購読者によってバグが修正されることはほとんどありません。

また、開発者向けのにもバグ報告を送らないでください。 ここはPostgreSQLの開発に関して議論する場で、バグ報告とは切り離している方が良いとされています。 もしその問題により多くのレビューが必要な場合は、そのバグ報告をpgsql-hackersで議論することになります。

ドキュメントに関して問題がある場合は、ドキュメント用のメーリングリスト、が最適な報告先です。 その際、問題になった箇所がどの部分かを明記してください。

また、サポートされていないプラットフォームへの移植に関係するバグ報告である場合はに報告してください。 そのプラットフォームへPostgreSQLを移植するように(報告者と一緒に)最善の努力をします。

注意: spamメールを防止するために、残念なことに、これらのメーリングリストは非公開となっています。 つまり、これらのメーリングリストに投稿するには、講読しなければいけません (しかし、Webフォームによるバグ報告の場合は購読する必要はありません)。 メーリングリストからのメールを受け取らずに単にメールを送りたい場合は、購読登録を行い、講読オプションをnomailに設定してください。 詳細な情報については宛に、helpとだけ本文に書いてメールを送ってください。