#include "executor/spi.h"
#include "fmgr.h"
#include "parser/parsetree.h"
+#include "utils/array.h"
#include "liblwgeom.h"
#include "lwgeom_pg.h"
tuptable = SPI_tuptable;
tupdesc = SPI_tuptable->tupdesc;
tuple = tuptable->vals[0];
- array = (ArrayType *)SPI_getbinval(tuple, tupdesc, 1, &isnull);
+ array = DatumGetArrayTypeP(SPI_getbinval(tuple, tupdesc, 1, &isnull));
if (isnull)
{
SPI_finish();
elog(NOTICE, "geom_accum: NULL array");
#endif
} else {
- array = (ArrayType *) PG_DETOAST_DATUM_COPY(datum);
+ array = DatumGetArrayTypePCopy(datum);
/*array = PG_GETARG_ARRAYTYPE_P(0); */
nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array));
#ifdef PGIS_DEBUG
}
/* Get actual ArrayType */
- array = (ArrayType *) PG_DETOAST_DATUM(datum);
+ array = DatumGetArrayTypeP(datum);
#ifdef PGIS_DEBUG
elog(NOTICE, " array is %d-bytes in size, %ld w/out header",
}
/* Get actual ArrayType */
- array = (ArrayType *) PG_DETOAST_DATUM(datum);
+ array = DatumGetArrayTypeP(datum);
#ifdef PGIS_DEBUG
elog(NOTICE, "LWGEOM_makeline_garray: array detoasted");
/* Get input holes if any */
if ( PG_NARGS() > 1 )
{
- array = (ArrayType *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+ array = PG_GETARG_ARRAYTYPE_P(1);
nholes = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array));
holes = lwalloc(sizeof(LWLINE *)*nholes);
for (i=0; i<nholes; i++)
/* Null array, null geometry (should be empty?) */
if ( (Pointer *)datum == NULL ) PG_RETURN_NULL();
- array = (ArrayType *) PG_DETOAST_DATUM(datum);
+ array = DatumGetArrayTypeP(datum);
nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array));
/* Null array, null geometry (should be empty?) */
if ( (Pointer *)datum == NULL ) PG_RETURN_NULL();
- array = (ArrayType *) PG_DETOAST_DATUM(datum);
+ array = DatumGetArrayTypeP(datum);
nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array));
/* Null array, null geometry (should be empty?) */
if ( (Pointer *)datum == NULL ) PG_RETURN_NULL();
- array = (ArrayType *) PG_DETOAST_DATUM(datum);
+ array = DatumGetArrayTypeP(datum);
nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array));
/* Null array, null geometry (should be empty?) */
if ( (Pointer *)datum == NULL ) PG_RETURN_NULL();
- array = (ArrayType *) PG_DETOAST_DATUM(datum);
+ array = DatumGetArrayTypeP(datum);
nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array));
/* Null array, null geometry (should be empty?) */
if ( (Pointer *)datum == NULL ) PG_RETURN_NULL();
- array = (ArrayType *) PG_DETOAST_DATUM(datum);
+ array = DatumGetArrayTypeP(datum);
nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array));
/* Null array, null geometry (should be empty?) */
if ( (Pointer *)datum == NULL ) PG_RETURN_NULL();
- array = (ArrayType *) PG_DETOAST_DATUM(datum);
+ array = DatumGetArrayTypeP(datum);
nelems = ArrayGetNItems(ARR_NDIM(array), ARR_DIMS(array));