Invent GENERIC_PLAN option for EXPLAIN.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 24 Mar 2023 21:07:14 +0000 (17:07 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 24 Mar 2023 21:07:22 +0000 (17:07 -0400)
commit3c05284d83b230728e59a25e828992037ef77096
tree4e8ef1779b279c01ac28413f1ea7fccbcac9ed7f
parent5b140dc8f094e8a11fccab6bdee50d4c599e7444
Invent GENERIC_PLAN option for EXPLAIN.

This provides a very simple way to see the generic plan for a
parameterized query.  Without this, it's necessary to define
a prepared statement and temporarily change plan_cache_mode,
which is a bit tedious.

One thing that's a bit of a hack perhaps is that we disable
execution-time partition pruning when the GENERIC_PLAN option
is given.  That's because the pruning code may attempt to
fetch the value of one of the parameters, which would fail.

Laurenz Albe, reviewed by Julien Rouhaud, Christoph Berg,
Michel Pelletier, Jim Jones, and myself

Discussion: https://postgr.es/m/0a29b954b10b57f0d135fe12aa0909bd41883eb0.camel@cybertec.at
doc/src/sgml/ref/explain.sgml
src/backend/commands/explain.c
src/backend/executor/execMain.c
src/backend/executor/execPartition.c
src/backend/parser/analyze.c
src/bin/psql/tab-complete.c
src/include/commands/explain.h
src/include/executor/executor.h
src/test/regress/expected/explain.out
src/test/regress/sql/explain.sql