[ 
https://issues.apache.org/jira/browse/DERBY-3404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12568652#action_12568652
 ] 

Dyre Tjeldvoll commented on DERBY-3404:
---------------------------------------

Great. Fwiw, her is the call stack showing where the value is changed from "Y" 
to null:

(dbx) where
=>[1] org.apache.derby.iapi.types.SQLChar.restoreToNull(this = <OBJECT>)  
"SQLChar.java":838
  [2] org.apache.derby.iapi.types.DataType.recycle(this = <OBJECT>)  
"DataType.java":254
  [3] org.apache.derby.impl.sql.execute.ValueRow.resetRowArray(this = <OBJECT>) 
 "ValueRow.java":179
  [4] org.apache.derby.impl.sql.execute.ScanResultSet.close(this = <OBJECT>)  
"ScanResultSet.java":237
  [5] org.apache.derby.impl.sql.execute.TableScanResultSet.close(this = 
<OBJECT>)  "TableScanResultSet.java":796
  [6] org.apache.derby.impl.sql.execute.BulkTableScanResultSet.close(this = 
<OBJECT>)  "BulkTableScanResultSet.java":348
  [7] 
org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.endTransactionActivationHandling(this
 = <OBJECT>, forRollback = false)  "GenericLanguageConnectionContext.java":2766
  [8] 
org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.doCommit(this = 
<OBJECT>, commitStore = true, sync = true, commitflag = 0, requestedByUser = 
true)  "GenericLanguageConnectionContext.java":1125
  [9] 
org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.userCommit(this 
= <OBJECT>)  "GenericLanguageConnectionContext.java":1003
  [10] org.apache.derby.impl.jdbc.TransactionResourceImpl.commit(this = 
<OBJECT>)  "TransactionResourceImpl.java":237
  [11] org.apache.derby.impl.jdbc.EmbedConnection.commit(this = <OBJECT>)  
"EmbedConnection.java":1482
  [12] CloseOnCommit.main(args = <ARRAY>)  "CloseOnCommit.java":14
(dbx) 

So I guess one of the calls to XResultSet.close() that were added in DERBY-827 
is causing the regression (as you guessed)

> EmbedResultSet.getString() returns wrong value after auto-commit with 
> CLOSE_CURSORS_AT_COMMIT
> ---------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3404
>                 URL: https://issues.apache.org/jira/browse/DERBY-3404
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.3.1.4, 10.3.2.1, 10.4.0.0
>            Reporter: Knut Anders Hatlen
>            Priority: Minor
>         Attachments: CloseOnCommit.java
>
>
> The following code prints "null" to the console with the embedded driver:
>         Statement s = c.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>                                         ResultSet.CONCUR_READ_ONLY,
>                                         ResultSet.CLOSE_CURSORS_AT_COMMIT);
>         ResultSet rs = s.executeQuery("select * from sysibm.sysdummy1");
>         rs.next();
>         c.createStatement().executeQuery("values 1").close(); // causes 
> auto-commit
>         System.out.println(rs.getString(1));
> The call to rs.getString() should perhaps have thrown SQLException, since the 
> auto-commit between next() and getString() should close the ResultSet when 
> the holdability is CLOSE_CURSORS_AT_COMMIT, I think. Anyway, the value stored 
> in SYSIBM.SYSDUMMY1 is 'Y' and not NULL, so it should definitely not return 
> null.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to