The normal place to report bugs is http://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 find a sensitive security bug in MySQL Server, please let
us know immediately by sending an email message to
<secalert_us@oracle.com>
. Exception: Support
customers should report all problems, including security bugs,
to Oracle Support at http://support.oracle.com/.
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 sooner rather than later.
This section will help you write your report correctly so that you do not 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 http://bugs.mysql.com/. Any bug that we are able to repeat has a high chance of being fixed sooner rather than later.
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 do not 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 was not 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, create a repeatable, standalone 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.cj.jdbc.util.BaseBugReport
'.
To create a testcase for Connector/J using this class, create
your own class that inherits from
com.mysql.cj.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, 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 ingetUrl()
. 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 (that is, there is 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 http://bugs.mysql.com/.