diff options
author | Michael Paquier <michael@paquier.xyz> | 2023-01-26 12:23:16 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2023-01-26 12:23:16 +0900 |
commit | 9d2d9728b8d546434aade4f9667a59666588edd6 (patch) | |
tree | f708188532e0d0cc85cbe5f03d892edce07478ee /src/backend/commands/explain.c | |
parent | ffcf6f4cfca5a4ce2ac7ff7e8fa17541a5a9caea (diff) | |
download | postgresql-9d2d9728b8d546434aade4f9667a59666588edd6.tar.gz postgresql-9d2d9728b8d546434aade4f9667a59666588edd6.zip |
Make auto_explain print the query identifier in verbose mode
When auto_explain.log_verbose is on, auto_explain should print in the
logs plans equivalent to the EXPLAIN (VERBOSE). However, when
compute_query_id is on, query identifiers were not showing up, being
only handled by EXPLAIN (VERBOSE). This brings auto_explain on par with
EXPLAIN regarding that. Note that like EXPLAIN, auto_explain does not
show the query identifier when compute_query_id=regress.
The change is done so as the choice of printing the query identifier is
done in ExplainPrintPlan() rather than in ExplainOnePlan(), to avoid a
duplication of the logic dealing with the query ID. auto_explain is the
only in-core caller of ExplainPrintPlan().
While looking at the area, I have noticed that more consolidation
between EXPLAIN and auto_explain would be in order for the logging of
the plan duration and the buffer usage. This refactoring is left as a
future change.
Author: Atsushi Torikoshi
Reviewed-by: Justin Pryzby, Julien Rouhaud
Discussion: https://postgr.es/m/1ea21936981f161bccfce05765c03bee@oss.nttdata.com
Diffstat (limited to 'src/backend/commands/explain.c')
-rw-r--r-- | src/backend/commands/explain.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 5212a64b1e5..a0311ce9dc6 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -604,22 +604,6 @@ ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es, /* Create textual dump of plan tree */ ExplainPrintPlan(es, queryDesc); - /* - * COMPUTE_QUERY_ID_REGRESS means COMPUTE_QUERY_ID_AUTO, but we don't show - * the queryid in any of the EXPLAIN plans to keep stable the results - * generated by regression test suites. - */ - if (es->verbose && plannedstmt->queryId != UINT64CONST(0) && - compute_query_id != COMPUTE_QUERY_ID_REGRESS) - { - /* - * Output the queryid as an int64 rather than a uint64 so we match - * what would be seen in the BIGINT pg_stat_statements.queryid column. - */ - ExplainPropertyInteger("Query Identifier", NULL, (int64) - plannedstmt->queryId, es); - } - /* Show buffer usage in planning */ if (bufusage) { @@ -791,6 +775,22 @@ ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc) * don't match the built-in defaults. */ ExplainPrintSettings(es); + + /* + * COMPUTE_QUERY_ID_REGRESS means COMPUTE_QUERY_ID_AUTO, but we don't show + * the queryid in any of the EXPLAIN plans to keep stable the results + * generated by regression test suites. + */ + if (es->verbose && queryDesc->plannedstmt->queryId != UINT64CONST(0) && + compute_query_id != COMPUTE_QUERY_ID_REGRESS) + { + /* + * Output the queryid as an int64 rather than a uint64 so we match + * what would be seen in the BIGINT pg_stat_statements.queryid column. + */ + ExplainPropertyInteger("Query Identifier", NULL, (int64) + queryDesc->plannedstmt->queryId, es); + } } /* |