[ 
https://issues.apache.org/jira/browse/JENA-1939?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17178854#comment-17178854
 ] 

ASF subversion and git services commented on JENA-1939:
-------------------------------------------------------

Commit bdb5439d22b80b2909258449d82fb7b5003fd64c in jena's branch 
refs/heads/master from František Kučera
[ https://gitbox.apache.org/repos/asf?p=jena.git;h=bdb5439 ]

JENA-1939: fix getUpdateCount() in the JDBC driver
The method JenaStatement.getUpdateCount() returns 0. But java.sql.Statement 
documentation says:

    Returns: the current result as an update count; -1 if the current result is 
a ResultSet object or there are no more results

Returning correct value is important because a single statement may have 
multiple result sets and cause mutiple updates (not only multiple updated 
records, but multiple sets of updated records).

Applications (e.g. SQL-DK) iterate over these multiple results and need to know 
when finish. The getMoreResults() documentation says:

    There are no more results when the following is true: 
((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))

But if 0 is returned, the application enters infinite loop.


> getUpdateCount() in the JDBC driver returns incorrect value - it looks like 
> there are always more results (infinite loop)
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: JENA-1939
>                 URL: https://issues.apache.org/jira/browse/JENA-1939
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: JDBC
>            Reporter: František Kučera
>            Priority: Major
>         Attachments: jena-jdbc-updateCount-patch-01.diff
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> The method {{JenaStatement.getUpdateCount()}} returns 0. But 
> [java.sql.Statement|https://docs.oracle.com/javase/8/docs/api/java/sql/Statement.html#getUpdateCount--]
>  documentation says:
> bq. Returns: the current result as an update count; -1 if the current result 
> is a ResultSet object or there are no more results
> Returning correct value is important because a single statement may have 
> multiple result sets and cause mutiple updates (not only multiple updated 
> records, but multiple sets of updated records).
> Applications (e.g. [SQL-DK|http://sql-dk.globalcode.info/]) iterate over 
> these multiple results and need to know when finish. The 
> [getMoreResults()|https://docs.oracle.com/javase/8/docs/api/java/sql/Statement.html#getMoreResults--]
>  documentation says:
> bq. There are no more results when the following is true: 
> {{((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))}}
> But if 0 is returned, the application enters infinite loop.
> I think that [change in my 
> branch|https://git-zaloha.frantovo.cz/gitbox.apache.org/repos/asf/jena.git/log/?h=JENA-1939_updateCount]
>  could resolve this issue (also attached as a patch).
> P.S. Is there a way to return actual count of updated records? 
> ({{UpdateProcessor.execute()}} returns void).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to