diff --git a/contrib/auto_explain/t/001_auto_explain.pl b/contrib/auto_explain/t/001_auto_explain.pl index 0cf093c88e..7873feb044 100644 --- a/contrib/auto_explain/t/001_auto_explain.pl +++ b/contrib/auto_explain/t/001_auto_explain.pl @@ -106,6 +106,35 @@ unlike( qr/Query Parameters:/, "query parameters not logged when disabled, text mode"); +# Query Identifier. +# Logging enabled. +$log_contents = query_log( + $node, + "SELECT * FROM pg_class;", + { + "auto_explain.log_verbose" => "on", + "compute_query_id" => "on" + }); + +like( + $log_contents, + qr/Query Identifier:/, + "query identifier logged with compute_query_id=on, text mode"); + +# Logging disabled. +$log_contents = query_log( + $node, + "SELECT * FROM pg_class;", + { + "auto_explain.log_verbose" => "on", + "compute_query_id" => "regress" + }); + +unlike( + $log_contents, + qr/Query Identifier:/, + "query identifier not logged with compute_query_id=regress, text mode"); + # JSON format. $log_contents = query_log( $node, diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 5212a64b1e..a0311ce9dc 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); + } } /*