diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c
index 2bb2ed0..fb76af0 100644
--- a/contrib/cube/cube.c
+++ b/contrib/cube/cube.c
@@ -126,7 +126,7 @@ cube_in(PG_FUNCTION_ARGS)
 
 	cube_scanner_finish();
 
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 
@@ -187,7 +187,7 @@ cube_a_f8_f8(PG_FUNCTION_ARGS)
 	else
 		SET_POINT_BIT(result);
 
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 /*
@@ -221,13 +221,13 @@ cube_a_f8(PG_FUNCTION_ARGS)
 	for (i = 0; i < dim; i++)
 		result->x[i] = dur[i];
 
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 Datum
 cube_subset(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *c = PG_GETARG_NDBOX(0);
+	NDBOX	   *c = PG_GETARG_NDBOX_P(0);
 	ArrayType  *idx = PG_GETARG_ARRAYTYPE_P(1);
 	NDBOX	   *result;
 	int			size,
@@ -263,13 +263,13 @@ cube_subset(PG_FUNCTION_ARGS)
 	}
 
 	PG_FREE_IF_COPY(c, 0);
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 Datum
 cube_out(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *cube = PG_GETARG_NDBOX(0);
+	NDBOX	   *cube = PG_GETARG_NDBOX_P(0);
 	StringInfoData buf;
 	int			dim = DIM(cube);
 	int			i;
@@ -316,7 +316,7 @@ Datum
 g_cube_consistent(PG_FUNCTION_ARGS)
 {
 	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
-	NDBOX	   *query = PG_GETARG_NDBOX(1);
+	NDBOX	   *query = PG_GETARG_NDBOX_P(1);
 	StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
 
 	/* Oid		subtype = PG_GETARG_OID(3); */
@@ -331,10 +331,10 @@ g_cube_consistent(PG_FUNCTION_ARGS)
 	 * g_cube_leaf_consistent
 	 */
 	if (GIST_LEAF(entry))
-		res = g_cube_leaf_consistent(DatumGetNDBOX(entry->key),
+		res = g_cube_leaf_consistent(DatumGetNDBOXP(entry->key),
 									 query, strategy);
 	else
-		res = g_cube_internal_consistent(DatumGetNDBOX(entry->key),
+		res = g_cube_internal_consistent(DatumGetNDBOXP(entry->key),
 										 query, strategy);
 
 	PG_FREE_IF_COPY(query, 1);
@@ -355,7 +355,7 @@ g_cube_union(PG_FUNCTION_ARGS)
 	NDBOX	   *tmp;
 	int			i;
 
-	tmp = DatumGetNDBOX(entryvec->vector[0].key);
+	tmp = DatumGetNDBOXP(entryvec->vector[0].key);
 
 	/*
 	 * sizep = sizeof(NDBOX); -- NDBOX has variable size
@@ -365,7 +365,7 @@ g_cube_union(PG_FUNCTION_ARGS)
 	for (i = 1; i < entryvec->n; i++)
 	{
 		out = g_cube_binary_union(tmp,
-								  DatumGetNDBOX(entryvec->vector[i].key),
+								  DatumGetNDBOXP(entryvec->vector[i].key),
 								  sizep);
 		tmp = out;
 	}
@@ -388,9 +388,9 @@ Datum
 g_cube_decompress(PG_FUNCTION_ARGS)
 {
 	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
-	NDBOX	   *key = DatumGetNDBOX(PG_DETOAST_DATUM(entry->key));
+	NDBOX	   *key = DatumGetNDBOXP(PG_DETOAST_DATUM(entry->key));
 
-	if (key != DatumGetNDBOX(entry->key))
+	if (key != DatumGetNDBOXP(entry->key))
 	{
 		GISTENTRY  *retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
 
@@ -417,10 +417,10 @@ g_cube_penalty(PG_FUNCTION_ARGS)
 	double		tmp1,
 				tmp2;
 
-	ud = cube_union_v0(DatumGetNDBOX(origentry->key),
-					   DatumGetNDBOX(newentry->key));
+	ud = cube_union_v0(DatumGetNDBOXP(origentry->key),
+					   DatumGetNDBOXP(newentry->key));
 	rt_cube_size(ud, &tmp1);
-	rt_cube_size(DatumGetNDBOX(origentry->key), &tmp2);
+	rt_cube_size(DatumGetNDBOXP(origentry->key), &tmp2);
 	*result = (float) (tmp1 - tmp2);
 
 	PG_RETURN_FLOAT8(*result);
@@ -473,16 +473,16 @@ g_cube_picksplit(PG_FUNCTION_ARGS)
 
 	for (i = FirstOffsetNumber; i < maxoff; i = OffsetNumberNext(i))
 	{
-		datum_alpha = DatumGetNDBOX(entryvec->vector[i].key);
+		datum_alpha = DatumGetNDBOXP(entryvec->vector[i].key);
 		for (j = OffsetNumberNext(i); j <= maxoff; j = OffsetNumberNext(j))
 		{
-			datum_beta = DatumGetNDBOX(entryvec->vector[j].key);
+			datum_beta = DatumGetNDBOXP(entryvec->vector[j].key);
 
 			/* compute the wasted space by unioning these guys */
 			/* size_waste = size_union - size_inter; */
 			union_d = cube_union_v0(datum_alpha, datum_beta);
 			rt_cube_size(union_d, &size_union);
-			inter_d = DatumGetNDBOX(DirectFunctionCall2(cube_inter,
+			inter_d = DatumGetNDBOXP(DirectFunctionCall2(cube_inter,
 						  entryvec->vector[i].key, entryvec->vector[j].key));
 			rt_cube_size(inter_d, &size_inter);
 			size_waste = size_union - size_inter;
@@ -506,10 +506,10 @@ g_cube_picksplit(PG_FUNCTION_ARGS)
 	right = v->spl_right;
 	v->spl_nright = 0;
 
-	datum_alpha = DatumGetNDBOX(entryvec->vector[seed_1].key);
+	datum_alpha = DatumGetNDBOXP(entryvec->vector[seed_1].key);
 	datum_l = cube_union_v0(datum_alpha, datum_alpha);
 	rt_cube_size(datum_l, &size_l);
-	datum_beta = DatumGetNDBOX(entryvec->vector[seed_2].key);
+	datum_beta = DatumGetNDBOXP(entryvec->vector[seed_2].key);
 	datum_r = cube_union_v0(datum_beta, datum_beta);
 	rt_cube_size(datum_r, &size_r);
 
@@ -548,7 +548,7 @@ g_cube_picksplit(PG_FUNCTION_ARGS)
 		}
 
 		/* okay, which page needs least enlargement? */
-		datum_alpha = DatumGetNDBOX(entryvec->vector[i].key);
+		datum_alpha = DatumGetNDBOXP(entryvec->vector[i].key);
 		union_dl = cube_union_v0(datum_l, datum_alpha);
 		union_dr = cube_union_v0(datum_r, datum_alpha);
 		rt_cube_size(union_dl, &size_alpha);
@@ -584,8 +584,8 @@ g_cube_picksplit(PG_FUNCTION_ARGS)
 Datum
 g_cube_same(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *b1 = PG_GETARG_NDBOX(0);
-	NDBOX	   *b2 = PG_GETARG_NDBOX(1);
+	NDBOX	   *b1 = PG_GETARG_NDBOX_P(0);
+	NDBOX	   *b2 = PG_GETARG_NDBOX_P(1);
 	bool	   *result = (bool *) PG_GETARG_POINTER(2);
 
 	if (cube_cmp_v0(b1, b2) == 0)
@@ -593,7 +593,7 @@ g_cube_same(PG_FUNCTION_ARGS)
 	else
 		*result = FALSE;
 
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 /*
@@ -735,23 +735,23 @@ cube_union_v0(NDBOX *a, NDBOX *b)
 Datum
 cube_union(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0);
-	NDBOX	   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0);
+	NDBOX	   *b = PG_GETARG_NDBOX_P(1);
 	NDBOX	   *res;
 
 	res = cube_union_v0(a, b);
 
 	PG_FREE_IF_COPY(a, 0);
 	PG_FREE_IF_COPY(b, 1);
-	PG_RETURN_NDBOX(res);
+	PG_RETURN_NDBOX_P(res);
 }
 
 /* cube_inter */
 Datum
 cube_inter(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0);
-	NDBOX	   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0);
+	NDBOX	   *b = PG_GETARG_NDBOX_P(1);
 	NDBOX	   *result;
 	bool		swapped = false;
 	int			i;
@@ -823,14 +823,14 @@ cube_inter(PG_FUNCTION_ARGS)
 	/*
 	 * Is it OK to return a non-null intersection for non-overlapping boxes?
 	 */
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 /* cube_size */
 Datum
 cube_size(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0);
 	double		result;
 
 	rt_cube_size(a, &result);
@@ -948,8 +948,8 @@ cube_cmp_v0(NDBOX *a, NDBOX *b)
 Datum
 cube_cmp(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	int32		res;
 
 	res = cube_cmp_v0(a, b);
@@ -963,8 +963,8 @@ cube_cmp(PG_FUNCTION_ARGS)
 Datum
 cube_eq(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	int32		res;
 
 	res = cube_cmp_v0(a, b);
@@ -978,8 +978,8 @@ cube_eq(PG_FUNCTION_ARGS)
 Datum
 cube_ne(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	int32		res;
 
 	res = cube_cmp_v0(a, b);
@@ -993,8 +993,8 @@ cube_ne(PG_FUNCTION_ARGS)
 Datum
 cube_lt(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	int32		res;
 
 	res = cube_cmp_v0(a, b);
@@ -1008,8 +1008,8 @@ cube_lt(PG_FUNCTION_ARGS)
 Datum
 cube_gt(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	int32		res;
 
 	res = cube_cmp_v0(a, b);
@@ -1023,8 +1023,8 @@ cube_gt(PG_FUNCTION_ARGS)
 Datum
 cube_le(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	int32		res;
 
 	res = cube_cmp_v0(a, b);
@@ -1038,8 +1038,8 @@ cube_le(PG_FUNCTION_ARGS)
 Datum
 cube_ge(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	int32		res;
 
 	res = cube_cmp_v0(a, b);
@@ -1093,8 +1093,8 @@ cube_contains_v0(NDBOX *a, NDBOX *b)
 Datum
 cube_contains(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	bool		res;
 
 	res = cube_contains_v0(a, b);
@@ -1109,8 +1109,8 @@ cube_contains(PG_FUNCTION_ARGS)
 Datum
 cube_contained(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	bool		res;
 
 	res = cube_contains_v0(b, a);
@@ -1164,8 +1164,8 @@ cube_overlap_v0(NDBOX *a, NDBOX *b)
 Datum
 cube_overlap(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	bool		res;
 
 	res = cube_overlap_v0(a, b);
@@ -1184,8 +1184,8 @@ cube_overlap(PG_FUNCTION_ARGS)
 Datum
 cube_distance(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	bool		swapped = false;
 	double		d,
 				distance;
@@ -1233,8 +1233,8 @@ cube_distance(PG_FUNCTION_ARGS)
 Datum
 distance_taxicab(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	bool		swapped = false;
 	double		distance;
 	int			i;
@@ -1277,8 +1277,8 @@ distance_taxicab(PG_FUNCTION_ARGS)
 Datum
 distance_chebyshev(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0),
-			   *b = PG_GETARG_NDBOX(1);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0),
+			   *b = PG_GETARG_NDBOX_P(1);
 	bool		swapped = false;
 	double		d,
 				distance;
@@ -1331,7 +1331,7 @@ g_cube_distance(PG_FUNCTION_ARGS)
 {
 	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
 	StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
-	NDBOX	   *cube = DatumGetNDBOX(entry->key);
+	NDBOX	   *cube = DatumGetNDBOXP(entry->key);
 	double		retval;
 
 	if (strategy == CubeKNNDistanceCoord)
@@ -1348,7 +1348,7 @@ g_cube_distance(PG_FUNCTION_ARGS)
 	}
 	else
 	{
-		NDBOX	   *query = PG_GETARG_NDBOX(1);
+		NDBOX	   *query = PG_GETARG_NDBOX_P(1);
 
 		switch (strategy)
 		{
@@ -1392,7 +1392,7 @@ distance_1D(double a1, double a2, double b1, double b2)
 Datum
 cube_is_point(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *cube = PG_GETARG_NDBOX(0);
+	NDBOX	   *cube = PG_GETARG_NDBOX_P(0);
 	bool		result;
 
 	result = cube_is_point_internal(cube);
@@ -1427,7 +1427,7 @@ cube_is_point_internal(NDBOX *cube)
 Datum
 cube_dim(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *c = PG_GETARG_NDBOX(0);
+	NDBOX	   *c = PG_GETARG_NDBOX_P(0);
 	int			dim = DIM(c);
 
 	PG_FREE_IF_COPY(c, 0);
@@ -1438,7 +1438,7 @@ cube_dim(PG_FUNCTION_ARGS)
 Datum
 cube_ll_coord(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *c = PG_GETARG_NDBOX(0);
+	NDBOX	   *c = PG_GETARG_NDBOX_P(0);
 	int			n = PG_GETARG_INT32(1);
 	double		result;
 
@@ -1455,7 +1455,7 @@ cube_ll_coord(PG_FUNCTION_ARGS)
 Datum
 cube_ur_coord(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *c = PG_GETARG_NDBOX(0);
+	NDBOX	   *c = PG_GETARG_NDBOX_P(0);
 	int			n = PG_GETARG_INT32(1);
 	double		result;
 
@@ -1476,7 +1476,7 @@ cube_ur_coord(PG_FUNCTION_ARGS)
 Datum
 cube_coord(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *cube = PG_GETARG_NDBOX(0);
+	NDBOX	   *cube = PG_GETARG_NDBOX_P(0);
 	int			coord = PG_GETARG_INT32(1);
 
 	if (coord <= 0 || coord > 2 * DIM(cube))
@@ -1504,7 +1504,7 @@ cube_coord(PG_FUNCTION_ARGS)
 Datum
 cube_coord_llur(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *cube = PG_GETARG_NDBOX(0);
+	NDBOX	   *cube = PG_GETARG_NDBOX_P(0);
 	int			coord = PG_GETARG_INT32(1);
 
 	if (coord <= 0 || coord > 2 * DIM(cube))
@@ -1534,7 +1534,7 @@ cube_coord_llur(PG_FUNCTION_ARGS)
 Datum
 cube_enlarge(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *a = PG_GETARG_NDBOX(0);
+	NDBOX	   *a = PG_GETARG_NDBOX_P(0);
 	double		r = PG_GETARG_FLOAT8(1);
 	int32		n = PG_GETARG_INT32(2);
 	NDBOX	   *result;
@@ -1592,7 +1592,7 @@ cube_enlarge(PG_FUNCTION_ARGS)
 	}
 
 	PG_FREE_IF_COPY(a, 0);
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 /* Create a one dimensional box with identical upper and lower coordinates */
@@ -1610,7 +1610,7 @@ cube_f8(PG_FUNCTION_ARGS)
 	SET_POINT_BIT(result);
 	result->x[0] = x;
 
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 /* Create a one dimensional box */
@@ -1641,7 +1641,7 @@ cube_f8_f8(PG_FUNCTION_ARGS)
 		result->x[1] = x1;
 	}
 
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 /* Add a dimension to an existing cube with the same values for the new
@@ -1649,7 +1649,7 @@ cube_f8_f8(PG_FUNCTION_ARGS)
 Datum
 cube_c_f8(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *cube = PG_GETARG_NDBOX(0);
+	NDBOX	   *cube = PG_GETARG_NDBOX_P(0);
 	double		x = PG_GETARG_FLOAT8(1);
 	NDBOX	   *result;
 	int			size;
@@ -1682,14 +1682,14 @@ cube_c_f8(PG_FUNCTION_ARGS)
 	}
 
 	PG_FREE_IF_COPY(cube, 0);
-	PG_RETURN_NDBOX(result);
+	PG_RETURN_NDBOX_P(result);
 }
 
 /* Add a dimension to an existing cube */
 Datum
 cube_c_f8_f8(PG_FUNCTION_ARGS)
 {
-	NDBOX	   *cube = PG_GETARG_NDBOX(0);
+	NDBOX	   *cube = PG_GETARG_NDBOX_P(0);
 	double		x1 = PG_GETARG_FLOAT8(1);
 	double		x2 = PG_GETARG_FLOAT8(2);
 	NDBOX	   *result;
@@ -1723,5 +1723,4 @@ cube_c_f8_f8(PG_FUNCTION_ARGS)
 	}
 
 	PG_FREE_IF_COPY(cube, 0);
-	PG_RETURN_NDBOX(result);
-}
+	PG_RETURN_NDBOX_P(result); }
diff --git a/contrib/cube/cubedata.h b/contrib/cube/cubedata.h
index af02464..92d213b 100644
--- a/contrib/cube/cubedata.h
+++ b/contrib/cube/cubedata.h
@@ -49,9 +49,9 @@ typedef struct NDBOX
 #define CUBE_SIZE(_dim)		(offsetof(NDBOX, x) + sizeof(double)*(_dim)*2)
 
 /* fmgr interface macros */
-#define DatumGetNDBOX(x)	((NDBOX *) PG_DETOAST_DATUM(x))
-#define PG_GETARG_NDBOX(x)	DatumGetNDBOX(PG_GETARG_DATUM(x))
-#define PG_RETURN_NDBOX(x)	PG_RETURN_POINTER(x)
+#define DatumGetNDBOXP(x)	((NDBOX *) PG_DETOAST_DATUM(x))
+#define PG_GETARG_NDBOX_P(x)	DatumGetNDBOXP(PG_GETARG_DATUM(x))
+#define PG_RETURN_NDBOX_P(x)	PG_RETURN_POINTER(x)
 
 /* GiST operator strategy numbers */
 #define CubeKNNDistanceCoord			15		/* ~> */
diff --git a/contrib/hstore/hstore.h b/contrib/hstore/hstore.h
index 6bab08b..f10aa9b 100644
--- a/contrib/hstore/hstore.h
+++ b/contrib/hstore/hstore.h
@@ -151,7 +151,7 @@ extern HStore *hstoreUpgrade(Datum orig);
 
 #define DatumGetHStoreP(d) hstoreUpgrade(d)
 
-#define PG_GETARG_HS(x) DatumGetHStoreP(PG_GETARG_DATUM(x))
+#define PG_GETARG_HS_P(x) DatumGetHStoreP(PG_GETARG_DATUM(x))
 
 
 /*
diff --git a/contrib/hstore/hstore_gin.c b/contrib/hstore/hstore_gin.c
index d98fb38..207dc34 100644
--- a/contrib/hstore/hstore_gin.c
+++ b/contrib/hstore/hstore_gin.c
@@ -43,7 +43,7 @@ makeitem(char *str, int len, char flag)
 Datum
 gin_extract_hstore(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	int32	   *nentries = (int32 *) PG_GETARG_POINTER(1);
 	Datum	   *entries = NULL;
 	HEntry	   *hsent = ARRPTR(hs);
@@ -155,7 +155,7 @@ gin_consistent_hstore(PG_FUNCTION_ARGS)
 	bool	   *check = (bool *) PG_GETARG_POINTER(0);
 	StrategyNumber strategy = PG_GETARG_UINT16(1);
 
-	/* HStore	   *query = PG_GETARG_HS(2); */
+	/* HStore	   *query = PG_GETARG_HS_P(2); */
 	int32		nkeys = PG_GETARG_INT32(3);
 
 	/* Pointer	   *extra_data = (Pointer *) PG_GETARG_POINTER(4); */
diff --git a/contrib/hstore/hstore_gist.c b/contrib/hstore/hstore_gist.c
index f8f5934..5170f60 100644
--- a/contrib/hstore/hstore_gist.c
+++ b/contrib/hstore/hstore_gist.c
@@ -518,7 +518,7 @@ ghstore_consistent(PG_FUNCTION_ARGS)
 	if (strategy == HStoreContainsStrategyNumber ||
 		strategy == HStoreOldContainsStrategyNumber)
 	{
-		HStore	   *query = PG_GETARG_HS(1);
+		HStore	   *query = PG_GETARG_HS_P(1);
 		HEntry	   *qe = ARRPTR(query);
 		char	   *qv = STRPTR(query);
 		int			count = HS_COUNT(query);
diff --git a/contrib/hstore/hstore_io.c b/contrib/hstore/hstore_io.c
index 1cecf86..d19206d 100644
--- a/contrib/hstore/hstore_io.c
+++ b/contrib/hstore/hstore_io.c
@@ -961,7 +961,7 @@ hstore_populate_record(PG_FUNCTION_ARGS)
 		tupTypmod = HeapTupleHeaderGetTypMod(rec);
 	}
 
-	hs = PG_GETARG_HS(1);
+	hs = PG_GETARG_HS_P(1);
 	entries = ARRPTR(hs);
 	ptr = STRPTR(hs);
 
@@ -1125,7 +1125,7 @@ PG_FUNCTION_INFO_V1(hstore_out);
 Datum
 hstore_out(PG_FUNCTION_ARGS)
 {
-	HStore	   *in = PG_GETARG_HS(0);
+	HStore	   *in = PG_GETARG_HS_P(0);
 	int			buflen,
 				i;
 	int			count = HS_COUNT(in);
@@ -1196,7 +1196,7 @@ PG_FUNCTION_INFO_V1(hstore_send);
 Datum
 hstore_send(PG_FUNCTION_ARGS)
 {
-	HStore	   *in = PG_GETARG_HS(0);
+	HStore	   *in = PG_GETARG_HS_P(0);
 	int			i;
 	int			count = HS_COUNT(in);
 	char	   *base = STRPTR(in);
@@ -1242,7 +1242,7 @@ PG_FUNCTION_INFO_V1(hstore_to_json_loose);
 Datum
 hstore_to_json_loose(PG_FUNCTION_ARGS)
 {
-	HStore	   *in = PG_GETARG_HS(0);
+	HStore	   *in = PG_GETARG_HS_P(0);
 	int			i;
 	int			count = HS_COUNT(in);
 	char	   *base = STRPTR(in);
@@ -1297,7 +1297,7 @@ PG_FUNCTION_INFO_V1(hstore_to_json);
 Datum
 hstore_to_json(PG_FUNCTION_ARGS)
 {
-	HStore	   *in = PG_GETARG_HS(0);
+	HStore	   *in = PG_GETARG_HS_P(0);
 	int			i;
 	int			count = HS_COUNT(in);
 	char	   *base = STRPTR(in);
@@ -1342,7 +1342,7 @@ PG_FUNCTION_INFO_V1(hstore_to_jsonb);
 Datum
 hstore_to_jsonb(PG_FUNCTION_ARGS)
 {
-	HStore	   *in = PG_GETARG_HS(0);
+	HStore	   *in = PG_GETARG_HS_P(0);
 	int			i;
 	int			count = HS_COUNT(in);
 	char	   *base = STRPTR(in);
@@ -1385,7 +1385,7 @@ PG_FUNCTION_INFO_V1(hstore_to_jsonb_loose);
 Datum
 hstore_to_jsonb_loose(PG_FUNCTION_ARGS)
 {
-	HStore	   *in = PG_GETARG_HS(0);
+	HStore	   *in = PG_GETARG_HS_P(0);
 	int			i;
 	int			count = HS_COUNT(in);
 	char	   *base = STRPTR(in);
diff --git a/contrib/hstore/hstore_op.c b/contrib/hstore/hstore_op.c
index 1e2dc88..df64a04 100644
--- a/contrib/hstore/hstore_op.c
+++ b/contrib/hstore/hstore_op.c
@@ -130,7 +130,7 @@ PG_FUNCTION_INFO_V1(hstore_fetchval);
 Datum
 hstore_fetchval(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	text	   *key = PG_GETARG_TEXT_PP(1);
 	HEntry	   *entries = ARRPTR(hs);
 	text	   *out;
@@ -151,7 +151,7 @@ PG_FUNCTION_INFO_V1(hstore_exists);
 Datum
 hstore_exists(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	text	   *key = PG_GETARG_TEXT_PP(1);
 	int			idx = hstoreFindKey(hs, NULL,
 									VARDATA_ANY(key), VARSIZE_ANY_EXHDR(key));
@@ -164,7 +164,7 @@ PG_FUNCTION_INFO_V1(hstore_exists_any);
 Datum
 hstore_exists_any(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	ArrayType  *keys = PG_GETARG_ARRAYTYPE_P(1);
 	int			nkeys;
 	Pairs	   *key_pairs = hstoreArrayToPairs(keys, &nkeys);
@@ -198,7 +198,7 @@ PG_FUNCTION_INFO_V1(hstore_exists_all);
 Datum
 hstore_exists_all(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	ArrayType  *keys = PG_GETARG_ARRAYTYPE_P(1);
 	int			nkeys;
 	Pairs	   *key_pairs = hstoreArrayToPairs(keys, &nkeys);
@@ -232,7 +232,7 @@ PG_FUNCTION_INFO_V1(hstore_defined);
 Datum
 hstore_defined(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	text	   *key = PG_GETARG_TEXT_PP(1);
 	HEntry	   *entries = ARRPTR(hs);
 	int			idx = hstoreFindKey(hs, NULL,
@@ -247,7 +247,7 @@ PG_FUNCTION_INFO_V1(hstore_delete);
 Datum
 hstore_delete(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	text	   *key = PG_GETARG_TEXT_PP(1);
 	char	   *keyptr = VARDATA_ANY(key);
 	int			keylen = VARSIZE_ANY_EXHDR(key);
@@ -294,7 +294,7 @@ PG_FUNCTION_INFO_V1(hstore_delete_array);
 Datum
 hstore_delete_array(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	HStore	   *out = palloc(VARSIZE(hs));
 	int			hs_count = HS_COUNT(hs);
 	char	   *ps,
@@ -373,8 +373,8 @@ PG_FUNCTION_INFO_V1(hstore_delete_hstore);
 Datum
 hstore_delete_hstore(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
-	HStore	   *hs2 = PG_GETARG_HS(1);
+	HStore	   *hs = PG_GETARG_HS_P(0);
+	HStore	   *hs2 = PG_GETARG_HS_P(1);
 	HStore	   *out = palloc(VARSIZE(hs));
 	int			hs_count = HS_COUNT(hs);
 	int			hs2_count = HS_COUNT(hs2);
@@ -473,8 +473,8 @@ PG_FUNCTION_INFO_V1(hstore_concat);
 Datum
 hstore_concat(PG_FUNCTION_ARGS)
 {
-	HStore	   *s1 = PG_GETARG_HS(0);
-	HStore	   *s2 = PG_GETARG_HS(1);
+	HStore	   *s1 = PG_GETARG_HS_P(0);
+	HStore	   *s2 = PG_GETARG_HS_P(1);
 	HStore	   *out = palloc(VARSIZE(s1) + VARSIZE(s2));
 	char	   *ps1,
 			   *ps2,
@@ -571,7 +571,7 @@ PG_FUNCTION_INFO_V1(hstore_slice_to_array);
 Datum
 hstore_slice_to_array(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	HEntry	   *entries = ARRPTR(hs);
 	char	   *ptr = STRPTR(hs);
 	ArrayType  *key_array = PG_GETARG_ARRAYTYPE_P(1);
@@ -634,7 +634,7 @@ PG_FUNCTION_INFO_V1(hstore_slice_to_hstore);
 Datum
 hstore_slice_to_hstore(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	HEntry	   *entries = ARRPTR(hs);
 	char	   *ptr = STRPTR(hs);
 	ArrayType  *key_array = PG_GETARG_ARRAYTYPE_P(1);
@@ -696,7 +696,7 @@ PG_FUNCTION_INFO_V1(hstore_akeys);
 Datum
 hstore_akeys(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	Datum	   *d;
 	ArrayType  *a;
 	HEntry	   *entries = ARRPTR(hs);
@@ -731,7 +731,7 @@ PG_FUNCTION_INFO_V1(hstore_avals);
 Datum
 hstore_avals(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	Datum	   *d;
 	bool	   *nulls;
 	ArrayType  *a;
@@ -827,7 +827,7 @@ PG_FUNCTION_INFO_V1(hstore_to_array);
 Datum
 hstore_to_array(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	ArrayType  *out = hstore_to_array_internal(hs, 1);
 
 	PG_RETURN_POINTER(out);
@@ -837,7 +837,7 @@ PG_FUNCTION_INFO_V1(hstore_to_matrix);
 Datum
 hstore_to_matrix(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	ArrayType  *out = hstore_to_array_internal(hs, 2);
 
 	PG_RETURN_POINTER(out);
@@ -891,7 +891,7 @@ hstore_skeys(PG_FUNCTION_ARGS)
 
 	if (SRF_IS_FIRSTCALL())
 	{
-		hs = PG_GETARG_HS(0);
+		hs = PG_GETARG_HS_P(0);
 		funcctx = SRF_FIRSTCALL_INIT();
 		setup_firstcall(funcctx, hs, NULL);
 	}
@@ -925,7 +925,7 @@ hstore_svals(PG_FUNCTION_ARGS)
 
 	if (SRF_IS_FIRSTCALL())
 	{
-		hs = PG_GETARG_HS(0);
+		hs = PG_GETARG_HS_P(0);
 		funcctx = SRF_FIRSTCALL_INIT();
 		setup_firstcall(funcctx, hs, NULL);
 	}
@@ -967,8 +967,8 @@ PG_FUNCTION_INFO_V1(hstore_contains);
 Datum
 hstore_contains(PG_FUNCTION_ARGS)
 {
-	HStore	   *val = PG_GETARG_HS(0);
-	HStore	   *tmpl = PG_GETARG_HS(1);
+	HStore	   *val = PG_GETARG_HS_P(0);
+	HStore	   *tmpl = PG_GETARG_HS_P(1);
 	bool		res = true;
 	HEntry	   *te = ARRPTR(tmpl);
 	char	   *tstr = STRPTR(tmpl);
@@ -1032,7 +1032,7 @@ hstore_each(PG_FUNCTION_ARGS)
 
 	if (SRF_IS_FIRSTCALL())
 	{
-		hs = PG_GETARG_HS(0);
+		hs = PG_GETARG_HS_P(0);
 		funcctx = SRF_FIRSTCALL_INIT();
 		setup_firstcall(funcctx, hs, fcinfo);
 	}
@@ -1087,8 +1087,8 @@ PG_FUNCTION_INFO_V1(hstore_cmp);
 Datum
 hstore_cmp(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs1 = PG_GETARG_HS(0);
-	HStore	   *hs2 = PG_GETARG_HS(1);
+	HStore	   *hs1 = PG_GETARG_HS_P(0);
+	HStore	   *hs2 = PG_GETARG_HS_P(1);
 	int			hcount1 = HS_COUNT(hs1);
 	int			hcount2 = HS_COUNT(hs2);
 	int			res = 0;
@@ -1235,7 +1235,7 @@ PG_FUNCTION_INFO_V1(hstore_hash);
 Datum
 hstore_hash(PG_FUNCTION_ARGS)
 {
-	HStore	   *hs = PG_GETARG_HS(0);
+	HStore	   *hs = PG_GETARG_HS_P(0);
 	Datum		hval = hash_any((unsigned char *) VARDATA(hs),
 								VARSIZE(hs) - VARHDRSZ);
 
diff --git a/contrib/hstore_plperl/hstore_plperl.c b/contrib/hstore_plperl/hstore_plperl.c
index 480212f..48ffb53 100644
--- a/contrib/hstore_plperl/hstore_plperl.c
+++ b/contrib/hstore_plperl/hstore_plperl.c
@@ -67,7 +67,7 @@ PG_FUNCTION_INFO_V1(hstore_to_plperl);
 Datum
 hstore_to_plperl(PG_FUNCTION_ARGS)
 {
-	HStore	   *in = PG_GETARG_HS(0);
+	HStore	   *in = PG_GETARG_HS_P(0);
 	int			i;
 	int			count = HS_COUNT(in);
 	char	   *base = STRPTR(in);
diff --git a/contrib/hstore_plpython/hstore_plpython.c b/contrib/hstore_plpython/hstore_plpython.c
index b184324..edd82c1 100644
--- a/contrib/hstore_plpython/hstore_plpython.c
+++ b/contrib/hstore_plpython/hstore_plpython.c
@@ -85,7 +85,7 @@ PG_FUNCTION_INFO_V1(hstore_to_plpython);
 Datum
 hstore_to_plpython(PG_FUNCTION_ARGS)
 {
-	HStore	   *in = PG_GETARG_HS(0);
+	HStore	   *in = PG_GETARG_HS_P(0);
 	int			i;
 	int			count = HS_COUNT(in);
 	char	   *base = STRPTR(in);
diff --git a/contrib/ltree/_ltree_op.c b/contrib/ltree/_ltree_op.c
index c0c56a4..6848ac6 100644
--- a/contrib/ltree/_ltree_op.c
+++ b/contrib/ltree/_ltree_op.c
@@ -71,7 +71,7 @@ Datum
 _ltree_isparent(PG_FUNCTION_ARGS)
 {
 	ArrayType  *la = PG_GETARG_ARRAYTYPE_P(0);
-	ltree	   *query = PG_GETARG_LTREE(1);
+	ltree	   *query = PG_GETARG_LTREE_P(1);
 	bool		res = array_iterator(la, ltree_isparent, (void *) query, NULL);
 
 	PG_FREE_IF_COPY(la, 0);
@@ -92,7 +92,7 @@ Datum
 _ltree_risparent(PG_FUNCTION_ARGS)
 {
 	ArrayType  *la = PG_GETARG_ARRAYTYPE_P(0);
-	ltree	   *query = PG_GETARG_LTREE(1);
+	ltree	   *query = PG_GETARG_LTREE_P(1);
 	bool		res = array_iterator(la, ltree_risparent, (void *) query, NULL);
 
 	PG_FREE_IF_COPY(la, 0);
@@ -113,7 +113,7 @@ Datum
 _ltq_regex(PG_FUNCTION_ARGS)
 {
 	ArrayType  *la = PG_GETARG_ARRAYTYPE_P(0);
-	lquery	   *query = PG_GETARG_LQUERY(1);
+	lquery	   *query = PG_GETARG_LQUERY_P(1);
 	bool		res = array_iterator(la, ltq_regex, (void *) query, NULL);
 
 	PG_FREE_IF_COPY(la, 0);
@@ -178,7 +178,7 @@ Datum
 _ltxtq_exec(PG_FUNCTION_ARGS)
 {
 	ArrayType  *la = PG_GETARG_ARRAYTYPE_P(0);
-	ltxtquery  *query = PG_GETARG_LTXTQUERY(1);
+	ltxtquery  *query = PG_GETARG_LTXTQUERY_P(1);
 	bool		res = array_iterator(la, ltxtq_exec, (void *) query, NULL);
 
 	PG_FREE_IF_COPY(la, 0);
@@ -200,7 +200,7 @@ Datum
 _ltree_extract_isparent(PG_FUNCTION_ARGS)
 {
 	ArrayType  *la = PG_GETARG_ARRAYTYPE_P(0);
-	ltree	   *query = PG_GETARG_LTREE(1);
+	ltree	   *query = PG_GETARG_LTREE_P(1);
 	ltree	   *found,
 			   *item;
 
@@ -223,7 +223,7 @@ Datum
 _ltree_extract_risparent(PG_FUNCTION_ARGS)
 {
 	ArrayType  *la = PG_GETARG_ARRAYTYPE_P(0);
-	ltree	   *query = PG_GETARG_LTREE(1);
+	ltree	   *query = PG_GETARG_LTREE_P(1);
 	ltree	   *found,
 			   *item;
 
@@ -246,7 +246,7 @@ Datum
 _ltq_extract_regex(PG_FUNCTION_ARGS)
 {
 	ArrayType  *la = PG_GETARG_ARRAYTYPE_P(0);
-	lquery	   *query = PG_GETARG_LQUERY(1);
+	lquery	   *query = PG_GETARG_LQUERY_P(1);
 	ltree	   *found,
 			   *item;
 
@@ -269,7 +269,7 @@ Datum
 _ltxtq_extract_exec(PG_FUNCTION_ARGS)
 {
 	ArrayType  *la = PG_GETARG_ARRAYTYPE_P(0);
-	ltxtquery  *query = PG_GETARG_LTXTQUERY(1);
+	ltxtquery  *query = PG_GETARG_LTXTQUERY_P(1);
 	ltree	   *found,
 			   *item;
 
diff --git a/contrib/ltree/lquery_op.c b/contrib/ltree/lquery_op.c
index 31d150d..9e2fb5a 100644
--- a/contrib/ltree/lquery_op.c
+++ b/contrib/ltree/lquery_op.c
@@ -302,8 +302,8 @@ checkCond(lquery_level *curq, int query_numlevel, ltree_level *curt, int tree_nu
 Datum
 ltq_regex(PG_FUNCTION_ARGS)
 {
-	ltree	   *tree = PG_GETARG_LTREE(0);
-	lquery	   *query = PG_GETARG_LQUERY(1);
+	ltree	   *tree = PG_GETARG_LTREE_P(0);
+	lquery	   *query = PG_GETARG_LQUERY_P(1);
 	bool		res = false;
 
 	if (query->flag & LQUERY_HASNOT)
@@ -338,7 +338,7 @@ ltq_rregex(PG_FUNCTION_ARGS)
 Datum
 lt_q_regex(PG_FUNCTION_ARGS)
 {
-	ltree	   *tree = PG_GETARG_LTREE(0);
+	ltree	   *tree = PG_GETARG_LTREE_P(0);
 	ArrayType  *_query = PG_GETARG_ARRAYTYPE_P(1);
 	lquery	   *query = (lquery *) ARR_DATA_PTR(_query);
 	bool		res = false;
diff --git a/contrib/ltree/ltree.h b/contrib/ltree/ltree.h
index c604357..65861ad 100644
--- a/contrib/ltree/ltree.h
+++ b/contrib/ltree/ltree.h
@@ -165,11 +165,11 @@ bool compare_subnode(ltree_level *t, char *q, int len,
 ltree	   *lca_inner(ltree **a, int len);
 int			ltree_strncasecmp(const char *a, const char *b, size_t s);
 
-#define PG_GETARG_LTREE(x)	((ltree*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(x))))
+#define PG_GETARG_LTREE_P(x)	((ltree*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(x))))
 #define PG_GETARG_LTREE_COPY(x) ((ltree*)DatumGetPointer(PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(x))))
-#define PG_GETARG_LQUERY(x) ((lquery*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(x))))
+#define PG_GETARG_LQUERY_P(x) ((lquery*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(x))))
 #define PG_GETARG_LQUERY_COPY(x) ((lquery*)DatumGetPointer(PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(x))))
-#define PG_GETARG_LTXTQUERY(x) ((ltxtquery*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(x))))
+#define PG_GETARG_LTXTQUERY_P(x) ((ltxtquery*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(x))))
 #define PG_GETARG_LTXTQUERY_COPY(x) ((ltxtquery*)DatumGetPointer(PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(x))))
 
 /* GiST support for ltree */
diff --git a/contrib/ltree/ltree_gist.c b/contrib/ltree/ltree_gist.c
index 033a477c..cbb0274 100644
--- a/contrib/ltree/ltree_gist.c
+++ b/contrib/ltree/ltree_gist.c
@@ -621,18 +621,18 @@ ltree_consistent(PG_FUNCTION_ARGS)
 	switch (strategy)
 	{
 		case BTLessStrategyNumber:
-			query = PG_GETARG_LTREE(1);
+			query = PG_GETARG_LTREE_P(1);
 			res = (GIST_LEAF(entry)) ?
 				(ltree_compare((ltree *) query, LTG_NODE(key)) > 0)
 				:
 				(ltree_compare((ltree *) query, LTG_GETLNODE(key)) >= 0);
 			break;
 		case BTLessEqualStrategyNumber:
-			query = PG_GETARG_LTREE(1);
+			query = PG_GETARG_LTREE_P(1);
 			res = (ltree_compare((ltree *) query, LTG_GETLNODE(key)) >= 0);
 			break;
 		case BTEqualStrategyNumber:
-			query = PG_GETARG_LTREE(1);
+			query = PG_GETARG_LTREE_P(1);
 			if (GIST_LEAF(entry))
 				res = (ltree_compare((ltree *) query, LTG_NODE(key)) == 0);
 			else
@@ -643,11 +643,11 @@ ltree_consistent(PG_FUNCTION_ARGS)
 					);
 			break;
 		case BTGreaterEqualStrategyNumber:
-			query = PG_GETARG_LTREE(1);
+			query = PG_GETARG_LTREE_P(1);
 			res = (ltree_compare((ltree *) query, LTG_GETRNODE(key)) <= 0);
 			break;
 		case BTGreaterStrategyNumber:
-			query = PG_GETARG_LTREE(1);
+			query = PG_GETARG_LTREE_P(1);
 			res = (GIST_LEAF(entry)) ?
 				(ltree_compare((ltree *) query, LTG_GETRNODE(key)) < 0)
 				:
@@ -661,7 +661,7 @@ ltree_consistent(PG_FUNCTION_ARGS)
 				gist_isparent(key, (ltree *) query);
 			break;
 		case 11:
-			query = PG_GETARG_LTREE(1);
+			query = PG_GETARG_LTREE_P(1);
 			res = (GIST_LEAF(entry)) ?
 				inner_isparent(LTG_NODE(key), (ltree *) query)
 				:
@@ -669,7 +669,7 @@ ltree_consistent(PG_FUNCTION_ARGS)
 			break;
 		case 12:
 		case 13:
-			query = PG_GETARG_LQUERY(1);
+			query = PG_GETARG_LQUERY_P(1);
 			if (GIST_LEAF(entry))
 				res = DatumGetBool(DirectFunctionCall2(ltq_regex,
 											  PointerGetDatum(LTG_NODE(key)),
@@ -680,7 +680,7 @@ ltree_consistent(PG_FUNCTION_ARGS)
 			break;
 		case 14:
 		case 15:
-			query = PG_GETARG_LQUERY(1);
+			query = PG_GETARG_LQUERY_P(1);
 			if (GIST_LEAF(entry))
 				res = DatumGetBool(DirectFunctionCall2(ltxtq_exec,
 											  PointerGetDatum(LTG_NODE(key)),
diff --git a/contrib/ltree/ltree_io.c b/contrib/ltree/ltree_io.c
index a1d4a0d..98a7034 100644
--- a/contrib/ltree/ltree_io.c
+++ b/contrib/ltree/ltree_io.c
@@ -149,7 +149,7 @@ ltree_in(PG_FUNCTION_ARGS)
 Datum
 ltree_out(PG_FUNCTION_ARGS)
 {
-	ltree	   *in = PG_GETARG_LTREE(0);
+	ltree	   *in = PG_GETARG_LTREE_P(0);
 	char	   *buf,
 			   *ptr;
 	int			i;
@@ -521,7 +521,7 @@ lquery_in(PG_FUNCTION_ARGS)
 Datum
 lquery_out(PG_FUNCTION_ARGS)
 {
-	lquery	   *in = PG_GETARG_LQUERY(0);
+	lquery	   *in = PG_GETARG_LQUERY_P(0);
 	char	   *buf,
 			   *ptr;
 	int			i,
diff --git a/contrib/ltree/ltree_op.c b/contrib/ltree/ltree_op.c
index aa1e991..8e2a70a 100644
--- a/contrib/ltree/ltree_op.c
+++ b/contrib/ltree/ltree_op.c
@@ -67,8 +67,8 @@ ltree_compare(const ltree *a, const ltree *b)
 }
 
 #define RUNCMP						\
-ltree *a	= PG_GETARG_LTREE(0);			\
-ltree *b	= PG_GETARG_LTREE(1);			\
+ltree *a	= PG_GETARG_LTREE_P(0);			\
+ltree *b	= PG_GETARG_LTREE_P(1);			\
 int res = ltree_compare(a,b);				\
 PG_FREE_IF_COPY(a,0);					\
 PG_FREE_IF_COPY(b,1);					\
@@ -125,7 +125,7 @@ ltree_ne(PG_FUNCTION_ARGS)
 Datum
 nlevel(PG_FUNCTION_ARGS)
 {
-	ltree	   *a = PG_GETARG_LTREE(0);
+	ltree	   *a = PG_GETARG_LTREE_P(0);
 	int			res = a->numlevel;
 
 	PG_FREE_IF_COPY(a, 0);
@@ -159,8 +159,8 @@ inner_isparent(const ltree *c, const ltree *p)
 Datum
 ltree_isparent(PG_FUNCTION_ARGS)
 {
-	ltree	   *c = PG_GETARG_LTREE(1);
-	ltree	   *p = PG_GETARG_LTREE(0);
+	ltree	   *c = PG_GETARG_LTREE_P(1);
+	ltree	   *p = PG_GETARG_LTREE_P(0);
 	bool		res = inner_isparent(c, p);
 
 	PG_FREE_IF_COPY(c, 1);
@@ -171,8 +171,8 @@ ltree_isparent(PG_FUNCTION_ARGS)
 Datum
 ltree_risparent(PG_FUNCTION_ARGS)
 {
-	ltree	   *c = PG_GETARG_LTREE(0);
-	ltree	   *p = PG_GETARG_LTREE(1);
+	ltree	   *c = PG_GETARG_LTREE_P(0);
+	ltree	   *p = PG_GETARG_LTREE_P(1);
 	bool		res = inner_isparent(c, p);
 
 	PG_FREE_IF_COPY(c, 0);
@@ -223,7 +223,7 @@ inner_subltree(ltree *t, int32 startpos, int32 endpos)
 Datum
 subltree(PG_FUNCTION_ARGS)
 {
-	ltree	   *t = PG_GETARG_LTREE(0);
+	ltree	   *t = PG_GETARG_LTREE_P(0);
 	ltree	   *res = inner_subltree(t, PG_GETARG_INT32(1), PG_GETARG_INT32(2));
 
 	PG_FREE_IF_COPY(t, 0);
@@ -233,7 +233,7 @@ subltree(PG_FUNCTION_ARGS)
 Datum
 subpath(PG_FUNCTION_ARGS)
 {
-	ltree	   *t = PG_GETARG_LTREE(0);
+	ltree	   *t = PG_GETARG_LTREE_P(0);
 	int32		start = PG_GETARG_INT32(1);
 	int32		len = (fcinfo->nargs == 3) ? PG_GETARG_INT32(2) : 0;
 	int32		end;
@@ -282,8 +282,8 @@ ltree_concat(ltree *a, ltree *b)
 Datum
 ltree_addltree(PG_FUNCTION_ARGS)
 {
-	ltree	   *a = PG_GETARG_LTREE(0);
-	ltree	   *b = PG_GETARG_LTREE(1);
+	ltree	   *a = PG_GETARG_LTREE_P(0);
+	ltree	   *b = PG_GETARG_LTREE_P(1);
 	ltree	   *r;
 
 	r = ltree_concat(a, b);
@@ -295,7 +295,7 @@ ltree_addltree(PG_FUNCTION_ARGS)
 Datum
 ltree_addtext(PG_FUNCTION_ARGS)
 {
-	ltree	   *a = PG_GETARG_LTREE(0);
+	ltree	   *a = PG_GETARG_LTREE_P(0);
 	text	   *b = PG_GETARG_TEXT_PP(1);
 	char	   *s;
 	ltree	   *r,
@@ -320,8 +320,8 @@ ltree_addtext(PG_FUNCTION_ARGS)
 Datum
 ltree_index(PG_FUNCTION_ARGS)
 {
-	ltree	   *a = PG_GETARG_LTREE(0);
-	ltree	   *b = PG_GETARG_LTREE(1);
+	ltree	   *a = PG_GETARG_LTREE_P(0);
+	ltree	   *b = PG_GETARG_LTREE_P(1);
 	int			start = (fcinfo->nargs == 3) ? PG_GETARG_INT32(2) : 0;
 	int			i,
 				j;
@@ -380,7 +380,7 @@ ltree_index(PG_FUNCTION_ARGS)
 Datum
 ltree_textadd(PG_FUNCTION_ARGS)
 {
-	ltree	   *a = PG_GETARG_LTREE(1);
+	ltree	   *a = PG_GETARG_LTREE_P(1);
 	text	   *b = PG_GETARG_TEXT_PP(0);
 	char	   *s;
 	ltree	   *r,
@@ -476,7 +476,7 @@ lca(PG_FUNCTION_ARGS)
 
 	a = (ltree **) palloc(sizeof(ltree *) * fcinfo->nargs);
 	for (i = 0; i < fcinfo->nargs; i++)
-		a[i] = PG_GETARG_LTREE(i);
+		a[i] = PG_GETARG_LTREE_P(i);
 	res = lca_inner(a, (int) fcinfo->nargs);
 	for (i = 0; i < fcinfo->nargs; i++)
 		PG_FREE_IF_COPY(a[i], i);
@@ -508,7 +508,7 @@ text2ltree(PG_FUNCTION_ARGS)
 Datum
 ltree2text(PG_FUNCTION_ARGS)
 {
-	ltree	   *in = PG_GETARG_LTREE(0);
+	ltree	   *in = PG_GETARG_LTREE_P(0);
 	char	   *ptr;
 	int			i;
 	ltree_level *curlevel;
diff --git a/contrib/ltree/ltxtquery_io.c b/contrib/ltree/ltxtquery_io.c
index 9ca1994..56bf39d 100644
--- a/contrib/ltree/ltxtquery_io.c
+++ b/contrib/ltree/ltxtquery_io.c
@@ -515,7 +515,7 @@ infix(INFIX *in, bool first)
 Datum
 ltxtq_out(PG_FUNCTION_ARGS)
 {
-	ltxtquery  *query = PG_GETARG_LTXTQUERY(0);
+	ltxtquery  *query = PG_GETARG_LTXTQUERY_P(0);
 	INFIX		nrm;
 
 	if (query->size == 0)
diff --git a/contrib/ltree/ltxtquery_op.c b/contrib/ltree/ltxtquery_op.c
index 1428c8b..8427c8f 100644
--- a/contrib/ltree/ltxtquery_op.c
+++ b/contrib/ltree/ltxtquery_op.c
@@ -86,8 +86,8 @@ checkcondition_str(void *checkval, ITEM *val)
 Datum
 ltxtq_exec(PG_FUNCTION_ARGS)
 {
-	ltree	   *val = PG_GETARG_LTREE(0);
-	ltxtquery  *query = PG_GETARG_LTXTQUERY(1);
+	ltree	   *val = PG_GETARG_LTREE_P(0);
+	ltxtquery  *query = PG_GETARG_LTXTQUERY_P(1);
 	CHKVAL		chkval;
 	bool		result;
 
diff --git a/contrib/ltree_plpython/ltree_plpython.c b/contrib/ltree_plpython/ltree_plpython.c
index bdd462a..ae9b90d 100644
--- a/contrib/ltree_plpython/ltree_plpython.c
+++ b/contrib/ltree_plpython/ltree_plpython.c
@@ -40,7 +40,7 @@ PG_FUNCTION_INFO_V1(ltree_to_plpython);
 Datum
 ltree_to_plpython(PG_FUNCTION_ARGS)
 {
-	ltree	   *in = PG_GETARG_LTREE(0);
+	ltree	   *in = PG_GETARG_LTREE_P(0);
 	int			i;
 	PyObject   *list;
 	ltree_level *curlevel;
diff --git a/src/backend/executor/tqueue.c b/src/backend/executor/tqueue.c
index 8d7e711..4bdd7f5 100644
--- a/src/backend/executor/tqueue.c
+++ b/src/backend/executor/tqueue.c
@@ -485,7 +485,7 @@ static void
 TQExamineRange(TQueueDestReceiver *tqueue, RangeRemapInfo *remapinfo,
 			   Datum value)
 {
-	RangeType  *range = DatumGetRangeType(value);
+	RangeType  *range = DatumGetRangeTypeP(value);
 	RangeBound	lower;
 	RangeBound	upper;
 	bool		empty;
@@ -883,7 +883,7 @@ static Datum
 TQRemapRange(TupleQueueReader *reader, RangeRemapInfo *remapinfo,
 			 Datum value, bool *changed)
 {
-	RangeType  *range = DatumGetRangeType(value);
+	RangeType  *range = DatumGetRangeTypeP(value);
 	bool		bound_changed = false;
 	RangeBound	lower;
 	RangeBound	upper;
@@ -909,7 +909,7 @@ TQRemapRange(TupleQueueReader *reader, RangeRemapInfo *remapinfo,
 		/* Reserialize.  */
 		*changed = true;
 		range = range_serialize(remapinfo->typcache, &lower, &upper, empty);
-		return RangeTypeGetDatum(range);
+		return RangeTypePGetDatum(range);
 	}
 
 	/* Else just return the value as-is. */
diff --git a/src/backend/tsearch/to_tsany.c b/src/backend/tsearch/to_tsany.c
index 93c08bc..326b286 100644
--- a/src/backend/tsearch/to_tsany.c
+++ b/src/backend/tsearch/to_tsany.c
@@ -269,7 +269,7 @@ Datum
 jsonb_to_tsvector_byid(PG_FUNCTION_ARGS)
 {
 	Oid					cfgId = PG_GETARG_OID(0);
-	Jsonb				*jb = PG_GETARG_JSONB(1);
+	Jsonb				*jb = PG_GETARG_JSONB_P(1);
 	TSVectorBuildState	state;
 	ParsedText			*prs = (ParsedText *) palloc(sizeof(ParsedText));
 
@@ -301,7 +301,7 @@ jsonb_to_tsvector_byid(PG_FUNCTION_ARGS)
 Datum
 jsonb_to_tsvector(PG_FUNCTION_ARGS)
 {
-	Jsonb	*jb = PG_GETARG_JSONB(0);
+	Jsonb	*jb = PG_GETARG_JSONB_P(0);
 	Oid		cfgId;
 
 	cfgId = getTSCurrentConfig(true);
diff --git a/src/backend/tsearch/wparser.c b/src/backend/tsearch/wparser.c
index c19937d..99af741 100644
--- a/src/backend/tsearch/wparser.c
+++ b/src/backend/tsearch/wparser.c
@@ -381,7 +381,7 @@ ts_headline_opt(PG_FUNCTION_ARGS)
 Datum
 ts_headline_jsonb_byid_opt(PG_FUNCTION_ARGS)
 {
-	Jsonb			*out, *jb = PG_GETARG_JSONB(1);
+	Jsonb			*out, *jb = PG_GETARG_JSONB_P(1);
 	TSQuery			query = PG_GETARG_TSQUERY(2);
 	text			*opt = (PG_NARGS() > 3 && PG_GETARG_POINTER(3)) ? PG_GETARG_TEXT_P(3) : NULL;
 	JsonTransformStringValuesAction action = (JsonTransformStringValuesAction) headline_json_value;
@@ -422,7 +422,7 @@ ts_headline_jsonb_byid_opt(PG_FUNCTION_ARGS)
 		pfree(prs.stopsel);
 	}
 
-	PG_RETURN_JSONB(out);
+	PG_RETURN_JSONB_P(out);
 }
 
 Datum
diff --git a/src/backend/utils/adt/array_expanded.c b/src/backend/utils/adt/array_expanded.c
index f256c7f..31583f9 100644
--- a/src/backend/utils/adt/array_expanded.c
+++ b/src/backend/utils/adt/array_expanded.c
@@ -394,11 +394,11 @@ DatumGetExpandedArrayX(Datum d, ArrayMetaState *metacache)
 }
 
 /*
- * DatumGetAnyArray: return either an expanded array or a detoasted varlena
+ * DatumGetAnyArrayP: return either an expanded array or a detoasted varlena
  * array.  The result must not be modified in-place.
  */
 AnyArrayType *
-DatumGetAnyArray(Datum d)
+DatumGetAnyArrayP(Datum d)
 {
 	ExpandedArrayHeader *eah;
 
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index d9c8aa5..9d90135 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -1010,7 +1010,7 @@ CopyArrayEls(ArrayType *array,
 Datum
 array_out(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *v = PG_GETARG_ANY_ARRAY(0);
+	AnyArrayType *v = PG_GETARG_ANY_ARRAY_P(0);
 	Oid			element_type = AARR_ELEMTYPE(v);
 	int			typlen;
 	bool		typbyval;
@@ -1533,7 +1533,7 @@ ReadArrayBinary(StringInfo buf,
 Datum
 array_send(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *v = PG_GETARG_ANY_ARRAY(0);
+	AnyArrayType *v = PG_GETARG_ANY_ARRAY_P(0);
 	Oid			element_type = AARR_ELEMTYPE(v);
 	int			typlen;
 	bool		typbyval;
@@ -1637,7 +1637,7 @@ array_send(PG_FUNCTION_ARGS)
 Datum
 array_ndims(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *v = PG_GETARG_ANY_ARRAY(0);
+	AnyArrayType *v = PG_GETARG_ANY_ARRAY_P(0);
 
 	/* Sanity check: does it look like an array at all? */
 	if (AARR_NDIM(v) <= 0 || AARR_NDIM(v) > MAXDIM)
@@ -1653,7 +1653,7 @@ array_ndims(PG_FUNCTION_ARGS)
 Datum
 array_dims(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *v = PG_GETARG_ANY_ARRAY(0);
+	AnyArrayType *v = PG_GETARG_ANY_ARRAY_P(0);
 	char	   *p;
 	int			i;
 	int		   *dimv,
@@ -1691,7 +1691,7 @@ array_dims(PG_FUNCTION_ARGS)
 Datum
 array_lower(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *v = PG_GETARG_ANY_ARRAY(0);
+	AnyArrayType *v = PG_GETARG_ANY_ARRAY_P(0);
 	int			reqdim = PG_GETARG_INT32(1);
 	int		   *lb;
 	int			result;
@@ -1718,7 +1718,7 @@ array_lower(PG_FUNCTION_ARGS)
 Datum
 array_upper(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *v = PG_GETARG_ANY_ARRAY(0);
+	AnyArrayType *v = PG_GETARG_ANY_ARRAY_P(0);
 	int			reqdim = PG_GETARG_INT32(1);
 	int		   *dimv,
 			   *lb;
@@ -1748,7 +1748,7 @@ array_upper(PG_FUNCTION_ARGS)
 Datum
 array_length(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *v = PG_GETARG_ANY_ARRAY(0);
+	AnyArrayType *v = PG_GETARG_ANY_ARRAY_P(0);
 	int			reqdim = PG_GETARG_INT32(1);
 	int		   *dimv;
 	int			result;
@@ -1775,7 +1775,7 @@ array_length(PG_FUNCTION_ARGS)
 Datum
 array_cardinality(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *v = PG_GETARG_ANY_ARRAY(0);
+	AnyArrayType *v = PG_GETARG_ANY_ARRAY_P(0);
 
 	PG_RETURN_INT32(ArrayGetNItems(AARR_NDIM(v), AARR_DIMS(v)));
 }
@@ -3146,7 +3146,7 @@ array_map(FunctionCallInfo fcinfo, Oid retType, ArrayMapState *amstate)
 		elog(ERROR, "invalid nargs: %d", fcinfo->nargs);
 	if (PG_ARGISNULL(0))
 		elog(ERROR, "null input array");
-	v = PG_GETARG_ANY_ARRAY(0);
+	v = PG_GETARG_ANY_ARRAY_P(0);
 
 	inpType = AARR_ELEMTYPE(v);
 	ndim = AARR_NDIM(v);
@@ -3588,8 +3588,8 @@ array_contains_nulls(ArrayType *array)
 Datum
 array_eq(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY(0);
-	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY(1);
+	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY_P(0);
+	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY_P(1);
 	Oid			collation = PG_GET_COLLATION();
 	int			ndims1 = AARR_NDIM(array1);
 	int			ndims2 = AARR_NDIM(array2);
@@ -3759,8 +3759,8 @@ btarraycmp(PG_FUNCTION_ARGS)
 static int
 array_cmp(FunctionCallInfo fcinfo)
 {
-	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY(0);
-	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY(1);
+	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY_P(0);
+	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY_P(1);
 	Oid			collation = PG_GET_COLLATION();
 	int			ndims1 = AARR_NDIM(array1);
 	int			ndims2 = AARR_NDIM(array2);
@@ -3930,7 +3930,7 @@ array_cmp(FunctionCallInfo fcinfo)
 Datum
 hash_array(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *array = PG_GETARG_ANY_ARRAY(0);
+	AnyArrayType *array = PG_GETARG_ANY_ARRAY_P(0);
 	int			ndims = AARR_NDIM(array);
 	int		   *dims = AARR_DIMS(array);
 	Oid			element_type = AARR_ELEMTYPE(array);
@@ -4181,8 +4181,8 @@ array_contain_compare(AnyArrayType *array1, AnyArrayType *array2, Oid collation,
 Datum
 arrayoverlap(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY(0);
-	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY(1);
+	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY_P(0);
+	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY_P(1);
 	Oid			collation = PG_GET_COLLATION();
 	bool		result;
 
@@ -4199,8 +4199,8 @@ arrayoverlap(PG_FUNCTION_ARGS)
 Datum
 arraycontains(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY(0);
-	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY(1);
+	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY_P(0);
+	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY_P(1);
 	Oid			collation = PG_GET_COLLATION();
 	bool		result;
 
@@ -4217,8 +4217,8 @@ arraycontains(PG_FUNCTION_ARGS)
 Datum
 arraycontained(PG_FUNCTION_ARGS)
 {
-	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY(0);
-	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY(1);
+	AnyArrayType *array1 = PG_GETARG_ANY_ARRAY_P(0);
+	AnyArrayType *array2 = PG_GETARG_ANY_ARRAY_P(1);
 	Oid			collation = PG_GET_COLLATION();
 	bool		result;
 
@@ -5557,7 +5557,7 @@ generate_subscripts(PG_FUNCTION_ARGS)
 	/* stuff done only on the first call of the function */
 	if (SRF_IS_FIRSTCALL())
 	{
-		AnyArrayType *v = PG_GETARG_ANY_ARRAY(0);
+		AnyArrayType *v = PG_GETARG_ANY_ARRAY_P(0);
 		int			reqdim = PG_GETARG_INT32(1);
 		int		   *lb,
 				   *dimv;
@@ -5919,7 +5919,7 @@ array_unnest(PG_FUNCTION_ARGS)
 		 * and not before.  (If no detoast happens, we assume the originally
 		 * passed array will stick around till then.)
 		 */
-		arr = PG_GETARG_ANY_ARRAY(0);
+		arr = PG_GETARG_ANY_ARRAY_P(0);
 
 		/* allocate memory for user context */
 		fctx = (array_unnest_fctx *) palloc(sizeof(array_unnest_fctx));
diff --git a/src/backend/utils/adt/jsonb.c b/src/backend/utils/adt/jsonb.c
index 164f57e..c64d777 100644
--- a/src/backend/utils/adt/jsonb.c
+++ b/src/backend/utils/adt/jsonb.c
@@ -130,7 +130,7 @@ jsonb_recv(PG_FUNCTION_ARGS)
 Datum
 jsonb_out(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	char	   *out;
 
 	out = JsonbToCString(NULL, &jb->root, VARSIZE(jb));
@@ -146,7 +146,7 @@ jsonb_out(PG_FUNCTION_ARGS)
 Datum
 jsonb_send(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	StringInfoData buf;
 	StringInfo	jtext = makeStringInfo();
 	int			version = 1;
@@ -171,7 +171,7 @@ jsonb_send(PG_FUNCTION_ARGS)
 Datum
 jsonb_typeof(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *in = PG_GETARG_JSONB(0);
+	Jsonb	   *in = PG_GETARG_JSONB_P(0);
 	JsonbIterator *it;
 	JsonbValue	v;
 	char	   *result;
@@ -878,7 +878,7 @@ datum_to_jsonb(Datum val, bool is_null, JsonbInState *result,
 				break;
 			case JSONBTYPE_JSONB:
 				{
-					Jsonb	   *jsonb = DatumGetJsonb(val);
+					Jsonb	   *jsonb = DatumGetJsonbP(val);
 					JsonbIterator *it;
 
 					it = JsonbIteratorInit(&jsonb->root);
diff --git a/src/backend/utils/adt/jsonb_gin.c b/src/backend/utils/adt/jsonb_gin.c
index 8e8e8fd..4e1ba10 100644
--- a/src/backend/utils/adt/jsonb_gin.c
+++ b/src/backend/utils/adt/jsonb_gin.c
@@ -66,7 +66,7 @@ gin_compare_jsonb(PG_FUNCTION_ARGS)
 Datum
 gin_extract_jsonb(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = (Jsonb *) PG_GETARG_JSONB(0);
+	Jsonb	   *jb = (Jsonb *) PG_GETARG_JSONB_P(0);
 	int32	   *nentries = (int32 *) PG_GETARG_POINTER(1);
 	int			total = 2 * JB_ROOT_COUNT(jb);
 	JsonbIterator *it;
@@ -196,7 +196,7 @@ gin_consistent_jsonb(PG_FUNCTION_ARGS)
 	bool	   *check = (bool *) PG_GETARG_POINTER(0);
 	StrategyNumber strategy = PG_GETARG_UINT16(1);
 
-	/* Jsonb	   *query = PG_GETARG_JSONB(2); */
+	/* Jsonb	   *query = PG_GETARG_JSONB_P(2); */
 	int32		nkeys = PG_GETARG_INT32(3);
 
 	/* Pointer	   *extra_data = (Pointer *) PG_GETARG_POINTER(4); */
@@ -268,7 +268,7 @@ gin_triconsistent_jsonb(PG_FUNCTION_ARGS)
 	GinTernaryValue *check = (GinTernaryValue *) PG_GETARG_POINTER(0);
 	StrategyNumber strategy = PG_GETARG_UINT16(1);
 
-	/* Jsonb	   *query = PG_GETARG_JSONB(2); */
+	/* Jsonb	   *query = PG_GETARG_JSONB_P(2); */
 	int32		nkeys = PG_GETARG_INT32(3);
 
 	/* Pointer	   *extra_data = (Pointer *) PG_GETARG_POINTER(4); */
@@ -329,7 +329,7 @@ gin_triconsistent_jsonb(PG_FUNCTION_ARGS)
 Datum
 gin_extract_jsonb_path(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	int32	   *nentries = (int32 *) PG_GETARG_POINTER(1);
 	int			total = 2 * JB_ROOT_COUNT(jb);
 	JsonbIterator *it;
@@ -454,7 +454,7 @@ gin_consistent_jsonb_path(PG_FUNCTION_ARGS)
 	bool	   *check = (bool *) PG_GETARG_POINTER(0);
 	StrategyNumber strategy = PG_GETARG_UINT16(1);
 
-	/* Jsonb	   *query = PG_GETARG_JSONB(2); */
+	/* Jsonb	   *query = PG_GETARG_JSONB_P(2); */
 	int32		nkeys = PG_GETARG_INT32(3);
 
 	/* Pointer	   *extra_data = (Pointer *) PG_GETARG_POINTER(4); */
@@ -492,7 +492,7 @@ gin_triconsistent_jsonb_path(PG_FUNCTION_ARGS)
 	GinTernaryValue *check = (GinTernaryValue *) PG_GETARG_POINTER(0);
 	StrategyNumber strategy = PG_GETARG_UINT16(1);
 
-	/* Jsonb	   *query = PG_GETARG_JSONB(2); */
+	/* Jsonb	   *query = PG_GETARG_JSONB_P(2); */
 	int32		nkeys = PG_GETARG_INT32(3);
 
 	/* Pointer	   *extra_data = (Pointer *) PG_GETARG_POINTER(4); */
diff --git a/src/backend/utils/adt/jsonb_op.c b/src/backend/utils/adt/jsonb_op.c
index d4c490e..b104b2e 100644
--- a/src/backend/utils/adt/jsonb_op.c
+++ b/src/backend/utils/adt/jsonb_op.c
@@ -21,7 +21,7 @@
 Datum
 jsonb_exists(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	text	   *key = PG_GETARG_TEXT_PP(1);
 	JsonbValue	kval;
 	JsonbValue *v = NULL;
@@ -46,7 +46,7 @@ jsonb_exists(PG_FUNCTION_ARGS)
 Datum
 jsonb_exists_any(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	ArrayType  *keys = PG_GETARG_ARRAYTYPE_P(1);
 	int			i;
 	Datum	   *key_datums;
@@ -79,7 +79,7 @@ jsonb_exists_any(PG_FUNCTION_ARGS)
 Datum
 jsonb_exists_all(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	ArrayType  *keys = PG_GETARG_ARRAYTYPE_P(1);
 	int			i;
 	Datum	   *key_datums;
@@ -112,8 +112,8 @@ jsonb_exists_all(PG_FUNCTION_ARGS)
 Datum
 jsonb_contains(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *val = PG_GETARG_JSONB(0);
-	Jsonb	   *tmpl = PG_GETARG_JSONB(1);
+	Jsonb	   *val = PG_GETARG_JSONB_P(0);
+	Jsonb	   *tmpl = PG_GETARG_JSONB_P(1);
 
 	JsonbIterator *it1,
 			   *it2;
@@ -131,8 +131,8 @@ Datum
 jsonb_contained(PG_FUNCTION_ARGS)
 {
 	/* Commutator of "contains" */
-	Jsonb	   *tmpl = PG_GETARG_JSONB(0);
-	Jsonb	   *val = PG_GETARG_JSONB(1);
+	Jsonb	   *tmpl = PG_GETARG_JSONB_P(0);
+	Jsonb	   *val = PG_GETARG_JSONB_P(1);
 
 	JsonbIterator *it1,
 			   *it2;
@@ -149,8 +149,8 @@ jsonb_contained(PG_FUNCTION_ARGS)
 Datum
 jsonb_ne(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jba = PG_GETARG_JSONB(0);
-	Jsonb	   *jbb = PG_GETARG_JSONB(1);
+	Jsonb	   *jba = PG_GETARG_JSONB_P(0);
+	Jsonb	   *jbb = PG_GETARG_JSONB_P(1);
 	bool		res;
 
 	res = (compareJsonbContainers(&jba->root, &jbb->root) != 0);
@@ -166,8 +166,8 @@ jsonb_ne(PG_FUNCTION_ARGS)
 Datum
 jsonb_lt(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jba = PG_GETARG_JSONB(0);
-	Jsonb	   *jbb = PG_GETARG_JSONB(1);
+	Jsonb	   *jba = PG_GETARG_JSONB_P(0);
+	Jsonb	   *jbb = PG_GETARG_JSONB_P(1);
 	bool		res;
 
 	res = (compareJsonbContainers(&jba->root, &jbb->root) < 0);
@@ -180,8 +180,8 @@ jsonb_lt(PG_FUNCTION_ARGS)
 Datum
 jsonb_gt(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jba = PG_GETARG_JSONB(0);
-	Jsonb	   *jbb = PG_GETARG_JSONB(1);
+	Jsonb	   *jba = PG_GETARG_JSONB_P(0);
+	Jsonb	   *jbb = PG_GETARG_JSONB_P(1);
 	bool		res;
 
 	res = (compareJsonbContainers(&jba->root, &jbb->root) > 0);
@@ -194,8 +194,8 @@ jsonb_gt(PG_FUNCTION_ARGS)
 Datum
 jsonb_le(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jba = PG_GETARG_JSONB(0);
-	Jsonb	   *jbb = PG_GETARG_JSONB(1);
+	Jsonb	   *jba = PG_GETARG_JSONB_P(0);
+	Jsonb	   *jbb = PG_GETARG_JSONB_P(1);
 	bool		res;
 
 	res = (compareJsonbContainers(&jba->root, &jbb->root) <= 0);
@@ -208,8 +208,8 @@ jsonb_le(PG_FUNCTION_ARGS)
 Datum
 jsonb_ge(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jba = PG_GETARG_JSONB(0);
-	Jsonb	   *jbb = PG_GETARG_JSONB(1);
+	Jsonb	   *jba = PG_GETARG_JSONB_P(0);
+	Jsonb	   *jbb = PG_GETARG_JSONB_P(1);
 	bool		res;
 
 	res = (compareJsonbContainers(&jba->root, &jbb->root) >= 0);
@@ -222,8 +222,8 @@ jsonb_ge(PG_FUNCTION_ARGS)
 Datum
 jsonb_eq(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jba = PG_GETARG_JSONB(0);
-	Jsonb	   *jbb = PG_GETARG_JSONB(1);
+	Jsonb	   *jba = PG_GETARG_JSONB_P(0);
+	Jsonb	   *jbb = PG_GETARG_JSONB_P(1);
 	bool		res;
 
 	res = (compareJsonbContainers(&jba->root, &jbb->root) == 0);
@@ -236,8 +236,8 @@ jsonb_eq(PG_FUNCTION_ARGS)
 Datum
 jsonb_cmp(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jba = PG_GETARG_JSONB(0);
-	Jsonb	   *jbb = PG_GETARG_JSONB(1);
+	Jsonb	   *jba = PG_GETARG_JSONB_P(0);
+	Jsonb	   *jbb = PG_GETARG_JSONB_P(1);
 	int			res;
 
 	res = compareJsonbContainers(&jba->root, &jbb->root);
@@ -253,7 +253,7 @@ jsonb_cmp(PG_FUNCTION_ARGS)
 Datum
 jsonb_hash(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	JsonbIterator *it;
 	JsonbValue	v;
 	JsonbIteratorToken r;
diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c
index 0db3723..2eda807 100644
--- a/src/backend/utils/adt/jsonfuncs.c
+++ b/src/backend/utils/adt/jsonfuncs.c
@@ -325,7 +325,7 @@ jsonb_object_keys(PG_FUNCTION_ARGS)
 	if (SRF_IS_FIRSTCALL())
 	{
 		MemoryContext oldcontext;
-		Jsonb	   *jb = PG_GETARG_JSONB(0);
+		Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 		bool		skipNested = false;
 		JsonbIterator *it;
 		JsonbValue	v;
@@ -529,7 +529,7 @@ json_object_field(PG_FUNCTION_ARGS)
 Datum
 jsonb_object_field(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	text	   *key = PG_GETARG_TEXT_PP(1);
 	JsonbValue *v;
 
@@ -541,7 +541,7 @@ jsonb_object_field(PG_FUNCTION_ARGS)
 									   VARSIZE_ANY_EXHDR(key));
 
 	if (v != NULL)
-		PG_RETURN_JSONB(JsonbValueToJsonb(v));
+		PG_RETURN_JSONB_P(JsonbValueToJsonb(v));
 
 	PG_RETURN_NULL();
 }
@@ -565,7 +565,7 @@ json_object_field_text(PG_FUNCTION_ARGS)
 Datum
 jsonb_object_field_text(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	text	   *key = PG_GETARG_TEXT_PP(1);
 	JsonbValue *v;
 
@@ -631,7 +631,7 @@ json_array_element(PG_FUNCTION_ARGS)
 Datum
 jsonb_array_element(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	int			element = PG_GETARG_INT32(1);
 	JsonbValue *v;
 
@@ -651,7 +651,7 @@ jsonb_array_element(PG_FUNCTION_ARGS)
 
 	v = getIthJsonbValueFromContainer(&jb->root, element);
 	if (v != NULL)
-		PG_RETURN_JSONB(JsonbValueToJsonb(v));
+		PG_RETURN_JSONB_P(JsonbValueToJsonb(v));
 
 	PG_RETURN_NULL();
 }
@@ -674,7 +674,7 @@ json_array_element_text(PG_FUNCTION_ARGS)
 Datum
 jsonb_array_element_text(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	int			element = PG_GETARG_INT32(1);
 	JsonbValue *v;
 
@@ -1201,7 +1201,7 @@ jsonb_extract_path_text(PG_FUNCTION_ARGS)
 static Datum
 get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	ArrayType  *path = PG_GETARG_ARRAYTYPE_P(1);
 	Jsonb	   *res;
 	Datum	   *pathtext;
@@ -1261,7 +1261,7 @@ get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
 		else
 		{
 			/* not text mode - just hand back the jsonb */
-			PG_RETURN_JSONB(jb);
+			PG_RETURN_JSONB_P(jb);
 		}
 	}
 
@@ -1359,7 +1359,7 @@ get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
 	else
 	{
 		/* not text mode - just hand back the jsonb */
-		PG_RETURN_JSONB(res);
+		PG_RETURN_JSONB_P(res);
 	}
 }
 
@@ -1397,7 +1397,7 @@ json_array_length(PG_FUNCTION_ARGS)
 Datum
 jsonb_array_length(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 
 	if (JB_ROOT_IS_SCALAR(jb))
 		ereport(ERROR,
@@ -1487,7 +1487,7 @@ jsonb_each_text(PG_FUNCTION_ARGS)
 static Datum
 each_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname, bool as_text)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	ReturnSetInfo *rsi;
 	Tuplestorestate *tuple_store;
 	TupleDesc	tupdesc;
@@ -1802,7 +1802,7 @@ static Datum
 elements_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname,
 					  bool as_text)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	ReturnSetInfo *rsi;
 	Tuplestorestate *tuple_store;
 	TupleDesc	tupdesc;
@@ -2226,7 +2226,7 @@ populate_record_worker(FunctionCallInfo fcinfo, const char *funcname,
 	}
 	else
 	{
-		jb = PG_GETARG_JSONB(json_arg_num);
+		jb = PG_GETARG_JSONB_P(json_arg_num);
 
 		/* same logic as for json */
 		if (JB_ROOT_COUNT(jb) == 0 && rec)
@@ -2821,7 +2821,7 @@ populate_recordset_worker(FunctionCallInfo fcinfo, const char *funcname,
 	}
 	else
 	{
-		Jsonb	   *jb = PG_GETARG_JSONB(json_arg_num);
+		Jsonb	   *jb = PG_GETARG_JSONB_P(json_arg_num);
 		JsonbIterator *it;
 		JsonbValue	v;
 		bool		skipNested = false;
@@ -3259,7 +3259,7 @@ json_strip_nulls(PG_FUNCTION_ARGS)
 Datum
 jsonb_strip_nulls(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	JsonbIterator *it;
 	JsonbParseState *parseState = NULL;
 	JsonbValue *res = NULL;
@@ -3368,7 +3368,7 @@ addJsonbToParseState(JsonbParseState **jbps, Jsonb *jb)
 Datum
 jsonb_pretty(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb = PG_GETARG_JSONB(0);
+	Jsonb	   *jb = PG_GETARG_JSONB_P(0);
 	StringInfo	str = makeStringInfo();
 
 	JsonbToCStringIndent(str, &jb->root, VARSIZE(jb));
@@ -3384,8 +3384,8 @@ jsonb_pretty(PG_FUNCTION_ARGS)
 Datum
 jsonb_concat(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *jb1 = PG_GETARG_JSONB(0);
-	Jsonb	   *jb2 = PG_GETARG_JSONB(1);
+	Jsonb	   *jb1 = PG_GETARG_JSONB_P(0);
+	Jsonb	   *jb2 = PG_GETARG_JSONB_P(1);
 	JsonbParseState *state = NULL;
 	JsonbValue *res;
 	JsonbIterator *it1,
@@ -3400,9 +3400,9 @@ jsonb_concat(PG_FUNCTION_ARGS)
 	if (JB_ROOT_IS_OBJECT(jb1) == JB_ROOT_IS_OBJECT(jb2))
 	{
 		if (JB_ROOT_COUNT(jb1) == 0 && !JB_ROOT_IS_SCALAR(jb2))
-			PG_RETURN_JSONB(jb2);
+			PG_RETURN_JSONB_P(jb2);
 		else if (JB_ROOT_COUNT(jb2) == 0 && !JB_ROOT_IS_SCALAR(jb1))
-			PG_RETURN_JSONB(jb1);
+			PG_RETURN_JSONB_P(jb1);
 	}
 
 	it1 = JsonbIteratorInit(&jb1->root);
@@ -3412,7 +3412,7 @@ jsonb_concat(PG_FUNCTION_ARGS)
 
 	Assert(res != NULL);
 
-	PG_RETURN_JSONB(JsonbValueToJsonb(res));
+	PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
 }
 
 
@@ -3425,7 +3425,7 @@ jsonb_concat(PG_FUNCTION_ARGS)
 Datum
 jsonb_delete(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *in = PG_GETARG_JSONB(0);
+	Jsonb	   *in = PG_GETARG_JSONB_P(0);
 	text	   *key = PG_GETARG_TEXT_PP(1);
 	char	   *keyptr = VARDATA_ANY(key);
 	int			keylen = VARSIZE_ANY_EXHDR(key);
@@ -3442,7 +3442,7 @@ jsonb_delete(PG_FUNCTION_ARGS)
 				 errmsg("cannot delete from scalar")));
 
 	if (JB_ROOT_COUNT(in) == 0)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	it = JsonbIteratorInit(&in->root);
 
@@ -3466,7 +3466,7 @@ jsonb_delete(PG_FUNCTION_ARGS)
 
 	Assert(res != NULL);
 
-	PG_RETURN_JSONB(JsonbValueToJsonb(res));
+	PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
 }
 
 /*
@@ -3478,7 +3478,7 @@ jsonb_delete(PG_FUNCTION_ARGS)
 Datum
 jsonb_delete_array(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *in = PG_GETARG_JSONB(0);
+	Jsonb	   *in = PG_GETARG_JSONB_P(0);
 	ArrayType  *keys = PG_GETARG_ARRAYTYPE_P(1);
 	Datum	   *keys_elems;
 	bool	   *keys_nulls;
@@ -3501,13 +3501,13 @@ jsonb_delete_array(PG_FUNCTION_ARGS)
 				 errmsg("cannot delete from scalar")));
 
 	if (JB_ROOT_COUNT(in) == 0)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	deconstruct_array(keys, TEXTOID, -1, false, 'i',
 					  &keys_elems, &keys_nulls, &keys_len);
 
 	if (keys_len == 0)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	it = JsonbIteratorInit(&in->root);
 
@@ -3552,7 +3552,7 @@ jsonb_delete_array(PG_FUNCTION_ARGS)
 
 	Assert(res != NULL);
 
-	PG_RETURN_JSONB(JsonbValueToJsonb(res));
+	PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
 }
 
 /*
@@ -3565,7 +3565,7 @@ jsonb_delete_array(PG_FUNCTION_ARGS)
 Datum
 jsonb_delete_idx(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *in = PG_GETARG_JSONB(0);
+	Jsonb	   *in = PG_GETARG_JSONB_P(0);
 	int			idx = PG_GETARG_INT32(1);
 	JsonbParseState *state = NULL;
 	JsonbIterator *it;
@@ -3586,7 +3586,7 @@ jsonb_delete_idx(PG_FUNCTION_ARGS)
 				 errmsg("cannot delete from object using integer index")));
 
 	if (JB_ROOT_COUNT(in) == 0)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	it = JsonbIteratorInit(&in->root);
 
@@ -3603,7 +3603,7 @@ jsonb_delete_idx(PG_FUNCTION_ARGS)
 	}
 
 	if (idx >= n)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	pushJsonbValue(&state, r, NULL);
 
@@ -3620,7 +3620,7 @@ jsonb_delete_idx(PG_FUNCTION_ARGS)
 
 	Assert(res != NULL);
 
-	PG_RETURN_JSONB(JsonbValueToJsonb(res));
+	PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
 }
 
 /*
@@ -3630,9 +3630,9 @@ jsonb_delete_idx(PG_FUNCTION_ARGS)
 Datum
 jsonb_set(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *in = PG_GETARG_JSONB(0);
+	Jsonb	   *in = PG_GETARG_JSONB_P(0);
 	ArrayType  *path = PG_GETARG_ARRAYTYPE_P(1);
-	Jsonb	   *newval = PG_GETARG_JSONB(2);
+	Jsonb	   *newval = PG_GETARG_JSONB_P(2);
 	bool		create = PG_GETARG_BOOL(3);
 	JsonbValue *res = NULL;
 	Datum	   *path_elems;
@@ -3652,13 +3652,13 @@ jsonb_set(PG_FUNCTION_ARGS)
 				 errmsg("cannot set path in scalar")));
 
 	if (JB_ROOT_COUNT(in) == 0 && !create)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	deconstruct_array(path, TEXTOID, -1, false, 'i',
 					  &path_elems, &path_nulls, &path_len);
 
 	if (path_len == 0)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	it = JsonbIteratorInit(&in->root);
 
@@ -3667,7 +3667,7 @@ jsonb_set(PG_FUNCTION_ARGS)
 
 	Assert(res != NULL);
 
-	PG_RETURN_JSONB(JsonbValueToJsonb(res));
+	PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
 }
 
 
@@ -3677,7 +3677,7 @@ jsonb_set(PG_FUNCTION_ARGS)
 Datum
 jsonb_delete_path(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *in = PG_GETARG_JSONB(0);
+	Jsonb	   *in = PG_GETARG_JSONB_P(0);
 	ArrayType  *path = PG_GETARG_ARRAYTYPE_P(1);
 	JsonbValue *res = NULL;
 	Datum	   *path_elems;
@@ -3697,13 +3697,13 @@ jsonb_delete_path(PG_FUNCTION_ARGS)
 				 errmsg("cannot delete path in scalar")));
 
 	if (JB_ROOT_COUNT(in) == 0)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	deconstruct_array(path, TEXTOID, -1, false, 'i',
 					  &path_elems, &path_nulls, &path_len);
 
 	if (path_len == 0)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	it = JsonbIteratorInit(&in->root);
 
@@ -3712,7 +3712,7 @@ jsonb_delete_path(PG_FUNCTION_ARGS)
 
 	Assert(res != NULL);
 
-	PG_RETURN_JSONB(JsonbValueToJsonb(res));
+	PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
 }
 
 /*
@@ -3722,9 +3722,9 @@ jsonb_delete_path(PG_FUNCTION_ARGS)
 Datum
 jsonb_insert(PG_FUNCTION_ARGS)
 {
-	Jsonb	   *in = PG_GETARG_JSONB(0);
+	Jsonb	   *in = PG_GETARG_JSONB_P(0);
 	ArrayType  *path = PG_GETARG_ARRAYTYPE_P(1);
-	Jsonb	   *newval = PG_GETARG_JSONB(2);
+	Jsonb	   *newval = PG_GETARG_JSONB_P(2);
 	bool		after = PG_GETARG_BOOL(3);
 	JsonbValue *res = NULL;
 	Datum	   *path_elems;
@@ -3747,7 +3747,7 @@ jsonb_insert(PG_FUNCTION_ARGS)
 					  &path_elems, &path_nulls, &path_len);
 
 	if (path_len == 0)
-		PG_RETURN_JSONB(in);
+		PG_RETURN_JSONB_P(in);
 
 	it = JsonbIteratorInit(&in->root);
 
@@ -3756,7 +3756,7 @@ jsonb_insert(PG_FUNCTION_ARGS)
 
 	Assert(res != NULL);
 
-	PG_RETURN_JSONB(JsonbValueToJsonb(res));
+	PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
 }
 
 /*
diff --git a/src/backend/utils/adt/rangetypes.c b/src/backend/utils/adt/rangetypes.c
index 304345b..18dadd7 100644
--- a/src/backend/utils/adt/rangetypes.c
+++ b/src/backend/utils/adt/rangetypes.c
@@ -115,13 +115,13 @@ range_in(PG_FUNCTION_ARGS)
 	/* serialize and canonicalize */
 	range = make_range(cache->typcache, &lower, &upper, flags & RANGE_EMPTY);
 
-	PG_RETURN_RANGE(range);
+	PG_RETURN_RANGE_P(range);
 }
 
 Datum
 range_out(PG_FUNCTION_ARGS)
 {
-	RangeType  *range = PG_GETARG_RANGE(0);
+	RangeType  *range = PG_GETARG_RANGE_P(0);
 	char	   *output_str;
 	RangeIOData *cache;
 	char		flags;
@@ -238,13 +238,13 @@ range_recv(PG_FUNCTION_ARGS)
 	/* serialize and canonicalize */
 	range = make_range(cache->typcache, &lower, &upper, flags & RANGE_EMPTY);
 
-	PG_RETURN_RANGE(range);
+	PG_RETURN_RANGE_P(range);
 }
 
 Datum
 range_send(PG_FUNCTION_ARGS)
 {
-	RangeType  *range = PG_GETARG_RANGE(0);
+	RangeType  *range = PG_GETARG_RANGE_P(0);
 	StringInfo	buf = makeStringInfo();
 	RangeIOData *cache;
 	char		flags;
@@ -381,7 +381,7 @@ range_constructor2(PG_FUNCTION_ARGS)
 
 	range = make_range(typcache, &lower, &upper, false);
 
-	PG_RETURN_RANGE(range);
+	PG_RETURN_RANGE_P(range);
 }
 
 /* Construct general range value from three arguments */
@@ -418,7 +418,7 @@ range_constructor3(PG_FUNCTION_ARGS)
 
 	range = make_range(typcache, &lower, &upper, false);
 
-	PG_RETURN_RANGE(range);
+	PG_RETURN_RANGE_P(range);
 }
 
 
@@ -428,7 +428,7 @@ range_constructor3(PG_FUNCTION_ARGS)
 Datum
 range_lower(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
 	TypeCacheEntry *typcache;
 	RangeBound	lower;
 	RangeBound	upper;
@@ -449,7 +449,7 @@ range_lower(PG_FUNCTION_ARGS)
 Datum
 range_upper(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
 	TypeCacheEntry *typcache;
 	RangeBound	lower;
 	RangeBound	upper;
@@ -473,7 +473,7 @@ range_upper(PG_FUNCTION_ARGS)
 Datum
 range_empty(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
 	char		flags = range_get_flags(r1);
 
 	PG_RETURN_BOOL(flags & RANGE_EMPTY);
@@ -483,7 +483,7 @@ range_empty(PG_FUNCTION_ARGS)
 Datum
 range_lower_inc(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
 	char		flags = range_get_flags(r1);
 
 	PG_RETURN_BOOL(flags & RANGE_LB_INC);
@@ -493,7 +493,7 @@ range_lower_inc(PG_FUNCTION_ARGS)
 Datum
 range_upper_inc(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
 	char		flags = range_get_flags(r1);
 
 	PG_RETURN_BOOL(flags & RANGE_UB_INC);
@@ -503,7 +503,7 @@ range_upper_inc(PG_FUNCTION_ARGS)
 Datum
 range_lower_inf(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
 	char		flags = range_get_flags(r1);
 
 	PG_RETURN_BOOL(flags & RANGE_LB_INF);
@@ -513,7 +513,7 @@ range_lower_inf(PG_FUNCTION_ARGS)
 Datum
 range_upper_inf(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
 	char		flags = range_get_flags(r1);
 
 	PG_RETURN_BOOL(flags & RANGE_UB_INF);
@@ -526,7 +526,7 @@ range_upper_inf(PG_FUNCTION_ARGS)
 Datum
 range_contains_elem(PG_FUNCTION_ARGS)
 {
-	RangeType  *r = PG_GETARG_RANGE(0);
+	RangeType  *r = PG_GETARG_RANGE_P(0);
 	Datum		val = PG_GETARG_DATUM(1);
 	TypeCacheEntry *typcache;
 
@@ -540,7 +540,7 @@ Datum
 elem_contained_by_range(PG_FUNCTION_ARGS)
 {
 	Datum		val = PG_GETARG_DATUM(0);
-	RangeType  *r = PG_GETARG_RANGE(1);
+	RangeType  *r = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r));
@@ -587,8 +587,8 @@ range_eq_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2)
 Datum
 range_eq(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -607,8 +607,8 @@ range_ne_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2)
 Datum
 range_ne(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -620,8 +620,8 @@ range_ne(PG_FUNCTION_ARGS)
 Datum
 range_contains(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -633,8 +633,8 @@ range_contains(PG_FUNCTION_ARGS)
 Datum
 range_contained_by(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -671,8 +671,8 @@ range_before_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2)
 Datum
 range_before(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -709,8 +709,8 @@ range_after_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2)
 Datum
 range_after(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -810,8 +810,8 @@ range_adjacent_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2)
 Datum
 range_adjacent(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -856,8 +856,8 @@ range_overlaps_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2)
 Datum
 range_overlaps(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -897,8 +897,8 @@ range_overleft_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2)
 Datum
 range_overleft(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -938,8 +938,8 @@ range_overright_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2)
 Datum
 range_overright(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
@@ -954,8 +954,8 @@ range_overright(PG_FUNCTION_ARGS)
 Datum
 range_minus(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 	RangeBound	lower1,
 				lower2;
@@ -979,7 +979,7 @@ range_minus(PG_FUNCTION_ARGS)
 
 	/* if either is empty, r1 is the correct answer */
 	if (empty1 || empty2)
-		PG_RETURN_RANGE(r1);
+		PG_RETURN_RANGE_P(r1);
 
 	cmp_l1l2 = range_cmp_bounds(typcache, &lower1, &lower2);
 	cmp_l1u2 = range_cmp_bounds(typcache, &lower1, &upper2);
@@ -992,23 +992,23 @@ range_minus(PG_FUNCTION_ARGS)
 			  errmsg("result of range difference would not be contiguous")));
 
 	if (cmp_l1u2 > 0 || cmp_u1l2 < 0)
-		PG_RETURN_RANGE(r1);
+		PG_RETURN_RANGE_P(r1);
 
 	if (cmp_l1l2 >= 0 && cmp_u1u2 <= 0)
-		PG_RETURN_RANGE(make_empty_range(typcache));
+		PG_RETURN_RANGE_P(make_empty_range(typcache));
 
 	if (cmp_l1l2 <= 0 && cmp_u1l2 >= 0 && cmp_u1u2 <= 0)
 	{
 		lower2.inclusive = !lower2.inclusive;
 		lower2.lower = false;	/* it will become the upper bound */
-		PG_RETURN_RANGE(make_range(typcache, &lower1, &lower2, false));
+		PG_RETURN_RANGE_P(make_range(typcache, &lower1, &lower2, false));
 	}
 
 	if (cmp_l1l2 >= 0 && cmp_u1u2 >= 0 && cmp_l1u2 <= 0)
 	{
 		upper2.inclusive = !upper2.inclusive;
 		upper2.lower = true;	/* it will become the lower bound */
-		PG_RETURN_RANGE(make_range(typcache, &upper2, &upper1, false));
+		PG_RETURN_RANGE_P(make_range(typcache, &upper2, &upper1, false));
 	}
 
 	elog(ERROR, "unexpected case in range_minus");
@@ -1068,13 +1068,13 @@ range_union_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2,
 Datum
 range_union(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
 
-	PG_RETURN_RANGE(range_union_internal(typcache, r1, r2, true));
+	PG_RETURN_RANGE_P(range_union_internal(typcache, r1, r2, true));
 }
 
 /*
@@ -1084,21 +1084,21 @@ range_union(PG_FUNCTION_ARGS)
 Datum
 range_merge(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r1));
 
-	PG_RETURN_RANGE(range_union_internal(typcache, r1, r2, false));
+	PG_RETURN_RANGE_P(range_union_internal(typcache, r1, r2, false));
 }
 
 /* set intersection */
 Datum
 range_intersect(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 	RangeBound	lower1,
 				lower2;
@@ -1119,7 +1119,7 @@ range_intersect(PG_FUNCTION_ARGS)
 	range_deserialize(typcache, r2, &lower2, &upper2, &empty2);
 
 	if (empty1 || empty2 || !DatumGetBool(range_overlaps(fcinfo)))
-		PG_RETURN_RANGE(make_empty_range(typcache));
+		PG_RETURN_RANGE_P(make_empty_range(typcache));
 
 	if (range_cmp_bounds(typcache, &lower1, &lower2) >= 0)
 		result_lower = &lower1;
@@ -1131,7 +1131,7 @@ range_intersect(PG_FUNCTION_ARGS)
 	else
 		result_upper = &upper2;
 
-	PG_RETURN_RANGE(make_range(typcache, result_lower, result_upper, false));
+	PG_RETURN_RANGE_P(make_range(typcache, result_lower, result_upper, false));
 }
 
 /* Btree support */
@@ -1140,8 +1140,8 @@ range_intersect(PG_FUNCTION_ARGS)
 Datum
 range_cmp(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	TypeCacheEntry *typcache;
 	RangeBound	lower1,
 				lower2;
@@ -1221,7 +1221,7 @@ range_gt(PG_FUNCTION_ARGS)
 Datum
 hash_range(PG_FUNCTION_ARGS)
 {
-	RangeType  *r = PG_GETARG_RANGE(0);
+	RangeType  *r = PG_GETARG_RANGE_P(0);
 	uint32		result;
 	TypeCacheEntry *typcache;
 	TypeCacheEntry *scache;
@@ -1291,7 +1291,7 @@ hash_range(PG_FUNCTION_ARGS)
 Datum
 int4range_canonical(PG_FUNCTION_ARGS)
 {
-	RangeType  *r = PG_GETARG_RANGE(0);
+	RangeType  *r = PG_GETARG_RANGE_P(0);
 	TypeCacheEntry *typcache;
 	RangeBound	lower;
 	RangeBound	upper;
@@ -1302,7 +1302,7 @@ int4range_canonical(PG_FUNCTION_ARGS)
 	range_deserialize(typcache, r, &lower, &upper, &empty);
 
 	if (empty)
-		PG_RETURN_RANGE(r);
+		PG_RETURN_RANGE_P(r);
 
 	if (!lower.infinite && !lower.inclusive)
 	{
@@ -1316,13 +1316,13 @@ int4range_canonical(PG_FUNCTION_ARGS)
 		upper.inclusive = false;
 	}
 
-	PG_RETURN_RANGE(range_serialize(typcache, &lower, &upper, false));
+	PG_RETURN_RANGE_P(range_serialize(typcache, &lower, &upper, false));
 }
 
 Datum
 int8range_canonical(PG_FUNCTION_ARGS)
 {
-	RangeType  *r = PG_GETARG_RANGE(0);
+	RangeType  *r = PG_GETARG_RANGE_P(0);
 	TypeCacheEntry *typcache;
 	RangeBound	lower;
 	RangeBound	upper;
@@ -1333,7 +1333,7 @@ int8range_canonical(PG_FUNCTION_ARGS)
 	range_deserialize(typcache, r, &lower, &upper, &empty);
 
 	if (empty)
-		PG_RETURN_RANGE(r);
+		PG_RETURN_RANGE_P(r);
 
 	if (!lower.infinite && !lower.inclusive)
 	{
@@ -1347,13 +1347,13 @@ int8range_canonical(PG_FUNCTION_ARGS)
 		upper.inclusive = false;
 	}
 
-	PG_RETURN_RANGE(range_serialize(typcache, &lower, &upper, false));
+	PG_RETURN_RANGE_P(range_serialize(typcache, &lower, &upper, false));
 }
 
 Datum
 daterange_canonical(PG_FUNCTION_ARGS)
 {
-	RangeType  *r = PG_GETARG_RANGE(0);
+	RangeType  *r = PG_GETARG_RANGE_P(0);
 	TypeCacheEntry *typcache;
 	RangeBound	lower;
 	RangeBound	upper;
@@ -1364,7 +1364,7 @@ daterange_canonical(PG_FUNCTION_ARGS)
 	range_deserialize(typcache, r, &lower, &upper, &empty);
 
 	if (empty)
-		PG_RETURN_RANGE(r);
+		PG_RETURN_RANGE_P(r);
 
 	if (!lower.infinite && !lower.inclusive)
 	{
@@ -1378,7 +1378,7 @@ daterange_canonical(PG_FUNCTION_ARGS)
 		upper.inclusive = false;
 	}
 
-	PG_RETURN_RANGE(range_serialize(typcache, &lower, &upper, false));
+	PG_RETURN_RANGE_P(range_serialize(typcache, &lower, &upper, false));
 }
 
 /*
@@ -1735,8 +1735,8 @@ make_range(TypeCacheEntry *typcache, RangeBound *lower, RangeBound *upper,
 	/* no need to call canonical on empty ranges ... */
 	if (OidIsValid(typcache->rng_canonical_finfo.fn_oid) &&
 		!RangeIsEmpty(range))
-		range = DatumGetRangeType(FunctionCall1(&typcache->rng_canonical_finfo,
-												RangeTypeGetDatum(range)));
+		range = DatumGetRangeTypeP(FunctionCall1(&typcache->rng_canonical_finfo,
+												RangeTypePGetDatum(range)));
 
 	return range;
 }
diff --git a/src/backend/utils/adt/rangetypes_gist.c b/src/backend/utils/adt/rangetypes_gist.c
index f81b16c..bda06fb 100644
--- a/src/backend/utils/adt/rangetypes_gist.c
+++ b/src/backend/utils/adt/rangetypes_gist.c
@@ -177,7 +177,7 @@ range_gist_consistent(PG_FUNCTION_ARGS)
 
 	/* Oid subtype = PG_GETARG_OID(3); */
 	bool	   *recheck = (bool *) PG_GETARG_POINTER(4);
-	RangeType  *key = DatumGetRangeType(entry->key);
+	RangeType  *key = DatumGetRangeTypeP(entry->key);
 	TypeCacheEntry *typcache;
 
 	/* All operators served by this function are exact */
@@ -203,17 +203,17 @@ range_gist_union(PG_FUNCTION_ARGS)
 	TypeCacheEntry *typcache;
 	int			i;
 
-	result_range = DatumGetRangeType(ent[0].key);
+	result_range = DatumGetRangeTypeP(ent[0].key);
 
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(result_range));
 
 	for (i = 1; i < entryvec->n; i++)
 	{
 		result_range = range_super_union(typcache, result_range,
-										 DatumGetRangeType(ent[i].key));
+										 DatumGetRangeTypeP(ent[i].key));
 	}
 
-	PG_RETURN_RANGE(result_range);
+	PG_RETURN_RANGE_P(result_range);
 }
 
 /* compress, decompress, fetch are no-ops */
@@ -257,8 +257,8 @@ range_gist_penalty(PG_FUNCTION_ARGS)
 	GISTENTRY  *origentry = (GISTENTRY *) PG_GETARG_POINTER(0);
 	GISTENTRY  *newentry = (GISTENTRY *) PG_GETARG_POINTER(1);
 	float	   *penalty = (float *) PG_GETARG_POINTER(2);
-	RangeType  *orig = DatumGetRangeType(origentry->key);
-	RangeType  *new = DatumGetRangeType(newentry->key);
+	RangeType  *orig = DatumGetRangeTypeP(origentry->key);
+	RangeType  *new = DatumGetRangeTypeP(newentry->key);
 	TypeCacheEntry *typcache;
 	bool		has_subtype_diff;
 	RangeBound	orig_lower,
@@ -526,7 +526,7 @@ range_gist_picksplit(PG_FUNCTION_ARGS)
 	int			total_count;
 
 	/* use first item to look up range type's info */
-	pred_left = DatumGetRangeType(entryvec->vector[FirstOffsetNumber].key);
+	pred_left = DatumGetRangeTypeP(entryvec->vector[FirstOffsetNumber].key);
 	typcache = range_get_typcache(fcinfo, RangeTypeGetOid(pred_left));
 
 	maxoff = entryvec->n - 1;
@@ -540,7 +540,7 @@ range_gist_picksplit(PG_FUNCTION_ARGS)
 	memset(count_in_classes, 0, sizeof(count_in_classes));
 	for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
 	{
-		RangeType  *range = DatumGetRangeType(entryvec->vector[i].key);
+		RangeType  *range = DatumGetRangeTypeP(entryvec->vector[i].key);
 
 		count_in_classes[get_gist_range_class(range)]++;
 	}
@@ -670,8 +670,8 @@ range_gist_picksplit(PG_FUNCTION_ARGS)
 Datum
 range_gist_same(PG_FUNCTION_ARGS)
 {
-	RangeType  *r1 = PG_GETARG_RANGE(0);
-	RangeType  *r2 = PG_GETARG_RANGE(1);
+	RangeType  *r1 = PG_GETARG_RANGE_P(0);
+	RangeType  *r2 = PG_GETARG_RANGE_P(1);
 	bool	   *result = (bool *) PG_GETARG_POINTER(2);
 
 	/*
@@ -787,39 +787,39 @@ range_gist_consistent_int(TypeCacheEntry *typcache, StrategyNumber strategy,
 	switch (strategy)
 	{
 		case RANGESTRAT_BEFORE:
-			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeType(query)))
+			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeTypeP(query)))
 				return false;
 			return (!range_overright_internal(typcache, key,
-											  DatumGetRangeType(query)));
+											  DatumGetRangeTypeP(query)));
 		case RANGESTRAT_OVERLEFT:
-			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeType(query)))
+			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeTypeP(query)))
 				return false;
 			return (!range_after_internal(typcache, key,
-										  DatumGetRangeType(query)));
+										  DatumGetRangeTypeP(query)));
 		case RANGESTRAT_OVERLAPS:
 			return range_overlaps_internal(typcache, key,
-										   DatumGetRangeType(query));
+										   DatumGetRangeTypeP(query));
 		case RANGESTRAT_OVERRIGHT:
-			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeType(query)))
+			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeTypeP(query)))
 				return false;
 			return (!range_before_internal(typcache, key,
-										   DatumGetRangeType(query)));
+										   DatumGetRangeTypeP(query)));
 		case RANGESTRAT_AFTER:
-			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeType(query)))
+			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeTypeP(query)))
 				return false;
 			return (!range_overleft_internal(typcache, key,
-											 DatumGetRangeType(query)));
+											 DatumGetRangeTypeP(query)));
 		case RANGESTRAT_ADJACENT:
-			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeType(query)))
+			if (RangeIsEmpty(key) || RangeIsEmpty(DatumGetRangeTypeP(query)))
 				return false;
 			if (range_adjacent_internal(typcache, key,
-										DatumGetRangeType(query)))
+										DatumGetRangeTypeP(query)))
 				return true;
 			return range_overlaps_internal(typcache, key,
-										   DatumGetRangeType(query));
+										   DatumGetRangeTypeP(query));
 		case RANGESTRAT_CONTAINS:
 			return range_contains_internal(typcache, key,
-										   DatumGetRangeType(query));
+										   DatumGetRangeTypeP(query));
 		case RANGESTRAT_CONTAINED_BY:
 
 			/*
@@ -830,7 +830,7 @@ range_gist_consistent_int(TypeCacheEntry *typcache, StrategyNumber strategy,
 			if (RangeIsOrContainsEmpty(key))
 				return true;
 			return range_overlaps_internal(typcache, key,
-										   DatumGetRangeType(query));
+										   DatumGetRangeTypeP(query));
 		case RANGESTRAT_CONTAINS_ELEM:
 			return range_contains_elem_internal(typcache, key, query);
 		case RANGESTRAT_EQ:
@@ -839,10 +839,10 @@ range_gist_consistent_int(TypeCacheEntry *typcache, StrategyNumber strategy,
 			 * If query is empty, descend only if the key is or contains any
 			 * empty ranges.  Otherwise, descend if key contains query.
 			 */
-			if (RangeIsEmpty(DatumGetRangeType(query)))
+			if (RangeIsEmpty(DatumGetRangeTypeP(query)))
 				return RangeIsOrContainsEmpty(key);
 			return range_contains_internal(typcache, key,
-										   DatumGetRangeType(query));
+										   DatumGetRangeTypeP(query));
 		default:
 			elog(ERROR, "unrecognized range strategy: %d", strategy);
 			return false;		/* keep compiler quiet */
@@ -860,32 +860,32 @@ range_gist_consistent_leaf(TypeCacheEntry *typcache, StrategyNumber strategy,
 	{
 		case RANGESTRAT_BEFORE:
 			return range_before_internal(typcache, key,
-										 DatumGetRangeType(query));
+										 DatumGetRangeTypeP(query));
 		case RANGESTRAT_OVERLEFT:
 			return range_overleft_internal(typcache, key,
-										   DatumGetRangeType(query));
+										   DatumGetRangeTypeP(query));
 		case RANGESTRAT_OVERLAPS:
 			return range_overlaps_internal(typcache, key,
-										   DatumGetRangeType(query));
+										   DatumGetRangeTypeP(query));
 		case RANGESTRAT_OVERRIGHT:
 			return range_overright_internal(typcache, key,
-											DatumGetRangeType(query));
+											DatumGetRangeTypeP(query));
 		case RANGESTRAT_AFTER:
 			return range_after_internal(typcache, key,
-										DatumGetRangeType(query));
+										DatumGetRangeTypeP(query));
 		case RANGESTRAT_ADJACENT:
 			return range_adjacent_internal(typcache, key,
-										   DatumGetRangeType(query));
+										   DatumGetRangeTypeP(query));
 		case RANGESTRAT_CONTAINS:
 			return range_contains_internal(typcache, key,
-										   DatumGetRangeType(query));
+										   DatumGetRangeTypeP(query));
 		case RANGESTRAT_CONTAINED_BY:
 			return range_contained_by_internal(typcache, key,
-											   DatumGetRangeType(query));
+											   DatumGetRangeTypeP(query));
 		case RANGESTRAT_CONTAINS_ELEM:
 			return range_contains_elem_internal(typcache, key, query);
 		case RANGESTRAT_EQ:
-			return range_eq_internal(typcache, key, DatumGetRangeType(query));
+			return range_eq_internal(typcache, key, DatumGetRangeTypeP(query));
 		default:
 			elog(ERROR, "unrecognized range strategy: %d", strategy);
 			return false;		/* keep compiler quiet */
@@ -915,7 +915,7 @@ range_gist_fallback_split(TypeCacheEntry *typcache,
 	v->spl_nright = 0;
 	for (i = FirstOffsetNumber; i <= maxoff; i++)
 	{
-		RangeType  *range = DatumGetRangeType(entryvec->vector[i].key);
+		RangeType  *range = DatumGetRangeTypeP(entryvec->vector[i].key);
 
 		if (i < split_idx)
 			PLACE_LEFT(range, i);
@@ -923,8 +923,8 @@ range_gist_fallback_split(TypeCacheEntry *typcache,
 			PLACE_RIGHT(range, i);
 	}
 
-	v->spl_ldatum = RangeTypeGetDatum(left_range);
-	v->spl_rdatum = RangeTypeGetDatum(right_range);
+	v->spl_ldatum = RangeTypePGetDatum(left_range);
+	v->spl_rdatum = RangeTypePGetDatum(right_range);
 }
 
 /*
@@ -951,7 +951,7 @@ range_gist_class_split(TypeCacheEntry *typcache,
 	v->spl_nright = 0;
 	for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
 	{
-		RangeType  *range = DatumGetRangeType(entryvec->vector[i].key);
+		RangeType  *range = DatumGetRangeTypeP(entryvec->vector[i].key);
 		int			class;
 
 		/* Get class of range */
@@ -967,8 +967,8 @@ range_gist_class_split(TypeCacheEntry *typcache,
 		}
 	}
 
-	v->spl_ldatum = RangeTypeGetDatum(left_range);
-	v->spl_rdatum = RangeTypeGetDatum(right_range);
+	v->spl_ldatum = RangeTypePGetDatum(left_range);
+	v->spl_rdatum = RangeTypePGetDatum(right_range);
 }
 
 /*
@@ -1000,7 +1000,7 @@ range_gist_single_sorting_split(TypeCacheEntry *typcache,
 	 */
 	for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
 	{
-		RangeType  *range = DatumGetRangeType(entryvec->vector[i].key);
+		RangeType  *range = DatumGetRangeTypeP(entryvec->vector[i].key);
 		RangeBound	bound2;
 		bool		empty;
 
@@ -1026,7 +1026,7 @@ range_gist_single_sorting_split(TypeCacheEntry *typcache,
 	for (i = 0; i < maxoff; i++)
 	{
 		int			idx = sortItems[i].index;
-		RangeType  *range = DatumGetRangeType(entryvec->vector[idx].key);
+		RangeType  *range = DatumGetRangeTypeP(entryvec->vector[idx].key);
 
 		if (i < split_idx)
 			PLACE_LEFT(range, idx);
@@ -1034,8 +1034,8 @@ range_gist_single_sorting_split(TypeCacheEntry *typcache,
 			PLACE_RIGHT(range, idx);
 	}
 
-	v->spl_ldatum = RangeTypeGetDatum(left_range);
-	v->spl_rdatum = RangeTypeGetDatum(right_range);
+	v->spl_ldatum = RangeTypePGetDatum(left_range);
+	v->spl_rdatum = RangeTypePGetDatum(right_range);
 }
 
 /*
@@ -1102,7 +1102,7 @@ range_gist_double_sorting_split(TypeCacheEntry *typcache,
 	/* Fill arrays of bounds */
 	for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
 	{
-		RangeType  *range = DatumGetRangeType(entryvec->vector[i].key);
+		RangeType  *range = DatumGetRangeTypeP(entryvec->vector[i].key);
 		bool		empty;
 
 		range_deserialize(typcache, range,
@@ -1277,7 +1277,7 @@ range_gist_double_sorting_split(TypeCacheEntry *typcache,
 		/*
 		 * Get upper and lower bounds along selected axis.
 		 */
-		range = DatumGetRangeType(entryvec->vector[i].key);
+		range = DatumGetRangeTypeP(entryvec->vector[i].key);
 
 		range_deserialize(typcache, range, &lower, &upper, &empty);
 
@@ -1347,7 +1347,7 @@ range_gist_double_sorting_split(TypeCacheEntry *typcache,
 		{
 			int			idx = common_entries[i].index;
 
-			range = DatumGetRangeType(entryvec->vector[idx].key);
+			range = DatumGetRangeTypeP(entryvec->vector[idx].key);
 
 			/*
 			 * Check if we have to place this entry in either group to achieve
diff --git a/src/backend/utils/adt/rangetypes_selfuncs.c b/src/backend/utils/adt/rangetypes_selfuncs.c
index 2997edd..b4ff499 100644
--- a/src/backend/utils/adt/rangetypes_selfuncs.c
+++ b/src/backend/utils/adt/rangetypes_selfuncs.c
@@ -202,7 +202,7 @@ rangesel(PG_FUNCTION_ARGS)
 		/* Both sides are the same range type */
 		typcache = range_get_typcache(fcinfo, vardata.vartype);
 
-		constrange = DatumGetRangeType(((Const *) other)->constvalue);
+		constrange = DatumGetRangeTypeP(((Const *) other)->constvalue);
 	}
 
 	/*
@@ -401,7 +401,7 @@ calc_hist_selectivity(TypeCacheEntry *typcache, VariableStatData *vardata,
 	hist_upper = (RangeBound *) palloc(sizeof(RangeBound) * nhist);
 	for (i = 0; i < nhist; i++)
 	{
-		range_deserialize(typcache, DatumGetRangeType(hist_values[i]),
+		range_deserialize(typcache, DatumGetRangeTypeP(hist_values[i]),
 						  &hist_lower[i], &hist_upper[i], &empty);
 		/* The histogram should not contain any empty ranges */
 		if (empty)
diff --git a/src/backend/utils/adt/rangetypes_spgist.c b/src/backend/utils/adt/rangetypes_spgist.c
index a887e55..33c220b 100644
--- a/src/backend/utils/adt/rangetypes_spgist.c
+++ b/src/backend/utils/adt/rangetypes_spgist.c
@@ -132,7 +132,7 @@ spg_range_quad_choose(PG_FUNCTION_ARGS)
 {
 	spgChooseIn *in = (spgChooseIn *) PG_GETARG_POINTER(0);
 	spgChooseOut *out = (spgChooseOut *) PG_GETARG_POINTER(1);
-	RangeType  *inRange = DatumGetRangeType(in->datum),
+	RangeType  *inRange = DatumGetRangeTypeP(in->datum),
 			   *centroid;
 	int16		quadrant;
 	TypeCacheEntry *typcache;
@@ -142,7 +142,7 @@ spg_range_quad_choose(PG_FUNCTION_ARGS)
 		out->resultType = spgMatchNode;
 		/* nodeN will be set by core */
 		out->result.matchNode.levelAdd = 0;
-		out->result.matchNode.restDatum = RangeTypeGetDatum(inRange);
+		out->result.matchNode.restDatum = RangeTypePGetDatum(inRange);
 		PG_RETURN_VOID();
 	}
 
@@ -161,11 +161,11 @@ spg_range_quad_choose(PG_FUNCTION_ARGS)
 		else
 			out->result.matchNode.nodeN = 1;
 		out->result.matchNode.levelAdd = 1;
-		out->result.matchNode.restDatum = RangeTypeGetDatum(inRange);
+		out->result.matchNode.restDatum = RangeTypePGetDatum(inRange);
 		PG_RETURN_VOID();
 	}
 
-	centroid = DatumGetRangeType(in->prefixDatum);
+	centroid = DatumGetRangeTypeP(in->prefixDatum);
 	quadrant = getQuadrant(typcache, centroid, inRange);
 
 	Assert(quadrant <= in->nNodes);
@@ -174,7 +174,7 @@ spg_range_quad_choose(PG_FUNCTION_ARGS)
 	out->resultType = spgMatchNode;
 	out->result.matchNode.nodeN = quadrant - 1;
 	out->result.matchNode.levelAdd = 1;
-	out->result.matchNode.restDatum = RangeTypeGetDatum(inRange);
+	out->result.matchNode.restDatum = RangeTypePGetDatum(inRange);
 
 	PG_RETURN_VOID();
 }
@@ -213,7 +213,7 @@ spg_range_quad_picksplit(PG_FUNCTION_ARGS)
 			   *upperBounds;
 
 	typcache = range_get_typcache(fcinfo,
-						  RangeTypeGetOid(DatumGetRangeType(in->datums[0])));
+						  RangeTypeGetOid(DatumGetRangeTypeP(in->datums[0])));
 
 	/* Allocate memory for bounds */
 	lowerBounds = palloc(sizeof(RangeBound) * in->nTuples);
@@ -223,7 +223,7 @@ spg_range_quad_picksplit(PG_FUNCTION_ARGS)
 	/* Deserialize bounds of ranges, count non-empty ranges */
 	for (i = 0; i < in->nTuples; i++)
 	{
-		range_deserialize(typcache, DatumGetRangeType(in->datums[i]),
+		range_deserialize(typcache, DatumGetRangeTypeP(in->datums[i]),
 						  &lowerBounds[j], &upperBounds[j], &empty);
 		if (!empty)
 			j++;
@@ -249,9 +249,9 @@ spg_range_quad_picksplit(PG_FUNCTION_ARGS)
 		/* Place all ranges into node 0 */
 		for (i = 0; i < in->nTuples; i++)
 		{
-			RangeType  *range = DatumGetRangeType(in->datums[i]);
+			RangeType  *range = DatumGetRangeTypeP(in->datums[i]);
 
-			out->leafTupleDatums[i] = RangeTypeGetDatum(range);
+			out->leafTupleDatums[i] = RangeTypePGetDatum(range);
 			out->mapTuplesToNodes[i] = 0;
 		}
 		PG_RETURN_VOID();
@@ -267,7 +267,7 @@ spg_range_quad_picksplit(PG_FUNCTION_ARGS)
 	centroid = range_serialize(typcache, &lowerBounds[nonEmptyCount / 2],
 							   &upperBounds[nonEmptyCount / 2], false);
 	out->hasPrefix = true;
-	out->prefixDatum = RangeTypeGetDatum(centroid);
+	out->prefixDatum = RangeTypePGetDatum(centroid);
 
 	/* Create node for empty ranges only if it is a root node */
 	out->nNodes = (in->level == 0) ? 5 : 4;
@@ -282,10 +282,10 @@ spg_range_quad_picksplit(PG_FUNCTION_ARGS)
 	 */
 	for (i = 0; i < in->nTuples; i++)
 	{
-		RangeType  *range = DatumGetRangeType(in->datums[i]);
+		RangeType  *range = DatumGetRangeTypeP(in->datums[i]);
 		int16		quadrant = getQuadrant(typcache, centroid, range);
 
-		out->leafTupleDatums[i] = RangeTypeGetDatum(range);
+		out->leafTupleDatums[i] = RangeTypePGetDatum(range);
 		out->mapTuplesToNodes[i] = quadrant - 1;
 	}
 
@@ -347,7 +347,7 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
 			 */
 			if (strategy != RANGESTRAT_CONTAINS_ELEM)
 				empty = RangeIsEmpty(
-							 DatumGetRangeType(in->scankeys[i].sk_argument));
+							 DatumGetRangeTypeP(in->scankeys[i].sk_argument));
 			else
 				empty = false;
 
@@ -415,9 +415,9 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
 		RangeType  *centroid;
 
 		/* This node has a centroid. Fetch it. */
-		centroid = DatumGetRangeType(in->prefixDatum);
+		centroid = DatumGetRangeTypeP(in->prefixDatum);
 		typcache = range_get_typcache(fcinfo,
-							   RangeTypeGetOid(DatumGetRangeType(centroid)));
+							   RangeTypeGetOid(DatumGetRangeTypeP(centroid)));
 		range_deserialize(typcache, centroid, &centroidLower, &centroidUpper,
 						  &centroidEmpty);
 
@@ -482,7 +482,7 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
 			}
 			else
 			{
-				range = DatumGetRangeType(in->scankeys[i].sk_argument);
+				range = DatumGetRangeTypeP(in->scankeys[i].sk_argument);
 				range_deserialize(typcache, range, &lower, &upper, &empty);
 			}
 
@@ -558,7 +558,7 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
 					 */
 					if (in->traversalValue != (Datum) 0)
 					{
-						prevCentroid = DatumGetRangeType(in->traversalValue);
+						prevCentroid = DatumGetRangeTypeP(in->traversalValue);
 						range_deserialize(typcache, prevCentroid,
 										  &prevLower, &prevUpper, &prevEmpty);
 					}
@@ -921,7 +921,7 @@ spg_range_quad_leaf_consistent(PG_FUNCTION_ARGS)
 {
 	spgLeafConsistentIn *in = (spgLeafConsistentIn *) PG_GETARG_POINTER(0);
 	spgLeafConsistentOut *out = (spgLeafConsistentOut *) PG_GETARG_POINTER(1);
-	RangeType  *leafRange = DatumGetRangeType(in->leafDatum);
+	RangeType  *leafRange = DatumGetRangeTypeP(in->leafDatum);
 	TypeCacheEntry *typcache;
 	bool		res;
 	int			i;
@@ -945,35 +945,35 @@ spg_range_quad_leaf_consistent(PG_FUNCTION_ARGS)
 		{
 			case RANGESTRAT_BEFORE:
 				res = range_before_internal(typcache, leafRange,
-											DatumGetRangeType(keyDatum));
+											DatumGetRangeTypeP(keyDatum));
 				break;
 			case RANGESTRAT_OVERLEFT:
 				res = range_overleft_internal(typcache, leafRange,
-											  DatumGetRangeType(keyDatum));
+											  DatumGetRangeTypeP(keyDatum));
 				break;
 			case RANGESTRAT_OVERLAPS:
 				res = range_overlaps_internal(typcache, leafRange,
-											  DatumGetRangeType(keyDatum));
+											  DatumGetRangeTypeP(keyDatum));
 				break;
 			case RANGESTRAT_OVERRIGHT:
 				res = range_overright_internal(typcache, leafRange,
-											   DatumGetRangeType(keyDatum));
+											   DatumGetRangeTypeP(keyDatum));
 				break;
 			case RANGESTRAT_AFTER:
 				res = range_after_internal(typcache, leafRange,
-										   DatumGetRangeType(keyDatum));
+										   DatumGetRangeTypeP(keyDatum));
 				break;
 			case RANGESTRAT_ADJACENT:
 				res = range_adjacent_internal(typcache, leafRange,
-											  DatumGetRangeType(keyDatum));
+											  DatumGetRangeTypeP(keyDatum));
 				break;
 			case RANGESTRAT_CONTAINS:
 				res = range_contains_internal(typcache, leafRange,
-											  DatumGetRangeType(keyDatum));
+											  DatumGetRangeTypeP(keyDatum));
 				break;
 			case RANGESTRAT_CONTAINED_BY:
 				res = range_contained_by_internal(typcache, leafRange,
-												DatumGetRangeType(keyDatum));
+												DatumGetRangeTypeP(keyDatum));
 				break;
 			case RANGESTRAT_CONTAINS_ELEM:
 				res = range_contains_elem_internal(typcache, leafRange,
@@ -981,7 +981,7 @@ spg_range_quad_leaf_consistent(PG_FUNCTION_ARGS)
 				break;
 			case RANGESTRAT_EQ:
 				res = range_eq_internal(typcache, leafRange,
-										DatumGetRangeType(keyDatum));
+										DatumGetRangeTypeP(keyDatum));
 				break;
 			default:
 				elog(ERROR, "unrecognized range strategy: %d",
diff --git a/src/backend/utils/adt/rangetypes_typanalyze.c b/src/backend/utils/adt/rangetypes_typanalyze.c
index a8d585ce..7178397 100644
--- a/src/backend/utils/adt/rangetypes_typanalyze.c
+++ b/src/backend/utils/adt/rangetypes_typanalyze.c
@@ -144,7 +144,7 @@ compute_range_stats(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfunc,
 		total_width += VARSIZE_ANY(DatumGetPointer(value));
 
 		/* Get range and deserialize it for further analysis. */
-		range = DatumGetRangeType(value);
+		range = DatumGetRangeTypeP(value);
 		range_deserialize(typcache, range, &lower, &upper, &empty);
 
 		if (!empty)
diff --git a/src/include/utils/array.h b/src/include/utils/array.h
index b0ff73b..9f514a2 100644
--- a/src/include/utils/array.h
+++ b/src/include/utils/array.h
@@ -252,7 +252,7 @@ typedef struct ArrayIteratorData *ArrayIterator;
 #define PG_RETURN_EXPANDED_ARRAY(x)  PG_RETURN_DATUM(EOHPGetRWDatum(&(x)->hdr))
 
 /* fmgr macros for AnyArrayType (ie, get either varlena or expanded form) */
-#define PG_GETARG_ANY_ARRAY(n)	DatumGetAnyArray(PG_GETARG_DATUM(n))
+#define PG_GETARG_ANY_ARRAY_P(n)	DatumGetAnyArrayP(PG_GETARG_DATUM(n))
 
 /*
  * Access macros for varlena array header fields.
@@ -440,7 +440,7 @@ extern Datum expand_array(Datum arraydatum, MemoryContext parentcontext,
 extern ExpandedArrayHeader *DatumGetExpandedArray(Datum d);
 extern ExpandedArrayHeader *DatumGetExpandedArrayX(Datum d,
 					   ArrayMetaState *metacache);
-extern AnyArrayType *DatumGetAnyArray(Datum d);
+extern AnyArrayType *DatumGetAnyArrayP(Datum d);
 extern void deconstruct_expanded_array(ExpandedArrayHeader *eah);
 
 /*
diff --git a/src/include/utils/jsonb.h b/src/include/utils/jsonb.h
index 411e158..d9466db 100644
--- a/src/include/utils/jsonb.h
+++ b/src/include/utils/jsonb.h
@@ -65,10 +65,10 @@ typedef enum
 #define JGIN_MAXLENGTH	125		/* max length of text part before hashing */
 
 /* Convenience macros */
-#define DatumGetJsonb(d)	((Jsonb *) PG_DETOAST_DATUM(d))
+#define DatumGetJsonbP(d)	((Jsonb *) PG_DETOAST_DATUM(d))
 #define JsonbGetDatum(p)	PointerGetDatum(p)
-#define PG_GETARG_JSONB(x)	DatumGetJsonb(PG_GETARG_DATUM(x))
-#define PG_RETURN_JSONB(x)	PG_RETURN_POINTER(x)
+#define PG_GETARG_JSONB_P(x)	DatumGetJsonbP(PG_GETARG_DATUM(x))
+#define PG_RETURN_JSONB_P(x)	PG_RETURN_POINTER(x)
 
 typedef struct JsonbPair JsonbPair;
 typedef struct JsonbValue JsonbValue;
diff --git a/src/include/utils/rangetypes.h b/src/include/utils/rangetypes.h
index abb2223..d54506b 100644
--- a/src/include/utils/rangetypes.h
+++ b/src/include/utils/rangetypes.h
@@ -68,12 +68,12 @@ typedef struct
 /*
  * fmgr macros for range type objects
  */
-#define DatumGetRangeType(X)		((RangeType *) PG_DETOAST_DATUM(X))
-#define DatumGetRangeTypeCopy(X)	((RangeType *) PG_DETOAST_DATUM_COPY(X))
-#define RangeTypeGetDatum(X)		PointerGetDatum(X)
-#define PG_GETARG_RANGE(n)			DatumGetRangeType(PG_GETARG_DATUM(n))
-#define PG_GETARG_RANGE_COPY(n)		DatumGetRangeTypeCopy(PG_GETARG_DATUM(n))
-#define PG_RETURN_RANGE(x)			return RangeTypeGetDatum(x)
+#define DatumGetRangeTypeP(X)		((RangeType *) PG_DETOAST_DATUM(X))
+#define DatumGetRangeTypePCopy(X)	((RangeType *) PG_DETOAST_DATUM_COPY(X))
+#define RangeTypePGetDatum(X)		PointerGetDatum(X)
+#define PG_GETARG_RANGE_P(n)		DatumGetRangeTypeP(PG_GETARG_DATUM(n))
+#define PG_GETARG_RANGE_P_COPY(n)	DatumGetRangeTypePCopy(PG_GETARG_DATUM(n))
+#define PG_RETURN_RANGE_P(x)		return RangeTypePGetDatum(x)
 
 /* Operator strategy numbers used in the GiST and SP-GiST range opclasses */
 /* Numbers are chosen to match up operator names with existing usages */
