Marco Belladelli created DERBY-7153:
---------------------------------------

             Summary: Wrong data returned from left join with subquery and 
nested left joins
                 Key: DERBY-7153
                 URL: https://issues.apache.org/jira/browse/DERBY-7153
             Project: Derby
          Issue Type: Bug
          Components: SQL
    Affects Versions: 10.16.1.1, 10.15.2.0
            Reporter: Marco Belladelli
         Attachments: problematic_query-1.sql, schema_creation-1.sql

We encountered what appears to be a problematic query that returns wrong data 
for a column located in a left-joined subquery which has additional nested 
left-joins.

I have attached a SQL script to the issue to create the simple schema needed to 
reproduce this bug as well as the query itself.

The query is the following:
{code:sql}
select
    r1_0.id,
    r1_0.childId,
    c1_1.id,
    c1_0.disc_col
from
    RootOne r1_0
        left join
    ((select
          t.id,
          t.disc_col
      from
          BaseClass t
      where
              t.disc_col in ('child_a_2', 'child_a_1')) c1_0
        join
        child_entity c1_1
        on c1_0.id=c1_1.id
        left join
        SubChildEntityA1 c1_2
        on c1_0.id=c1_2.id)
    on c1_1.id=r1_0.childId;{code}
Here, we get an incorrect result for `c1_0.disc_col`: we would expect a varchar 
value (contained in the `BaseClass` table), but we get a `11` (which incidently 
is the value of the `id` column).

 

The same exact query works as expected when either:
 * not using `left` as the first join type (e.g. both `inner` and `right` work)
 * not left-joining the `SubChildEntityA1` table (using `inner` join or 
removing the join altogether)

As an added note, we tried inverting the column order in the `BaseClass` 
subquery and we still got an incorrect result, but this time we got a `1`.

 

All tests were run on Apache Derby embedded, both on version 10.15.2.0 and 
10.16.1.1.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to