diff --git a/src/backend/utils/adt/rangetypes_spgist.c b/src/backend/utils/adt/rangetypes_spgist.c
index b89e90f..f95bed0 100644
--- a/src/backend/utils/adt/rangetypes_spgist.c
+++ b/src/backend/utils/adt/rangetypes_spgist.c
@@ -423,8 +423,7 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
 
 		/* This node has a centroid. Fetch it. */
 		centroid = DatumGetRangeType(in->prefixDatum);
-		typcache = range_get_typcache(fcinfo,
-							   RangeTypeGetOid(DatumGetRangeType(centroid)));
+		typcache = range_get_typcache(fcinfo, RangeTypeGetOid(centroid));
 		range_deserialize(typcache, centroid, &centroidLower, &centroidUpper,
 						  &centroidEmpty);
 
diff --git a/src/backend/utils/adt/tsgistidx.c b/src/backend/utils/adt/tsgistidx.c
index 6cdfb13..2ad9ef9 100644
--- a/src/backend/utils/adt/tsgistidx.c
+++ b/src/backend/utils/adt/tsgistidx.c
@@ -109,7 +109,7 @@ static int	outbuf_maxlen = 0;
 Datum
 gtsvectorout(PG_FUNCTION_ARGS)
 {
-	SignTSVector *key = (SignTSVector *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_POINTER(0)));
+	SignTSVector *key = (SignTSVector *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
 	char	   *outbuf;
 
 	if (outbuf_maxlen == 0)
diff --git a/src/backend/utils/adt/tsrank.c b/src/backend/utils/adt/tsrank.c
index d887a14..58f052a 100644
--- a/src/backend/utils/adt/tsrank.c
+++ b/src/backend/utils/adt/tsrank.c
@@ -437,7 +437,8 @@ getWeights(ArrayType *win)
 Datum
 ts_rank_wttf(PG_FUNCTION_ARGS)
 {
-	ArrayType  *win = (ArrayType *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+	ArrayType  *win = (ArrayType *) DatumGetPointer(
+						PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
 	TSVector	txt = PG_GETARG_TSVECTOR(1);
 	TSQuery		query = PG_GETARG_TSQUERY(2);
 	int			method = PG_GETARG_INT32(3);
@@ -454,7 +455,8 @@ ts_rank_wttf(PG_FUNCTION_ARGS)
 Datum
 ts_rank_wtt(PG_FUNCTION_ARGS)
 {
-	ArrayType  *win = (ArrayType *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+	ArrayType  *win = (ArrayType *) DatumGetPointer(
+						PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
 	TSVector	txt = PG_GETARG_TSVECTOR(1);
 	TSQuery		query = PG_GETARG_TSQUERY(2);
 	float		res;
@@ -948,7 +950,8 @@ calc_rank_cd(const float4 *arrdata, TSVector txt, TSQuery query, int method)
 Datum
 ts_rankcd_wttf(PG_FUNCTION_ARGS)
 {
-	ArrayType  *win = (ArrayType *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+	ArrayType  *win = (ArrayType *) DatumGetPointer(
+						PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
 	TSVector	txt = PG_GETARG_TSVECTOR(1);
 	TSQuery		query = PG_GETARG_TSQUERY(2);
 	int			method = PG_GETARG_INT32(3);
@@ -965,7 +968,8 @@ ts_rankcd_wttf(PG_FUNCTION_ARGS)
 Datum
 ts_rankcd_wtt(PG_FUNCTION_ARGS)
 {
-	ArrayType  *win = (ArrayType *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+	ArrayType  *win = (ArrayType *) DatumGetPointer(
+						PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
 	TSVector	txt = PG_GETARG_TSVECTOR(1);
 	TSQuery		query = PG_GETARG_TSQUERY(2);
 	float		res;
