Re: Question about sorting internals

Поиск
Список
Период
Сортировка
От Ashutosh Bapat
Тема Re: Question about sorting internals
Дата
Msg-id CAFjFpRfZF4Ojvag=FcgFQKCFzkveKqY+nD9LaGi0--cq4sjARw@mail.gmail.com
обсуждение исходный текст
Ответ на Question about sorting internals  (hubert depesz lubaczewski <depesz@depesz.com>)
Ответы Re: Question about sorting internals
Список pgsql-hackers
Hi deepesz,
You might want to see their EXPLAIN VERBOSE outputs. Having one of them (2004 one) lesser number of rows, might be getting picked up as first relation being union and thus ends up having it's rows before the second one. Explain output would make it more clear. Also, try having same number of rows in both the relations.


On Wed, Dec 11, 2013 at 3:26 PM, hubert depesz lubaczewski <depesz@depesz.com> wrote:
Hi,

before I'll go any further - this is only thought-experiment. I do not
plan to use such queries in real-life applications. I was just presented
with a question that I can't answer in any logical way.

There are two simple queries:

#v+
with rok2005 (miesiac,wynik) as (VALUES (1,1),(2,2)      ,(4,4),(5,NULL),(6,6))
    ,rok2004 (miesiac,wynik) as (VALUES (1,3)      ,(3,3),(4,5)         ,(6,6))
SELECT
distinct on (miesiac) *
FROM (
    SELECT miesiac, 2005 as rok, wynik FROM rok2005
    union all
    SELECT miesiac, 2004 as rok, wynik FROM rok2004
) as polaczone
ORDER BY miesiac, wynik desc;
#v-

#v+
with rok2005 (miesiac,wynik) as (VALUES (1,1),(2,2)      ,(4,4),(5,NULL),(6,6))
    ,rok2004 (miesiac,wynik) as (VALUES (1,3)      ,(3,3),(4,5)         ,(6,6))
SELECT
distinct on (miesiac) *
FROM (
    SELECT miesiac, 2004 as rok, wynik FROM rok2004
    union all
    SELECT miesiac, 2005 as rok, wynik FROM rok2005
) as polaczone
ORDER BY miesiac, wynik desc;
#v-

They differ only in order of queries in union all part.

The thing is that they return the same result. Why isn't one of them returning
"2005" for 6th "miesiac"?

I know I'm not sorting using "rok", which means I'm getting "undefined
functionality". Fine. But what exactly is happening that regardless of
order of rows in subquery, I get the same, always lower, rok in output?

Best regards,

depesz

--
The best thing about modern society is how easy it is to avoid contact with it.
                                                             http://depesz.com/



--
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company

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

Предыдущее
От: hubert depesz lubaczewski
Дата:
Сообщение: Question about sorting internals
Следующее
От: Dimitri Fontaine
Дата:
Сообщение: Re: Completing PL support for Event Triggers