Use ExplainPropertyInteger for queryid in EXPLAIN
authorDavid Rowley
Mon, 9 Aug 2021 03:46:28 +0000 (15:46 +1200)
committerDavid Rowley
Mon, 9 Aug 2021 03:46:28 +0000 (15:46 +1200)
This saves a few lines of code.  Also add a comment to mention why we use
ExplainPropertyInteger instead of ExplainPropertyUInteger given that
queryid is a uint64 type.

Author: David Rowley
Reviewed-by: Julien Rouhaud
Discussion: https://postgr.es/m/CAApHDvqhSLYpSU_EqUdN39w9Uvb8ogmHV7_3YhJ0S3aScGBjsg@mail.gmail.com
Backpatch-through: 14, where this code was originally added

src/backend/commands/explain.c

index 340db2bac4d06be150623d2bf411d3de2edeaeca..fb87bbf5d35babf60387a04abeb0f08c34d85f9e 100644 (file)
@@ -606,10 +606,12 @@ ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es,
 
    if (es->verbose && plannedstmt->queryId != UINT64CONST(0))
    {
-       char        buf[MAXINT8LEN + 1];
-
-       pg_lltoa(plannedstmt->queryId, buf);
-       ExplainPropertyText("Query Identifier", buf, es);
+       /*
+        * 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 */