You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "A B (JIRA)" <de...@db.apache.org> on 2005/08/04 21:15:36 UTC

[jira] Updated: (DERBY-170) Inserting large string value into non-existent table causes communication link failure over Network Server.

     [ http://issues.apache.org/jira/browse/DERBY-170?page=all ]

A B updated DERBY-170:
----------------------

        Summary: Inserting large string value into non-existent table causes communication link failure over Network Server.  (was: Three Network Server problems related to large data transfer from server to client.)
    Description: 
The following failure, along with the 2 sub-tasks created under this issue, are reproducible both from a JDBC client (JCC) and from an ODBC client (in this case, DB2 Runtime Client).  I've grouped them all together because they all share the characteristic of "large data transfer", though the context in which the transfer occurs is different for each failure.

Failure: When trying to insert a large string value (ex. 1 million chars) into a non-existent table using a prepared statement, an ASSERT failure occurs on the Derby side (because data size < 0), which leads to connection closure and communication link failure.  Note that the problem does NOT happen if the target table actually exists.  Repro can be found in the "assert_repro.java" file attached to this bug.

  was:
The following three failures, all of which deal with large data in some form or another, can occur when an application is running against Derby Network Server.  The failures are reproducible both from a JDBC client (JCC) and from an ODBC client (in this case, DB2 Runtime Client).

I'm filing all three failures as a single JIRA entry since they all share the characteristic of "large data transfer", though the context in which the transfer occurs is different for each failure.  A fix for this bug won't necessarily be a single patch--it's reasonable and acceptable that the different failures be addressed in different patches, and that the set of patches as a whole is considered the "fix" for this bug.  Of course, if people prefer that I break this down into separate JIRA entries, feel free to say so.

Failure 1: When trying to insert a large string value (ex. 1 million chars) into a non-existent table using a prepared statement, an ASSERT failure occurs on the Derby side (because data size < 0), which leads to connection closure and communication link failure.  Note that the problem does NOT happen if the target table actually exists.  Repro can be found in the "assert_repro.java" file attached to this bug.

Failure 2: When Derby Network Server tries to return ~32K or greater data as part of the result set for a stored procedure, a protocol exception occurs and causes deallocation of the connection.  Repro can be found in the "stored_proc_repro.java" file, which uses the stored procedure "BIG_COL" declared in "storedProcs.java".  Both files are attached to this bug.

Failure 3: Server hangs in communication with client when it (the server) tries to send a DSS continuation header to accommodate a high number (hundreds) of return columns from a Java procedure.  Problem appears to be in the way the server creates the DSS continuation header.  Repro can be found in the "stored_proc_repro.java" file, which uses the stored procedure "LOTS_O_COLS" declared in "storedProcs.java".  Both files are attached to this bug.

NOTE: In order for the repros for #2 and #3 to work, you must compile "storedProcs.java" and include the storedProcs.class file in the _server_'s classpath.


I separated the three issues into different Jira tasks, per Kathy Marsden's suggestion.   Thus this issue now only talks about one of the failures; the other two are subtasks.

> Inserting large string value into non-existent table causes communication link failure over Network Server.
> -----------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-170
>          URL: http://issues.apache.org/jira/browse/DERBY-170
>      Project: Derby
>         Type: Bug
>   Components: Network Server
>  Environment: Derby Network Server running with either JDBC or ODBC driver.
>     Reporter: A B
>  Attachments: assert_repro.java, storedProcs.java, stored_proc_repro.java
>
> The following failure, along with the 2 sub-tasks created under this issue, are reproducible both from a JDBC client (JCC) and from an ODBC client (in this case, DB2 Runtime Client).  I've grouped them all together because they all share the characteristic of "large data transfer", though the context in which the transfer occurs is different for each failure.
> Failure: When trying to insert a large string value (ex. 1 million chars) into a non-existent table using a prepared statement, an ASSERT failure occurs on the Derby side (because data size < 0), which leads to connection closure and communication link failure.  Note that the problem does NOT happen if the target table actually exists.  Repro can be found in the "assert_repro.java" file attached to this bug.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira