通常のバグのレポートは、弊社のバグ データベース http://bugs.mysql.com/ で行ってください。このデータベースは一般公開されており、どなたでも参照、検索することができます。このシステムにログインすると、新しいレポートを投稿することもできます。
MySQL のセキュリティに深刻なバグを発見した場合は、security_at_mysql.com まで E メールでお知らせください。
正確なバグ レポートを書くのは時間がかかるものですが、レポートを一度で済ませることで、報告者と弊社、双方の時間を節約することができます。そのバグの完全なテスト ケースを含むバグ レポートを提供していただければ、次回のリリースではその問題を修正できる可能性が高くなります。
このセクションでは、ユーザの時間短縮と効果的な情報提供のため、レポートの正しい書き方を紹介します。
再現可能なバグ レポートがある場合は、http://bugs.mysql.com/ のバグ データベースへ報告してください。弊社で再現が可能なバグであれば、次回の MySQL リリースで修正される可能性が高くなります。
他の問題の報告には、MySQL メーリングリストのいずれかをご利用ください。
多大な情報をお寄せいただくのは特に問題はありませんが、情報があまりにも少ないと対処が難しくなりますのでご了承ください。問題に直接関係しないと判断し、詳細を省略して報告されることがしばしばありますのでご注意ください。
ご留意いただきたい点は以下です :報告に含むべきか迷う情報があれば、それも加えてください。最初の報告で情報が足りない場合は後日お尋ねすることになりますので、はじめのレポートにできるだけ詳細を書いていただくと、作業がより速く簡潔になります。
バグのレポートによくある間違いは、(a) 使用した Connector/J または MySQL のバージョン番号の書き忘れ、(b) Connector/J がインストールされたプラットフォームの説明が不完全なこと ( MySQL そのものがインストールされた JVM のバージョン、プラットフォームのタイプ、バージョン番号、等 ) 、です。
これは非常に重要な情報で、99% の場合、この情報なしでは報告を活用することができません。「なぜうまく作動しないのか ? 」 という質問が頻繁に寄せられます。そのほとんどは、希望の機能がその MySQL バージョンに実装されていないことが原因で、もしくは、報告にあるバグは新しい MySQL のバージョンではすでに修正されています。
エラーの原因はプラットフォームにあることもあります。その場合、オペレーション システムとプラットフォームのバージョン番号の情報なしで解決することはほぼ不可能です。
もしできれば、再現可能で、サードパーティ クラスが関与しない独立したテストケースを作成してください。
このプロセスを能率化するため、弊社では、'com.mysql.jdbc.util.BaseBugReport
'
と名付けられたテストケース用のベースクラスを
Connector/J
と共に発送しています。このクラスを使用して、Connector/J
のテストケースを作成するには、com.mysql.jdbc.util.BaseBugReport
から継承する独自のクラスを作成し、メソッド
setUp()
、tearDown()
、および runTest()
をオーバライドしてください。
setUp()
メソッドで、テーブルを作るコードを作成し、バグの証明に必要なデータを取り込みます。
runTest()
メソッドで、setUp
メソッドで作ったテーブルとデータを使用して、バグを証明するコードを作成します。
tearDown()
メソッドで、setUp()
メソッドで作ったテーブルのいずれかを削除します。
上記の 3
つのメソッドのどれかで、getConnection()
メソッドの変異型のひとつを使用して、MySQL
への JDBC 接続を作成してください :
getConnection()
-
getUrl()
で特定された JDBC URL
への接続を提供。接続がすでにある場合、その接続は戻され、それでなければ新たな接続が作成される。
getNewConnection()
- バグ
レポートのために新しい接続が必要な場合はこれを使用
( つまり、ひとつ以上の接続が関与する ) 。
getConnection(String url)
-
与えられた URL を使用して接続を戻す。
getConnection(String url, Properties
props)
- 与えられた URL
とプロパティを使用して接続を戻す。
'jdbc:mysql:///test' とは異なる JDBC URL
を使う必要がある場合、メソッド
getUrl()
もオーバライドします。
assertTrue(boolean expression)
および
assertTrue(String failureMessage, boolean
expression)
メソッドを使用して、証明したい動作のテストケースにあう条件を作成します
(
観察している動作と比べ、それによってほぼバグ
レポートを送ることになります ) 。
最後に、テストケースの新しいインスタンスを作る
main()
メソッドを作成し、run
メソッドを呼び出します :
public static void main(String[] args) throws Exception { new MyBugReport().run(); }
テストケースを終え、報告したいバグが証明されていることを確認したら、バグ レポートを添えて http://bugs.mysql.com/ にアップロードします。