return b;
}
+/* TODO to be removed */
+GBOX* box3d_to_gbox(const BOX3D *b3d)
+{
+ GBOX *b;
+ assert(b3d);
+
+ b = lwalloc(sizeof(GBOX));
+
+ b->xmin = b3d->xmin;
+ b->xmax = b3d->xmax;
+ b->ymin = b3d->ymin;
+ b->ymax = b3d->ymax;
+ b->zmin = b3d->zmin;
+ b->zmax = b3d->zmax;
+
+ return b;
+}
void gbox_expand(GBOX *g, double d)
{
extern BOX3D* box3d_from_gbox(const GBOX *gbox);
+extern GBOX* box3d_to_gbox(const BOX3D *b3d);
/*
* Returns a pointer to the BBOX internal to the serialized form.
-- LANGUAGE 'C';
-- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_overlaps_nd(geography, geography)
+CREATE OR REPLACE FUNCTION geometry_overlaps_nd(geometry, geometry)
RETURNS boolean
AS 'MODULE_PATHNAME' ,'gserialized_overlaps'
LANGUAGE 'C' IMMUTABLE STRICT;
-- Availability: 2.0.0
CREATE OPERATOR &&& (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlaps,
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlaps_nd,
COMMUTATOR = '&&&'
,RESTRICT = contsel, JOIN = contjoinsel
-- ,RESTRICT = geometry_gist_selectivity_nd
*/
#define REALLY_DO_JOINSEL 1
-Datum geometry_gist_sel(PG_FUNCTION_ARGS);
-Datum geometry_gist_joinsel(PG_FUNCTION_ARGS);
-Datum geometry_analyze(PG_FUNCTION_ARGS);
+Datum geometry_gist_sel_2d(PG_FUNCTION_ARGS);
+Datum geometry_gist_joinsel_2d(PG_FUNCTION_ARGS);
+Datum geometry_analyze_2d(PG_FUNCTION_ARGS);
Datum geometry_estimated_extent(PG_FUNCTION_ARGS);
* JOIN selectivity in the GiST && operator
* for all PG versions
*/
-PG_FUNCTION_INFO_V1(geometry_gist_joinsel);
-Datum geometry_gist_joinsel(PG_FUNCTION_ARGS)
+PG_FUNCTION_INFO_V1(geometry_gist_joinsel_2d);
+Datum geometry_gist_joinsel_2d(PG_FUNCTION_ARGS)
{
PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0);
* This is the one used for PG version >= 7.5
*
*/
-PG_FUNCTION_INFO_V1(geometry_gist_sel);
-Datum geometry_gist_sel(PG_FUNCTION_ARGS)
+PG_FUNCTION_INFO_V1(geometry_gist_sel_2d);
+Datum geometry_gist_sel_2d(PG_FUNCTION_ARGS)
{
PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0);
* value for now.
*
*/
-PG_FUNCTION_INFO_V1(geometry_analyze);
-Datum geometry_analyze(PG_FUNCTION_ARGS)
+PG_FUNCTION_INFO_V1(geometry_analyze_2d);
+Datum geometry_analyze_2d(PG_FUNCTION_ARGS)
{
VacAttrStats *stats = (VacAttrStats *)PG_GETARG_POINTER(0);
Form_pg_attribute attr = stats->attr;
Datum BOX3D_to_BOX2DFLOAT4(PG_FUNCTION_ARGS)
{
BOX3D *in = (BOX3D *)PG_GETARG_POINTER(0);
+#ifdef GSERIALIZED_ON
+ BOX2DFLOAT4 *out = box3d_to_gbox(in);
+#else
BOX2DFLOAT4 *out = box3d_to_box2df(in);
+#endif
PG_RETURN_POINTER(out);
}
CREATE OR REPLACE FUNCTION geometry_analyze(internal)\r
RETURNS bool\r
#ifdef GSERIALIZED_ON\r
- AS 'MODULE_PATHNAME', 'geometry_analyze'\r
+ AS 'MODULE_PATHNAME', 'geometry_analyze_2d'\r
#else\r
AS 'MODULE_PATHNAME', 'LWGEOM_analyze'\r
#endif\r
LANGUAGE 'C';\r
\r
-- Availability: 2.0.0\r
---CREATE OR REPLACE FUNCTION geometry_gist_sel_2d (internal, oid, internal, int4)\r
--- RETURNS float8\r
--- AS 'MODULE_PATHNAME', 'gserialized_gist_sel_2d'\r
--- LANGUAGE 'C';\r
+CREATE OR REPLACE FUNCTION geometry_gist_sel_2d (internal, oid, internal, int4)\r
+ RETURNS float8\r
+ AS 'MODULE_PATHNAME', 'geometry_gist_sel_2d'\r
+ LANGUAGE 'C';\r
\r
-- Availability: 2.0.0\r
---CREATE OR REPLACE FUNCTION geometry_gist_joinsel_2d(internal, oid, internal, smallint)\r
--- RETURNS float8\r
--- AS 'MODULE_PATHNAME', 'gserialized_gist_joinsel_2d'\r
--- LANGUAGE 'C';\r
+CREATE OR REPLACE FUNCTION geometry_gist_joinsel_2d(internal, oid, internal, smallint)\r
+ RETURNS float8\r
+ AS 'MODULE_PATHNAME', 'geometry_gist_joinsel_2d'\r
+ LANGUAGE 'C';\r
\r
-----------------------------------------------------------------------------\r
-- GEOMETRY Operators\r
CREATE OPERATOR && (\r
LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlaps,\r
COMMUTATOR = '&&'\r
- ,RESTRICT = contsel, JOIN = contjoinsel\r
--- ,RESTRICT = geometry_gist_sel_2d, JOIN = geometry_gist_joinsel_2d \r
+-- ,RESTRICT = contsel, JOIN = contjoinsel\r
+ ,RESTRICT = geometry_gist_sel_2d, JOIN = geometry_gist_joinsel_2d \r
);\r
\r
-- Availability: 2.0.0\r