POSTGIS_DEBUGF(3, "LWGEOM_collect(%s, %s): call", lwtype_name(pglwgeom_get_type(pglwgeom1)), lwtype_name(pglwgeom_get_type(pglwgeom2)));
-#ifdef GSERIALIZED_ON
if ( FLAGS_GET_ZM(pglwgeom1->flags) != FLAGS_GET_ZM(pglwgeom2->flags) )
{
elog(ERROR,"Cannot ST_Collect geometries with differing dimensionality.");
PG_RETURN_NULL();
}
-#endif
srid = pglwgeom_get_srid(pglwgeom1);
error_if_srid_mismatch(srid, pglwgeom_get_srid(pglwgeom2));
int type;
size_t size;
- /* Pull only a small amount of the tuple,
- * enough to get the type. size = header + type */
-#ifdef GSERIALIZED_ON
- size = VARHDRSZ + 8 + 32 + 4; /* header + srid/flags + bbox? + type number */
-#else
- size = VARHDRSZ + 1; /* header + type numer */
-#endif
+ /* Pull only a small amount of the tuple, enough to get the type. */
+ /* header + srid/flags + bbox? + type number */
+ size = VARHDRSZ + 8 + 32 + 4;
+
geom = (PG_LWGEOM*)PG_DETOAST_DATUM_SLICE(PG_GETARG_DATUM(0), 0, size);
type = pglwgeom_get_type(geom);
/* Copy input bbox if any */
if ( pglwgeom_getbox2d_p(geom1, &bbox) )
{
-#ifdef GSERIALIZED_ON
/* Force the box to have the same dimensionality as the lwgeom */
bbox.flags = lwout->flags;
lwout->bbox = gbox_copy(&bbox);
-#else
- lwout->bbox = gbox_from_box2df(lwout->flags, &bbox);
-#endif
}
result = pglwgeom_serialize(lwout);
{
rt_pgraster *pgraster;
rt_raster raster;
- LWPOLY* convexhull;
- uint8_t* pglwgeom;
+ LWPOLY* convexhull = NULL;
+ GSERIALIZED* gser = NULL;
if (PG_ARGISNULL(0)) PG_RETURN_NULL();
pgraster = (rt_pgraster *) PG_DETOAST_DATUM_SLICE(PG_GETARG_DATUM(0), 0, sizeof(struct rt_raster_serialized_t));
}
{
-#ifdef GSERIALIZED_ON
size_t gser_size;
- GSERIALIZED *gser;
gser = gserialized_from_lwgeom(lwpoly_as_lwgeom(convexhull), 0, &gser_size);
SET_VARSIZE(gser, gser_size);
- pglwgeom = (uint8_t*)gser;
-#else
- size_t sz = lwpoly_serialize_size(convexhull);
- pglwgeom = palloc(VARHDRSZ+sz);
- lwpoly_serialize_buf(convexhull, (uint8_t*)VARDATA(pglwgeom), &sz);
- SET_VARSIZE(pglwgeom, VARHDRSZ+sz);
-#endif
}
/* Free raster and lwgeom memory */
rt_raster_destroy(raster);
lwfree(convexhull);
- PG_RETURN_POINTER(pglwgeom);
+ PG_RETURN_POINTER(gser);
}
PG_FUNCTION_INFO_V1(RASTER_asRaster);
Datum RASTER_asRaster(PG_FUNCTION_ARGS)
{
-#ifdef GSERIALIZED_ON
GSERIALIZED *pggeom = NULL;
-#else
- unsigned char *pggeom = NULL;
-#endif
LWGEOM *geom = NULL;
rt_raster rast = NULL;
/* based upon LWGEOM_asBinary function in postgis/lwgeom_ogc.c */
/* Get the geometry */
- if (PG_ARGISNULL(0)) PG_RETURN_NULL();
-#ifdef GSERIALIZED_ON
+ if (PG_ARGISNULL(0))
+ PG_RETURN_NULL();
+
pggeom = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
geom = lwgeom_from_gserialized(pggeom);
-#else
- pggeom = (unsigned char *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
- geom = lwgeom_deserialize(SERIALIZED_FORM(pggeom));
-#endif
/* Get a 2D version of the geometry if necessary */
if (FLAGS_NDIMS(geom->flags) > 2) {
}
/* get geometry's srid */
-#ifdef GSERIALIZED_ON
srid = gserialized_get_srid(pggeom);
-#else
- srid = lwgeom_getsrid(pggeom);
-#endif
POSTGIS_RT_DEBUGF(3, "RASTER_asRaster: srid = %d", srid);
if (clamp_srid(srid) != SRID_UNKNOWN) {