Re: 8.4b1: Query returning results in different order to 8.3

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: 8.4b1: Query returning results in different order to 8.3
Дата
Msg-id 49EA1F83.1000802@dunslane.net
обсуждение исходный текст
Ответ на 8.4b1: Query returning results in different order to 8.3  (Ian Barwick <barwick@gmail.com>)
Список pgsql-hackers

Ian Barwick wrote:
>
>
> Workaround / solution to produce consistent results is to move the
> "ORDER BY 1" to the main SELECT clause:
>
>     SELECT 1 AS id , 2 AS tmpl_id
>      WHERE FALSE
>         UNION
>     SELECT * FROM
>     (SELECT 2 AS id, 96 AS tmpl_id
>          UNION
>      SELECT 3 AS id, 101 AS tmpl_id
>      ) tmpl
>      WHERE tmpl_id IS NOT NULL
>   ORDER BY 1
>
> (The full version of this query in its original form is in production
> on 8.2 and 8.3 versions and I am confident it has always produced
> consistent results. It is used to select the appropriate template for
> pages on a website and someone would have noticed long before now if
> it was serving up the wrong template).
>
> Note I'm not sure whether this is a bug, or whether the assumption
> made for the original query (that the row order returned by the
> subquery would be carried over to the main part of the query) is
> incorrect but just happened to work as expected pre-8.4.
>
>
>   

I don't believe it's a bug - the assumption is one you're not entitled 
to make. Your "workaround" is the correct solution, ISTM.

cheers

andrew


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

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: 8.4b1: Query returning results in different order to 8.3
Следующее
От: Tom Lane
Дата:
Сообщение: Re: 8.4b1: Query returning results in different order to 8.3