69 char gboxmem[GIDX_MAX_SIZE];
70 GIDX *gidx_geom, *gidx_key;
71 int dims_geom, dims_key, i;
73 Assert(max_dims <= GIDX_MAX_DIM);
81 if (column->bv_hasnulls)
82 PG_RETURN_BOOL(
false);
84 column->bv_hasnulls =
true;
92 if (!column->bv_allnulls &&
94 PG_RETURN_BOOL(
false);
97 gidx_geom = (GIDX *) gboxmem;
102 if (gserialized_datum_get_gidx_p(newval, gidx_geom) ==
LW_FAILURE)
114 PG_RETURN_BOOL(
true);
117 PG_RETURN_BOOL(
false);
124 elog(ERROR,
"Error while extracting the gidx from the geom");
129 dims_geom = GIDX_NDIMS(gidx_geom);
132 if (column->bv_allnulls)
141 if (dims_geom > max_dims)
147 SET_VARSIZE(gidx_geom, VARHDRSZ + max_dims * 2 *
sizeof(
float));
148 dims_geom = max_dims;
151 column->bv_values[
INCLUSION_UNION] = datumCopy((Datum) gidx_geom,
false,
152 GIDX_SIZE(dims_geom));
155 column->bv_allnulls =
false;
156 PG_RETURN_BOOL(
true);
160 dims_key = GIDX_NDIMS(gidx_key);
166 if (dims_key != dims_geom)
169 PG_RETURN_BOOL(
true);
174 PG_RETURN_BOOL(
false);
181 for ( i = 0; i < dims_key; i++ )
184 GIDX_SET_MIN(gidx_key, i,
185 Min(GIDX_GET_MIN(gidx_key,i),GIDX_GET_MIN(gidx_geom,i)));
187 GIDX_SET_MAX(gidx_key, i,
188 Max(GIDX_GET_MAX(gidx_key,i),GIDX_GET_MAX(gidx_geom,i)));
191 PG_RETURN_BOOL(
true);
bool is_gserialized_from_datum_empty(Datum the_datum)
bool gidx_contains(GIDX *a, GIDX *b)
#define INCLUSION_UNMERGEABLE
#define INCLUSION_CONTAINS_EMPTY