Menu

#1755 Cardinality violation from Natural Join

version 2.5.x
open-works-for-me
None
5
2026-08-24
2026-08-24
No

Hello,
I have a query which normally works fine, but with the current data is giving me a cardinality violation, but I am struggling to see why; as far as I can see it should just return an empty result:

SELECT * FROM
(SELECT TEST_TYPE, FOLDER_NAME, TEST_NAME FROM TEST_RESULT_EXT WHERE RESULT='F' AND LATEST=TRUE)
NATURAL JOIN
(SELECT LATEST_SUCCESS_SESSION_TIMESTAMP, (SELECT DISTINCT BUILD FROM TEST_RESULT WHERE SESSION_TIMESTAMP=LATEST_SUCCESS_SESSION_TIMESTAMP) AS LATEST_SUCCESS_BUILD, TEST_TYPE, FOLDER_NAME, TEST_NAME FROM (SELECT MAX(SESSION_TIMESTAMP) AS LATEST_SUCCESS_SESSION_TIMESTAMP, TEST_TYPE, FOLDER_NAME, TEST_NAME FROM TEST_RESULT WHERE RESULT='S' GROUP BY TEST_TYPE, FOLDER_NAME, TEST_NAME))

The two subqueries being naturally joined both run correctly, so I can't see why joining them could give a cardinality violation.
Thanks

1 Attachments

Discussion

  • Richard Thomas

    Richard Thomas - 2026-08-24

    The query is the view "current_failures" in the script.

     
  • Fred Toussi

    Fred Toussi - 2026-08-24
    • status: open --> open-works-for-me
    • assigned_to: Fred Toussi
     
  • Fred Toussi

    Fred Toussi - 2026-08-24

    Try this:

    SELECT * FROM
    (SELECT TEST_TYPE, FOLDER_NAME, TEST_NAME FROM TEST_RESULT_EXT WHERE RESULT='F' AND LATEST=TRUE)
    NATURAL JOIN
    (SELECT LATEST_SUCCESS_SESSION_TIMESTAMP, (SELECT max( BUILD) FROM TEST_RESULT WHERE SESSION_TIMESTAMP=LATEST_SUCCESS_SESSION_TIMESTAMP) AS LATEST_SUCCESS_BUILD, TEST_TYPE, FOLDER_NAME, TEST_NAME FROM (SELECT MAX(SESSION_TIMESTAMP) AS LATEST_SUCCESS_SESSION_TIMESTAMP, TEST_TYPE, FOLDER_NAME, TEST_NAME FROM TEST_RESULT WHERE RESULT='S' GROUP BY TEST_TYPE, FOLDER_NAME, TEST_NAME))

     
  • Richard Thomas

    Richard Thomas - 2026-08-24

    Thanks a lot.

     

Log in to post a comment.