Re: Report planning memory in EXPLAIN ANALYZE
Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
From: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: ams@toroid.org, jian he <jian.universality@gmail.com>, Andrei Lepikhov <a.lepikhov@postgrespro.ru>,
Andy Fan <zhihui.fan1213@gmail.com>, David Rowley <dgrowleyml@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-01-18T11:28:49Z
Lists: pgsql-hackers
On Thu, Jan 18, 2024 at 4:42 PM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
>
> On 2024-Jan-18, Ashutosh Bapat wrote:
>
> Hmm ... TBH I don't like the "showed_planning" thing very much, but if
> we need to conditionalize the printing of "Planning:" on whether we
> print either of buffers or memory, maybe there's no way around something
> like what you propose.
right.
>
> However, I don't understand this output change, and I think it indicates
> a bug in the logic there:
>
> > diff --git a/src/test/regress/expected/explain.out b/src/test/regress/expected/explain.out
> > index 86bfdfd29e..55694505a7 100644
> > --- a/src/test/regress/expected/explain.out
> > +++ b/src/test/regress/expected/explain.out
> > @@ -331,15 +331,15 @@ select explain_filter('explain (memory) select * from int8_tbl i8');
> > explain_filter
> > ---------------------------------------------------------
> > Seq Scan on int8_tbl i8 (cost=N.N..N.N rows=N width=N)
> > - Planner Memory: used=N bytes allocated=N bytes
> > + Memory: used=N bytes, allocated=N bytes
> > (2 rows)
>
> Does this really make sense?
The EXPLAIN output produces something like below
explain_filter
---------------------------------------------------------
Seq Scan on int8_tbl i8 (cost=N.N..N.N rows=N width=N)
Planning:
Memory: used=N bytes, allocated=N bytes
(3 rows)
but function explain_filter(), defined in explain.sql, removes line
containing Planning: and we end up with output
explain_filter
---------------------------------------------------------
Seq Scan on int8_tbl i8 (cost=N.N..N.N rows=N width=N)
Memory: used=N bytes, allocated=N bytes
(2 rows)
Hence this weird difference.
--
Best Wishes,
Ashutosh Bapat
Commits
-
Add EXPLAIN (MEMORY) to report planner memory consumption
- 5de890e3610d 17.0 landed
-
Fix explain regression test failure.
- eabba4a3eb71 14.0 cited