Re: Memory leak on subquery as scalar operand

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Memory leak on subquery as scalar operand
Дата
Msg-id 1073512.1667275802@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Memory leak on subquery as scalar operand  (David Rowley <dgrowleyml@gmail.com>)
Ответы Re: Memory leak on subquery as scalar operand
Список pgsql-bugs
David Rowley <dgrowleyml@gmail.com> writes:
> On Tue, 1 Nov 2022 at 13:44, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> It's pretty odd though that it requires two
>> sub-selects to cause the problem.

> Perhaps that's just what it takes to bump the costs above the JIT threshold.

I see JIT being invoked either way:

regression=# explain verbose SELECT
    id,
    (SELECT count(*) FROM leak_test x WHERE x.id=l.id) as x_result,
    (SELECT count(*) FROM leak_test y WHERE y.id=l.id) as y_result
FROM leak_test l;
                                                 QUERY PLAN
------------------------------------------------------------------------------------------------------------
 Seq Scan on public.leak_test l  (cost=0.00..865943.00 rows=100000 width=20)
   Output: l.id, (SubPlan 1), (SubPlan 2)
   SubPlan 1
     ->  Aggregate  (cost=4.31..4.32 rows=1 width=8)
           Output: count(*)
           ->  Index Only Scan using leak_test_pkey on public.leak_test x  (cost=0.29..4.31 rows=1 width=0)
                 Output: x.id
                 Index Cond: (x.id = l.id)
   SubPlan 2
     ->  Aggregate  (cost=4.31..4.32 rows=1 width=8)
           Output: count(*)
           ->  Index Only Scan using leak_test_pkey on public.leak_test y  (cost=0.29..4.31 rows=1 width=0)
                 Output: y.id
                 Index Cond: (y.id = l.id)
 JIT:
   Functions: 12
   Options: Inlining true, Optimization true, Expressions true, Deforming true
(17 rows)

regression=# explain verbose SELECT
    id,
    (SELECT count(*) FROM leak_test x WHERE x.id=l.id) as x_result FROM leak_test l;
                                                 QUERY PLAN
------------------------------------------------------------------------------------------------------------
 Seq Scan on public.leak_test l  (cost=0.00..433693.00 rows=100000 width=12)
   Output: l.id, (SubPlan 1)
   SubPlan 1
     ->  Aggregate  (cost=4.31..4.32 rows=1 width=8)
           Output: count(*)
           ->  Index Only Scan using leak_test_pkey on public.leak_test x  (cost=0.29..4.31 rows=1 width=0)
                 Output: x.id
                 Index Cond: (x.id = l.id)
 JIT:
   Functions: 7
   Options: Inlining false, Optimization false, Expressions true, Deforming true
(11 rows)

Maybe the different "inlining" choice makes a difference?

            regards, tom lane



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

Предыдущее
От: David Rowley
Дата:
Сообщение: Re: Memory leak on subquery as scalar operand
Следующее
От: David Rowley
Дата:
Сообщение: Re: Memory leak on subquery as scalar operand