Change internal plan ID type from uint64 to int64
authorMichael Paquier <michael@paquier.xyz>
Sat, 31 May 2025 00:40:45 +0000 (09:40 +0900)
committerMichael Paquier <michael@paquier.xyz>
Sat, 31 May 2025 00:40:45 +0000 (09:40 +0900)
uint64 was chosen to be consistent with the type used by the query ID,
but the conclusion of a recent discussion for the query ID is that int64
is a better fit as the signed form is shown to the user, for PGSS or
EXPLAIN outputs.

This commit changes the plan ID to use int64, following c3eda50b0648
that has done the same for the query ID.

The plan ID is new to v18, introduced in 2a0cd38da5cc.

Author: Michael Paquier <michael@paquier.xyz>
Reviewed-by: Sami Imseih <samimseih@gmail.com>
Discussion: https://postgr.es/m/aCvzJNwetyEI3Sgo@paquier.xyz

src/backend/tcop/postgres.c
src/backend/utils/activity/backend_status.c
src/include/nodes/plannodes.h
src/include/utils/backend_status.h

index 4efd8120d2c2f908872ec56678aa4aeef9a91e78..2f8c3d5f91822f4e7adbd9e861741fcf0a1e2bd1 100644 (file)
@@ -2034,7 +2034,7 @@ exec_bind_message(StringInfo input_message)
    {
        PlannedStmt *plan = lfirst_node(PlannedStmt, lc);
 
-       if (plan->planId != UINT64CONST(0))
+       if (plan->planId != INT64CONST(0))
        {
            pgstat_report_plan_id(plan->planId, false);
            break;
@@ -2185,7 +2185,7 @@ exec_execute_message(const char *portal_name, long max_rows)
    {
        PlannedStmt *stmt = lfirst_node(PlannedStmt, lc);
 
-       if (stmt->planId != UINT64CONST(0))
+       if (stmt->planId != INT64CONST(0))
        {
            pgstat_report_plan_id(stmt->planId, false);
            break;
index 9c2ed2cb9e0b8b220c170e0877c4b27115c61aea..a290cc4c97501eb0c5282b71257eb156bbf2d351 100644 (file)
@@ -321,7 +321,7 @@ pgstat_bestart_initial(void)
    lbeentry.st_progress_command = PROGRESS_COMMAND_INVALID;
    lbeentry.st_progress_command_target = InvalidOid;
    lbeentry.st_query_id = INT64CONST(0);
-   lbeentry.st_plan_id = UINT64CONST(0);
+   lbeentry.st_plan_id = INT64CONST(0);
 
    /*
     * we don't zero st_progress_param here to save cycles; nobody should
@@ -600,7 +600,7 @@ pgstat_report_activity(BackendState state, const char *cmd_str)
            /* st_xact_start_timestamp and wait_event_info are also disabled */
            beentry->st_xact_start_timestamp = 0;
            beentry->st_query_id = INT64CONST(0);
-           beentry->st_plan_id = UINT64CONST(0);
+           beentry->st_plan_id = INT64CONST(0);
            proc->wait_event_info = 0;
            PGSTAT_END_WRITE_ACTIVITY(beentry);
        }
@@ -663,7 +663,7 @@ pgstat_report_activity(BackendState state, const char *cmd_str)
    if (state == STATE_RUNNING)
    {
        beentry->st_query_id = INT64CONST(0);
-       beentry->st_plan_id = UINT64CONST(0);
+       beentry->st_plan_id = INT64CONST(0);
    }
 
    if (cmd_str != NULL)
@@ -722,7 +722,7 @@ pgstat_report_query_id(int64 query_id, bool force)
  * --------
  */
 void
-pgstat_report_plan_id(uint64 plan_id, bool force)
+pgstat_report_plan_id(int64 plan_id, bool force)
 {
    volatile PgBackendStatus *beentry = MyBEEntry;
 
@@ -1154,7 +1154,7 @@ pgstat_get_my_query_id(void)
  *
  * Return current backend's plan identifier.
  */
-uint64
+int64
 pgstat_get_my_plan_id(void)
 {
    if (!MyBEEntry)
index e70e33afa9c4b17244ce892d92c21721b9a7c669..4f59e30d62d5ee538868f904a1b53fd67f52b762 100644 (file)
@@ -56,7 +56,7 @@ typedef struct PlannedStmt
    int64       queryId;
 
    /* plan identifier (can be set by plugins) */
-   uint64      planId;
+   int64       planId;
 
    /* is it insert|update|delete|merge RETURNING? */
    bool        hasReturning;
index bbebe517501f59eff852e7e6c08dba0c9925a732..3016501ac059741c4ac2192a26161f0e07678bab 100644 (file)
@@ -173,7 +173,7 @@ typedef struct PgBackendStatus
    int64       st_query_id;
 
    /* plan identifier, optionally computed using planner_hook */
-   uint64      st_plan_id;
+   int64       st_plan_id;
 } PgBackendStatus;
 
 
@@ -322,7 +322,7 @@ extern void pgstat_clear_backend_activity_snapshot(void);
 /* Activity reporting functions */
 extern void pgstat_report_activity(BackendState state, const char *cmd_str);
 extern void pgstat_report_query_id(int64 query_id, bool force);
-extern void pgstat_report_plan_id(uint64 plan_id, bool force);
+extern void pgstat_report_plan_id(int64 plan_id, bool force);
 extern void pgstat_report_tempfile(size_t filesize);
 extern void pgstat_report_appname(const char *appname);
 extern void pgstat_report_xact_timestamp(TimestampTz tstamp);
@@ -330,7 +330,7 @@ extern const char *pgstat_get_backend_current_activity(int pid, bool checkUser);
 extern const char *pgstat_get_crashed_backend_activity(int pid, char *buffer,
                                                       int buflen);
 extern int64 pgstat_get_my_query_id(void);
-extern uint64 pgstat_get_my_plan_id(void);
+extern int64 pgstat_get_my_plan_id(void);
 extern BackendType pgstat_get_backend_type_by_proc_number(ProcNumber procNumber);