Bug #12753 Value of URL parameter is cut after '='
Submitted: 23 Aug 2005 13:15 Modified: 17 Oct 2005 21:43
Reporter: Igor Bukanov
Status: Closed
Category:Connector/J Severity:S3 (Non-critical)
Version:3.1.10, 3.2.0 Alpha OS:Microsoft Windows (Windows, Linux)
Assigned to: Mark Matthews Target Version:

[23 Aug 2005 13:15] Igor Bukanov
Description:
The URL parameter parser for JConnector does not allow to include '=' in the value of URL
parameter. Effectively the value is cut after '='. For example, when I tried to include
sessionVariables in  the connection URL to set sql_mode to ANSI like in:

java.sql.Connection c = new com.mysql.jdbc.NonRegisteringDriver().
    connect("jdbc:mysql://localhost:3306/DB"
            +"?user=USER&password=PASSWORD"
            +"&sessionVariables=sql_mode='ANSI'", null);

I got:

java.sql.SQLException: You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '' at line 1.

This is caused by the fact that URL parser effectively sets sessionVariables to just
"sql_mode" instead of "sessionVariables=sql_mode='ANSI'". That leads later to execution
of "SET SESSION sql_mode" instead of "SET SESSION sql_mode='ANSI'" and error generation.

How to repeat:
Compile and run the following Java program:

public class Test
{
    public static void main(String[] args)
        throws Exception
    {
        java.sql.Connection c = new com.mysql.jdbc.NonRegisteringDriver().
            connect("jdbc:mysql://localhost:3306/DB"
                +"?user=USER&password=PASSWORD"
                +"&sessionVariables=sql_mode='ANSI'", null);
    }
}

where DB, USER, PASSWORD should be replaced by the valid values.

Suggested fix:
I use javax.sql.DataSource interface to connect to the database and configure DB
properties using Tomcat Context, which allows to pass session properties only through
URL. 

Thus as I workaround  I was forced to put explicit 
statement.executeUpdate("SET SESSION sql_mode='ANSI';") 
after connection initialization in the servlet code.
[23 Aug 2005 13:18] Igor Bukanov
Fix: patch against 3.1.10 to include full property value

Attachment: parse_fix.diff (text/x-patch), 1.23 KiB.

[23 Aug 2005 22:02] Mark Matthews
Patch is available at http://lists.mysql.com/internals/28697

The fix for testing should be available in the nightly builds after 00:00 GMT, Aug. 24 at
http://downloads.mysql.com/snapshots.php#connector-j