[
https://issues.apache.org/jira/browse/DERBY-2558?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12495760
]
Kathey Marsden commented on DERBY-2558:
---------------------------------------
It seems to me that since the ArrayIndexOutOfBounds exception is being thrown
from within client, we should be able to get a java reproduction for this
outside of ij. I tried, but got a perfectly reasonable error message with the
code below, so I am not sure how to reproduce, but it does seem like just
working around the issue in ij is not the best solution.
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
public class d2558 {
public static void main(String[] args) throws Exception {
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection conn =
DriverManager.getConnection("jdbc:derby://localhost:1527/wombat;create=true;traceFile=trace.out");
Statement s = conn.createStatement();
try {
s.executeUpdate("DROP TABLE t ");
} catch (SQLException se) {}
s.executeUpdate("Create table t (i int)");
s.executeUpdate("insert into t values (3), (4)");
PreparedStatement ps = conn.prepareStatement("select * from t where
i=?");
ps.setObject(1,new Integer(3));
ps.setObject(2,new Integer(4));
ResultSet rs = ps.executeQuery();
}
}
> client trhows ArrayIndexOutOfBounds exception instead of parameter out of
> range
> --------------------------------------------------------------------------------
>
> Key: DERBY-2558
> URL: https://issues.apache.org/jira/browse/DERBY-2558
> Project: Derby
> Issue Type: Bug
> Components: Network Client
> Affects Versions: 10.3.0.0
> Reporter: Kathey Marsden
> Assigned To: Bryan Pendleton
> Priority: Minor
> Attachments: IJCheckParms.diff
>
>
>
> The following sql gives an ArrayIndexOutOfBoundsException with client. With
> embedded we get the expected.
> ERROR XCL13: The parameter position '2' is out of range. The number of
> parameters for this prepared statement is '1'.
> ij> create table t (i int);
> 0 rows inserted/updated/deleted
> ij> insert into t values (3), (4);
> 2 rows inserted/updated/deleted
> ij> execute 'select * from t where i=?' using 'values (3,4)';
> IJ WARNING: Autocommit may close using result set
> JAVA ERROR: java.lang.ArrayIndexOutOfBoundsException: 1
> java.lang.ArrayIndexOutOfBoundsException: 1
> at
> org.apache.derby.client.am.PreparedStatement.setObjectX(PreparedStatement.java:1506)
> at
> org.apache.derby.client.am.PreparedStatement.setObject(PreparedStatement.java:1458)
> at org.apache.derby.impl.tools.ij.util.DisplayMulti(util.java:696)
> at
> org.apache.derby.impl.tools.ij.utilMain.displayResult(utilMain.java:474)
> at
> org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:351)
> at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:270)
> at org.apache.derby.impl.tools.ij.Main.go(Main.java:215)
> at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:181)
> at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:56)
> at org.apache.derby.tools.ij.main(ij.java:71)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.