Re: explain plans with information about (modified) gucs - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: explain plans with information about (modified) gucs
Date
Msg-id CAFj8pRCEZhVc3i8UEGhT9xUYMAY_MqZSYVo4s18K1hB=zNHK0A@mail.gmail.com
Whole thread Raw
In response to Re: explain plans with information about (modified) gucs  (Tomas Vondra <tomas.vondra@2ndquadrant.com>)
Responses Re: explain plans with information about (modified) gucs
List pgsql-hackers


út 1. 1. 2019 v 18:39 odesílatel Tomas Vondra <tomas.vondra@2ndquadrant.com> napsal:
Attached is v4, changing how GUCs are picked for inclusion on the query
plans. Instead of picking the GUCs based on group and/or explicitly, a
new GUC_EXPLAIN flag is used for that.

I went through GUCs defined in guc.c and marked those in QUERY_TUNING*
groups accordingly, with the exception of default_statistics_target
because that seems somewhat useless without showing the value used to
actually analyze the table (and/or columns).

I've also included a couple of other GUCs, that I find to be relevant:

- parallel_leader_participation
- max_parallel_workers_per_gather
- max_parallel_workers
- search_path
- effective_io_concurrency
- work_mem
- temp_buffers
- plan_cache_mode

when plan_cache_mode is auto, you know maybe too less executed query. Maybe you can read somewhere if plan was custom or generic.


I think this covers the interesting GUCs pretty well, although perhaps I
missed something.

seq_page_cost, random_page_cost, from_collapse_limit, join_collapse_limit, ... enable_***


The one bit that needs fixing is escaping the GUC values when showing
them in the plan. Looking at the other places that currently escape
stuff, I see they only care about YAML/JSON/XML and leave the regular
output unescaped. I was wondering if it's OK with the current format
with all GUCs on a single line

                    QUERY PLAN
---------------------------------------------------
 Seq Scan on t  (cost=0.00..54.63 rows=13 width=4)
   Filter: ('x''y'::text = (a)::text)
 GUCs: enable_nestloop = 'off', work_mem = '32MB'
(3 rows)

but I suppose it is, because without the escaping a user can break
whatever format we use. So I'll do the same thing, escaping just the
structured formats (YAML et al).

The question however is whether someone has a better formatting idea?

regards

--
Tomas Vondra                  http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pgsql-hackers by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: explain plans with information about (modified) gucs
Next
From: Tom Lane
Date:
Subject: Re: Implicit make rules break test examples