Re: wrong query result with jit_above_cost= 0

Поиск
Список
Период
Сортировка
От Dmitry Dolgov
Тема Re: wrong query result with jit_above_cost= 0
Дата
Msg-id CA+q6zcWa7OhTT=8KRJygbO3aAoEK1HQYOZREj45s59dS7EnzPg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: wrong query result with jit_above_cost= 0  (Andres Freund <andres@anarazel.de>)
Ответы Re: wrong query result with jit_above_cost= 0  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers
> On 26 June 2018 at 20:23, Andres Freund <andres@anarazel.de> wrote:
> Hi,
>
> On 2018-06-26 23:50:32 +0530, Rushabh Lathia wrote:
>> I found the below query which returns the wrong output
>> when jit_above_cost= 0 is set.
>>
>> Steps to reproduce:
>>
>> CREATE TABLE emp (
>>     epno           NUMERIC(4),
>>     ename           VARCHAR(10),
>>     job             VARCHAR(9),
>>     mgr             NUMERIC(4),
>>     hiredate        DATE,
>>     sal             NUMERIC(7,2),
>>     comm            NUMERIC(7,2),
>>     deptno          NUMERIC(2)
>> );
>>
>> INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,'17-DEC-80',800,NULL,20);
>> INSERT INTO emp VALUES (7499,'ALLEN','SALESMAN',7698,'20-FEB-81',1600,300,30);
>>
>> set jit_above_cost= 0;
>>
>> select max(epno) from emp group by rollup((deptno,epno)) order by 1 asc;
>>
>> without the ROLLUP, I don't see any problem with results.
>
> Interesting.  I've opened an open item referencing this.

Hi,

Just out of curiosity, what exactly is wrong with the output of this query? I
see the same results with jit_above_cost = 0 and with the default value:

=# show jit_above_cost;
 jit_above_cost
----------------
 100000
(1 row)

=# select max(epno) from emp group by rollup((deptno,epno)) order by 1 asc;
 max
------
 7369
 7499
 7499
(3 rows)

=# set jit_above_cost = 0;
SET
=# select max(epno) from emp group by rollup((deptno,epno)) order by 1 asc;
 max
------
 7369
 7499
 7499
(3 rows)

And as far as I understand it's totally correct, since we do rollup by just two
values and have one more row as a total (with NULLs):

=# select max(epno), deptno, epno
   from emp group by rollup((deptno,epno)) order by 1 asc;

 max  | deptno | epno
------+--------+------
 7369 |     20 | 7369
 7499 |   NULL | NULL
 7499 |     30 | 7499
(3 rows)


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

Предыдущее
От: Arseny Sher
Дата:
Сообщение: Re: Fix slot's xmin advancement and subxact's lost snapshots in decoding.
Следующее
От: Andres Freund
Дата:
Сообщение: Re: wrong query result with jit_above_cost= 0