MySQL Connector/J 5.1.48 GA has been released

Dear MySQL Users,

MySQL Connector/J 5.1.48, a maintenance release of the production 5.1

branch has been released. Connector/J is the Type-IV pure-Java JDBC

driver for MySQL.

MySQL Connector/J is available in source and binary form from the

Connector/J download pages at

http://dev.mysql.com/downloads/connector/j/5.1.html

and mirror sites as well as Maven repositories.

MySQL Connector/J (Commercial) is available for download on the My Oracle

Support (MOS) website. This release will shortly be available on

eDelivery (OSDC).

As always, we recommend that you check the “CHANGES” file in the

download archive to be aware of changes in behavior that might affect

your application.

MySQL Connector/J 5.1.48 includes the following general bug fixes and

improvements, also available in more detail on

https://dev.mysql.com/doc/relnotes/connector-j/5.1/en/news-5-1-48.html

Changes in MySQL Connector/J 5.1.48 (2019-07-29, General Availability)

   Version 5.1.48 is a maintenance release of the production 5.1

   branch. It is suitable for use with MySQL Server versions

   5.6, 5.7, and 8.0. It supports the Java Database Connectivity

   (JDBC) 4.2 API.

Functionality Added or Changed

     * Important Change: For MySQL Server 8.0.14 and later,

       5.7.25 and later, 5.6.43 and later, and 5.5.63 and later,

       minimal permissions on named pipes are granted to clients

       that use them to connect to the server. Connector/J,

       however, can only use named pipes when granted full

       access on them. As a workaround, the MySQL Server that

       Connector/J wants to connect to must be started with the

       system variable named_pipe_full_access_group; see the

       description for the system variable for more details.

       (Bug #28971500)

     * The collation utf8mb4_zh_0900_as_cs has been added to the

       CharsetMapping class. (Bug #29244101)

     * The list of MySQL Server reserved words, stored as the

       MYSQL_KEYWORDS string in the DatabaseMetaData class, has

       been updated. (Bug #28268619, Bug #91435)

     * A number of private parameters of ProfilerEvents (for

       example, hostname) had no getters for accessing them from

       outside of the class instance. Getter methods have now

       been added for all the parameters of the class. (Bug

       #20010454, Bug #74690)

     * Added support for the utf8mb4_0900_bin collation, which

       is now supported by MySQL Server 8.0.17.

Bugs Fixed

     * When a CallableStatement was used to call a stored

       procedure or function that did not exist on the server or

       that the client had no rights to access its parameters’

       metadata, Connector/J tried to infer the parameter

       metadata from the SQL call string itself, but did so

       wrongly. It was because Connector/J did not distinguish

       between a stored procedure and a stored function in its

       inference, and this fix makes Connector/J do so now. (Bug

       #29907618)

     * ResultSetMetaData.getTableName() returned null when no

       applicable results could be returned for a column.

       However, the JDBC documentation specified an empty string

       to be returned in that case. This fix makes the method

       behave as documented. The same correction has been made

       for getCatalogName() and getSchemaName(). (Bug #29452669,

       Bug #94585)

     * Because the SHOW PROCESSLIST

       (https://dev.mysql.com/doc/refman/8.0/en/show-processlist.html)

       statement might cause the server to fail sometimes,

       Connector/J now avoids using the statement, but queries

       the performance scheme instead for the information it

       needs. (Bug #29329326)

     * Enabling logSlowQueries resulted in many unnecessary

       calls of LogUtils.findCallingClassAndMethod(). With this

       fix, LogUtils.findCallingClassAndMethod() is called only

       when profileSQL is true and even in that case, the number

       of calls are reduced to a minimal to avoid the excessive

       stack trace data the function used to generate. Thanks to

       Florian Agsteiner for contributing to the fix. (Bug

       #29277648, Bug #94101, Bug #17640628, Bug #70677)

     * For an SSL connection, after a client disconnected from a

       server by calling Connection.close(), the TCP connection

       remained in the TIME_WAIT

       (https://dev.mysql.com/doc/refman/8.0/en/can-not-connect-to-server.html)

       state on the server side. With this fix, the connection

       remains in the TIME_WAIT

       (https://dev.mysql.com/doc/refman/8.0/en/can-not-connect-to-server.html)

       state on the client side instead, in most cases.

       (Bug #29054329, Bug #93590)

     * A memory leak occurred if Connector/J was loaded via the

       bootstrap class path instead of the main application

       classpath. It was because

       AbandonedConnectionCleanupThread failed to initialize its

       internal thread in that case, so that references for

       closed connections were not cleaned up, and their number

       kept growing. This fix repairs the clean up process for

       closed connections and also makes the process thread

       safe. (Bug #28747636, Bug #92508)

     * PreparedStatement.setTimestamp threw a

       NullPointerException if getParameterMetaData() was called

       before the statement was executed. This fix adds the

       missing null checks to getParameterMetaData() to avoid

       the exception. (Bug #28529781, Bug #92089)

     * Setting the connection property characterEncoding to an

       encoding that maps to the MySQL character set latin1 or

       utf8mb4 did not result in the corresponding default

       connection collation (latin1_swedish_ci or

       utf8mb4_0900_ai_ci, respectively) to be used on the

       server. With this fix, the server default is used in the

       situation. (Bug #28207422)

     * Characters returned in a ResultSet were garbled when a

       server-side PreparedStatement was used, and the query

       involved concatenation of a number and a string with

       multi-byte characters. That was due to an issue with the

       number-to-string conversion involved, which has been

       corrected by this fix. (Bug #27453692)

     * ResultSet.updateRow() failed with a

       MySQLSyntaxErrorException when the server was in

       NO_BACKSLASH_ESCAPES SQL mode and some but not all text

       columns were updated. It was because Connector/J sent the

       strings as hex literals in that case and added to them

       unnecessary quotes for escapes. This fix add checks to

       avoid quotes for being added unnecessarily. (Bug

       #22850444, Bug #80441)

     * PreparedStatement.executeUpdate() failed with a

       MySQLSyntaxErrorException when the server was in

       NO_BACKSLASH_ESCAPES SQL mode and BLOB data types were

       involved in the statement. It was because Connector/J did

       not escape single quotes in BLOB value properly in

       NO_BACKSLASH_ESCAPES mode, and the problem has been

       corrected by this fix. (Bug #20913289)

     * When a procedure and a function with the same name

       existed in a database, Connector/J retrieved parameter

       information from both at the same time by default,

       causing various errors at statement executions. This fix

       leverages the JDBC 4 DatabaseMetaData methods to return

       parameter information only from the procedure or function

       of interest, so that statements are executed without

       errors. (Bug #19531305, Bug #73774)

     * Calling ProfilerEvent.pack() resulted in an

       ArrayIndexOutOfBoundsException. It was due to a

       mishandling of data types, which has been corrected by

       this fix. (Bug #11750577, Bug #41172)

On Behalf of Oracle/MySQL Release Engineering Team,

Hery Ramilison