summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut2022-08-28 08:47:10 +0000
committerPeter Eisentraut2022-09-05 11:30:44 +0000
commit6bcda4a72123c3aa29fa3f03d952095675ad4468 (patch)
treeccd9c5998367bb93509fce2a5c8c6bd49563f168 /src
parent6dc0738812c3fdbd733d917267a0543ab5fdf997 (diff)
Fix incorrect uses of Datum conversion macros
Since these macros just cast whatever you give them to the designated output type, and many normal uses also cast the output type further, a number of incorrect uses go undiscovered. The fixes in this patch have been discovered by changing these macros to inline functions, which is the subject of a future patch. Reviewed-by: Aleksander Alekseev <[email protected]> Discussion: https://www.postgresql.org/message-id/flat/8528fb7e-0aa2-6b54-85fb-0c0886dbd6ed%40enterprisedb.com
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/brin/brin_bloom.c2
-rw-r--r--src/backend/access/brin/brin_minmax_multi.c12
-rw-r--r--src/backend/access/common/toast_compression.c2
-rw-r--r--src/backend/access/table/toast_helper.c2
-rw-r--r--src/backend/access/transam/xlogfuncs.c2
-rw-r--r--src/backend/statistics/mcv.c4
-rw-r--r--src/backend/utils/adt/amutils.c2
-rw-r--r--src/backend/utils/adt/multirangetypes.c2
-rw-r--r--src/backend/utils/adt/pg_lsn.c4
-rw-r--r--src/backend/utils/adt/pgstatfuncs.c2
-rw-r--r--src/backend/utils/adt/rangetypes_spgist.c4
-rw-r--r--src/backend/utils/adt/regexp.c2
-rw-r--r--src/backend/utils/adt/tsgistidx.c2
-rw-r--r--src/backend/utils/adt/tsquery_op.c2
-rw-r--r--src/backend/utils/adt/varlena.c2
-rw-r--r--src/backend/utils/adt/xml.c2
-rw-r--r--src/backend/utils/resowner/resowner.c6
-rw-r--r--src/pl/plperl/plperl.c2
18 files changed, 28 insertions, 28 deletions
diff --git a/src/backend/access/brin/brin_bloom.c b/src/backend/access/brin/brin_bloom.c
index 6812ca9fd1c..6b0af7267d5 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 a581659fe2b..c8f22d5d17f 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 f90f9f11e34..7156ae9c47e 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 0cc5a30f9b4..74ba2189f0a 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 61e0f4a29ca..9cc757f1aff 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 6eeacb0d476..f5a7c312728 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 9d78a90d69f..60fd396f24b 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 da5c7d09069..307d087c977 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 45408787da9..15266f36f59 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 4cca30aae7c..be15b4b2e57 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 71a6053b6a0..a47f04d975a 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, &centroidLower, &centroidUpper,
&centroidEmpty);
@@ -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 0e0c5d5ce86..dcf6681ef24 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 47daf8199ef..fe438f1c4d3 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 a784157ba58..8d815fa7a80 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 8539cef0246..6ef317e1f93 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 60a85c46971..606088cdfcc 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 ceb4b0e3f75..ece5d98261a 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 5d192a0ce51..8f21e0d7011 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);