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 "Bryan Pendleton (JIRA)" <ji...@apache.org> on 2017/10/07 16:57:01 UTC

[jira] [Commented] (DERBY-6968) Instability in DatabaseMetaDataTest.testGetBestRowIdentifier

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

Bryan Pendleton commented on DERBY-6968:
----------------------------------------

Our results aren't ordered at all? Or they are only partially ordered?

The spec says: "They are ordered by SCOPE."

https://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getBestRowIdentifier(java.lang.String,%20java.lang.String,%20java.lang.String,%20int,%20boolean)

So if we aren't ordering our results by the SCOPE column, that certainly seems incorrect.

Regarding your two suggestions, my instinct is to prefer improving the engine implementation over improving the test. I can't immediately think of a downside to making our implementation of getBestRowIdentifier deliver a tighter ordering than it currently does.

That said, I've never used getBestRowIdentifier, and the JDBC spec itself certainly doesn't provide much intuition about why I would want to, nor did I find any useful examples in a few minutes of idle searching. What the heck is this method used for, and why?


> Instability in DatabaseMetaDataTest.testGetBestRowIdentifier
> ------------------------------------------------------------
>
>                 Key: DERBY-6968
>                 URL: https://issues.apache.org/jira/browse/DERBY-6968
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC, Test
>    Affects Versions: 10.14.1.0
>            Reporter: Rick Hillegas
>         Attachments: 10.14.1.testResults.0-failures
>
>
> Ingo reports instabilities in his platform tests of the 10.14.1.0 release candidate. He sees intermittent failures in DatabaseMetaDataTest.testGetBestRowIdentifier and then subsequent failures due to poor test case isolation in that test. The test case fails because DatabaseMetaData.getBestRowIdentifier() sometimes returns rows in a different order than the test expects.
> The JDBC contract for that method does not specify an order for the returned rows. ORDER BY clauses appear on some but not all the catalog queries in metadata.properties which define the Derby result.
> I see two ways to address this issue:
> 1) The test could be fixed so that it hand-sorts the returned rows in order to guarantee deterministic results.
> 2) ORDER BY clauses could be added to all the implicated metadata queries.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)