974 GISTENTRY *entry_in = (GISTENTRY*)PG_GETARG_POINTER(0);
975 GISTENTRY *entry_out = NULL;
979 POSTGIS_DEBUG(4,
"[GIST] 'compress' function called");
985 if ( ! entry_in->leafkey )
987 POSTGIS_DEBUG(4,
"[GIST] non-leafkey entry, returning input unaltered");
988 PG_RETURN_POINTER(entry_in);
991 POSTGIS_DEBUG(4,
"[GIST] processing leafkey input");
992 entry_out = palloc(
sizeof(GISTENTRY));
998 if ( DatumGetPointer(entry_in->key) == NULL )
1000 POSTGIS_DEBUG(4,
"[GIST] leafkey is null");
1001 gistentryinit(*entry_out, (Datum) 0, entry_in->rel,
1002 entry_in->page, entry_in->offset,
false);
1003 POSTGIS_DEBUG(4,
"[GIST] returning copy of input");
1004 PG_RETURN_POINTER(entry_out);
1014 gistentryinit(*entry_out, PointerGetDatum(
box2df_copy(&bbox_out)),
1015 entry_in->rel, entry_in->page, entry_in->offset,
false);
1017 POSTGIS_DEBUG(4,
"[GIST] empty geometry!");
1018 PG_RETURN_POINTER(entry_out);
1021 POSTGIS_DEBUGF(4,
"[GIST] got entry_in->key: %s",
box2df_to_string(&bbox_out));
1024 if ( ! isfinite(bbox_out.xmax) || ! isfinite(bbox_out.xmin) ||
1025 ! isfinite(bbox_out.ymax) || ! isfinite(bbox_out.ymin) )
1028 gistentryinit(*entry_out, PointerGetDatum(
box2df_copy(&bbox_out)),
1029 entry_in->rel, entry_in->page, entry_in->offset,
false);
1031 POSTGIS_DEBUG(4,
"[GIST] infinite geometry!");
1032 PG_RETURN_POINTER(entry_out);
1039 gistentryinit(*entry_out, PointerGetDatum(
box2df_copy(&bbox_out)),
1040 entry_in->rel, entry_in->page, entry_in->offset,
false);
1043 POSTGIS_DEBUG(4,
"[GIST] 'compress' function complete");
1044 PG_RETURN_POINTER(entry_out);
static char * box2df_to_string(const BOX2DF *a)
void box2df_set_empty(BOX2DF *a)
void box2df_set_finite(BOX2DF *a)
int gserialized_datum_get_box2df_p(Datum gsdatum, BOX2DF *box2df)
Peak into a GSERIALIZED datum to find the bounding box.
void box2df_validate(BOX2DF *b)
BOX2DF * box2df_copy(BOX2DF *b)