17{
18 BrinValues *column = (BrinValues *) PG_GETARG_POINTER(1);
19 Datum newval = PG_GETARG_DATUM(2);
20 bool isnull = PG_GETARG_BOOL(3);
21 BOX2DF box_geom, *box_key;
22
23
24
25
26
27 if (isnull)
28 {
29 if (column->bv_hasnulls)
30 PG_RETURN_BOOL(false);
31
32 column->bv_hasnulls = true;
33 PG_RETURN_BOOL(true);
34 }
35
36
37
38
40 {
41
42
43
44
45
48 {
50 PG_RETURN_BOOL(true);
51 }
52
53 PG_RETURN_BOOL(false);
54 } else
55 {
56
57
58
59
60 elog(ERROR, "Error while extracting the box2df from the geom");
61 }
62 }
63
64
65 if (column->bv_allnulls)
66 {
67 column->bv_values[
INCLUSION_UNION] = datumCopy((Datum) &box_geom,
false,
68 sizeof(BOX2DF));
71 column->bv_allnulls = false;
72 PG_RETURN_BOOL(true);
73 }
74
76
77
79 PG_RETURN_BOOL(false);
80
81
82
83
84
85 box_key->xmin = Min(box_key->xmin, box_geom.xmin);
86 box_key->xmax = Max(box_key->xmax, box_geom.xmax);
87 box_key->ymin = Min(box_key->ymin, box_geom.ymin);
88 box_key->ymax = Max(box_key->ymax, box_geom.ymax);
89
90 PG_RETURN_BOOL(true);
91}
bool is_gserialized_from_datum_empty(Datum the_datum)
bool box2df_contains(const BOX2DF *a, const BOX2DF *b)
int gserialized_datum_get_box2df_p(Datum gsdatum, BOX2DF *box2df)
#define INCLUSION_UNMERGEABLE
#define INCLUSION_CONTAINS_EMPTY