Re: BUG #16548: Order by on array element giving disparity in result

Поиск
Список
Период
Сортировка
От Francisco Olarte
Тема Re: BUG #16548: Order by on array element giving disparity in result
Дата
Msg-id CA+bJJbxgCHQT2wi_sPW-rfd7Z23t7hu=Vqxpe09G233NdLKn=A@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #16548: Order by on array element giving disparity in result  (Manvendra <manvendra2525@gmail.com>)
Список pgsql-bugs
Manvendra:

On Tue, Jul 21, 2020 at 4:47 PM Manvendra <manvendra2525@gmail.com> wrote:
> Alright! Just wanted to know how limit works here - How limit is showing the different output
> postgres=# select * from bint order by a[2] desc limit 5;
>        a
> ---------------
>  {14}
>  {10}
>  {14}
>  {10,14,10,10}  <-- It comes prior to 5th record and consistently whereas " select * from bint order by a[2] desc;"
showingsomething else consistently.
 
>  {10,14,14,14}
> (5 rows)

It comes in a different order because your query does not fully order
the rows, either with or without limit.

Your order field, a[2], is null, null, null, 14, 14, 14. The server is
free to shuffle the set of rows in any order in the groups which have
the same value for a[2]. It does not shuffle, as it would be a waste
of time, but it is also free to do the following:

1.- Without limit: build the result set and use a quick sort. Or do an
index scan. Or do a stable merge sort. Or a heap sort.
2.- With limit: Scan the rows keeping the top 5 ( this is easy to do
with a heap ), no need to keep all the rows ( I think this comes out
as top-n heapsort or something similar in EXPLAIN ).

It is like what happens if I handle you a shuffled deck of cards and
tell you to order by rank, You will produce 4 aces, for deuces, ...
but the suits will be unordered in each group ( unless you decide to
work extra ). Also, if I ask you to pick the top 6 you may just spread
them on the tabla and handle me the four aces and two deuces, but they
may be in a different order than what you returned on the first
problem as you used a different method more suited for this problem.

Francisco Olarte.



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

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: Bug - 11.8
Следующее
От: Jehan-Guillaume de Rorthais
Дата:
Сообщение: Re: Buffers from parallel workers not accumulated to upper nodes with gather merge