[ http://issues.apache.org/jira/browse/DERBY-822?page=all ]
Kathey Marsden updated DERBY-822:
---------------------------------
Derby Info: [Existing Application Impact, Release Note Needed] (was:
[Patch Available])
RELEASE NOTE:
Pre-fetching with Network Client/Server is a performance optimization that
eliminates a round trip to the server. Essentially the first ResultSet next()
call is executed on the Statement executeQuery() or execute(). Applications
are typically prepared to handle this but the following issue may be seen,
PROBLEM
Queries may fail earlier and locks may be aquired earlier when executing
queries. Location where errors occur embedded environment is different.
SYMPTOM
Errors that happen as part of the normal execution path are moved earlier.
For example, code to execute a query, with executeQuery() retrieve the result
set metadata and then perform a next() might fail with a lock timeout on
executeQuery() instead of next(). Locking changes are observed.
CAUSE
Pre-fetching moves execution of retrieval of data earlier for network
client/server configurations.
SOLUTION
This was an intentional behavior change to improve performance. No Derby
product solution is offered.
WORKAROUND
Application code needs to be changed to adjust error handling if needed.
> Client driver: Pre-fetch data on executeQuery()
> -----------------------------------------------
>
> Key: DERBY-822
> URL: http://issues.apache.org/jira/browse/DERBY-822
> Project: Derby
> Type: Improvement
> Components: Network Server, Performance
> Versions: 10.2.0.0
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Priority: Minor
> Fix For: 10.2.0.0
> Attachments: DERBY-822-v1.diff, DERBY-822-v1.stat, DERBY-822-v2.diff,
> DERBY-822-v2.stat, DERBY-822-v3.diff, DERBY-822-v3.stat
>
> Currently, the client driver does not pre-fetch data when
> executeQuery() is called, but it does on the first call to
> ResultSet.next(). Pre-fetching data on executeQuery() would reduce
> network traffic and improve performance.
> The DRDA protocol supports this. From the description of OPNQRY (open
> query):
> The qryrowset parameter specifies whether a rowset of rows is to be
> returned with the command. This is only honored for non-dynamic
> scrollable cursors (QRYATTSNS not equal to QRYSNSDYN) and for
> non-scrollable cursors conforming to the limited block query
> protocol. The target server fetches no more than the requested
> number of rows. It may fetch fewer rows if it is restricted by extra
> query block limits, or if a fetch operation results in a negative
> SQLSTATE or an SQLSTATE of 02000.
--
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