Bug #35199 | Parse error addressing stored function returning bigint | ||
---|---|---|---|
Submitted: | 10 Mar 2008 22:46 | Modified: | 7 Jul 2008 10:38 |
Reporter: | Larry Brunelle | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | Connector / J | Severity: | S2 (Serious) |
Version: | 5.1.6 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | parse error addressing stored function returning bigint |
[10 Mar 2008 22:46]
Larry Brunelle
[10 Mar 2008 22:47]
Larry Brunelle
Exhibits failure mode
Attachment: testFails.java (application/octet-stream, text), 5.04 KiB.
[10 Mar 2008 22:48]
Larry Brunelle
Exhibits contrasting success with workaround
Attachment: testSucceeds.java (application/octet-stream, text), 5.04 KiB.
[19 Mar 2008 10:21]
Tonci Grgin
Test case
Attachment: TestBug35199.java (text/java), 4.58 KiB.
[19 Mar 2008 10:28]
Tonci Grgin
Hi Larry and thanks for your report. Verified as described on latest c/J 5.1 sources: .Loading JDBC driver 'com.mysql.jdbc.Driver' Done. Done. Connected to 5.0.58-pb1083-log java.vm.version : 1.5.0_12-b04 java.vm.vendor : Sun Microsystems Inc. java.runtime.version : 1.5.0_12-b04 os.name : Windows XP os.version : null sun.management.compiler : HotSpot Client Compiler E Time: 0,406 There was 1 error: 1) testBug35199(testsuite.simple.TestBug35199)java.lang.NumberFormatException: For input string: "20) MODIFIES SQL DATA DETERMINISTIC COMMENT 'This function provides lookup/insert/update behavior for table t' BEGIN DECLARE test_id_l bigint; IF test_code_v IS NULL OR external_system_id_v IS NULL THEN RETURN NULL; END IF; SELECT test_id INTO test_id_l FROM test35199 WHERE test_code = test_code_v AND external_system_id = external_system_id_v; IF test_id_l IS NULL THEN INSERT INTO test35199 (test_id" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:456) at java.lang.Integer.valueOf(Integer.java:553) at com.mysql.jdbc.DatabaseMetaData$TypeDescriptor.<init>(DatabaseMetaData.java:247) at com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:1652) at com.mysql.jdbc.DatabaseMetaData.getProcedureOrFunctionColumns(DatabaseMetaData.java:4120) at com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:4057) at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:809) at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:614) at com.mysql.jdbc.CallableStatement.getInstance(CallableStatement.java:502) at com.mysql.jdbc.ConnectionImpl.parseCallableStatement(ConnectionImpl.java:3881) at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:3965) at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:3939) at testsuite.simple.TestBug35199.testBug35199(TestBug35199.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at testsuite.simple.TestBug35199.main(TestBug35199.java:111) There appears to be an error in parsing function return parameter type. Fetching from I__S retrieves BIGINT(20) (although I removed (20) from definition) which is discovered as BIGINT thus not in need of (m,d). But (m,d) still gets parsed throwing the error you see. DataBaseMetaData.java 1652, TypeDescriptor returnDescriptor = new TypeDescriptor(returnsDefn, null); returnsDefn = bigint(20) MODIFIES SQL DATA ... which is not correct.
[19 Mar 2008 15:45]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/44234
[7 Jul 2008 10:38]
Tony Bedford
An entry has been added to the 5.1.6 Changelog: In calling a stored function returning a bigint, an exception is encountered beginning: java.sql.SQLException: java.lang.NumberFormatException: For input string: followed by the text of the stored function starting after the argument list.
[30 Jul 2008 14:53]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/50724
[18 Sep 2008 16:47]
Sveta Smirnova
Bug #39510 was marked as duplicate of this one.