PG_GETARG_GISTENTRY?
Hi,
we have a good number of '(GISTENTRY *) PG_GETARG_POINTER(n)' in our
code - looks a bit better & shorter to have PG_GETARG_GISTENTRY(n).
Arugments against?
Greetings,
Andres Freund
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Andres Freund <andres@anarazel.de> writes:
we have a good number of '(GISTENTRY *) PG_GETARG_POINTER(n)' in our
code - looks a bit better & shorter to have PG_GETARG_GISTENTRY(n).
Should be PG_GETARG_GISTENTRY_P to match existing conventions,
otherwise +1
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Wed, Mar 29, 2017 at 11:54 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Andres Freund <andres@anarazel.de> writes:
we have a good number of '(GISTENTRY *) PG_GETARG_POINTER(n)' in our
code - looks a bit better & shorter to have PG_GETARG_GISTENTRY(n).Should be PG_GETARG_GISTENTRY_P to match existing conventions,
otherwise +1
I have never quite understood why some of those macros have _P or _PP
on the end and others don't.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes:
On Wed, Mar 29, 2017 at 11:54 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Andres Freund <andres@anarazel.de> writes:
we have a good number of '(GISTENTRY *) PG_GETARG_POINTER(n)' in our
code - looks a bit better & shorter to have PG_GETARG_GISTENTRY(n).
Should be PG_GETARG_GISTENTRY_P to match existing conventions,
otherwise +1
I have never quite understood why some of those macros have _P or _PP
on the end and others don't.
_P means "pointer to". _PP was introduced later to mean "pointer to
packed (ie, possibly short-header) datum". Macros that mean to fetch
pointers to pass-by-ref data, but aren't using either of those naming
conventions, are violating project conventions, not least because you
don't know what they're supposed to do with short-header varlena input.
If I had a bit more spare time I'd run around and change any such macros.
In short, if you are supposed to write
FOO *val = PG_GETARG_FOO(n);
then the macro designer blew it, because the name implies that it
returns FOO, not pointer to FOO. This should be
FOO *val = PG_GETARG_FOO_P(n);
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Apr 5, 2017, at 9:23 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Robert Haas <robertmhaas@gmail.com> writes:
On Wed, Mar 29, 2017 at 11:54 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Andres Freund <andres@anarazel.de> writes:
we have a good number of '(GISTENTRY *) PG_GETARG_POINTER(n)' in our
code - looks a bit better & shorter to have PG_GETARG_GISTENTRY(n).Should be PG_GETARG_GISTENTRY_P to match existing conventions,
otherwise +1I have never quite understood why some of those macros have _P or _PP
on the end and others don't._P means "pointer to". _PP was introduced later to mean "pointer to
packed (ie, possibly short-header) datum". Macros that mean to fetch
pointers to pass-by-ref data, but aren't using either of those naming
conventions, are violating project conventions, not least because you
don't know what they're supposed to do with short-header varlena input.
If I had a bit more spare time I'd run around and change any such macros.In short, if you are supposed to write
FOO *val = PG_GETARG_FOO(n);
then the macro designer blew it, because the name implies that it
returns FOO, not pointer to FOO. This should beFOO *val = PG_GETARG_FOO_P(n);
regards, tom lane
I have written a patch to fix these macro definitions across src/ and contrib/.
Find the patch, attached. All regression tests pass on my Mac laptop.
I don't find any inappropriate uses of _P where _PP would be called for. I do,
however, notice that some datatypes' functions are written to use PG_GETARG_*_P
where PG_GETARG_*_PP might be more efficient. Varbit's bitoctetlength function
could detoast only the header ala PG_DETOAST_DATUM_SLICE to return the
octet length, rather than detoasting the whole thing. But that seems a different
issue, and patches to change that might have been rejected in the past so far as I
know, so I did not attempt any such changes here.
Mark Dilger
Attachments:
PG_GETARG_foo_P.patch.1application/octet-stream; name=PG_GETARG_foo_P.patch.1Download
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, ¢roidLower, ¢roidUpper,
¢roidEmpty);
@@ -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 */
Mark Dilger <hornschnorter@gmail.com> writes:
I have written a patch to fix these macro definitions across src/ and contrib/.
Find the patch, attached. All regression tests pass on my Mac laptop.
Thanks for doing the legwork on that. This seems a bit late for v10,
especially since it's only cosmetic, but please put it in the first
v11 commitfest.
I don't find any inappropriate uses of _P where _PP would be called for. I do,
however, notice that some datatypes' functions are written to use PG_GETARG_*_P
where PG_GETARG_*_PP might be more efficient.
Yeah. I think Noah did some work in that direction already, but I don't
believe he claimed to have caught everything. Feel free to push further.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Apr 5, 2017, at 1:12 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Mark Dilger <hornschnorter@gmail.com> writes:
I have written a patch to fix these macro definitions across src/ and contrib/.
Find the patch, attached. All regression tests pass on my Mac laptop.Thanks for doing the legwork on that.
You are welcome.
This seems a bit late for v10,
especially since it's only cosmetic
Agreed.
, but please put it in the first
v11 commitfest.
Done.
I don't find any inappropriate uses of _P where _PP would be called for. I do,
however, notice that some datatypes' functions are written to use PG_GETARG_*_P
where PG_GETARG_*_PP might be more efficient.Yeah. I think Noah did some work in that direction already, but I don't
believe he claimed to have caught everything. Feel free to push further.
Thanks for clarifying.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Apr 5, 2017, at 1:27 PM, Mark Dilger <hornschnorter@gmail.com> wrote:
On Apr 5, 2017, at 1:12 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Mark Dilger <hornschnorter@gmail.com> writes:
I have written a patch to fix these macro definitions across src/ and contrib/.
Find the patch, attached. All regression tests pass on my Mac laptop.Thanks for doing the legwork on that.
You are welcome.
This seems a bit late for v10,
especially since it's only cosmeticAgreed.
, but please put it in the first
v11 commitfest.Done.
I don't find any inappropriate uses of _P where _PP would be called for. I do,
however, notice that some datatypes' functions are written to use PG_GETARG_*_P
where PG_GETARG_*_PP might be more efficient.Yeah. I think Noah did some work in that direction already, but I don't
believe he claimed to have caught everything. Feel free to push further.Thanks for clarifying.
Here is a small patch for the next open commitfest which handles a case
that Noah's commits 9d7726c2ba06b932f791f2d0cc5acf73cc0b4dca and
3a0d473192b2045cbaf997df8437e7762d34f3ba apparently missed.
Noah, if you left this case out intentionally, sorry for the noise. I did not
immediately see any reason not to follow your lead for this function.
Mark Dilger
Attachments:
varbit_packed.patch.1application/octet-stream; name=varbit_packed.patch.1Download
diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c
index e947785..d1d0dd6 100644
--- a/src/backend/utils/adt/varbit.c
+++ b/src/backend/utils/adt/varbit.c
@@ -1187,7 +1187,7 @@ bit_overlay(VarBit *t1, VarBit *t2, int sp, int sl)
Datum
bitlength(PG_FUNCTION_ARGS)
{
- VarBit *arg = PG_GETARG_VARBIT_P(0);
+ VarBit *arg = PG_GETARG_VARBIT_P_SLICE(0,0,VARHDRSZ+VARBITHDRSZ);
PG_RETURN_INT32(VARBITLEN(arg));
}
diff --git a/src/include/utils/varbit.h b/src/include/utils/varbit.h
index 2a4ec67..811efeb 100644
--- a/src/include/utils/varbit.h
+++ b/src/include/utils/varbit.h
@@ -36,9 +36,11 @@ typedef struct
* BIT and BIT VARYING are toastable varlena types. They are the same
* as far as representation goes, so we just have one set of macros.
*/
+#define DatumGetVarBitPSlice(X,m,n) ((VarBit *) PG_DETOAST_DATUM_SLICE(X,m,n))
#define DatumGetVarBitP(X) ((VarBit *) PG_DETOAST_DATUM(X))
#define DatumGetVarBitPCopy(X) ((VarBit *) PG_DETOAST_DATUM_COPY(X))
#define VarBitPGetDatum(X) PointerGetDatum(X)
+#define PG_GETARG_VARBIT_P_SLICE(n,a,b) DatumGetVarBitPSlice(PG_GETARG_DATUM(n),a,b)
#define PG_GETARG_VARBIT_P(n) DatumGetVarBitP(PG_GETARG_DATUM(n))
#define PG_GETARG_VARBIT_P_COPY(n) DatumGetVarBitPCopy(PG_GETARG_DATUM(n))
#define PG_RETURN_VARBIT_P(x) return VarBitPGetDatum(x)
diff --git a/src/test/regress/expected/bit.out b/src/test/regress/expected/bit.out
index 9c7d202..d440dbd 100644
--- a/src/test/regress/expected/bit.out
+++ b/src/test/regress/expected/bit.out
@@ -80,6 +80,20 @@ SELECT v, length(v) AS lv
01010101010 | 11
(4 rows)
+SELECT length(string_agg('1','')::BIT VARYING)
+ FROM generate_series(1,1000) gs;
+ length
+--------
+ 1000
+(1 row)
+
+SELECT length(string_agg('1','')::BIT VARYING)
+ FROM generate_series(1,65536) gs;
+ length
+--------
+ 65536
+(1 row)
+
-- Substring
SELECT b,
SUBSTRING(b FROM 2 FOR 4) AS sub_2_4,
diff --git a/src/test/regress/sql/bit.sql b/src/test/regress/sql/bit.sql
index 419d47c..a60870c 100644
--- a/src/test/regress/sql/bit.sql
+++ b/src/test/regress/sql/bit.sql
@@ -40,6 +40,10 @@ SELECT b, length(b) AS lb
FROM BIT_TABLE;
SELECT v, length(v) AS lv
FROM VARBIT_TABLE;
+SELECT length(string_agg('1','')::BIT VARYING)
+ FROM generate_series(1,1000) gs;
+SELECT length(string_agg('1','')::BIT VARYING)
+ FROM generate_series(1,65536) gs;
-- Substring
SELECT b,
On Mon, Apr 24, 2017 at 09:25:25AM -0700, Mark Dilger wrote:
Here is a small patch for the next open commitfest which handles a case
that Noah's commits 9d7726c2ba06b932f791f2d0cc5acf73cc0b4dca and
3a0d473192b2045cbaf997df8437e7762d34f3ba apparently missed.
The scope for those commits was wrappers of PG_DETOAST_DATUM_PACKED(), which
does not include PG_DETOAST_DATUM_SLICE().
Noah, if you left this case out intentionally, sorry for the noise. I did not
immediately see any reason not to follow your lead for this function.
This is not following my lead, but that doesn't make it bad. It's just a
different topic.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 04/25/2017 04:10 AM, Noah Misch wrote:
On Mon, Apr 24, 2017 at 09:25:25AM -0700, Mark Dilger wrote:
Noah, if you left this case out intentionally, sorry for the noise. I did not
immediately see any reason not to follow your lead for this function.This is not following my lead, but that doesn't make it bad. It's just a
different topic.
(Changed subject line accordingly.)
From the patch:
--- a/src/backend/utils/adt/varbit.c +++ b/src/backend/utils/adt/varbit.c @@ -1187,7 +1187,7 @@ bit_overlay(VarBit *t1, VarBit *t2, int sp, int sl) Datum bitlength(PG_FUNCTION_ARGS) { - VarBit *arg = PG_GETARG_VARBIT_P(0); + VarBit *arg = PG_GETARG_VARBIT_P_SLICE(0,0,VARHDRSZ+VARBITHDRSZ);PG_RETURN_INT32(VARBITLEN(arg));
}
That doesn't look quite right. PG_GETARG_VARBIT_P_SLICE(X, m, n) returns
n bytes, from offset m, within the varlena. Offset 0 points to just
after the varlen header, i.e. the bit length. AFAICS, there's no need to
include VARHDRSZ here, and this should be just "arg =
PG_GETARG_VARBIT_P_SLICE(0, 0, VARBITHDRSZ)". It's a harmless mistake to
fetch more data than needed, but let's try to not be confused over how
slices work.
I wonder if having a PG_GETARG_VARBIT_P_SLICE macro like this is really
a good idea. It might be useful to be able to fetch just the header, to
get the length, like in this function. And bitgetbit() function would
benefit from being able to fetch just a slice of the data, containing
the bit its interested in. But this macro seems quite inconvenient for
both of those use cases. I'm not sure what to do instead, but I think
that needs some more thought.
I'd suggest expanding this patch, to also make bitgetbit to fetch just a
slice, and see what that looks like.
- Heikki
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
[ changing subject line to possibly draw more attention ]
Mark Dilger <hornschnorter@gmail.com> writes:
On Apr 5, 2017, at 9:23 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
In short, if you are supposed to write
FOO *val = PG_GETARG_FOO(n);
then the macro designer blew it, because the name implies that it
returns FOO, not pointer to FOO. This should be
FOO *val = PG_GETARG_FOO_P(n);
I have written a patch to fix these macro definitions across src/ and
contrib/.
So to summarize, this patch proposes to rename some DatumGetFoo,
PG_GETARG_FOO, and PG_RETURN_FOO macros for these datatypes:
NDBOX (contrib/cube)
HSTORE
LTREE and other contrib/ltree types
PG_GETARG_ANY_ARRAY (and there are some related macros it maybe should
have touched, like PG_RETURN_EXPANDED_ARRAY)
JSONB
RANGE
The contrib types don't seem like much of a problem, but I wonder
whether anyone feels that rationalizing the names for array, JSON,
or range-type macros will break too much code.
One option if we do feel that way is that we could provide the
old names as alternatives, thus not breaking external modules.
But that seems like it's sabotaging the basic goal of improving
consistency of naming.
If there are not objections, I plan to push forward with this.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Sep 12, 2017, at 1:07 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
[ changing subject line to possibly draw more attention ]
Mark Dilger <hornschnorter@gmail.com> writes:
On Apr 5, 2017, at 9:23 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
In short, if you are supposed to write
FOO *val = PG_GETARG_FOO(n);
then the macro designer blew it, because the name implies that it
returns FOO, not pointer to FOO. This should be
FOO *val = PG_GETARG_FOO_P(n);I have written a patch to fix these macro definitions across src/ and
contrib/.
Thanks, Tom, for reviewing my patch.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 12 Sep 2017, at 22:07, Tom Lane <tgl@sss.pgh.pa.us> wrote:
[ changing subject line to possibly draw more attention ]
Mark Dilger <hornschnorter@gmail.com> writes:
On Apr 5, 2017, at 9:23 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
In short, if you are supposed to write
FOO *val = PG_GETARG_FOO(n);
then the macro designer blew it, because the name implies that it
returns FOO, not pointer to FOO. This should be
FOO *val = PG_GETARG_FOO_P(n);I have written a patch to fix these macro definitions across src/ and
contrib/.So to summarize, this patch proposes to rename some DatumGetFoo,
PG_GETARG_FOO, and PG_RETURN_FOO macros for these datatypes:NDBOX (contrib/cube)
HSTORE
LTREE and other contrib/ltree typesPG_GETARG_ANY_ARRAY (and there are some related macros it maybe should
have touched, like PG_RETURN_EXPANDED_ARRAY)JSONB
RANGE
The contrib types don't seem like much of a problem, but I wonder
whether anyone feels that rationalizing the names for array, JSON,
or range-type macros will break too much code.One option if we do feel that way is that we could provide the
old names as alternatives, thus not breaking external modules.
But that seems like it's sabotaging the basic goal of improving
consistency of naming.If there are not objections, I plan to push forward with this.
Judging by this post, I’m updating this to “Ready for Committer”.
cheers ./daniel
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Mark Dilger <hornschnorter@gmail.com> writes:
I have written a patch to fix these macro definitions across src/ and contrib/.
Find the patch, attached. All regression tests pass on my Mac laptop.
Pushed after some rebasing and some minor additional editorialization.
The original point about adding a wrapper for GISTENTRY fetches remains
open ...
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers