Bug #74731 Calling stored procedure via MySQL fabric gives NullPointerException
Submitted: 7 Nov 2014 12:12 Modified: 12 Dec 2014 18:14
Reporter: Karthik Arulappan Email Updates:
Status: No Feedback Impact on me:
None 
Category:Connector / J Severity:S1 (Critical)
Version:5.1.30 OS:Windows (Window server 2008 R2)
Assigned to: Assigned Account CPU Architecture:Any
Tags: fabric

[7 Nov 2014 12:12] Karthik Arulappan
Description:
Hi,

Am using mysqlfabric to support HA to my application. The connector/J version am using is 5.1.30

The connection link is
jdbc:mysql:fabric://localhost:32274/optimaintake?fabricServerGroup=testgroup&fabricUsername=admin&fabricPassword=pass

which is working for normal DML operations but when trying to execute stored procedure am getting the following exception

java.sql.SQLException: java.lang.NullPointerException
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:949)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:433)
        at com.mysql.jdbc.CallableStatement.getInstance(CallableStatement.java:5
24)
        at com.mysql.jdbc.ConnectionImpl.parseCallableStatement(ConnectionImpl.j
ava:4334)
        at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:4418)
        at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:4392)
        at com.mysql.jdbc.LoadBalancedMySQLConnection.prepareCall(LoadBalancedMy
SQLConnection.java:2159)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConne
ctionProxy.java:644)
        at com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConne
ctionProxy.java:549)
        at com.sun.proxy.$Proxy0.prepareCall(Unknown Source)
        at com.mysql.jdbc.ReplicationConnection.prepareCall(ReplicationConnectio
n.java:543)
        at com.mysql.fabric.jdbc.FabricMySQLConnectionProxy.prepareCall(FabricMy
SQLConnectionProxy.java:696)
        at com.cts.fabric.ProcedureTest.main(ProcedureTest.java:39)
Caused by: java.lang.NullPointerException
        at com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMet
aData.java:1770)
        at com.mysql.jdbc.DatabaseMetaData.getProcedureOrFunctionColumns(Databas
eMetaData.java:4508)
        at com.mysql.jdbc.JDBC4DatabaseMetaData.getProcedureColumns(JDBC4Databas
eMetaData.java:106)
        at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStat
ement.java:857)
        at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:630)
        at com.mysql.jdbc.JDBC4CallableStatement.<init>(JDBC4CallableStatement.j
ava:46)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
        ... 15 more

Kindly help me regarding this asap.

Thanks,
Karthik. A

How to repeat:
The code snippet used to call the stored procedure is 

Connection conn = DriverManager.getConnection(baseUrl, user,
					password);

			String seqId = "";
			String query = "CALL generateSeq(?)";
			CallableStatement callStmt = conn.prepareCall(query);
			callStmt.registerOutParameter(1, java.sql.Types.VARCHAR);
			callStmt.executeQuery();
			seqId = callStmt.getString(1);
[12 Nov 2014 18:14] Jess Balint
Thank you for the bug report. Please try upgrading to Connector/J 5.1.32. This bug should be fixed, as noted in the release notes:

"Preparing a call to a stored procedure with Fabric caused a null pointer exception to be thrown. (Bug #19034681, Bug #73070)"
[13 Dec 2014 1:00] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".