Re: BUG #6154: wrong result with nested left-joins

Поиск
Список
Период
Сортировка
От ai
Тема Re: BUG #6154: wrong result with nested left-joins
Дата
Msg-id 01ce01cc55f3$afa6cd60$0ef46820$@mail.ru
обсуждение исходный текст
Ответ на Re: BUG #6154: wrong result with nested left-joins  ("Kevin Grittner" <Kevin.Grittner@wicourts.gov>)
Список pgsql-bugs
Kevin and all others, thanks for your work!


-----Original Message-----
From: Kevin Grittner [mailto:Kevin.Grittner@wicourts.gov]
Sent: Tuesday, August 09, 2011 12:32 AM
To: ai; 'Tom Lane'
Cc: pgsql-bugs@postgresql.org
Subject: RE: [BUGS] BUG #6154: wrong result with nested left-joins

"ai" <listar@mail.ru> wrote:

> Oops.. I just saw, that I send you "correct" (already with
"workaround")
> sql-code instead of "wrong"...

> here is "wrong" (difference is in "SELECT sub3.key3, sub4.value2
FROM" ):

OK, that is still happening, and looks wrong to me.  The outermost LEFT JOIN
is between this:

test=# SELECT * FROM (SELECT 1 as key1) sub1;
 key1
------
    1
(1 row)

as sub1 and this:

test=#       SELECT sub3.key3, sub4.value2
test-#         FROM (SELECT 1 as key3) sub3
test-#         LEFT JOIN
test-#           (
test(#             SELECT sub5.key5, COALESCE(sub6.value1, 1) as
value2
test(#               FROM (SELECT 1 as key5) sub5
test(#               LEFT JOIN
test(#                 (
test(#                   SELECT 1 as key6, value1
test(#                     FROM (SELECT NULL::integer as value1) sub7
test(#                     WHERE false
test(#                 ) sub6 ON false
test(#           ) sub4 ON sub4.key5=sub3.key3;
 key3 | value2
------+--------
    1 |      1
(1 row)

as sub2 joining on sub1.key1 = sub2.key3.  Yet:

test=# SELECT *
test-#   FROM (SELECT 1 as key1) sub1
test-#   LEFT JOIN
test-#     (
test(#       SELECT sub3.key3, sub4.value2
test(#         FROM (SELECT 1 as key3) sub3
test(#         LEFT JOIN
test(#           (
test(#             SELECT sub5.key5, COALESCE(sub6.value1, 1) as
value2
test(#               FROM (SELECT 1 as key5) sub5
test(#               LEFT JOIN
test(#                 (
test(#                   SELECT 1 as key6, value1
test(#                     FROM (SELECT NULL::integer as value1) sub7
test(#                     WHERE false
test(#                 ) sub6 ON false
test(#           ) sub4 ON sub4.key5=sub3.key3
test(#     ) sub2 ON sub1.key1 = sub2.key3;
 key1 | key3 | value2
------+------+--------
    1 |    1 |
(1 row)

This is on HEAD from today.  Clearly there's a problem.

-Kevin

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "Kevin Grittner"
Дата:
Сообщение: Re: BUG #6154: wrong result with nested left-joins
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #6154: wrong result with nested left-joins