Re: Server crashed with dense_rank on partition table.

Поиск
Список
Период
Сортировка
От Amit Langote
Тема Re: Server crashed with dense_rank on partition table.
Дата
Msg-id 24875692-d803-272c-96b0-5e8bf42ca92d@lab.ntt.co.jp
обсуждение исходный текст
Ответ на Re: Server crashed with dense_rank on partition table.  (Michael Paquier <michael@paquier.xyz>)
Ответы Re: Server crashed with dense_rank on partition table.  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Re: Server crashed with dense_rank on partition table.  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers
Hi.

On 2018/06/13 14:55, Michael Paquier wrote:
> On Wed, Jun 13, 2018 at 11:08:38AM +0530, Rajkumar Raghuwanshi wrote:
>> postgres=# SELECT dense_rank(b) WITHIN GROUP (ORDER BY a) FROM pagg_tab
>> GROUP BY b ORDER BY 1;
>> server closed the connection unexpectedly
>>     This probably means the server terminated abnormally
>>     before or while processing the request.
>> The connection to the server was lost. Attempting reset: Failed.
> 
> Indeed, thanks for the test case.  This used to work in v10 but this is
> failing with v11 so I am adding an open item.  The plans of the pre-10
> query and the query on HEAD are rather similar, and the memory context
> at execution time looks messed up.

Fwiw, I see that the crash can also occur even when using a
non-partitioned table in the query, as shown in the following example
which reuses Rajkumar's test data and query:

create table foo (a int, b int, c text);
postgres=# insert into foo select i%20, i%30, to_char(i%12, 'FM0000') from
generate_series(0, 36) i;

select dense_rank(b) within group (order by a) from foo group by b order by 1;
server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

Following query in the regression test suite can also be made to crash by
adding a group by clause:

select dense_rank(3) within group (order by x) from (values
(1),(1),(2),(2),(3),(3),(4)) v(x) group by (x);
server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

Looking at the core dump of this, it seems the following commit may be
relevant:

commit bf6c614a2f2c58312b3be34a47e7fb7362e07bcb
Author: Andres Freund <andres@anarazel.de>
Date:   Thu Feb 15 21:55:31 2018 -0800

    Do execGrouping.c via expression eval machinery, take two.

Thanks,
Amit



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

Предыдущее
От: David Rowley
Дата:
Сообщение: Re: Server crashed with dense_rank on partition table.
Следующее
От: Masahiko Sawada
Дата:
Сообщение: Re: Duplicate Item Pointers in Gin index