Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wIKEH-007yxa-2C for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Apr 2026 05:46:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wIKEG-006B9x-1a for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Apr 2026 05:46:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wIKEF-006B9p-2L for pgsql-hackers@lists.postgresql.org; Thu, 30 Apr 2026 05:46:28 +0000 Received: from fhigh-b6-smtp.messagingengine.com ([202.12.124.157]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wIKEC-00000003vlb-3otT for pgsql-hackers@lists.postgresql.org; Thu, 30 Apr 2026 05:46:27 +0000 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.stl.internal (Postfix) with ESMTP id 3DDEC7A005C; Thu, 30 Apr 2026 01:46:23 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Thu, 30 Apr 2026 01:46:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paquier.xyz; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm2; t=1777527982; x=1777614382; bh=Tg4mjfj08+Q/FRMFp1U/8IciTYQeMiyY Xxg2iV14EiM=; b=Ot9rZBMKI9RN3ktS8qt7+nhDhxqDaw8pDb0n91Ts/tsPZ3Bl 4TmzVMDoTvmlMf0mNFle9m2YsC3AdnpdtE4Nb5Zme4ssubPeEqPv+h7TImNX9+EG ximXDVFQLCblI61bHclOZYO3JvRbCj63rUuQVbHRibv5DujUALyVtCvVR17rdwYu 5+VbuoLydQ9RK3YYB+EdrTWy5ltr5o0Fcsq/8Yc88FyjwAS7trAShoDfAqPwYKHW PH2ozc/Sq+XRJ9zpR7au8KjL1vTfJJ00wPpuEUUmwFLYW+RzHZPPvkyPDqYcTE0n X9fVpI8ARXzdiwlk75SCgSEcRmvoR7UJfqKmEA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1777527982; x= 1777614382; bh=Tg4mjfj08+Q/FRMFp1U/8IciTYQeMiyYXxg2iV14EiM=; b=L YqhZIeur4LqeUen6WAXAwHjLu1MbzGCjNSDdKAb/NTKBrAQvr3deqcQy8JARihxf 0MHS+kZzjbax8nRz8k+zCL3y9YjqgMCCkwt41ZYAlageDFfBpwuYuqotbHO7BEqt Gteqa0AxPkoM96+P6K9ysGGOol/Ola5rRM0G46I2J/sTbvZcqZ6s0sg6g4Nj5lAr y5y/4qxWNisKDTvvsJIJUUIQQYzNtVsJGLW6iAOXqMPkd8UkORl7MqNlpYrby5wR oLOEdwZyC+io/Wyxrq7Qu/FJHVumH8SiLgnhKk8NWW8AhuWiAjQY8Hb1lKZ1SIG0 wSute7U3Bq7GsgsIZhSqQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdekieehvdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenfghrlh cuvffnffculdefhedmnecujfgurhepfffhvfevuffkgggtugesghdtreertddtvdenucfh rhhomhepofhitghhrggvlhcurfgrqhhuihgvrhcuoehmihgthhgrvghlsehprghquhhivg hrrdighiiiqeenucggtffrrghtthgvrhhnpefgtefhudfhhfdtieehfefffeeludelieek kedvgeffheegteejuddtfeefueduteenucffohhmrghinhepphhoshhtghhrvghsqhhlrd horhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep mhhitghhrggvlhesphgrqhhuihgvrhdrgiihiidpnhgspghrtghpthhtohepvddpmhhoug gvpehsmhhtphhouhhtpdhrtghpthhtohepphhgshhqlhdqhhgrtghkvghrsheslhhishht shdrphhoshhtghhrvghsqhhlrdhorhhgpdhrtghpthhtoheprghlvghkshgrnhguvghrse htihhgvghruggrthgrrdgtohhm X-ME-Proxy: Feedback-ID: i0fe9450f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 30 Apr 2026 01:46:21 -0400 (EDT) Date: Thu, 30 Apr 2026 14:46:17 +0900 From: Michael Paquier To: Postgres hackers Cc: Aleksander Alekseev Subject: Incorrect GetDatum() macros not match with SQL function types Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="2ttYZe57skH9NViJ" Content-Disposition: inline List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --2ttYZe57skH9NViJ Content-Type: multipart/mixed; boundary="G969aDmiaXfYMQtJ" Content-Disposition: inline --G969aDmiaXfYMQtJ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi all, (Aleksander in CC, who has authored some of them in pageinspect.) While looking at the business in [1], I have noticed a bunch of areas in the code base where the *GetDatum() macros used do not match with the data type of the SQL functions they relate to, leading me to the attached. I am creating a new thread for clarity, as the patch was hidden in the middle of a different discussion. When it comes to the numbers touched here, the signedness should not matter, so this most likely a cleanup worth doing for v20, not v19. Thanks, [1]: https://www.postgresql.org/message-id/CAJ7c6TMcGu8qmRe1gZfJ-gOzVnZq-t=fwn-UuyStx1w6ZyydMw@mail.gmail.com -- Michael --G969aDmiaXfYMQtJ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=0001-Fix-more-Datum-conversion-inconsistencies.patch Content-Transfer-Encoding: quoted-printable =46rom b818284605c1a4b533943f651f9aea9ae4a26d02 Mon Sep 17 00:00:00 2001 =46rom: Michael Paquier Date: Thu, 30 Apr 2026 14:30:12 +0900 Subject: [PATCH] Fix more Datum conversion inconsistencies This is a continuation of the work done in the previous commit, that has undone the work of 6dcfac9696cb. The *GetDatum() macros for output should match with what the SQL functions use as DatumGet*() in input. Aleksander has spotted some of the areas patched here, for pageinspect. I have spotted the rest while digging into the state of the tree. There is no actual behavior change after this commit, since all the affected values are small enough that the signed bit is never used. Author: Aleksander Alekseev Author: Michael Paquier --- src/backend/access/gin/ginlogic.c | 6 +++--- src/backend/access/transam/xlogfuncs.c | 2 +- src/backend/catalog/pg_proc.c | 4 ++-- src/backend/utils/adt/lockfuncs.c | 10 +++++----- contrib/pageinspect/brinfuncs.c | 8 ++++---- contrib/pageinspect/btreefuncs.c | 2 +- contrib/pageinspect/ginfuncs.c | 2 +- contrib/pageinspect/gistfuncs.c | 4 ++-- contrib/pageinspect/heapfuncs.c | 18 +++++++++--------- contrib/pageinspect/rawpage.c | 14 +++++++------- contrib/pg_logicalinspect/pg_logicalinspect.c | 8 ++++---- contrib/pg_walinspect/pg_walinspect.c | 14 +++++++------- contrib/pgstattuple/pgstatindex.c | 2 +- 13 files changed, 47 insertions(+), 47 deletions(-) diff --git a/src/backend/access/gin/ginlogic.c b/src/backend/access/gin/gin= logic.c index e851d49f74de..e59d655da623 100644 --- a/src/backend/access/gin/ginlogic.c +++ b/src/backend/access/gin/ginlogic.c @@ -75,7 +75,7 @@ directBoolConsistentFn(GinScanKey key) PointerGetDatum(key->entryRes), UInt16GetDatum(key->strategy), key->query, - UInt32GetDatum(key->nuserentries), + Int32GetDatum(key->nuserentries), PointerGetDatum(key->extra_data), PointerGetDatum(&key->recheckCurItem), PointerGetDatum(key->queryValues), @@ -93,7 +93,7 @@ directTriConsistentFn(GinScanKey key) PointerGetDatum(key->entryRes), UInt16GetDatum(key->strategy), key->query, - UInt32GetDatum(key->nuserentries), + Int32GetDatum(key->nuserentries), PointerGetDatum(key->extra_data), PointerGetDatum(key->queryValues), PointerGetDatum(key->queryCategories))); @@ -114,7 +114,7 @@ shimBoolConsistentFn(GinScanKey key) PointerGetDatum(key->entryRes), UInt16GetDatum(key->strategy), key->query, - UInt32GetDatum(key->nuserentries), + Int32GetDatum(key->nuserentries), PointerGetDatum(key->extra_data), PointerGetDatum(key->queryValues), PointerGetDatum(key->queryCategories))); diff --git a/src/backend/access/transam/xlogfuncs.c b/src/backend/access/tr= ansam/xlogfuncs.c index 0f5979691e6b..207da27d0347 100644 --- a/src/backend/access/transam/xlogfuncs.c +++ b/src/backend/access/transam/xlogfuncs.c @@ -448,7 +448,7 @@ pg_walfile_name_offset(PG_FUNCTION_ARGS) */ xrecoff =3D XLogSegmentOffset(locationpoint, wal_segment_size); =20 - values[1] =3D UInt32GetDatum(xrecoff); + values[1] =3D Int32GetDatum(xrecoff); isnull[1] =3D false; =20 /* diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index 5df4b3f7a91e..4c6dfb5ca908 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -342,8 +342,8 @@ ProcedureCreate(const char *procedureName, values[Anum_pg_proc_proretset - 1] =3D BoolGetDatum(returnsSet); values[Anum_pg_proc_provolatile - 1] =3D CharGetDatum(volatility); values[Anum_pg_proc_proparallel - 1] =3D CharGetDatum(parallel); - values[Anum_pg_proc_pronargs - 1] =3D UInt16GetDatum(parameterCount); - values[Anum_pg_proc_pronargdefaults - 1] =3D UInt16GetDatum(list_length(p= arameterDefaults)); + values[Anum_pg_proc_pronargs - 1] =3D Int16GetDatum(parameterCount); + values[Anum_pg_proc_pronargdefaults - 1] =3D Int16GetDatum(list_length(pa= rameterDefaults)); values[Anum_pg_proc_prorettype - 1] =3D ObjectIdGetDatum(returnType); values[Anum_pg_proc_proargtypes - 1] =3D PointerGetDatum(parameterTypes); if (allParameterTypes !=3D PointerGetDatum(NULL)) diff --git a/src/backend/utils/adt/lockfuncs.c b/src/backend/utils/adt/lock= funcs.c index dc58e9cb0a6d..949b242322cb 100644 --- a/src/backend/utils/adt/lockfuncs.c +++ b/src/backend/utils/adt/lockfuncs.c @@ -271,7 +271,7 @@ pg_lock_status(PG_FUNCTION_ARGS) case LOCKTAG_PAGE: values[1] =3D ObjectIdGetDatum(instance->locktag.locktag_field1); values[2] =3D ObjectIdGetDatum(instance->locktag.locktag_field2); - values[3] =3D UInt32GetDatum(instance->locktag.locktag_field3); + values[3] =3D Int32GetDatum(instance->locktag.locktag_field3); nulls[4] =3D true; nulls[5] =3D true; nulls[6] =3D true; @@ -282,8 +282,8 @@ pg_lock_status(PG_FUNCTION_ARGS) case LOCKTAG_TUPLE: values[1] =3D ObjectIdGetDatum(instance->locktag.locktag_field1); values[2] =3D ObjectIdGetDatum(instance->locktag.locktag_field2); - values[3] =3D UInt32GetDatum(instance->locktag.locktag_field3); - values[4] =3D UInt16GetDatum(instance->locktag.locktag_field4); + values[3] =3D Int32GetDatum(instance->locktag.locktag_field3); + values[4] =3D Int16GetDatum(instance->locktag.locktag_field4); nulls[5] =3D true; nulls[6] =3D true; nulls[7] =3D true; @@ -402,12 +402,12 @@ pg_lock_status(PG_FUNCTION_ARGS) values[1] =3D ObjectIdGetDatum(GET_PREDICATELOCKTARGETTAG_DB(*predTag)); values[2] =3D ObjectIdGetDatum(GET_PREDICATELOCKTARGETTAG_RELATION(*pred= Tag)); if (lockType =3D=3D PREDLOCKTAG_TUPLE) - values[4] =3D UInt16GetDatum(GET_PREDICATELOCKTARGETTAG_OFFSET(*predTag= )); + values[4] =3D Int16GetDatum(GET_PREDICATELOCKTARGETTAG_OFFSET(*predTag)= ); else nulls[4] =3D true; if ((lockType =3D=3D PREDLOCKTAG_TUPLE) || (lockType =3D=3D PREDLOCKTAG_PAGE)) - values[3] =3D UInt32GetDatum(GET_PREDICATELOCKTARGETTAG_PAGE(*predTag)); + values[3] =3D Int32GetDatum(GET_PREDICATELOCKTARGETTAG_PAGE(*predTag)); else nulls[3] =3D true; =20 diff --git a/contrib/pageinspect/brinfuncs.c b/contrib/pageinspect/brinfunc= s.c index 309b9522f902..c64124b5b020 100644 --- a/contrib/pageinspect/brinfuncs.c +++ b/contrib/pageinspect/brinfuncs.c @@ -246,7 +246,7 @@ brin_page_items(PG_FUNCTION_ARGS) =20 if (unusedItem) { - values[0] =3D UInt16GetDatum(offset); + values[0] =3D Int32GetDatum(offset); nulls[1] =3D true; nulls[2] =3D true; nulls[3] =3D true; @@ -259,7 +259,7 @@ brin_page_items(PG_FUNCTION_ARGS) { int att =3D attno - 1; =20 - values[0] =3D UInt16GetDatum(offset); + values[0] =3D Int32GetDatum(offset); switch (TupleDescAttr(rsinfo->setDesc, 1)->atttypid) { case INT8OID: @@ -267,12 +267,12 @@ brin_page_items(PG_FUNCTION_ARGS) break; case INT4OID: /* support for old extension version */ - values[1] =3D UInt32GetDatum(dtup->bt_blkno); + values[1] =3D Int32GetDatum(dtup->bt_blkno); break; default: elog(ERROR, "incorrect output types"); } - values[2] =3D UInt16GetDatum(attno); + values[2] =3D Int32GetDatum(attno); values[3] =3D BoolGetDatum(dtup->bt_columns[att].bv_allnulls); values[4] =3D BoolGetDatum(dtup->bt_columns[att].bv_hasnulls); values[5] =3D BoolGetDatum(dtup->bt_placeholder); diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefu= ncs.c index 62c905c6e7c2..3381e7cc2a74 100644 --- a/contrib/pageinspect/btreefuncs.c +++ b/contrib/pageinspect/btreefuncs.c @@ -509,7 +509,7 @@ bt_page_print_tuples(ua_page_items *uargs) memset(nulls, 0, sizeof(nulls)); values[j++] =3D Int16GetDatum(offset); values[j++] =3D ItemPointerGetDatum(&itup->t_tid); - values[j++] =3D Int32GetDatum((int) IndexTupleSize(itup)); + values[j++] =3D Int16GetDatum(IndexTupleSize(itup)); values[j++] =3D BoolGetDatum(IndexTupleHasNulls(itup)); values[j++] =3D BoolGetDatum(IndexTupleHasVarwidths(itup)); =20 diff --git a/contrib/pageinspect/ginfuncs.c b/contrib/pageinspect/ginfuncs.c index ebcc2b3db5c7..e4461db7f0a2 100644 --- a/contrib/pageinspect/ginfuncs.c +++ b/contrib/pageinspect/ginfuncs.c @@ -258,7 +258,7 @@ gin_leafpage_items(PG_FUNCTION_ARGS) memset(nulls, 0, sizeof(nulls)); =20 values[0] =3D ItemPointerGetDatum(&cur->first); - values[1] =3D UInt16GetDatum(cur->nbytes); + values[1] =3D Int16GetDatum(cur->nbytes); =20 /* build an array of decoded item pointers */ tids =3D ginPostingListDecode(cur, &ndecoded); diff --git a/contrib/pageinspect/gistfuncs.c b/contrib/pageinspect/gistfunc= s.c index 23a4b49771d4..8f127d41ec49 100644 --- a/contrib/pageinspect/gistfuncs.c +++ b/contrib/pageinspect/gistfuncs.c @@ -179,7 +179,7 @@ gist_page_items_bytea(PG_FUNCTION_ARGS) =20 values[0] =3D Int16GetDatum(offset); values[1] =3D ItemPointerGetDatum(&itup->t_tid); - values[2] =3D Int32GetDatum((int) IndexTupleSize(itup)); + values[2] =3D Int16GetDatum(IndexTupleSize(itup)); =20 tuple_bytea =3D (bytea *) palloc(tuple_len + VARHDRSZ); SET_VARSIZE(tuple_bytea, tuple_len + VARHDRSZ); @@ -286,7 +286,7 @@ gist_page_items(PG_FUNCTION_ARGS) =20 values[0] =3D Int16GetDatum(offset); values[1] =3D ItemPointerGetDatum(&itup->t_tid); - values[2] =3D Int32GetDatum((int) IndexTupleSize(itup)); + values[2] =3D Int16GetDatum(IndexTupleSize(itup)); values[3] =3D BoolGetDatum(ItemIdIsDead(id)); =20 if (index_columns) diff --git a/contrib/pageinspect/heapfuncs.c b/contrib/pageinspect/heapfunc= s.c index 4f0f3bd53e74..7be4770dc84b 100644 --- a/contrib/pageinspect/heapfuncs.c +++ b/contrib/pageinspect/heapfuncs.c @@ -189,10 +189,10 @@ heap_page_items(PG_FUNCTION_ARGS) lp_flags =3D ItemIdGetFlags(id); lp_len =3D ItemIdGetLength(id); =20 - values[0] =3D UInt16GetDatum(inter_call_data->offset); - values[1] =3D UInt16GetDatum(lp_offset); - values[2] =3D UInt16GetDatum(lp_flags); - values[3] =3D UInt16GetDatum(lp_len); + values[0] =3D Int16GetDatum(inter_call_data->offset); + values[1] =3D Int16GetDatum(lp_offset); + values[2] =3D Int16GetDatum(lp_flags); + values[3] =3D Int16GetDatum(lp_len); =20 /* * We do just enough validity checking to make sure we don't reference @@ -209,13 +209,13 @@ heap_page_items(PG_FUNCTION_ARGS) /* Extract information from the tuple header */ tuphdr =3D (HeapTupleHeader) PageGetItem(page, id); =20 - values[4] =3D UInt32GetDatum(HeapTupleHeaderGetRawXmin(tuphdr)); - values[5] =3D UInt32GetDatum(HeapTupleHeaderGetRawXmax(tuphdr)); + values[4] =3D TransactionIdGetDatum(HeapTupleHeaderGetRawXmin(tuphdr)); + values[5] =3D TransactionIdGetDatum(HeapTupleHeaderGetRawXmax(tuphdr)); /* shared with xvac */ - values[6] =3D UInt32GetDatum(HeapTupleHeaderGetRawCommandId(tuphdr)); + values[6] =3D Int32GetDatum(HeapTupleHeaderGetRawCommandId(tuphdr)); values[7] =3D PointerGetDatum(&tuphdr->t_ctid); - values[8] =3D UInt32GetDatum(tuphdr->t_infomask2); - values[9] =3D UInt32GetDatum(tuphdr->t_infomask); + values[8] =3D Int32GetDatum(tuphdr->t_infomask2); + values[9] =3D Int32GetDatum(tuphdr->t_infomask); values[10] =3D UInt8GetDatum(tuphdr->t_hoff); =20 /* diff --git a/contrib/pageinspect/rawpage.c b/contrib/pageinspect/rawpage.c index f3996dc39fcd..d136593edb26 100644 --- a/contrib/pageinspect/rawpage.c +++ b/contrib/pageinspect/rawpage.c @@ -284,8 +284,8 @@ page_header(PG_FUNCTION_ARGS) } else values[0] =3D LSNGetDatum(lsn); - values[1] =3D UInt16GetDatum(pageheader->pd_checksum); - values[2] =3D UInt16GetDatum(pageheader->pd_flags); + values[1] =3D Int16GetDatum(pageheader->pd_checksum); + values[2] =3D Int16GetDatum(pageheader->pd_flags); =20 /* pageinspect >=3D 1.10 uses int4 instead of int2 for those fields */ switch (TupleDescAttr(tupdesc, 3)->atttypid) @@ -294,10 +294,10 @@ page_header(PG_FUNCTION_ARGS) Assert(TupleDescAttr(tupdesc, 4)->atttypid =3D=3D INT2OID && TupleDescAttr(tupdesc, 5)->atttypid =3D=3D INT2OID && TupleDescAttr(tupdesc, 6)->atttypid =3D=3D INT2OID); - values[3] =3D UInt16GetDatum(pageheader->pd_lower); - values[4] =3D UInt16GetDatum(pageheader->pd_upper); - values[5] =3D UInt16GetDatum(pageheader->pd_special); - values[6] =3D UInt16GetDatum(PageGetPageSize(page)); + values[3] =3D Int16GetDatum(pageheader->pd_lower); + values[4] =3D Int16GetDatum(pageheader->pd_upper); + values[5] =3D Int16GetDatum(pageheader->pd_special); + values[6] =3D Int16GetDatum(PageGetPageSize(page)); break; case INT4OID: Assert(TupleDescAttr(tupdesc, 4)->atttypid =3D=3D INT4OID && @@ -313,7 +313,7 @@ page_header(PG_FUNCTION_ARGS) break; } =20 - values[7] =3D UInt16GetDatum(PageGetPageLayoutVersion(page)); + values[7] =3D Int16GetDatum(PageGetPageLayoutVersion(page)); values[8] =3D TransactionIdGetDatum(pageheader->pd_prune_xid); =20 /* Build and return the tuple. */ diff --git a/contrib/pg_logicalinspect/pg_logicalinspect.c b/contrib/pg_log= icalinspect/pg_logicalinspect.c index 9420fa5e0c7c..389394de66b3 100644 --- a/contrib/pg_logicalinspect/pg_logicalinspect.c +++ b/contrib/pg_logicalinspect/pg_logicalinspect.c @@ -117,9 +117,9 @@ pg_get_logical_snapshot_meta(PG_FUNCTION_ARGS) /* Validate and restore the snapshot to 'ondisk' */ SnapBuildRestoreSnapshot(&ondisk, lsn, CurrentMemoryContext, false); =20 - values[i++] =3D UInt32GetDatum(ondisk.magic); + values[i++] =3D Int32GetDatum(ondisk.magic); values[i++] =3D Int64GetDatum((int64) ondisk.checksum); - values[i++] =3D UInt32GetDatum(ondisk.version); + values[i++] =3D Int32GetDatum(ondisk.version); =20 Assert(i =3D=3D PG_GET_LOGICAL_SNAPSHOT_META_COLS); =20 @@ -163,7 +163,7 @@ pg_get_logical_snapshot_info(PG_FUNCTION_ARGS) values[i++] =3D LSNGetDatum(ondisk.builder.last_serialized_snapshot); values[i++] =3D TransactionIdGetDatum(ondisk.builder.next_phase_at); =20 - values[i++] =3D UInt32GetDatum(ondisk.builder.committed.xcnt); + values[i++] =3D Int32GetDatum(ondisk.builder.committed.xcnt); if (ondisk.builder.committed.xcnt > 0) { Datum *arrayelems; @@ -180,7 +180,7 @@ pg_get_logical_snapshot_info(PG_FUNCTION_ARGS) else nulls[i++] =3D true; =20 - values[i++] =3D UInt32GetDatum(ondisk.builder.catchange.xcnt); + values[i++] =3D Int32GetDatum(ondisk.builder.catchange.xcnt); if (ondisk.builder.catchange.xcnt > 0) { Datum *arrayelems; diff --git a/contrib/pg_walinspect/pg_walinspect.c b/contrib/pg_walinspect/= pg_walinspect.c index 4cf6e41e2f5c..a172f9e2b407 100644 --- a/contrib/pg_walinspect/pg_walinspect.c +++ b/contrib/pg_walinspect/pg_walinspect.c @@ -230,9 +230,9 @@ GetWALRecordInfo(XLogReaderState *record, Datum *values, values[i++] =3D TransactionIdGetDatum(XLogRecGetXid(record)); values[i++] =3D CStringGetTextDatum(desc.rm_name); values[i++] =3D CStringGetTextDatum(record_type); - values[i++] =3D UInt32GetDatum(XLogRecGetTotalLen(record)); - values[i++] =3D UInt32GetDatum(XLogRecGetDataLen(record)); - values[i++] =3D UInt32GetDatum(fpi_len); + values[i++] =3D Int32GetDatum(XLogRecGetTotalLen(record)); + values[i++] =3D Int32GetDatum(XLogRecGetDataLen(record)); + values[i++] =3D Int32GetDatum(fpi_len); =20 if (rec_desc.len > 0) values[i++] =3D CStringGetTextDatum(rec_desc.data); @@ -357,10 +357,10 @@ GetWALBlockInfo(FunctionCallInfo fcinfo, XLogReaderSt= ate *record, * record_length, main_data_length, block_data_len, and * block_fpi_length outputs */ - values[i++] =3D UInt32GetDatum(XLogRecGetTotalLen(record)); - values[i++] =3D UInt32GetDatum(XLogRecGetDataLen(record)); - values[i++] =3D UInt32GetDatum(block_data_len); - values[i++] =3D UInt32GetDatum(block_fpi_len); + values[i++] =3D Int32GetDatum(XLogRecGetTotalLen(record)); + values[i++] =3D Int32GetDatum(XLogRecGetDataLen(record)); + values[i++] =3D Int32GetDatum(block_data_len); + values[i++] =3D Int32GetDatum(block_fpi_len); =20 /* block_fpi_info (text array) output */ if (block_fpi_info) diff --git a/contrib/pgstattuple/pgstatindex.c b/contrib/pgstattuple/pgstat= index.c index 3a3f2637bd95..8951ad0aac47 100644 --- a/contrib/pgstattuple/pgstatindex.c +++ b/contrib/pgstattuple/pgstatindex.c @@ -586,7 +586,7 @@ pgstatginindex_internal(Oid relid, FunctionCallInfo fci= nfo) elog(ERROR, "return type must be a row type"); =20 values[0] =3D Int32GetDatum(stats.version); - values[1] =3D UInt32GetDatum(stats.pending_pages); + values[1] =3D Int32GetDatum(stats.pending_pages); values[2] =3D Int64GetDatum(stats.pending_tuples); =20 /* --=20 2.54.0 --G969aDmiaXfYMQtJ-- --2ttYZe57skH9NViJ Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEG72nH6vTowiyblFKnvQgOdbyQH0FAmny7KkACgkQnvQgOdby QH2FKQ/8CaUSKnLENCaNYZL+bidwMlhXoemkkaGcahnQw8eyE+zc9xDUO+Pjd25U ACNvA6oPzePjNkHBMH6Gmu3QOgb00zQYDvYp9w4XEily0iZTQ1cXt9G0QmG+Cm2d rK+rb6L5G4/jWS3ThIwHNQ5bPRUYUMi6WJR4TZ/oNctbDXUkcePqYnLPq+tY6K9s hjq3LbcfodxewfXTdUprSXa6bwFPeNqnS3QrdA2pPY68Ywk2fJ7CmMIPSy8XkEQo ZXCyia6PM/Yz8MZ5S1yhZItThWlRWJzA3euQUCDQW1lRYYwFHuj9Y3spV2UUndDg AgV2xorumvrvQuBdby2leuQf9LzAaBwRNcdLamc9AEP/UL9s2X1vIQqbMMu6smVX AEwAaiSd+VdLMTZvZoBPltjh9p6Wq1ga7EoXENFL2iSUocJHqKwvGw80WGgkSySQ QiiRBGCadKvI+Qh7dHsIalAKSxF0Nk5azQM2Uf3YDIufpXR3IYncPIpyYYuzmcQC OCen38wi9L8dy2k1Mg3qOZWoHuHbSAM/ESsNRrQ73N95i4pvNj5y3APZ9HyOupTL +cuC9yEBcrhynbeWGtA//izxs1oLSVPhWLwaKtQSUhkt/Axy6JepoA8LZTLqBpDT derh3nli45vIvec3mm0sF2TJFUXhORyvYBpR70Qf0Wid/WvxyTw= =i7Lj -----END PGP SIGNATURE----- --2ttYZe57skH9NViJ--