Re: making EXPLAIN extensible
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Andrei Lepikhov <lepihov@gmail.com>
Cc: Sami Imseih <samimseih@gmail.com>, Jeff Davis <pgsql@j-davis.com>,
Thom Brown <thom@linux.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Tom Lane <tgl@sss.pgh.pa.us>
Date: 2025-05-22T14:17:05Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
pg_overexplain: Use PG_MODULE_MAGIC_EXT.
- 83ccc85859f3 18.0 landed
-
pg_overexplain: Call previous hooks as appropriate.
- 9f0c36aea0fb 18.0 landed
-
pg_overexplain: Additional EXPLAIN options for debugging.
- 8d5ceb113e3f 18.0 landed
-
Add an additional hook for EXPLAIN option validation.
- 50ba65e73325 18.0 landed
-
Add some new hooks so extensions can add details to EXPLAIN.
- 4fd02bf7cf94 18.0 landed
-
Make it possible for loadable modules to add EXPLAIN options.
- c65bc2e1d14a 18.0 landed
On Sat, May 3, 2025 at 2:44 PM Andrei Lepikhov <lepihov@gmail.com> wrote:
> I have one additional proposal.
>
> I currently use this interface and have noticed that the parameter
> `option_name` in the RegisterExtensionExplainOption routine is
> case-sensitive. Since SQL treats our extended options as
> case-insensitive, it would be beneficial to either add a comment
> clarifying this behavior or forcedly convert incoming text constant to
> lowercase.
I don't think this is really true. It's just standard identifier
handling. You can have options with upper-case names if you quote
them.
robert.haas=# explain (verbose) select 1;
QUERY PLAN
------------------------------------------
Result (cost=0.00..0.01 rows=1 width=4)
Output: 1
(2 rows)
robert.haas=# explain (VERBOSE) select 1;
QUERY PLAN
------------------------------------------
Result (cost=0.00..0.01 rows=1 width=4)
Output: 1
(2 rows)
robert.haas=# explain ("verbose") select 1;
QUERY PLAN
------------------------------------------
Result (cost=0.00..0.01 rows=1 width=4)
Output: 1
(2 rows)
robert.haas=# explain ("VERBOSE") select 1;
ERROR: unrecognized EXPLAIN option "VERBOSE"
LINE 1: explain ("VERBOSE") select 1;
^
--
Robert Haas
EDB: http://www.enterprisedb.com