From 58998c33d19932670a2191a569fe9fa2e16db1d6 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Thu, 22 Oct 2026 14:39:09 +0900 Subject: [PATCH] Fix argument handling in pg_indexam_progress_phasename() The function is declared in pg_proc.dat a bigint as its second input argument, but the function's code used PG_GETARG_INT32(). This is an issue in 32-bit architectures in stable branches (up to v18) where bigint is still passed by reference, reporting bogus numbers. Since 2a600a93c7b (v19 and HEAD), this is less of a problem as Datums became 8-byte wide everywhere. Oversight in ab0dfc961b6. Author: Markos Fountoulakis Reviewed-by: Chao Li Discussion: https://postgr.es/m/e791bbb7-af3a-4a91-a5bb-c744e5c3ef54@planetscale.com Backpatch-through: 14 --- src/backend/utils/adt/amutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/utils/adt/amutils.c b/src/backend/utils/adt/amutils.c index 0af26d6acfa..ada396d4cd0 100644 --- a/src/backend/utils/adt/amutils.c +++ b/src/backend/utils/adt/amutils.c @@ -451,7 +451,7 @@ Datum pg_indexam_progress_phasename(PG_FUNCTION_ARGS) { Oid amoid = PG_GETARG_OID(0); - int32 phasenum = PG_GETARG_INT32(1); + int64 phasenum = PG_GETARG_INT64(1); IndexAmRoutine *routine; char *name;