From 4371c74b2d01408653f3917bb838b051537afaa2 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sun, 28 Aug 2022 10:47:10 +0200 Subject: [PATCH 1/2] Fix incorrect uses of Datum conversion macros --- contrib/btree_gist/btree_utils_num.c | 2 +- contrib/dblink/dblink.c | 2 +- contrib/hstore/hstore_op.c | 2 +- contrib/pageinspect/heapfuncs.c | 4 ++-- src/backend/access/brin/brin_bloom.c | 2 +- src/backend/access/brin/brin_minmax_multi.c | 12 ++++++------ src/backend/access/common/toast_compression.c | 2 +- src/backend/access/table/toast_helper.c | 2 +- src/backend/access/transam/xlogfuncs.c | 2 +- src/backend/statistics/mcv.c | 4 ++-- src/backend/utils/adt/amutils.c | 2 +- src/backend/utils/adt/multirangetypes.c | 2 +- src/backend/utils/adt/pg_lsn.c | 4 ++-- src/backend/utils/adt/pgstatfuncs.c | 2 +- src/backend/utils/adt/rangetypes_spgist.c | 4 ++-- src/backend/utils/adt/regexp.c | 2 +- src/backend/utils/adt/tsgistidx.c | 2 +- src/backend/utils/adt/tsquery_op.c | 2 +- src/backend/utils/adt/varlena.c | 2 +- src/backend/utils/adt/xml.c | 2 +- src/backend/utils/resowner/resowner.c | 6 +++--- src/pl/plperl/plperl.c | 2 +- 22 files changed, 33 insertions(+), 33 deletions(-) diff --git a/contrib/btree_gist/btree_utils_num.c b/contrib/btree_gist/btree_utils_num.c index 5632ee0586..05c154afa3 100644 --- a/contrib/btree_gist/btree_utils_num.c +++ b/contrib/btree_gist/btree_utils_num.c @@ -153,7 +153,7 @@ gbt_num_fetch(GISTENTRY *entry, const gbtree_ninfo *tinfo) datum = CashGetDatum(*(Cash *) entry->key); break; default: - datum = PointerGetDatum(entry->key); + datum = entry->key; } retval = palloc(sizeof(GISTENTRY)); diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c index e323fdd0e6..7940387920 100644 --- a/contrib/dblink/dblink.c +++ b/contrib/dblink/dblink.c @@ -1336,7 +1336,7 @@ dblink_get_connections(PG_FUNCTION_ARGS) } if (astate) - PG_RETURN_ARRAYTYPE_P(makeArrayResult(astate, + PG_RETURN_DATUM(makeArrayResult(astate, CurrentMemoryContext)); else PG_RETURN_NULL(); diff --git a/contrib/hstore/hstore_op.c b/contrib/hstore/hstore_op.c index 2f540d7ed6..0d4ec16d1e 100644 --- a/contrib/hstore/hstore_op.c +++ b/contrib/hstore/hstore_op.c @@ -1064,7 +1064,7 @@ hstore_each(PG_FUNCTION_ARGS) tuple = heap_form_tuple(funcctx->tuple_desc, dvalues, nulls); res = HeapTupleGetDatum(tuple); - SRF_RETURN_NEXT(funcctx, PointerGetDatum(res)); + SRF_RETURN_NEXT(funcctx, res); } SRF_RETURN_DONE(funcctx); diff --git a/contrib/pageinspect/heapfuncs.c b/contrib/pageinspect/heapfuncs.c index 2ff70405cf..aed2753253 100644 --- a/contrib/pageinspect/heapfuncs.c +++ b/contrib/pageinspect/heapfuncs.c @@ -383,7 +383,7 @@ tuple_data_split_internal(Oid relid, char *tupdata, errmsg("unexpected end of tuple data"))); if (attr->attlen == -1 && do_detoast) - attr_data = DatumGetByteaPCopy(tupdata + off); + attr_data = pg_detoast_datum_copy((struct varlena *) (tupdata + off)); else { attr_data = (bytea *) palloc(len + VARHDRSZ); @@ -492,7 +492,7 @@ tuple_data_split(PG_FUNCTION_ARGS) if (t_bits) pfree(t_bits); - PG_RETURN_ARRAYTYPE_P(res); + PG_RETURN_DATUM(res); } /* diff --git a/src/backend/access/brin/brin_bloom.c b/src/backend/access/brin/brin_bloom.c index 6812ca9fd1..6b0af7267d 100644 --- a/src/backend/access/brin/brin_bloom.c +++ b/src/backend/access/brin/brin_bloom.c @@ -767,7 +767,7 @@ brin_bloom_summary_out(PG_FUNCTION_ARGS) StringInfoData str; /* detoast the data to get value with a full 4B header */ - filter = (BloomFilter *) PG_DETOAST_DATUM(PG_GETARG_BYTEA_PP(0)); + filter = (BloomFilter *) PG_DETOAST_DATUM_PACKED(PG_GETARG_DATUM(0)); initStringInfo(&str); appendStringInfoChar(&str, '{'); diff --git a/src/backend/access/brin/brin_minmax_multi.c b/src/backend/access/brin/brin_minmax_multi.c index a581659fe2..c8f22d5d17 100644 --- a/src/backend/access/brin/brin_minmax_multi.c +++ b/src/backend/access/brin/brin_minmax_multi.c @@ -774,12 +774,12 @@ brin_range_deserialize(int maxvalues, SerializedRanges *serialized) datalen += MAXALIGN(typlen); else if (typlen == -1) /* varlena */ { - datalen += MAXALIGN(VARSIZE_ANY(DatumGetPointer(ptr))); - ptr += VARSIZE_ANY(DatumGetPointer(ptr)); + datalen += MAXALIGN(VARSIZE_ANY(ptr)); + ptr += VARSIZE_ANY(ptr); } else if (typlen == -2) /* cstring */ { - Size slen = strlen(DatumGetCString(ptr)) + 1; + Size slen = strlen(ptr) + 1; datalen += MAXALIGN(slen); ptr += slen; @@ -3033,7 +3033,7 @@ brin_minmax_multi_summary_out(PG_FUNCTION_ARGS) * Detoast to get value with full 4B header (can't be stored in a toast * table, but can use 1B header). */ - ranges = (SerializedRanges *) PG_DETOAST_DATUM(PG_GETARG_BYTEA_PP(0)); + ranges = (SerializedRanges *) PG_DETOAST_DATUM_PACKED(PG_GETARG_DATUM(0)); /* lookup output func for the type */ getTypeOutputInfo(ranges->typid, &outfunc, &isvarlena); @@ -3081,7 +3081,7 @@ brin_minmax_multi_summary_out(PG_FUNCTION_ARGS) getTypeOutputInfo(ANYARRAYOID, &typoutput, &typIsVarlena); - val = PointerGetDatum(makeArrayResult(astate_values, CurrentMemoryContext)); + val = makeArrayResult(astate_values, CurrentMemoryContext); extval = OidOutputFunctionCall(typoutput, val); @@ -3121,7 +3121,7 @@ brin_minmax_multi_summary_out(PG_FUNCTION_ARGS) getTypeOutputInfo(ANYARRAYOID, &typoutput, &typIsVarlena); - val = PointerGetDatum(makeArrayResult(astate_values, CurrentMemoryContext)); + val = makeArrayResult(astate_values, CurrentMemoryContext); extval = OidOutputFunctionCall(typoutput, val); diff --git a/src/backend/access/common/toast_compression.c b/src/backend/access/common/toast_compression.c index f90f9f11e3..7156ae9c47 100644 --- a/src/backend/access/common/toast_compression.c +++ b/src/backend/access/common/toast_compression.c @@ -44,7 +44,7 @@ pglz_compress_datum(const struct varlena *value) len; struct varlena *tmp = NULL; - valsize = VARSIZE_ANY_EXHDR(DatumGetPointer(value)); + valsize = VARSIZE_ANY_EXHDR(value); /* * No point in wasting a palloc cycle if value size is outside the allowed diff --git a/src/backend/access/table/toast_helper.c b/src/backend/access/table/toast_helper.c index 0cc5a30f9b..74ba2189f0 100644 --- a/src/backend/access/table/toast_helper.c +++ b/src/backend/access/table/toast_helper.c @@ -330,7 +330,7 @@ toast_delete_external(Relation rel, Datum *values, bool *isnull, if (isnull[i]) continue; - else if (VARATT_IS_EXTERNAL_ONDISK(PointerGetDatum(value))) + else if (VARATT_IS_EXTERNAL_ONDISK(value)) toast_delete_datum(rel, value, is_speculative); } } diff --git a/src/backend/access/transam/xlogfuncs.c b/src/backend/access/transam/xlogfuncs.c index 61e0f4a29c..9cc757f1af 100644 --- a/src/backend/access/transam/xlogfuncs.c +++ b/src/backend/access/transam/xlogfuncs.c @@ -555,7 +555,7 @@ pg_wal_lsn_diff(PG_FUNCTION_ARGS) PG_GETARG_DATUM(0), PG_GETARG_DATUM(1)); - PG_RETURN_NUMERIC(result); + PG_RETURN_DATUM(result); } /* diff --git a/src/backend/statistics/mcv.c b/src/backend/statistics/mcv.c index 6eeacb0d47..f5a7c31272 100644 --- a/src/backend/statistics/mcv.c +++ b/src/backend/statistics/mcv.c @@ -1444,8 +1444,8 @@ pg_stats_ext_mcvlist_items(PG_FUNCTION_ARGS) } values[0] = Int32GetDatum(funcctx->call_cntr); - values[1] = PointerGetDatum(makeArrayResult(astate_values, CurrentMemoryContext)); - values[2] = PointerGetDatum(makeArrayResult(astate_nulls, CurrentMemoryContext)); + values[1] = makeArrayResult(astate_values, CurrentMemoryContext); + values[2] = makeArrayResult(astate_nulls, CurrentMemoryContext); values[3] = Float8GetDatum(item->frequency); values[4] = Float8GetDatum(item->base_frequency); diff --git a/src/backend/utils/adt/amutils.c b/src/backend/utils/adt/amutils.c index 9d78a90d69..60fd396f24 100644 --- a/src/backend/utils/adt/amutils.c +++ b/src/backend/utils/adt/amutils.c @@ -466,5 +466,5 @@ pg_indexam_progress_phasename(PG_FUNCTION_ARGS) if (!name) PG_RETURN_NULL(); - PG_RETURN_TEXT_P(CStringGetTextDatum(name)); + PG_RETURN_DATUM(CStringGetTextDatum(name)); } diff --git a/src/backend/utils/adt/multirangetypes.c b/src/backend/utils/adt/multirangetypes.c index da5c7d0906..307d087c97 100644 --- a/src/backend/utils/adt/multirangetypes.c +++ b/src/backend/utils/adt/multirangetypes.c @@ -1491,7 +1491,7 @@ multirange_intersect_agg_transfn(PG_FUNCTION_ARGS) ranges1, range_count2, ranges2); - PG_RETURN_RANGE_P(result); + PG_RETURN_MULTIRANGE_P(result); } diff --git a/src/backend/utils/adt/pg_lsn.c b/src/backend/utils/adt/pg_lsn.c index 45408787da..15266f36f5 100644 --- a/src/backend/utils/adt/pg_lsn.c +++ b/src/backend/utils/adt/pg_lsn.c @@ -271,7 +271,7 @@ pg_lsn_pli(PG_FUNCTION_ARGS) /* Add two numerics */ res = DirectFunctionCall2(numeric_add, - NumericGetDatum(num), + num, NumericGetDatum(nbytes)); /* Convert to pg_lsn */ @@ -305,7 +305,7 @@ pg_lsn_mii(PG_FUNCTION_ARGS) /* Subtract two numerics */ res = DirectFunctionCall2(numeric_sub, - NumericGetDatum(num), + num, NumericGetDatum(nbytes)); /* Convert to pg_lsn */ diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 4cca30aae7..be15b4b2e5 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -1119,7 +1119,7 @@ pg_stat_get_backend_client_addr(PG_FUNCTION_ARGS) clean_ipv6_addr(beentry->st_clientaddr.addr.ss_family, remote_host); - PG_RETURN_INET_P(DirectFunctionCall1(inet_in, + PG_RETURN_DATUM(DirectFunctionCall1(inet_in, CStringGetDatum(remote_host))); } diff --git a/src/backend/utils/adt/rangetypes_spgist.c b/src/backend/utils/adt/rangetypes_spgist.c index 71a6053b6a..a47f04d975 100644 --- a/src/backend/utils/adt/rangetypes_spgist.c +++ b/src/backend/utils/adt/rangetypes_spgist.c @@ -416,7 +416,7 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS) /* This node has a centroid. Fetch it. */ centroid = DatumGetRangeTypeP(in->prefixDatum); typcache = range_get_typcache(fcinfo, - RangeTypeGetOid(DatumGetRangeTypeP(centroid))); + RangeTypeGetOid(centroid)); range_deserialize(typcache, centroid, ¢roidLower, ¢roidUpper, ¢roidEmpty); @@ -557,7 +557,7 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS) */ if (in->traversalValue) { - prevCentroid = DatumGetRangeTypeP(in->traversalValue); + prevCentroid = in->traversalValue; range_deserialize(typcache, prevCentroid, &prevLower, &prevUpper, &prevEmpty); } diff --git a/src/backend/utils/adt/regexp.c b/src/backend/utils/adt/regexp.c index 0e0c5d5ce8..dcf6681ef2 100644 --- a/src/backend/utils/adt/regexp.c +++ b/src/backend/utils/adt/regexp.c @@ -1757,7 +1757,7 @@ regexp_split_to_array(PG_FUNCTION_ARGS) splitctx->next_match++; } - PG_RETURN_ARRAYTYPE_P(makeArrayResult(astate, CurrentMemoryContext)); + PG_RETURN_DATUM(makeArrayResult(astate, CurrentMemoryContext)); } /* This is separate to keep the opr_sanity regression test from complaining */ diff --git a/src/backend/utils/adt/tsgistidx.c b/src/backend/utils/adt/tsgistidx.c index 47daf8199e..fe438f1c4d 100644 --- a/src/backend/utils/adt/tsgistidx.c +++ b/src/backend/utils/adt/tsgistidx.c @@ -102,7 +102,7 @@ static int outbuf_maxlen = 0; Datum gtsvectorout(PG_FUNCTION_ARGS) { - SignTSVector *key = (SignTSVector *) PG_DETOAST_DATUM(PG_GETARG_POINTER(0)); + SignTSVector *key = (SignTSVector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0)); char *outbuf; if (outbuf_maxlen == 0) diff --git a/src/backend/utils/adt/tsquery_op.c b/src/backend/utils/adt/tsquery_op.c index a784157ba5..8d815fa7a8 100644 --- a/src/backend/utils/adt/tsquery_op.c +++ b/src/backend/utils/adt/tsquery_op.c @@ -148,7 +148,7 @@ tsquery_phrase_distance(PG_FUNCTION_ARGS) Datum tsquery_phrase(PG_FUNCTION_ARGS) { - PG_RETURN_POINTER(DirectFunctionCall3(tsquery_phrase_distance, + PG_RETURN_DATUM(DirectFunctionCall3(tsquery_phrase_distance, PG_GETARG_DATUM(0), PG_GETARG_DATUM(1), Int32GetDatum(1))); diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 8539cef024..6ef317e1f9 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -4779,7 +4779,7 @@ text_to_array(PG_FUNCTION_ARGS) if (tstate.astate == NULL) PG_RETURN_ARRAYTYPE_P(construct_empty_array(TEXTOID)); - PG_RETURN_ARRAYTYPE_P(makeArrayResult(tstate.astate, + PG_RETURN_DATUM(makeArrayResult(tstate.astate, CurrentMemoryContext)); } diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 60a85c4697..606088cdfc 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -4174,7 +4174,7 @@ xpath(PG_FUNCTION_ARGS) astate = initArrayResult(XMLOID, CurrentMemoryContext, true); xpath_internal(xpath_expr_text, data, namespaces, NULL, astate); - PG_RETURN_ARRAYTYPE_P(makeArrayResult(astate, CurrentMemoryContext)); + PG_RETURN_DATUM(makeArrayResult(astate, CurrentMemoryContext)); #else NO_XML_SUPPORT(); return 0; diff --git a/src/backend/utils/resowner/resowner.c b/src/backend/utils/resowner/resowner.c index ceb4b0e3f7..ece5d98261 100644 --- a/src/backend/utils/resowner/resowner.c +++ b/src/backend/utils/resowner/resowner.c @@ -557,7 +557,7 @@ ResourceOwnerReleaseInternal(ResourceOwner owner, /* Ditto for JIT contexts */ while (ResourceArrayGetAny(&(owner->jitarr), &foundres)) { - JitContext *context = (JitContext *) PointerGetDatum(foundres); + JitContext *context = (JitContext *) DatumGetPointer(foundres); jit_release_context(context); } @@ -566,7 +566,7 @@ ResourceOwnerReleaseInternal(ResourceOwner owner, while (ResourceArrayGetAny(&(owner->cryptohasharr), &foundres)) { pg_cryptohash_ctx *context = - (pg_cryptohash_ctx *) PointerGetDatum(foundres); + (pg_cryptohash_ctx *) DatumGetPointer(foundres); if (isCommit) PrintCryptoHashLeakWarning(foundres); @@ -576,7 +576,7 @@ ResourceOwnerReleaseInternal(ResourceOwner owner, /* Ditto for HMAC contexts */ while (ResourceArrayGetAny(&(owner->hmacarr), &foundres)) { - pg_hmac_ctx *context = (pg_hmac_ctx *) PointerGetDatum(foundres); + pg_hmac_ctx *context = (pg_hmac_ctx *) DatumGetPointer(foundres); if (isCommit) PrintHMACLeakWarning(foundres); diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index 5d192a0ce5..8f21e0d701 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -1848,7 +1848,7 @@ plperl_call_handler(PG_FUNCTION_ARGS) { current_call_data = &this_call_data; if (CALLED_AS_TRIGGER(fcinfo)) - retval = PointerGetDatum(plperl_trigger_handler(fcinfo)); + retval = plperl_trigger_handler(fcinfo); else if (CALLED_AS_EVENT_TRIGGER(fcinfo)) { plperl_event_trigger_handler(fcinfo); -- 2.37.1