26.3.5.2. How to Report Connector/J Bugs or Problems
The normal place to report bugs is
https://bugs.mysql.com/, which is the address for
our bugs database. This database is public, and can be browsed
and searched by anyone. If you log in to the system, you will
also be able to enter new reports.
If you have found a sensitive security bug in MySQL, you can
send email to
[email protected].
Writing a good bug report takes patience, but doing it right the
first time saves time both for us and for yourself. A good bug
report, containing a full test case for the bug, makes it very
likely that we will fix the bug in the next release.
This section will help you write your report correctly so that
you don't waste your time doing things that may not help us much
or at all.
If you have a repeatable bug report, please report it to the
bugs database at https://bugs.mysql.com/.
Any bug that we are able to repeat has a high chance of being
fixed in the next MySQL release.
To report other problems, you can use one of the MySQL mailing
lists.
Remember that it is possible for us to respond to a message
containing too much information, but not to one containing too
little. People often omit facts because they think they know the
cause of a problem and assume that some details don't matter.
A good principle is this: If you are in doubt about stating
something, state it. It is faster and less troublesome to write
a couple more lines in your report than to wait longer for the
answer if we must ask you to provide information that was
missing from the initial report.
The most common errors made in bug reports are (a) not including
the version number of Connector/J or MySQL used, and (b) not
fully describing the platform on which Connector/J is installed
(including the JVM version, and the platform type and version
number that MySQL itself is installed on).
This is highly relevant information, and in 99 cases out of 100,
the bug report is useless without it. Very often we get
questions like, ``Why doesn't this work for me?'' Then we find
that the feature requested wasn't implemented in that MySQL
version, or that a bug described in a report has already been
fixed in newer MySQL versions.
Sometimes the error is platform-dependent; in such cases, it is
next to impossible for us to fix anything without knowing the
operating system and the version number of the platform.
If at all possible, you should create a repeatable, stanalone
testcase that doesn't involve any third-party classes.
To streamline this process, we ship a base class for testcases
with Connector/J, named
'com.mysql.jdbc.util.BaseBugReport
'. To
create a testcase for Connector/J using this class, create your
own class that inherits from
com.mysql.jdbc.util.BaseBugReport
and
override the methods setUp()
,
tearDown()
and
runTest
().
In the setUp()
method, create code that
creates your tables, and populates them with any data needed to
demonstrate the bug.
In the runTest
() method, create code
that demonstrates the bug using the tables and data you created
in the setUp
method.
In the tearDown()
method, drop any
tables you created in the setUp()
method.
In any of the above three methods, you should use one of the
variants of the getConnection
() method
to create a JDBC connection to MySQL:
getConnection() - Provides a connection to the JDBC URL
specified in getUrl(). If a connection already exists, that
connection is returned, otherwise a new connection is
created.
getNewConnection() - Use this if you need to get a new
connection for your bug report (i.e. there's more than one
connection involved).
getConnection(String url) - Returns a connection using the
given URL.
getConnection(String url, Properties props) - Returns a
connection using the given URL and properties.
If you need to use a JDBC URL that is different from
'jdbc:mysql:///test', override the method
getUrl()
as well.
Use the assertTrue(boolean expression)
and assertTrue(String failureMessage, boolean
expression)
methods to create conditions that must
be met in your testcase demonstrating the behavior you are
expecting (vs. the behavior you are observing, which is why you
are most likely filing a bug report).
Finally, create a main
() method that
creates a new instance of your testcase, and calls the
run
method:
public static void main(String[] args) throws Exception {
new MyBugReport().run();
}
Once you have finished your testcase, and have verified that it
demonstrates the bug you are reporting, upload it with your bug
report to https://bugs.mysql.com/.