[
https://issues.apache.org/jira/browse/DERBY-4332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12805847#action_12805847
]
Kristian Waagan commented on DERBY-4332:
----------------------------------------
Unless you can provide a working repro, I'm at a loss here.
Some LOB issues have already been fixed, and more fixes will go into 10.6.
There is a slight chance that you are hitting one of the existing issues. Maybe
you can try running your application/script with 10.6 when it comes out?
Another thing to consider is trying to run your application with the embedded
driver to verify that the code works there - this might help us isolate the
problem.
> Issue in Derby Database while fetching CLOB datatype or while commiting the
> transaction.
> ----------------------------------------------------------------------------------------
>
> Key: DERBY-4332
> URL: https://issues.apache.org/jira/browse/DERBY-4332
> Project: Derby
> Issue Type: Bug
> Components: JDBC, Network Client
> Affects Versions: 10.5.1.1
> Environment: Windows XP SP2, machine: core 2 duo processor, 2GM
> primary mem.
> Reporter: baba shinde
> Priority: Critical
>
> I am using Derby database for my application where auto commit on connection
> is set to false and I am doing the manual commit after every database update
> calls. In my application I am using CLOB data type to store the large string
> data in table column. And there are couples of test cases written to ensure
> the database working, but it has found very weird/inconsistent behavior of
> database either while fetching the data or while deleting the fetched data
> from database table. Probability of passing the test cases is 50 %( half of
> the time test cases fails and half of the time all test cases cleanly passes
> through)
> Inconsistent behavior in the sense: every time code fails for either of the
> exception given below:
> 1) This exception occurs while removing the record from database.
> Exception in thread "TestHandler-2-thread-1"
> java.lang.ArrayIndexOutOfBoundsException: -1
> at org.apache.derby.client.net.Request.popMark(Unknown Source)
> at org.apache.derby.client.net.Request.updateLengthBytes(Unknown Source)
> at org.apache.derby.client.net.NetStatementRequest.buildEXCSQLSTT(Unknown
> Source)
> at org.apache.derby.client.net.NetStatementRequest.writeExecute(Unknown
> Source)
> at org.apache.derby.client.net.NetPreparedStatement.writeExecute_(Unknown
> Source)
> at org.apache.derby.client.am.PreparedStatement.writeExecute(Unknown Source)
> at org.apache.derby.client.am.PreparedStatement.flowExecute(Unknown Source)
> at org.apache.derby.client.am.PreparedStatement.executeX(Unknown Source)
> at org.apache.derby.client.am.PreparedStatement.execute(Unknown Source)
> code snippet for the same is:
> try {
> removeMessageStmt.setString(1, messageId);
> removeMessageStmt.execute();
> connection.commit();
> } catch (SQLException e) {
> try {
> connection.rollback();
> } catch (SQLException tx) {
> log.error("Failed to rollback the transaction", tx);
> }
> }
> where removeMessageStmt is the prepared statement initialize at start.
> 2) java.sql.SQLNonTransientConnectionException: No current connection.
> Exception in connection.rollback()
> at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown
> Source) [derbyclient.jar:na]
> at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
> [derbyclient.jar:na]
> at org.apache.derby.client.am.Connection.rollback(Unknown Source)
> [derbyclient.jar:na]
> at
> org.apache.commons.dbcp.DelegatingConnection.rollback(DelegatingConnection.java:328)
> [commons-dbcp-1.2.2.jar:1.2.2]
> Caused by: org.apache.derby.client.am.SqlException: No current connection.
> at org.apache.derby.client.am.Connection.checkForClosedConnection(Unknown
> Source) [derbyclient.jar:na]
> ... 20 common frames omitted
> Caused by: java.sql.SQLNonTransientConnectionException: A network protocol
> error was encountered and the connection has been terminated: A PROTOCOL Data
> Stream Syntax Error was detected. Reason: 0x2,644. Plaintext connection
> attempt to an SSL enabled server?
> at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown
> Source) [derbyclient.jar:na]
> at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
> [derbyclient.jar:na]
> at org.apache.derby.client.am.PreparedStatement.execute(Unknown Source)
> [derbyclient.jar:na]
> at
> org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169)
> [commons-dbcp-1.2.2.jar:1.2.2]
> I ran the test cases on SSL enabled connection but eror still exists.
> 3) some times it gives throws an exception while while fetching the CLOB data
> from database tables.
> The exception 'java.sql.SQLException: The locator that was supplied for this
> CLOB/BLOB is invalid' was thrown while evaluating an expression.
> You cannot invoke other java.sql.Clob/java.sql.Blob methods after calling the
> free() method or after the Blob/Clob's transaction has been committed or
> rolled back.
> this occurs even if I am using connection with auto commit false and
> committing on connection before result set is closed. code snippet for the
> same is:
> String str = "";
> getMessageStmt.setString(1, messageId);
> ResultSet resultSet = getMessageStmt.executeQuery();
> Clob clob = null;
> if (resultSet.next()) {
> clob = resultSet.getClob(1);
> try {
> str = clobStringConversion(clob);
> } catch (IOException e) {
> throw new SQLException("Failed to convert CLOB to String.", e);
> }
> } else {
> log.info("No record found for the messageId: " + messageId);
> return null;
> }
> connection.commit();
> resultSet.close();
>
> where *getMessageStmt is the preparedStatement initialized at start of
> application
> I appreciate any help or pointers you can provide!
> Thanks and Regards,
> Baba
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.