Re: making EXPLAIN extensible

zengman <zengman@halodbtech.com>

From: Man Zeng <zengman@halodbtech.com>
To: pgsql-hackers@lists.postgresql.org
Cc: Robert Haas <robertmhaas@gmail.com>
Date: 2025-03-28T04:12:17Z
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 →
  1. pg_overexplain: Use PG_MODULE_MAGIC_EXT.

  2. pg_overexplain: Call previous hooks as appropriate.

  3. pg_overexplain: Additional EXPLAIN options for debugging.

  4. Add an additional hook for EXPLAIN option validation.

  5. Add some new hooks so extensions can add details to EXPLAIN.

  6. Make it possible for loadable modules to add EXPLAIN options.

I tried it out and felt good about this feature.
But I found that the following information is not very complete.

postgres=# select * from pg_get_loaded_modules();
 module_name  | version |     file_name     
--------------+---------+-------------------
              |         | pg_overexplain.so
 auto_explain | 18devel | auto_explain.so
 plpgsql      | 18devel | plpgsql.so
(3 rows)

Some minor changes may be needed.

// PG_MODULE_MAGIC;
PG_MODULE_MAGIC_EXT(
					.name = "pg_overexplain",
					.version = PG_VERSION
);