On Fri, Apr 03, 2020 at 03:24:41PM +0900, Fujii Masao wrote:
>
>
> On 2020/04/03 12:30, Tom Lane wrote:
> > Fujii Masao <masao.fujii@oss.nttdata.com> writes:
> > > On 2020/04/03 11:58, Michael Paquier wrote:
> > > > prion did not like that:
> > > > https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=prion&dt=2020-04-03%2002%3A33%3A13
> >
> > dory failed as well. The problem is that in text mode, a Buffers line
> > won't appear at all if there were zero buffer accesses. I don't think
> > we really want to change that,
>
> Yes.
>
> > so probably the thing to do is adapt
> > the filter functions in explain.sql so that they suppress Buffers lines
> > altogether in text output. Kind of annoying, but ...
>
> I'm thinking to suppress only Buffers line just after Planning Time line,
> by applying something like the following changes to explain_filter().
> Thought?
+1, that's a better workaround.
>
> declare
> ln text;
> + ignore_output boolean;
> begin
> for ln in execute $1
> loop
> + IF ignore_output THEN
> + ignore_output := false;
> + CONTINUE WHEN (ln ~~ ' Buffers: %');
> + END IF;
> + ignore_output := ln ~~ 'Planning Time: %';
> -- Replace any numeric word with just 'N'
> ln := regexp_replace(ln, '\m\d+\M', 'N', 'g');
> -- In sort output, the above won't match units-suffixed numbers
I'm not sure of what's plpgsql behavior here, but it's probably better to
initialize ignore_output to false. Nitpicking, but I think that
planning_time_found, or something similar, would be better here.