mirror of
https://github.com/postgres/postgres.git
synced 2025-05-13 01:13:08 -04:00
Make DatumGetFoo/PG_GETARG_FOO/PG_RETURN_FOO macro names more consistent.
By project convention, these names should include "P" when dealing with a pointer type; that is, if the result of a GETARG macro is of type FOO *, it should be called PG_GETARG_FOO_P not just PG_GETARG_FOO. Some newer types such as JSONB and ranges had not followed the convention, and a number of contrib modules hadn't gotten that memo either. Rename the offending macros to improve consistency. In passing, fix a few places that thought PG_DETOAST_DATUM() returns a Datum; it does not, it returns "struct varlena *". Applying DatumGetPointer to that happens not to cause any bad effects today, but it's formally wrong. Also, adjust an ltree macro that was designed without any thought for what pgindent would do with it. This is all cosmetic and shouldn't have any impact on generated code. Mark Dilger, some further tweaks by me Discussion: https://postgr.es/m/EA5676F4-766F-4F38-8348-ECC7DB427C6A@gmail.com
This commit is contained in:
parent
3e1683d37e
commit
4bd1994650
@ -171,7 +171,7 @@ Datum
|
||||
gbt_bpchar_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
void *query = (void *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(1)));
|
||||
void *query = (void *) DatumGetTextP(PG_GETARG_DATUM(1));
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
|
||||
/* Oid subtype = PG_GETARG_OID(3); */
|
||||
|
@ -37,7 +37,7 @@ Datum
|
||||
gbt_var_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
|
||||
GBT_VARKEY *key = (GBT_VARKEY *) PG_DETOAST_DATUM(entry->key);
|
||||
|
||||
if (key != (GBT_VARKEY *) DatumGetPointer(entry->key))
|
||||
{
|
||||
@ -307,7 +307,7 @@ Datum
|
||||
gbt_var_fetch(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
|
||||
GBT_VARKEY *key = (GBT_VARKEY *) PG_DETOAST_DATUM(entry->key);
|
||||
GBT_VARKEY_R r = gbt_var_key_readable(key);
|
||||
GISTENTRY *retval;
|
||||
|
||||
|
@ -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(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,17 +473,18 @@ 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,
|
||||
entryvec->vector[i].key, entryvec->vector[j].key));
|
||||
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 +507,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 +549,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 +585,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 +594,7 @@ g_cube_same(PG_FUNCTION_ARGS)
|
||||
else
|
||||
*result = FALSE;
|
||||
|
||||
PG_RETURN_NDBOX(result);
|
||||
PG_RETURN_NDBOX_P(result);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -735,23 +736,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 +824,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 +949,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 +964,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 +979,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 +994,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 +1009,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 +1024,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 +1039,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 +1094,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 +1110,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 +1165,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 +1185,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 +1234,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 +1278,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 +1332,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 +1349,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 +1393,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 +1428,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 +1439,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 +1456,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 +1477,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 +1505,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 +1535,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 +1593,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 +1611,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 +1642,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 +1650,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 +1683,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 +1724,5 @@ cube_c_f8_f8(PG_FUNCTION_ARGS)
|
||||
}
|
||||
|
||||
PG_FREE_IF_COPY(cube, 0);
|
||||
PG_RETURN_NDBOX(result);
|
||||
PG_RETURN_NDBOX_P(result);
|
||||
}
|
||||
|
@ -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 /* ~> */
|
||||
|
@ -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_HSTORE_P(x) DatumGetHStoreP(PG_GETARG_DATUM(x))
|
||||
|
||||
|
||||
/*
|
||||
|
@ -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_HSTORE_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_HSTORE_P(2); */
|
||||
int32 nkeys = PG_GETARG_INT32(3);
|
||||
|
||||
/* Pointer *extra_data = (Pointer *) PG_GETARG_POINTER(4); */
|
||||
|
@ -518,7 +518,7 @@ ghstore_consistent(PG_FUNCTION_ARGS)
|
||||
if (strategy == HStoreContainsStrategyNumber ||
|
||||
strategy == HStoreOldContainsStrategyNumber)
|
||||
{
|
||||
HStore *query = PG_GETARG_HS(1);
|
||||
HStore *query = PG_GETARG_HSTORE_P(1);
|
||||
HEntry *qe = ARRPTR(query);
|
||||
char *qv = STRPTR(query);
|
||||
int count = HS_COUNT(query);
|
||||
|
@ -962,7 +962,7 @@ hstore_populate_record(PG_FUNCTION_ARGS)
|
||||
tupTypmod = HeapTupleHeaderGetTypMod(rec);
|
||||
}
|
||||
|
||||
hs = PG_GETARG_HS(1);
|
||||
hs = PG_GETARG_HSTORE_P(1);
|
||||
entries = ARRPTR(hs);
|
||||
ptr = STRPTR(hs);
|
||||
|
||||
@ -1127,7 +1127,7 @@ PG_FUNCTION_INFO_V1(hstore_out);
|
||||
Datum
|
||||
hstore_out(PG_FUNCTION_ARGS)
|
||||
{
|
||||
HStore *in = PG_GETARG_HS(0);
|
||||
HStore *in = PG_GETARG_HSTORE_P(0);
|
||||
int buflen,
|
||||
i;
|
||||
int count = HS_COUNT(in);
|
||||
@ -1198,7 +1198,7 @@ PG_FUNCTION_INFO_V1(hstore_send);
|
||||
Datum
|
||||
hstore_send(PG_FUNCTION_ARGS)
|
||||
{
|
||||
HStore *in = PG_GETARG_HS(0);
|
||||
HStore *in = PG_GETARG_HSTORE_P(0);
|
||||
int i;
|
||||
int count = HS_COUNT(in);
|
||||
char *base = STRPTR(in);
|
||||
@ -1244,7 +1244,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_HSTORE_P(0);
|
||||
int i;
|
||||
int count = HS_COUNT(in);
|
||||
char *base = STRPTR(in);
|
||||
@ -1299,7 +1299,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_HSTORE_P(0);
|
||||
int i;
|
||||
int count = HS_COUNT(in);
|
||||
char *base = STRPTR(in);
|
||||
@ -1344,7 +1344,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_HSTORE_P(0);
|
||||
int i;
|
||||
int count = HS_COUNT(in);
|
||||
char *base = STRPTR(in);
|
||||
@ -1387,7 +1387,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_HSTORE_P(0);
|
||||
int i;
|
||||
int count = HS_COUNT(in);
|
||||
char *base = STRPTR(in);
|
||||
|
@ -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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_P(0);
|
||||
HStore *hs2 = PG_GETARG_HSTORE_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_HSTORE_P(0);
|
||||
HStore *s2 = PG_GETARG_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_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_HSTORE_P(0);
|
||||
HStore *tmpl = PG_GETARG_HSTORE_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_HSTORE_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_HSTORE_P(0);
|
||||
HStore *hs2 = PG_GETARG_HSTORE_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_HSTORE_P(0);
|
||||
Datum hval = hash_any((unsigned char *) VARDATA(hs),
|
||||
VARSIZE(hs) - VARHDRSZ);
|
||||
|
||||
|
@ -68,7 +68,7 @@ Datum
|
||||
hstore_to_plperl(PG_FUNCTION_ARGS)
|
||||
{
|
||||
dTHX;
|
||||
HStore *in = PG_GETARG_HS(0);
|
||||
HStore *in = PG_GETARG_HSTORE_P(0);
|
||||
int i;
|
||||
int count = HS_COUNT(in);
|
||||
char *base = STRPTR(in);
|
||||
|
@ -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_HSTORE_P(0);
|
||||
int i;
|
||||
int count = HS_COUNT(in);
|
||||
char *base = STRPTR(in);
|
||||
|
@ -545,7 +545,7 @@ Datum
|
||||
_ltree_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
char *query = (char *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(1)));
|
||||
void *query = (void *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
|
||||
/* Oid subtype = PG_GETARG_OID(3); */
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -165,12 +165,21 @@ 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_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_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_COPY(x) ((ltxtquery*)DatumGetPointer(PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(x))))
|
||||
/* fmgr macros for ltree objects */
|
||||
#define DatumGetLtreeP(X) ((ltree *) PG_DETOAST_DATUM(X))
|
||||
#define DatumGetLtreePCopy(X) ((ltree *) PG_DETOAST_DATUM_COPY(X))
|
||||
#define PG_GETARG_LTREE_P(n) DatumGetLtreeP(PG_GETARG_DATUM(n))
|
||||
#define PG_GETARG_LTREE_P_COPY(n) DatumGetLtreePCopy(PG_GETARG_DATUM(n))
|
||||
|
||||
#define DatumGetLqueryP(X) ((lquery *) PG_DETOAST_DATUM(X))
|
||||
#define DatumGetLqueryPCopy(X) ((lquery *) PG_DETOAST_DATUM_COPY(X))
|
||||
#define PG_GETARG_LQUERY_P(n) DatumGetLqueryP(PG_GETARG_DATUM(n))
|
||||
#define PG_GETARG_LQUERY_P_COPY(n) DatumGetLqueryPCopy(PG_GETARG_DATUM(n))
|
||||
|
||||
#define DatumGetLtxtqueryP(X) ((ltxtquery *) PG_DETOAST_DATUM(X))
|
||||
#define DatumGetLtxtqueryPCopy(X) ((ltxtquery *) PG_DETOAST_DATUM_COPY(X))
|
||||
#define PG_GETARG_LTXTQUERY_P(n) DatumGetLtxtqueryP(PG_GETARG_DATUM(n))
|
||||
#define PG_GETARG_LTXTQUERY_P_COPY(n) DatumGetLtxtqueryPCopy(PG_GETARG_DATUM(n))
|
||||
|
||||
/* GiST support for ltree */
|
||||
|
||||
|
@ -53,7 +53,7 @@ ltree_compress(PG_FUNCTION_ARGS)
|
||||
if (entry->leafkey)
|
||||
{ /* ltree */
|
||||
ltree_gist *key;
|
||||
ltree *val = (ltree *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
|
||||
ltree *val = DatumGetLtreeP(entry->key);
|
||||
int32 len = LTG_HDRSIZE + VARSIZE(val);
|
||||
|
||||
key = (ltree_gist *) palloc0(len);
|
||||
@ -73,7 +73,7 @@ Datum
|
||||
ltree_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
ltree_gist *key = (ltree_gist *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
|
||||
ltree_gist *key = (ltree_gist *) PG_DETOAST_DATUM(entry->key);
|
||||
|
||||
if (PointerGetDatum(key) != entry->key)
|
||||
{
|
||||
@ -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,25 +643,25 @@ 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)
|
||||
:
|
||||
(ltree_compare((ltree *) query, LTG_GETRNODE(key)) <= 0);
|
||||
break;
|
||||
case 10:
|
||||
query = PG_GETARG_LTREE_COPY(1);
|
||||
query = PG_GETARG_LTREE_P_COPY(1);
|
||||
res = (GIST_LEAF(entry)) ?
|
||||
inner_isparent((ltree *) query, LTG_NODE(key))
|
||||
:
|
||||
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,18 +680,18 @@ ltree_consistent(PG_FUNCTION_ARGS)
|
||||
break;
|
||||
case 14:
|
||||
case 15:
|
||||
query = PG_GETARG_LQUERY(1);
|
||||
query = PG_GETARG_LTXTQUERY_P(1);
|
||||
if (GIST_LEAF(entry))
|
||||
res = DatumGetBool(DirectFunctionCall2(ltxtq_exec,
|
||||
PointerGetDatum(LTG_NODE(key)),
|
||||
PointerGetDatum((lquery *) query)
|
||||
PointerGetDatum((ltxtquery *) query)
|
||||
));
|
||||
else
|
||||
res = gist_qtxt(key, (ltxtquery *) query);
|
||||
break;
|
||||
case 16:
|
||||
case 17:
|
||||
query = DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(1)));
|
||||
query = PG_GETARG_ARRAYTYPE_P(1);
|
||||
if (GIST_LEAF(entry))
|
||||
res = DatumGetBool(DirectFunctionCall2(lt_q_regex,
|
||||
PointerGetDatum(LTG_NODE(key)),
|
||||
|
@ -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,
|
||||
|
@ -67,65 +67,65 @@ 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); \
|
||||
PG_FREE_IF_COPY(b,1)
|
||||
|
||||
Datum
|
||||
ltree_cmp(PG_FUNCTION_ARGS)
|
||||
{
|
||||
RUNCMP
|
||||
RUNCMP;
|
||||
PG_RETURN_INT32(res);
|
||||
}
|
||||
|
||||
Datum
|
||||
ltree_lt(PG_FUNCTION_ARGS)
|
||||
{
|
||||
RUNCMP
|
||||
RUNCMP;
|
||||
PG_RETURN_BOOL((res < 0) ? true : false);
|
||||
}
|
||||
|
||||
Datum
|
||||
ltree_le(PG_FUNCTION_ARGS)
|
||||
{
|
||||
RUNCMP
|
||||
RUNCMP;
|
||||
PG_RETURN_BOOL((res <= 0) ? true : false);
|
||||
}
|
||||
|
||||
Datum
|
||||
ltree_eq(PG_FUNCTION_ARGS)
|
||||
{
|
||||
RUNCMP
|
||||
RUNCMP;
|
||||
PG_RETURN_BOOL((res == 0) ? true : false);
|
||||
}
|
||||
|
||||
Datum
|
||||
ltree_ge(PG_FUNCTION_ARGS)
|
||||
{
|
||||
RUNCMP
|
||||
RUNCMP;
|
||||
PG_RETURN_BOOL((res >= 0) ? true : false);
|
||||
}
|
||||
|
||||
Datum
|
||||
ltree_gt(PG_FUNCTION_ARGS)
|
||||
{
|
||||
RUNCMP
|
||||
RUNCMP;
|
||||
PG_RETURN_BOOL((res > 0) ? true : false);
|
||||
}
|
||||
|
||||
Datum
|
||||
ltree_ne(PG_FUNCTION_ARGS)
|
||||
{
|
||||
RUNCMP
|
||||
RUNCMP;
|
||||
PG_RETURN_BOOL((res != 0) ? true : false);
|
||||
}
|
||||
|
||||
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;
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -271,7 +271,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);
|
||||
TSVector result;
|
||||
TSVectorBuildState state;
|
||||
ParsedText prs;
|
||||
@ -293,13 +293,13 @@ 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);
|
||||
PG_RETURN_DATUM(DirectFunctionCall2(jsonb_to_tsvector_byid,
|
||||
ObjectIdGetDatum(cfgId),
|
||||
JsonbGetDatum(jb)));
|
||||
JsonbPGetDatum(jb)));
|
||||
}
|
||||
|
||||
Datum
|
||||
|
@ -383,7 +383,7 @@ Datum
|
||||
ts_headline_jsonb_byid_opt(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Oid tsconfig = PG_GETARG_OID(0);
|
||||
Jsonb *jb = PG_GETARG_JSONB(1);
|
||||
Jsonb *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;
|
||||
Jsonb *out;
|
||||
@ -424,7 +424,7 @@ ts_headline_jsonb_byid_opt(PG_FUNCTION_ARGS)
|
||||
pfree(prs.stopsel);
|
||||
}
|
||||
|
||||
PG_RETURN_JSONB(out);
|
||||
PG_RETURN_JSONB_P(out);
|
||||
}
|
||||
|
||||
Datum
|
||||
|
@ -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;
|
||||
|
||||
|
@ -1011,7 +1011,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;
|
||||
@ -1534,7 +1534,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;
|
||||
@ -1638,7 +1638,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)
|
||||
@ -1654,7 +1654,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,
|
||||
@ -1692,7 +1692,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;
|
||||
@ -1719,7 +1719,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;
|
||||
@ -1749,7 +1749,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;
|
||||
@ -1776,7 +1776,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)));
|
||||
}
|
||||
@ -3147,7 +3147,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);
|
||||
@ -3589,8 +3589,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);
|
||||
@ -3760,8 +3760,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);
|
||||
@ -3931,7 +3931,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);
|
||||
@ -4028,7 +4028,7 @@ hash_array(PG_FUNCTION_ARGS)
|
||||
Datum
|
||||
hash_array_extended(PG_FUNCTION_ARGS)
|
||||
{
|
||||
AnyArrayType *array = PG_GETARG_ANY_ARRAY(0);
|
||||
AnyArrayType *array = PG_GETARG_ANY_ARRAY_P(0);
|
||||
uint64 seed = PG_GETARG_INT64(1);
|
||||
int ndims = AARR_NDIM(array);
|
||||
int *dims = AARR_DIMS(array);
|
||||
@ -4260,8 +4260,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;
|
||||
|
||||
@ -4278,8 +4278,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;
|
||||
|
||||
@ -4296,8 +4296,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;
|
||||
|
||||
@ -5634,7 +5634,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;
|
||||
@ -5996,7 +5996,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));
|
||||
|
@ -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);
|
||||
|
@ -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); */
|
||||
|
@ -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;
|
||||
@ -295,7 +295,7 @@ jsonb_hash(PG_FUNCTION_ARGS)
|
||||
Datum
|
||||
jsonb_hash_extended(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Jsonb *jb = PG_GETARG_JSONB(0);
|
||||
Jsonb *jb = PG_GETARG_JSONB_P(0);
|
||||
uint64 seed = PG_GETARG_INT64(1);
|
||||
JsonbIterator *it;
|
||||
JsonbValue v;
|
||||
|
@ -499,7 +499,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;
|
||||
@ -703,7 +703,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;
|
||||
|
||||
@ -715,7 +715,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();
|
||||
}
|
||||
@ -739,7 +739,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;
|
||||
|
||||
@ -805,7 +805,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;
|
||||
|
||||
@ -825,7 +825,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();
|
||||
}
|
||||
@ -848,7 +848,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;
|
||||
|
||||
@ -1375,7 +1375,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;
|
||||
@ -1435,7 +1435,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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1533,7 +1533,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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1571,7 +1571,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,
|
||||
@ -1661,7 +1661,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;
|
||||
@ -1976,7 +1976,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;
|
||||
@ -2799,7 +2799,7 @@ populate_scalar(ScalarIOData *io, Oid typid, int32 typmod, JsValue *jsv)
|
||||
{
|
||||
Jsonb *jsonb = JsonbValueToJsonb(jbv); /* directly use jsonb */
|
||||
|
||||
return JsonbGetDatum(jsonb);
|
||||
return JsonbPGetDatum(jsonb);
|
||||
}
|
||||
/* convert jsonb to string for typio call */
|
||||
else if (typid == JSONOID && jbv->type != jbvBinary)
|
||||
@ -3235,7 +3235,7 @@ populate_record_worker(FunctionCallInfo fcinfo, const char *funcname,
|
||||
}
|
||||
else
|
||||
{
|
||||
Jsonb *jb = PG_GETARG_JSONB(json_arg_num);
|
||||
Jsonb *jb = PG_GETARG_JSONB_P(json_arg_num);
|
||||
|
||||
jsv.val.jsonb = &jbv;
|
||||
|
||||
@ -3552,7 +3552,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;
|
||||
@ -3904,7 +3904,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;
|
||||
@ -4013,7 +4013,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));
|
||||
@ -4029,8 +4029,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,
|
||||
@ -4045,9 +4045,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);
|
||||
@ -4057,7 +4057,7 @@ jsonb_concat(PG_FUNCTION_ARGS)
|
||||
|
||||
Assert(res != NULL);
|
||||
|
||||
PG_RETURN_JSONB(JsonbValueToJsonb(res));
|
||||
PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
|
||||
}
|
||||
|
||||
|
||||
@ -4070,7 +4070,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);
|
||||
@ -4087,7 +4087,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);
|
||||
|
||||
@ -4111,7 +4111,7 @@ jsonb_delete(PG_FUNCTION_ARGS)
|
||||
|
||||
Assert(res != NULL);
|
||||
|
||||
PG_RETURN_JSONB(JsonbValueToJsonb(res));
|
||||
PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -4123,7 +4123,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;
|
||||
@ -4146,13 +4146,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);
|
||||
|
||||
@ -4197,7 +4197,7 @@ jsonb_delete_array(PG_FUNCTION_ARGS)
|
||||
|
||||
Assert(res != NULL);
|
||||
|
||||
PG_RETURN_JSONB(JsonbValueToJsonb(res));
|
||||
PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -4210,7 +4210,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;
|
||||
@ -4231,7 +4231,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);
|
||||
|
||||
@ -4248,7 +4248,7 @@ jsonb_delete_idx(PG_FUNCTION_ARGS)
|
||||
}
|
||||
|
||||
if (idx >= n)
|
||||
PG_RETURN_JSONB(in);
|
||||
PG_RETURN_JSONB_P(in);
|
||||
|
||||
pushJsonbValue(&state, r, NULL);
|
||||
|
||||
@ -4265,7 +4265,7 @@ jsonb_delete_idx(PG_FUNCTION_ARGS)
|
||||
|
||||
Assert(res != NULL);
|
||||
|
||||
PG_RETURN_JSONB(JsonbValueToJsonb(res));
|
||||
PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -4275,9 +4275,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;
|
||||
@ -4297,13 +4297,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);
|
||||
|
||||
@ -4312,7 +4312,7 @@ jsonb_set(PG_FUNCTION_ARGS)
|
||||
|
||||
Assert(res != NULL);
|
||||
|
||||
PG_RETURN_JSONB(JsonbValueToJsonb(res));
|
||||
PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
|
||||
}
|
||||
|
||||
|
||||
@ -4322,7 +4322,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;
|
||||
@ -4342,13 +4342,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);
|
||||
|
||||
@ -4357,7 +4357,7 @@ jsonb_delete_path(PG_FUNCTION_ARGS)
|
||||
|
||||
Assert(res != NULL);
|
||||
|
||||
PG_RETURN_JSONB(JsonbValueToJsonb(res));
|
||||
PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -4367,9 +4367,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;
|
||||
@ -4392,7 +4392,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);
|
||||
|
||||
@ -4401,7 +4401,7 @@ jsonb_insert(PG_FUNCTION_ARGS)
|
||||
|
||||
Assert(res != NULL);
|
||||
|
||||
PG_RETURN_JSONB(JsonbValueToJsonb(res));
|
||||
PG_RETURN_JSONB_P(JsonbValueToJsonb(res));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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;
|
||||
@ -1287,7 +1287,7 @@ hash_range(PG_FUNCTION_ARGS)
|
||||
Datum
|
||||
hash_range_extended(PG_FUNCTION_ARGS)
|
||||
{
|
||||
RangeType *r = PG_GETARG_RANGE(0);
|
||||
RangeType *r = PG_GETARG_RANGE_P(0);
|
||||
Datum seed = PG_GETARG_DATUM(1);
|
||||
uint64 result;
|
||||
TypeCacheEntry *typcache;
|
||||
@ -1355,7 +1355,7 @@ hash_range_extended(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;
|
||||
@ -1366,7 +1366,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)
|
||||
{
|
||||
@ -1380,13 +1380,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;
|
||||
@ -1397,7 +1397,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)
|
||||
{
|
||||
@ -1411,13 +1411,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;
|
||||
@ -1428,7 +1428,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)
|
||||
{
|
||||
@ -1442,7 +1442,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));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1799,8 +1799,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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -203,7 +203,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);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -406,7 +406,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(hslot.values[i]),
|
||||
range_deserialize(typcache, DatumGetRangeTypeP(hslot.values[i]),
|
||||
&hist_lower[i], &hist_upper[i], &empty);
|
||||
/* The histogram should not contain any empty ranges */
|
||||
if (empty)
|
||||
|
@ -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",
|
||||
|
@ -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)
|
||||
|
@ -110,7 +110,7 @@ static int outbuf_maxlen = 0;
|
||||
Datum
|
||||
gtsvectorout(PG_FUNCTION_ARGS)
|
||||
{
|
||||
SignTSVector *key = (SignTSVector *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_POINTER(0)));
|
||||
SignTSVector *key = (SignTSVector *) PG_DETOAST_DATUM(PG_GETARG_POINTER(0));
|
||||
char *outbuf;
|
||||
|
||||
if (outbuf_maxlen == 0)
|
||||
@ -273,7 +273,7 @@ Datum
|
||||
gtsvector_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
SignTSVector *key = (SignTSVector *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
|
||||
SignTSVector *key = (SignTSVector *) PG_DETOAST_DATUM(entry->key);
|
||||
|
||||
if (key != (SignTSVector *) DatumGetPointer(entry->key))
|
||||
{
|
||||
|
@ -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);
|
||||
|
||||
#endif /* ARRAY_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 JsonbGetDatum(p) PointerGetDatum(p)
|
||||
#define PG_GETARG_JSONB(x) DatumGetJsonb(PG_GETARG_DATUM(x))
|
||||
#define PG_RETURN_JSONB(x) PG_RETURN_POINTER(x)
|
||||
#define DatumGetJsonbP(d) ((Jsonb *) PG_DETOAST_DATUM(d))
|
||||
#define JsonbPGetDatum(p) PointerGetDatum(p)
|
||||
#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;
|
||||
|
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user