SQLExecutor.getFirstResultSet goes into infinite loop in stored procedure call.
-------------------------------------------------------------------------------
Key: IBATIS-587
URL: https://issues.apache.org/jira/browse/IBATIS-587
Project: iBatis for Java
Issue Type: Bug
Components: SQL Maps
Affects Versions: 2.3.4
Reporter: Young Sub, Jeon
Priority: Blocker
SQLExecutor.getFirstResultSet method call goes into an infinite loop when using
Stored procedure in MySQL DB.
If there are no more results, stmt.getUpdateCount() in
moveToNextResultsIfPresent() must return -1. But, proved that always return 0.
Below is environment setting and source file. A stored proc of application goes
to infinite loop, but consol command is
[mvn dependency]
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>ibatis-sqlmap</artifactId>
<version>2.3.4.726</version>
</dependency>
[sqlMap.xml]
<parameterMap id="PriceProcedure" class="java.util.Map">
<parameter property="nProdC" jdbcType="INTEGER"
javaType="java.lang.Integer" mode="IN" />
<parameter property="bReturn" jdbcType="INTEGER"
javaType="java.lang.Integer" mode="OUT" />
</parameterMap>
<procedure id="procedureRenewalProduct" parameterMap="PriceProcedure" >
{ CALL RenewalProduct_JYS(?, ?) }
</procedure>
========================================================================================================
The stored procdedure body is below. This is simple procedure that return same
integer value of IN parameter.
On the result, after procedure call phase is performed, it returns result value
collectley.
mysql> show create procedure RenewalProduct_JYS\G
*************************** 1. row ***************************
Procedure: RenewalProduct_JYS
sql_mode: NO_UNSIGNED_SUBTRACTION
Create Procedure: CREATE definer=`thro...@`localhost` PROCEDURE
`RenewalProduct_JYS`(IN nProdC INT, OUT bReturn INT)
BEGIN
SET bReturn = nProdC;
END
1 row in set (0.00 sec)
mysql> call RenewalProduct_JYS(12345, @bReturn);
Query OK, 0 rows affected (0.00 sec)
mysql> select @bReturn;
+----------+
| @bReturn |
+----------+
| 12345 |
+----------+
1 row in set (0.00 sec)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.