style only change: remove trailing spaces
authorSandro Santilli <strk@keybit.net>
Wed, 15 Jun 2016 09:14:27 +0000 (09:14 +0000)
committerSandro Santilli <strk@keybit.net>
Wed, 15 Jun 2016 09:14:27 +0000 (09:14 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@14946 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/lwgeom_functions_basic.c
postgis/postgis.sql.in

index b51e8fa71e0ffba386fd1db314c03960d9875263..dec8e3c60bc0719c02e6a5a01e52024452d19d62 100644 (file)
@@ -140,7 +140,7 @@ Datum LWGEOM_summary(PG_FUNCTION_ARGS)
        /* create a text obj to return */
        mytext = cstring2text(result);
        pfree(result);
-       
+
        PG_FREE_IF_COPY(geom,0);
        PG_RETURN_TEXT_P(mytext);
 }
@@ -176,7 +176,7 @@ Datum postgis_svn_version(PG_FUNCTION_ARGS)
        char ver[32];
        if ( rev > 0 )
        {
-               snprintf(ver, 32, "%d", rev);   
+               snprintf(ver, 32, "%d", rev);
                PG_RETURN_TEXT_P(cstring2text(ver));
        }
        else
@@ -276,9 +276,9 @@ Datum LWGEOM_area_polygon(PG_FUNCTION_ARGS)
 
        area = lwgeom_area(lwgeom);
 
-       lwgeom_free(lwgeom);    
+       lwgeom_free(lwgeom);
        PG_FREE_IF_COPY(geom, 0);
-       
+
        PG_RETURN_FLOAT8(area);
 }
 
@@ -331,7 +331,7 @@ Datum LWGEOM_perimeter_poly(PG_FUNCTION_ARGS)
        GSERIALIZED *geom = PG_GETARG_GSERIALIZED_P(0);
        LWGEOM *lwgeom = lwgeom_from_gserialized(geom);
        double perimeter = 0.0;
-       
+
        perimeter = lwgeom_perimeter(lwgeom);
        PG_FREE_IF_COPY(geom, 0);
        PG_RETURN_FLOAT8(perimeter);
@@ -350,7 +350,7 @@ Datum LWGEOM_perimeter2d_poly(PG_FUNCTION_ARGS)
        GSERIALIZED *geom = PG_GETARG_GSERIALIZED_P(0);
        LWGEOM *lwgeom = lwgeom_from_gserialized(geom);
        double perimeter = 0.0;
-       
+
        perimeter = lwgeom_perimeter_2d(lwgeom);
        PG_FREE_IF_COPY(geom, 0);
        PG_RETURN_FLOAT8(perimeter);
@@ -619,7 +619,7 @@ Datum LWGEOM_closestpoint(PG_FUNCTION_ARGS)
 
        if (lwgeom_is_empty(point))
                PG_RETURN_NULL();
-       
+
        result = geometry_serialize(point);
        lwgeom_free(point);
        lwgeom_free(lwgeom1);
@@ -646,9 +646,9 @@ Datum LWGEOM_shortestline2d(PG_FUNCTION_ARGS)
        error_if_srid_mismatch(lwgeom1->srid, lwgeom2->srid);
 
        theline = lwgeom_closest_line(lwgeom1, lwgeom2);
-       
+
        if (lwgeom_is_empty(theline))
-               PG_RETURN_NULL();       
+               PG_RETURN_NULL();
 
        result = geometry_serialize(theline);
        lwgeom_free(theline);
@@ -676,7 +676,7 @@ Datum LWGEOM_longestline2d(PG_FUNCTION_ARGS)
        error_if_srid_mismatch(lwgeom1->srid, lwgeom2->srid);
 
        theline = lwgeom_furthest_line(lwgeom1, lwgeom2);
-       
+
        if (lwgeom_is_empty(theline))
                PG_RETURN_NULL();
 
@@ -710,11 +710,11 @@ Datum LWGEOM_mindistance2d(PG_FUNCTION_ARGS)
 
        PG_FREE_IF_COPY(geom1, 0);
        PG_FREE_IF_COPY(geom2, 1);
-       
+
        /*if called with empty geometries the ingoing mindistance is untouched, and makes us return NULL*/
        if (mindist<FLT_MAX)
                PG_RETURN_FLOAT8(mindist);
-       
+
        PG_RETURN_NULL();
 }
 
@@ -729,7 +729,7 @@ Datum LWGEOM_dwithin(PG_FUNCTION_ARGS)
        double mindist;
        GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
        GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
-       double tolerance = PG_GETARG_FLOAT8(2); 
+       double tolerance = PG_GETARG_FLOAT8(2);
        LWGEOM *lwgeom1 = lwgeom_from_gserialized(geom1);
        LWGEOM *lwgeom2 = lwgeom_from_gserialized(geom2);
 
@@ -761,7 +761,7 @@ Datum LWGEOM_dfullywithin(PG_FUNCTION_ARGS)
        double maxdist;
        GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
        GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
-       double tolerance = PG_GETARG_FLOAT8(2); 
+       double tolerance = PG_GETARG_FLOAT8(2);
        LWGEOM *lwgeom1 = lwgeom_from_gserialized(geom1);
        LWGEOM *lwgeom2 = lwgeom_from_gserialized(geom2);
 
@@ -772,16 +772,16 @@ Datum LWGEOM_dfullywithin(PG_FUNCTION_ARGS)
        }
 
        error_if_srid_mismatch(lwgeom1->srid, lwgeom2->srid);
-       
+
        maxdist = lwgeom_maxdistance2d_tolerance(lwgeom1, lwgeom2, tolerance);
 
        PG_FREE_IF_COPY(geom1, 0);
        PG_FREE_IF_COPY(geom2, 1);
-       
+
        /*If function is feed with empty geometries we should return false*/
        if (maxdist>-1)
                PG_RETURN_BOOL(tolerance >= maxdist);
-       
+
        PG_RETURN_BOOL(LW_FALSE);
 }
 
@@ -803,11 +803,11 @@ Datum LWGEOM_maxdistance2d_linestring(PG_FUNCTION_ARGS)
 
        PG_FREE_IF_COPY(geom1, 0);
        PG_FREE_IF_COPY(geom2, 1);
-       
+
        /*if called with empty geometries the ingoing mindistance is untouched, and makes us return NULL*/
        if (maxdist>-1)
                PG_RETURN_FLOAT8(maxdist);
-       
+
        PG_RETURN_NULL();
 }
 
@@ -831,10 +831,10 @@ Datum LWGEOM_closestpoint3d(PG_FUNCTION_ARGS)
        // point = lw_dist3d_distancepoint(lwgeom1, lwgeom2, lwgeom1->srid, DIST_MIN);
 
        if (lwgeom_is_empty(point))
-               PG_RETURN_NULL();       
+               PG_RETURN_NULL();
 
        result = geometry_serialize(point);
-       
+
        lwgeom_free(point);
        lwgeom_free(lwgeom1);
        lwgeom_free(lwgeom2);
@@ -861,12 +861,12 @@ Datum LWGEOM_shortestline3d(PG_FUNCTION_ARGS)
 
        theline = lwgeom_closest_line_3d(lwgeom1, lwgeom2);
        // theline = lw_dist3d_distanceline(lwgeom1, lwgeom2, lwgeom1->srid, DIST_MIN);
-       
+
        if (lwgeom_is_empty(theline))
                PG_RETURN_NULL();
 
        result = geometry_serialize(theline);
-       
+
        lwgeom_free(theline);
        lwgeom_free(lwgeom1);
        lwgeom_free(lwgeom2);
@@ -893,12 +893,12 @@ Datum LWGEOM_longestline3d(PG_FUNCTION_ARGS)
 
        theline = lwgeom_furthest_line_3d(lwgeom1, lwgeom2);
        // theline = lw_dist3d_distanceline(lwgeom1, lwgeom2, lwgeom1->srid, DIST_MAX);
-       
+
        if (lwgeom_is_empty(theline))
                PG_RETURN_NULL();
-       
+
        result = geometry_serialize(theline);
-       
+
        lwgeom_free(theline);
        lwgeom_free(lwgeom1);
        lwgeom_free(lwgeom2);
@@ -925,7 +925,7 @@ Datum LWGEOM_mindistance3d(PG_FUNCTION_ARGS)
 
        PG_FREE_IF_COPY(geom1, 0);
        PG_FREE_IF_COPY(geom2, 1);
-       
+
        /*if called with empty geometries the ingoing mindistance is untouched, and makes us return NULL*/
        if (mindist<FLT_MAX)
                PG_RETURN_FLOAT8(mindist);
@@ -944,7 +944,7 @@ Datum LWGEOM_dwithin3d(PG_FUNCTION_ARGS)
        double mindist;
        GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
        GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
-       double tolerance = PG_GETARG_FLOAT8(2); 
+       double tolerance = PG_GETARG_FLOAT8(2);
        LWGEOM *lwgeom1 = lwgeom_from_gserialized(geom1);
        LWGEOM *lwgeom2 = lwgeom_from_gserialized(geom2);
 
@@ -960,7 +960,7 @@ Datum LWGEOM_dwithin3d(PG_FUNCTION_ARGS)
 
        PG_FREE_IF_COPY(geom1, 0);
        PG_FREE_IF_COPY(geom2, 1);
-       
+
        /*empty geometries cases should be right handled since return from underlying
         functions should be FLT_MAX which causes false as answer*/
        PG_RETURN_BOOL(tolerance >= mindist);
@@ -977,7 +977,7 @@ Datum LWGEOM_dfullywithin3d(PG_FUNCTION_ARGS)
        double maxdist;
        GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
        GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
-       double tolerance = PG_GETARG_FLOAT8(2); 
+       double tolerance = PG_GETARG_FLOAT8(2);
        LWGEOM *lwgeom1 = lwgeom_from_gserialized(geom1);
        LWGEOM *lwgeom2 = lwgeom_from_gserialized(geom2);
 
@@ -992,7 +992,7 @@ Datum LWGEOM_dfullywithin3d(PG_FUNCTION_ARGS)
 
        PG_FREE_IF_COPY(geom1, 0);
        PG_FREE_IF_COPY(geom2, 1);
-       
+
        /*If function is feed with empty geometries we should return false*/
        if (maxdist>-1)
                PG_RETURN_BOOL(tolerance >= maxdist);
@@ -1018,7 +1018,7 @@ Datum LWGEOM_maxdistance3d(PG_FUNCTION_ARGS)
 
        PG_FREE_IF_COPY(geom1, 0);
        PG_FREE_IF_COPY(geom2, 1);
-       
+
        /*if called with empty geometries the ingoing mindistance is untouched, and makes us return NULL*/
        if (maxdist>-1)
                PG_RETURN_FLOAT8(maxdist);
@@ -1133,7 +1133,7 @@ Datum LWGEOM_collect(PG_FUNCTION_ARGS)
 
        type1 = lwgeoms[0]->type;
        type2 = lwgeoms[1]->type;
-       
+
        if ( (type1 == type2) && (!lwgeom_is_collection(lwgeoms[0])) )
                outtype = lwtype_get_collectiontype(type1);
        else
@@ -1212,12 +1212,12 @@ Datum LWGEOM_collect_garray(PG_FUNCTION_ARGS)
        count = 0;
        outtype = 0;
 
-#if POSTGIS_PGSQL_VERSION >= 95        
+#if POSTGIS_PGSQL_VERSION >= 95
        iterator = array_create_iterator(array, 0, NULL);
 #else
        iterator = array_create_iterator(array, 0);
 #endif
-       
+
        while( array_iterate(iterator, &value, &isnull) )
        {
                GSERIALIZED *geom;
@@ -1226,7 +1226,7 @@ Datum LWGEOM_collect_garray(PG_FUNCTION_ARGS)
                /* Don't do anything for NULL values */
                if ( isnull )
                        continue;
-               
+
                geom = (GSERIALIZED *)DatumGetPointer(value);
                intype = gserialized_get_type(geom);
 
@@ -1284,7 +1284,7 @@ Datum LWGEOM_collect_garray(PG_FUNCTION_ARGS)
 
        }
        array_free_iterator(iterator);
-       
+
 
        POSTGIS_DEBUGF(3, "LWGEOM_collect_garray: outtype = %d", outtype);
 
@@ -1359,7 +1359,7 @@ Datum LWGEOM_makeline_garray(PG_FUNCTION_ARGS)
        LWGEOM *outlwg;
        uint32 ngeoms;
        int srid = SRID_UNKNOWN;
-       
+
        ArrayIterator iterator;
        Datum value;
        bool isnull;
@@ -1393,7 +1393,7 @@ Datum LWGEOM_makeline_garray(PG_FUNCTION_ARGS)
        geoms = palloc(sizeof(LWGEOM *) * nelems);
        ngeoms = 0;
 
-#if POSTGIS_PGSQL_VERSION >= 95        
+#if POSTGIS_PGSQL_VERSION >= 95
        iterator = array_create_iterator(array, 0, NULL);
 #else
        iterator = array_create_iterator(array, 0);
@@ -1405,7 +1405,7 @@ Datum LWGEOM_makeline_garray(PG_FUNCTION_ARGS)
 
                if ( isnull )
                        continue;
-               
+
                geom = (GSERIALIZED *)DatumGetPointer(value);
 
                if ( gserialized_get_type(geom) != POINTTYPE &&
@@ -1632,7 +1632,7 @@ Datum LWGEOM_to_BOX(PG_FUNCTION_ARGS)
        GBOX gbox;
        int result;
        BOX *out = NULL;
-       
+
        /* Zero out flags */
        gbox_init(&gbox);
 
@@ -1642,11 +1642,11 @@ Datum LWGEOM_to_BOX(PG_FUNCTION_ARGS)
        /* Clean up memory */
        lwfree(lwgeom);
        PG_FREE_IF_COPY(pg_lwgeom, 0);
-       
+
        /* Null on failure */
        if ( ! result )
                PG_RETURN_NULL();
-       
+
     out = lwalloc(sizeof(BOX));
        out->low.x = gbox.xmin;
        out->low.y = gbox.ymin;
@@ -1677,13 +1677,13 @@ Datum LWGEOM_envelope(PG_FUNCTION_ARGS)
                /* must be the EMPTY geometry */
                PG_RETURN_POINTER(geom);
        }
-       
+
        if ( lwgeom_calculate_gbox(lwgeom, &box) == LW_FAILURE )
        {
                /* must be the EMPTY geometry */
                PG_RETURN_POINTER(geom);
        }
-       
+
        /*
         * Alter envelope type so that a valid geometry is always
         * returned depending upon the size of the geometry. The
@@ -1815,7 +1815,7 @@ Datum LWGEOM_segmentize2d(PG_FUNCTION_ARGS)
                lwgeom_free(inlwgeom);
                PG_RETURN_POINTER(ingeom);
        }
-       
+
        outlwgeom = lwgeom_segmentize2d(inlwgeom, dist);
        if ( ! outlwgeom ) {
                /* Should only happen on interruption */
@@ -1831,7 +1831,7 @@ Datum LWGEOM_segmentize2d(PG_FUNCTION_ARGS)
 
        //lwgeom_free(outlwgeom); /* TODO fix lwgeom_clone / ptarray_clone_deep for consistent semantics */
        lwgeom_free(inlwgeom);
-       
+
        PG_FREE_IF_COPY(ingeom, 0);
 
        PG_RETURN_POINTER(outgeom);
@@ -2167,7 +2167,7 @@ Datum LWGEOM_addpoint(PG_FUNCTION_ARGS)
        point = lwgeom_as_lwpoint(lwgeom_from_gserialized(pglwg2));
        linecopy = lwgeom_as_lwline(lwgeom_clone_deep(lwline_as_lwgeom(line)));
        lwline_free(line);
-       
+
        if ( lwline_add_lwpoint(linecopy, point, where) == LW_FAILURE )
        {
                elog(ERROR, "Point insert failed");
@@ -2518,7 +2518,7 @@ Datum ST_GeoHash(PG_FUNCTION_ARGS)
 
        result = cstring2text(geohash);
        pfree(geohash);
-       
+
        PG_RETURN_TEXT_P(result);
 }
 
index 0fc6e00d0a21954d740287bed2d5aba73954acb5..9082231ea0b1f6b2fa15a0aac31db5c4c383e541 100644 (file)
@@ -63,7 +63,7 @@ BEGIN
       RAISE DEBUG '% signature was deprecated in %. Please use %', oldname, version, newname;
     END IF;
 END;
-$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT 
+$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT
        COST 100;
 
 -------------------------------------------------------------------
@@ -272,7 +272,7 @@ CREATE TYPE box2d (
 --  BOX2DF TYPE (INTERNAL ONLY)
 -------------------------------------------------------------------
 --
--- Box2Df type is used by the GiST index bindings. 
+-- Box2Df type is used by the GiST index bindings.
 -- In/out functions are stubs, as all access should be internal.
 ---
 -- Availability: 2.0.0
@@ -301,7 +301,7 @@ CREATE TYPE box2df (
 --  GIDX TYPE (INTERNAL ONLY)
 -------------------------------------------------------------------
 --
--- GIDX type is used by the N-D and GEOGRAPHY GiST index bindings. 
+-- GIDX type is used by the N-D and GEOGRAPHY GiST index bindings.
 -- In/out functions are stubs, as all access should be internal.
 ---
 
@@ -418,50 +418,50 @@ CREATE OPERATOR CLASS btree_geometry_ops
 -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_distance_2d(internal,geometry,int4) 
-       RETURNS float8 
+CREATE OR REPLACE FUNCTION geometry_gist_distance_2d(internal,geometry,int4)
+       RETURNS float8
        AS 'MODULE_PATHNAME' ,'gserialized_gist_distance_2d'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_consistent_2d(internal,geometry,int4) 
-       RETURNS bool 
+CREATE OR REPLACE FUNCTION geometry_gist_consistent_2d(internal,geometry,int4)
+       RETURNS bool
        AS 'MODULE_PATHNAME' ,'gserialized_gist_consistent_2d'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_compress_2d(internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_compress_2d(internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME','gserialized_gist_compress_2d'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_penalty_2d(internal,internal,internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_penalty_2d(internal,internal,internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_penalty_2d'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_picksplit_2d(internal, internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_picksplit_2d(internal, internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_picksplit_2d'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_union_2d(bytea, internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_union_2d(bytea, internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_union_2d'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_same_2d(geom1 geometry, geom2 geometry, internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_same_2d(geom1 geometry, geom2 geometry, internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_same_2d'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_decompress_2d(internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_decompress_2d(internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_decompress_2d'
        LANGUAGE 'c';
 
@@ -488,7 +488,7 @@ CREATE OR REPLACE FUNCTION _postgis_join_selectivity(regclass, text, regclass, t
        LANGUAGE 'c' STRICT _PARALLEL;
 
 -- Availability: 2.1.0
--- Given a table and a column, returns the statistics information stored by 
+-- Given a table and a column, returns the statistics information stored by
 -- PostgreSQL, in a JSON text form. Mode determines whether the 2D statistics
 -- or the ND statistics are returned.
 CREATE OR REPLACE FUNCTION _postgis_stats(tbl regclass, att_name text, text default '2')
@@ -530,8 +530,8 @@ CREATE OR REPLACE FUNCTION gserialized_gist_joinsel_nd (internal, oid, internal,
 -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_overlaps(geom1 geometry, geom2 geometry) 
-       RETURNS boolean 
+CREATE OR REPLACE FUNCTION geometry_overlaps(geom1 geometry, geom2 geometry)
+       RETURNS boolean
        AS 'MODULE_PATHNAME' ,'gserialized_overlaps_2d'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
@@ -540,13 +540,13 @@ CREATE OR REPLACE FUNCTION geometry_overlaps(geom1 geometry, geom2 geometry)
 CREATE OPERATOR && (
        LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlaps,
        COMMUTATOR = '&&',
-       RESTRICT = gserialized_gist_sel_2d, 
-       JOIN = gserialized_gist_joinsel_2d      
+       RESTRICT = gserialized_gist_sel_2d,
+       JOIN = gserialized_gist_joinsel_2d
 );
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_same(geom1 geometry, geom2 geometry) 
-       RETURNS boolean 
+CREATE OR REPLACE FUNCTION geometry_same(geom1 geometry, geom2 geometry)
+       RETURNS boolean
        AS 'MODULE_PATHNAME' ,'gserialized_same_2d'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
@@ -556,12 +556,12 @@ CREATE OPERATOR ~= (
        RESTRICT = contsel, JOIN = contjoinsel
 );
 
--- As of 2.2.0 this no longer returns the centroid/centroid distance, it 
+-- As of 2.2.0 this no longer returns the centroid/centroid distance, it
 -- returns the actual distance, to support the 'recheck' functionality
 -- enabled in the KNN operator
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_distance_centroid(geom1 geometry, geom2 geometry) 
-       RETURNS float8 
+CREATE OR REPLACE FUNCTION geometry_distance_centroid(geom1 geometry, geom2 geometry)
+       RETURNS float8
 #if POSTGIS_PGSQL_VERSION >= 95
   AS 'MODULE_PATHNAME' ,'distance'
 #else
@@ -570,8 +570,8 @@ CREATE OR REPLACE FUNCTION geometry_distance_centroid(geom1 geometry, geom2 geom
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_distance_box(geom1 geometry, geom2 geometry) 
-       RETURNS float8 
+CREATE OR REPLACE FUNCTION geometry_distance_box(geom1 geometry, geom2 geometry)
+       RETURNS float8
   AS 'MODULE_PATHNAME' ,'gserialized_distance_box_2d'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
@@ -756,44 +756,44 @@ CREATE OPERATOR CLASS gist_geometry_ops_2d
 -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_consistent_nd(internal,geometry,int4) 
-       RETURNS bool 
+CREATE OR REPLACE FUNCTION geometry_gist_consistent_nd(internal,geometry,int4)
+       RETURNS bool
        AS 'MODULE_PATHNAME' ,'gserialized_gist_consistent'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_compress_nd(internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_compress_nd(internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME','gserialized_gist_compress'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_penalty_nd(internal,internal,internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_penalty_nd(internal,internal,internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_penalty'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_picksplit_nd(internal, internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_picksplit_nd(internal, internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_picksplit'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_union_nd(bytea, internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_union_nd(bytea, internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_union'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_same_nd(geometry, geometry, internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_same_nd(geometry, geometry, internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_same'
        LANGUAGE 'c';
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_decompress_nd(internal) 
-       RETURNS internal 
+CREATE OR REPLACE FUNCTION geometry_gist_decompress_nd(internal)
+       RETURNS internal
        AS 'MODULE_PATHNAME' ,'gserialized_gist_decompress'
        LANGUAGE 'c';
 
@@ -803,8 +803,8 @@ CREATE OR REPLACE FUNCTION geometry_gist_decompress_nd(internal)
 -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 
 -- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_overlaps_nd(geometry, geometry) 
-       RETURNS boolean 
+CREATE OR REPLACE FUNCTION geometry_overlaps_nd(geometry, geometry)
+       RETURNS boolean
        AS 'MODULE_PATHNAME' ,'gserialized_overlaps'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
@@ -813,7 +813,7 @@ CREATE OPERATOR &&& (
        LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlaps_nd,
        COMMUTATOR = '&&&',
        RESTRICT = gserialized_gist_sel_nd,
-       JOIN = gserialized_gist_joinsel_nd      
+       JOIN = gserialized_gist_joinsel_nd
 );
 
 -- Availability: 2.2.0
@@ -979,10 +979,10 @@ CREATE OR REPLACE FUNCTION ST_EstimatedExtent(text,text,text) RETURNS box2d AS
        LANGUAGE 'c' IMMUTABLE STRICT SECURITY DEFINER;
 
 -- Availability: 1.2.2
--- Deprecation in 2.1.0 
+-- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_estimated_extent(text,text,text) RETURNS box2d AS
   $$ SELECT _postgis_deprecate('ST_Estimated_Extent', 'ST_EstimatedExtent', '2.1.0');
-    -- We use security invoker instead of security definer 
+    -- We use security invoker instead of security definer
     -- to prevent malicious injection of a different same named function
     SELECT ST_EstimatedExtent($1, $2, $3);
   $$
@@ -998,10 +998,10 @@ CREATE OR REPLACE FUNCTION ST_EstimatedExtent(text,text) RETURNS box2d AS
        LANGUAGE 'c' IMMUTABLE STRICT SECURITY DEFINER;
 
 -- Availability: 1.2.2
--- Deprecation in 2.1.0 
+-- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_estimated_extent(text,text) RETURNS box2d AS
   $$ SELECT _postgis_deprecate('ST_Estimated_Extent', 'ST_EstimatedExtent', '2.1.0');
-    -- We use security invoker instead of security definer 
+    -- We use security invoker instead of security definer
     -- to prevent malicious injection of a same named different function
     -- that would be run under elevated permissions
     SELECT ST_EstimatedExtent($1, $2);
@@ -1476,7 +1476,7 @@ CREATE OR REPLACE FUNCTION postgis_noop(geometry)
        AS 'MODULE_PATHNAME', 'LWGEOM_noop'
        LANGUAGE 'c' VOLATILE STRICT
        COST 10;
-       
+
 -- Deprecation in 1.5.0
 CREATE OR REPLACE FUNCTION ST_zmflag(geometry)
        RETURNS smallint
@@ -1497,7 +1497,7 @@ CREATE OR REPLACE FUNCTION ST_AsEWKT(geometry)
        AS 'MODULE_PATHNAME','LWGEOM_asEWKT'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
        COST 750; --this looks suspicious, requires recheck
-       
+
 -- Availability: 2.2.0
 CREATE OR REPLACE FUNCTION ST_AsTWKB(geom geometry, prec int4 default NULL, prec_z int4 default NULL, prec_m int4 default NULL, with_sizes boolean default NULL, with_boxes boolean default NULL)
        RETURNS bytea
@@ -1625,7 +1625,7 @@ CREATE OR REPLACE FUNCTION ST_LineFromMultiPoint(geometry)
        RETURNS geometry
        AS 'MODULE_PATHNAME', 'LWGEOM_line_from_mpoint'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
-       
+
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_MakeLine(geom1 geometry, geom2 geometry)
        RETURNS geometry
@@ -1841,15 +1841,15 @@ DECLARE
   i integer;
   j integer;
   g geometry;
-  
+
 BEGIN
-  
+
   -- RAISE DEBUG '%,%', cur_path, ST_GeometryType(the_geom);
 
   -- Special case collections : iterate and return the DumpPoints of the geometries
 
   IF (ST_IsCollection(the_geom)) THEN
+
     i = 1;
     FOR tmp2 IN SELECT (ST_Dump(the_geom)).* LOOP
 
@@ -1857,12 +1857,12 @@ BEGIN
            RETURN NEXT tmp;
       END LOOP;
       i = i + 1;
-      
+
     END LOOP;
 
     RETURN;
   END IF;
-  
+
 
   -- Special case (POLYGON) : return the points of the rings of a polygon
   IF (ST_GeometryType(the_geom) = 'ST_Polygon') THEN
@@ -1870,14 +1870,14 @@ BEGIN
     FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP
       RETURN NEXT tmp;
     END LOOP;
-    
+
     j := ST_NumInteriorRings(the_geom);
     FOR i IN 1..j LOOP
         FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_InteriorRingN(the_geom, i), cur_path || ARRAY[i+1]) LOOP
           RETURN NEXT tmp;
         END LOOP;
     END LOOP;
-    
+
     RETURN;
   END IF;
 
@@ -1887,11 +1887,11 @@ BEGIN
     FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP
       RETURN NEXT tmp;
     END LOOP;
-    
+
     RETURN;
   END IF;
 
-    
+
   -- Special case (POINT) : return the point
   IF (ST_GeometryType(the_geom) = 'ST_Point') THEN
 
@@ -1918,14 +1918,14 @@ BEGIN
     tmp.geom := ST_PointN(the_geom, i);
     RETURN NEXT tmp;
   END LOOP;
-   
+
 END
 $$ LANGUAGE plpgsql;
 
 -----------------------------------------------------------------------
 -- ST_DumpPoints()
 -----------------------------------------------------------------------
--- This function mimicks that of ST_Dump for collections, but this function 
+-- This function mimicks that of ST_Dump for collections, but this function
 -- that returns a path and all the points that make up a particular geometry.
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_DumpPoints(geometry)
@@ -1959,7 +1959,7 @@ CREATE TABLE spatial_ref_sys (
 -- geometry_columns table.
 -- Availability: 1.4.0
 -- Revised: 2.0.0 -- no longer deletes from geometry_columns
--- Has new use_typmod option that defaults to true.  
+-- Has new use_typmod option that defaults to true.
 -- If use typmod is  set to false will use old constraint behavior.
 -- Will only touch table missing typmod or geometry constraints
 -----------------------------------------------------------------------
@@ -2012,7 +2012,7 @@ BEGIN
                AND a.atttypid = t.oid
                AND a.attrelid = c.oid
                AND c.relnamespace = n.oid
-               AND n.nspname NOT ILIKE 'pg_temp%' AND c.relname != 'raster_columns' 
+               AND n.nspname NOT ILIKE 'pg_temp%' AND c.relname != 'raster_columns'
        LOOP
 
                inserted := inserted + populate_geometry_columns(gcs.oid, use_typmod);
@@ -2088,20 +2088,20 @@ BEGIN
        LOOP
 
         RAISE DEBUG 'Processing column %.%.%', gcs.nspname, gcs.relname, gcs.attname;
-    
+
         gc_is_valid := true;
         -- Find the srid, coord_dimension, and type of current geometry
         -- in geometry_columns -- which is now a view
-        
-        SELECT type, srid, coord_dimension INTO gc_old 
-            FROM geometry_columns 
-            WHERE f_table_schema = gcs.nspname AND f_table_name = gcs.relname AND f_geometry_column = gcs.attname; 
-            
+
+        SELECT type, srid, coord_dimension INTO gc_old
+            FROM geometry_columns
+            WHERE f_table_schema = gcs.nspname AND f_table_name = gcs.relname AND f_geometry_column = gcs.attname;
+
         IF upper(gc_old.type) = 'GEOMETRY' THEN
         -- This is an unconstrained geometry we need to do something
         -- We need to figure out what to set the type by inspecting the data
             EXECUTE 'SELECT st_srid(' || quote_ident(gcs.attname) || ') As srid, GeometryType(' || quote_ident(gcs.attname) || ') As type, ST_NDims(' || quote_ident(gcs.attname) || ') As dims ' ||
-                     ' FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || 
+                     ' FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) ||
                      ' WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1;'
                 INTO gc;
             IF gc IS NULL THEN -- there is no data so we can not determine geometry type
@@ -2109,10 +2109,10 @@ BEGIN
                RETURN 0;
             END IF;
             gsrid := gc.srid; gtype := gc.type; gndims := gc.dims;
-               
+
             IF use_typmod THEN
                 BEGIN
-                    EXECUTE 'ALTER TABLE ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' ALTER COLUMN ' || quote_ident(gcs.attname) || 
+                    EXECUTE 'ALTER TABLE ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' ALTER COLUMN ' || quote_ident(gcs.attname) ||
                         ' TYPE geometry(' || postgis_type_name(gtype, gndims, true) || ', ' || gsrid::text  || ') ';
                     inserted := inserted + 1;
                 EXCEPTION
@@ -2120,14 +2120,14 @@ BEGIN
                         RAISE WARNING 'Could not convert ''%'' in ''%.%'' to use typmod with srid %, type %: %', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), gsrid, postgis_type_name(gtype, gndims, true), SQLERRM;
                             gc_is_valid := false;
                 END;
-                
+
             ELSE
                 -- Try to apply srid check to column
                constraint_successful = false;
                 IF (gsrid > 0 AND postgis_constraint_srid(gcs.nspname, gcs.relname,gcs.attname) IS NULL ) THEN
                     BEGIN
-                        EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || 
-                                 ' ADD CONSTRAINT ' || quote_ident('enforce_srid_' || gcs.attname) || 
+                        EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) ||
+                                 ' ADD CONSTRAINT ' || quote_ident('enforce_srid_' || gcs.attname) ||
                                  ' CHECK (st_srid(' || quote_ident(gcs.attname) || ') = ' || gsrid || ')';
                         constraint_successful := true;
                     EXCEPTION
@@ -2136,7 +2136,7 @@ BEGIN
                             gc_is_valid := false;
                     END;
                 END IF;
-                
+
                 -- Try to apply ndims check to column
                 IF (gndims IS NOT NULL AND postgis_constraint_dims(gcs.nspname, gcs.relname,gcs.attname) IS NULL ) THEN
                     BEGIN
@@ -2150,7 +2150,7 @@ BEGIN
                             gc_is_valid := false;
                     END;
                 END IF;
-    
+
                 -- Try to apply geometrytype check to column
                 IF (gtype IS NOT NULL AND postgis_constraint_type(gcs.nspname, gcs.relname,gcs.attname) IS NULL ) THEN
                     BEGIN
@@ -2168,7 +2168,7 @@ BEGIN
                 IF constraint_successful THEN
                        inserted := inserted + 1;
                 END IF;
-            END IF;            
+            END IF;
            END IF;
 
        END LOOP;
@@ -2319,7 +2319,7 @@ BEGIN
             ') = ' || new_srid::text || ')' ;
         RAISE DEBUG '%', sql;
         EXECUTE sql;
-    
+
         sql := 'ALTER TABLE ' ||
             quote_ident(real_schema) || '.' || quote_ident(table_name)
             || ' ADD CONSTRAINT '
@@ -2328,7 +2328,7 @@ BEGIN
             ') = ' || new_dim::text || ')' ;
         RAISE DEBUG '%', sql;
         EXECUTE sql;
-    
+
         IF ( NOT (new_type = 'GEOMETRY')) THEN
             sql := 'ALTER TABLE ' ||
                 quote_ident(real_schema) || '.' || quote_ident(table_name) || ' ADD CONSTRAINT ' ||
@@ -2620,34 +2620,34 @@ BEGIN
                END IF;
        END IF;
 
-       IF postgis_constraint_srid(real_schema, table_name, column_name) IS NOT NULL THEN 
+       IF postgis_constraint_srid(real_schema, table_name, column_name) IS NOT NULL THEN
        -- srid was enforced with constraints before, keep it that way.
         -- Make up constraint name
         cname = 'enforce_srid_'  || column_name;
-    
+
         -- Drop enforce_srid constraint
         EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) ||
             '.' || quote_ident(table_name) ||
             ' DROP constraint ' || quote_ident(cname);
-    
+
         -- Update geometries SRID
         EXECUTE 'UPDATE ' || quote_ident(real_schema) ||
             '.' || quote_ident(table_name) ||
             ' SET ' || quote_ident(column_name) ||
             ' = ST_SetSRID(' || quote_ident(column_name) ||
             ', ' || new_srid::text || ')';
-            
+
         -- Reset enforce_srid constraint
         EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) ||
             '.' || quote_ident(table_name) ||
             ' ADD constraint ' || quote_ident(cname) ||
             ' CHECK (st_srid(' || quote_ident(column_name) ||
             ') = ' || new_srid::text || ')';
-    ELSE 
+    ELSE
         -- We will use typmod to enforce if no srid constraints
-        -- We are using postgis_type_name to lookup the new name 
-        -- (in case Paul changes his mind and flips geometry_columns to return old upper case name) 
-        EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.' || quote_ident(table_name) || 
+        -- We are using postgis_type_name to lookup the new name
+        -- (in case Paul changes his mind and flips geometry_columns to return old upper case name)
+        EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.' || quote_ident(table_name) ||
         ' ALTER COLUMN ' || quote_ident(column_name) || ' TYPE  geometry(' || postgis_type_name(myrec.type, myrec.coord_dimension, true) || ', ' || new_srid::text || ') USING ST_SetSRID(' || quote_ident(column_name) || ',' || new_srid::text || ');' ;
     END IF;
 
@@ -2982,7 +2982,7 @@ LANGUAGE 'plpgsql' IMMUTABLE;
 ---------------------------------------------------------------
 -- CASTS
 ---------------------------------------------------------------
-               
+
 CREATE OR REPLACE FUNCTION box2d(geometry)
        RETURNS box2d
        AS 'MODULE_PATHNAME','LWGEOM_to_BOX2D'
@@ -3059,7 +3059,7 @@ CREATE OR REPLACE FUNCTION bytea(geometry)
 CREATE CAST (geometry AS box2d) WITH FUNCTION box2d(geometry) AS IMPLICIT;
 CREATE CAST (geometry AS box3d) WITH FUNCTION box3d(geometry) AS IMPLICIT;
 
--- ticket: 2262 changed 2.1.0 to assignment to prevent PostGIS 
+-- ticket: 2262 changed 2.1.0 to assignment to prevent PostGIS
 -- from misusing PostgreSQL geometric functions
 CREATE CAST (geometry AS box) WITH FUNCTION box(geometry) AS ASSIGNMENT;
 
@@ -3091,14 +3091,14 @@ CREATE OR REPLACE FUNCTION ST_Simplify(geometry, float8, boolean)
        AS 'MODULE_PATHNAME', 'LWGEOM_simplify2d'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
        COST 50; -- COST guessed from ST_Simplify(geometry, float8)
-       
+
 -- Availability: 2.2.0
 CREATE OR REPLACE FUNCTION ST_SimplifyVW(geometry,  float8)
        RETURNS geometry
        AS 'MODULE_PATHNAME', 'LWGEOM_SetEffectiveArea'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
        COST 50; -- COST guessed from ST_Simplify(geometry, float8)
-       
+
 -- Availability: 2.2.0
 CREATE OR REPLACE FUNCTION ST_SetEffectiveArea(geometry,  float8 default -1, integer default 1)
        RETURNS geometry
@@ -3155,7 +3155,7 @@ CREATE OR REPLACE FUNCTION ST_LineInterpolatePoint(geometry, float8)
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
--- Deprecation in 2.1.0 
+-- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_line_interpolate_point(geometry, float8)
        RETURNS geometry AS
   $$ SELECT _postgis_deprecate('ST_Line_Interpolate_Point', 'ST_LineInterpolatePoint', '2.1.0');
@@ -3170,7 +3170,7 @@ CREATE OR REPLACE FUNCTION ST_LineSubstring(geometry, float8, float8)
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
--- Deprecation in 2.1.0 
+-- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_line_substring(geometry, float8, float8)
        RETURNS geometry AS
   $$ SELECT _postgis_deprecate('ST_Line_Substring', 'ST_LineSubstring', '2.1.0');
@@ -3185,7 +3185,7 @@ CREATE OR REPLACE FUNCTION ST_LineLocatePoint(geom1 geometry, geom2 geometry)
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
--- Deprecation in 2.1.0 
+-- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_line_locate_point(geom1 geometry, geom2 geometry)
        RETURNS float8 AS
   $$ SELECT _postgis_deprecate('ST_Line_Locate_Point', 'ST_LineLocatePoint', '2.1.0');
@@ -3210,9 +3210,9 @@ CREATE OR REPLACE FUNCTION ST_locate_along_measure(geometry, float8)
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0
-CREATE OR REPLACE FUNCTION ST_AddMeasure(geometry, float8, float8) 
-       RETURNS geometry 
-       AS 'MODULE_PATHNAME', 'ST_AddMeasure' 
+CREATE OR REPLACE FUNCTION ST_AddMeasure(geometry, float8, float8)
+       RETURNS geometry
+       AS 'MODULE_PATHNAME', 'ST_AddMeasure'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
 ---------------------------------------------------------------
@@ -3221,13 +3221,13 @@ CREATE OR REPLACE FUNCTION ST_AddMeasure(geometry, float8, float8)
 
 -- Availability: 2.2.0
 CREATE OR REPLACE FUNCTION ST_ClosestPointOfApproach(geometry, geometry)
-       RETURNS float8 
-       AS 'MODULE_PATHNAME', 'ST_ClosestPointOfApproach' 
+       RETURNS float8
+       AS 'MODULE_PATHNAME', 'ST_ClosestPointOfApproach'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.2.0
 CREATE OR REPLACE FUNCTION ST_DistanceCPA(geometry, geometry)
-       RETURNS float8 
+       RETURNS float8
        AS 'MODULE_PATHNAME', 'ST_DistanceCPA'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
@@ -3239,10 +3239,10 @@ CREATE OR REPLACE FUNCTION ST_CPAWithin(geometry, geometry, float8)
 
 -- Availability: 2.2.0
 CREATE OR REPLACE FUNCTION ST_IsValidTrajectory(geometry)
-       RETURNS bool 
-       AS 'MODULE_PATHNAME', 'ST_IsValidTrajectory' 
+       RETURNS bool
+       AS 'MODULE_PATHNAME', 'ST_IsValidTrajectory'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
-    
+
 ---------------------------------------------------------------
 -- GEOS
 ---------------------------------------------------------------
@@ -3506,13 +3506,13 @@ CREATE OR REPLACE FUNCTION ST_MakeValid(geometry)
 --     - Simple (lineal components)
 --     - Valid (polygonal components)
 --     - Obeying the RHR (if polygonal)
---     - Simplified of consecutive duplicated points 
+--     - Simplified of consecutive duplicated points
 -- Ensuring:
 --     - No input vertexes are discarded (except consecutive repeated ones)
 --     - Output geometry type matches input
 --
 -- Returns NULL on failure.
--- 
+--
 -- Requires: GEOS-3.3.0
 -- Availability: 2.0.0
 CREATE OR REPLACE FUNCTION ST_CleanGeometry(geometry)
@@ -3532,7 +3532,7 @@ CREATE OR REPLACE FUNCTION ST_CleanGeometry(geometry)
 --
 -- Note that multi-part geometries will be returned exploded,
 -- no matter relation to blade.
--- 
+--
 -- Availability: 2.0.0
 --
 CREATE OR REPLACE FUNCTION ST_Split(geom1 geometry, geom2 geometry)
@@ -3554,7 +3554,7 @@ CREATE OR REPLACE FUNCTION ST_Split(geom1 geometry, geom2 geometry)
 --
 -- The paths themselves are given in the direction of the
 -- first geometry.
--- 
+--
 -- Availability: 2.0.0
 -- Requires GEOS >= 3.3.0
 --
@@ -3630,7 +3630,7 @@ CREATE OR REPLACE FUNCTION ST_Node(g geometry)
 --
 -- If a tolerance is given it will be used to snap the input points
 -- each-other.
--- 
+--
 --
 -- Availability: 2.1.0
 -- Requires GEOS >= 3.4.0
@@ -3652,7 +3652,7 @@ CREATE OR REPLACE FUNCTION ST_DelaunayTriangles(g1 geometry, tolerance float8 DE
 -- By default, the diagram will be extended to an envelope larger than the
 -- input points.
 --
--- If a second geometry is supplied, the diagram will be extended to fill the 
+-- If a second geometry is supplied, the diagram will be extended to fill the
 -- envelope of the second geometry, unless that is smaller than the default
 -- envelope.
 --
@@ -3986,7 +3986,7 @@ CREATE OR REPLACE FUNCTION ST_Intersects(geom1 geometry, geom2 geometry)
        RETURNS boolean
        AS 'SELECT $1 && $2 AND _ST_Intersects($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
-       
+
 -- PostGIS equivalent function: crosses(geom1 geometry, geom2 geometry)
 CREATE OR REPLACE FUNCTION _ST_Crosses(geom1 geometry, geom2 geometry)
        RETURNS boolean
@@ -4109,7 +4109,7 @@ CREATE OR REPLACE FUNCTION ST_Centroid(geometry)
        AS 'MODULE_PATHNAME', 'centroid'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
        COST 100;
-       
+
 
 -- Availability: 2.3.0
 CREATE OR REPLACE FUNCTION ST_GeometricMedian(g geometry, tolerance float8 DEFAULT NULL, max_iter int DEFAULT 10000, fail_if_not_converged boolean DEFAULT false)
@@ -4157,11 +4157,11 @@ CREATE OR REPLACE FUNCTION ST_Equals(geom1 geometry, geom2 geometry)
        AS 'SELECT $1 ~= $2 AND _ST_Equals($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
--- Deprecation in 1.2.3 
--- TODO: drop in 2.0.0 ! 
-CREATE OR REPLACE FUNCTION Equals(geom1 geometry, geom2 geometry) 
-       RETURNS boolean 
-       AS 'MODULE_PATHNAME','ST_Equals' 
+-- Deprecation in 1.2.3
+-- TODO: drop in 2.0.0 !
+CREATE OR REPLACE FUNCTION Equals(geom1 geometry, geom2 geometry)
+       RETURNS boolean
+       AS 'MODULE_PATHNAME','ST_Equals'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
 -----------------------------------------------------------------------
@@ -4262,7 +4262,7 @@ CREATE OR REPLACE FUNCTION _ST_AsGML(int4, geometry, int4, int4, text, text)
        LANGUAGE 'c' IMMUTABLE _PARALLEL
        COST 2500;
 
--- ST_AsGML(version, geom) / precision=15 
+-- ST_AsGML(version, geom) / precision=15
 -- Availability: 1.3.2
 -- ST_AsGML(version, geom, precision)
 -- Availability: 1.3.2
@@ -4496,14 +4496,14 @@ CREATE OR REPLACE FUNCTION ST_AsBinary(geometry,text)
        AS 'MODULE_PATHNAME','LWGEOM_asBinary'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
        COST 10;
-       
+
 -- PostGIS equivalent of old function: AsBinary(geometry)
 CREATE OR REPLACE FUNCTION ST_AsBinary(geometry)
        RETURNS bytea
        AS 'MODULE_PATHNAME','LWGEOM_asBinary'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
        COST 10;
-       
+
 -- PostGIS equivalent function: AsText(geometry)
 CREATE OR REPLACE FUNCTION ST_AsText(geometry)
        RETURNS TEXT
@@ -4534,13 +4534,13 @@ CREATE OR REPLACE FUNCTION ST_GeomFromText(text, int4)
        RETURNS geometry
        AS 'MODULE_PATHNAME','LWGEOM_from_text'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
-       
+
 -- PostGIS equivalent function: ST_GeometryFromText(text)
 -- SQL/MM alias for ST_GeomFromText
 CREATE OR REPLACE FUNCTION ST_WKTToSQL(text)
        RETURNS geometry
        AS 'MODULE_PATHNAME','LWGEOM_from_text'
-       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL; 
+       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_PointFromText(text)
@@ -4986,13 +4986,13 @@ CREATE OR REPLACE FUNCTION ST_GeomCollFromWKB(bytea)
 CREATE OR REPLACE FUNCTION _ST_MaxDistance(geom1 geometry, geom2 geometry)
        RETURNS float8
        AS 'MODULE_PATHNAME', 'LWGEOM_maxdistance2d_linestring'
-       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL; 
-       
+       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_MaxDistance(geom1 geometry, geom2 geometry)
        RETURNS float8
        AS 'SELECT _ST_MaxDistance(ST_ConvexHull($1), ST_ConvexHull($2))'
-       LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL; 
+       LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 CREATE OR REPLACE FUNCTION ST_ClosestPoint(geom1 geometry, geom2 geometry)
        RETURNS geometry
@@ -5012,18 +5012,18 @@ CREATE OR REPLACE FUNCTION _ST_LongestLine(geom1 geometry, geom2 geometry)
 CREATE OR REPLACE FUNCTION ST_LongestLine(geom1 geometry, geom2 geometry)
        RETURNS geometry
        AS 'SELECT _ST_LongestLine(ST_ConvexHull($1), ST_ConvexHull($2))'
-       LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL; 
+       LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 CREATE OR REPLACE FUNCTION _ST_DFullyWithin(geom1 geometry, geom2 geometry,float8)
        RETURNS boolean
        AS 'MODULE_PATHNAME', 'LWGEOM_dfullywithin'
-       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL; 
+       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
 
 CREATE OR REPLACE FUNCTION ST_DFullyWithin(geom1 geometry, geom2 geometry, float8)
        RETURNS boolean
        AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DFullyWithin(ST_ConvexHull($1), ST_ConvexHull($2), $3)'
-       LANGUAGE 'sql' IMMUTABLE; 
-       
+       LANGUAGE 'sql' IMMUTABLE;
+
 -- Availability: 2.2.0
 CREATE OR REPLACE FUNCTION ST_SwapOrdinates(geom geometry, ords cstring)
        RETURNS geometry
@@ -5038,7 +5038,7 @@ CREATE OR REPLACE FUNCTION ST_FlipCoordinates(geometry)
        RETURNS geometry
        AS 'MODULE_PATHNAME', 'ST_FlipCoordinates'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
-       COST 25; 
+       COST 25;
 
 --
 -- SFSQL 1.1
@@ -5151,12 +5151,12 @@ CREATE OR REPLACE FUNCTION ST_distance_sphere(geom1 geometry, geom2 geometry)
 -- New helper function so we can keep list of valid geometry types in one place --
 -- Maps old names to pramsey beautiful names but can take old name or new name as input
 -- By default returns new name but can be overridden to return old name for old constraint like support
-CREATE OR REPLACE FUNCTION postgis_type_name(geomname varchar, coord_dimension integer, use_new_name boolean DEFAULT true) 
+CREATE OR REPLACE FUNCTION postgis_type_name(geomname varchar, coord_dimension integer, use_new_name boolean DEFAULT true)
        RETURNS varchar
 AS
 $$
  SELECT CASE WHEN $3 THEN new_name ELSE old_name END As geomname
-       FROM 
+       FROM
        ( VALUES
                 ('GEOMETRY', 'Geometry', 2) ,
                        ('GEOMETRY', 'GeometryZ', 3) ,
@@ -5165,67 +5165,67 @@ $$
                        ('GEOMETRYCOLLECTION', 'GeometryCollectionZ', 3) ,
                        ('GEOMETRYCOLLECTIONM', 'GeometryCollectionM', 3) ,
                        ('GEOMETRYCOLLECTION', 'GeometryCollectionZM', 4) ,
-                       
+
                        ('POINT', 'Point',2) ,
                        ('POINTM','PointM',3) ,
                        ('POINT', 'PointZ',3) ,
                        ('POINT', 'PointZM',4) ,
-                       
+
                        ('MULTIPOINT','MultiPoint',2) ,
                        ('MULTIPOINT','MultiPointZ',3) ,
                        ('MULTIPOINTM','MultiPointM',3) ,
                        ('MULTIPOINT','MultiPointZM',4) ,
-                       
+
                        ('POLYGON', 'Polygon',2) ,
                        ('POLYGON', 'PolygonZ',3) ,
                        ('POLYGONM', 'PolygonM',3) ,
                        ('POLYGON', 'PolygonZM',4) ,
-                       
+
                        ('MULTIPOLYGON', 'MultiPolygon',2) ,
                        ('MULTIPOLYGON', 'MultiPolygonZ',3) ,
                        ('MULTIPOLYGONM', 'MultiPolygonM',3) ,
                        ('MULTIPOLYGON', 'MultiPolygonZM',4) ,
-                       
+
                        ('MULTILINESTRING', 'MultiLineString',2) ,
                        ('MULTILINESTRING', 'MultiLineStringZ',3) ,
                        ('MULTILINESTRINGM', 'MultiLineStringM',3) ,
                        ('MULTILINESTRING', 'MultiLineStringZM',4) ,
-                       
+
                        ('LINESTRING', 'LineString',2) ,
                        ('LINESTRING', 'LineStringZ',3) ,
                        ('LINESTRINGM', 'LineStringM',3) ,
                        ('LINESTRING', 'LineStringZM',4) ,
-                       
+
                        ('CIRCULARSTRING', 'CircularString',2) ,
                        ('CIRCULARSTRING', 'CircularStringZ',3) ,
                        ('CIRCULARSTRINGM', 'CircularStringM',3) ,
                        ('CIRCULARSTRING', 'CircularStringZM',4) ,
-                       
+
                        ('COMPOUNDCURVE', 'CompoundCurve',2) ,
                        ('COMPOUNDCURVE', 'CompoundCurveZ',3) ,
                        ('COMPOUNDCURVEM', 'CompoundCurveM',3) ,
                        ('COMPOUNDCURVE', 'CompoundCurveZM',4) ,
-                       
+
                        ('CURVEPOLYGON', 'CurvePolygon',2) ,
                        ('CURVEPOLYGON', 'CurvePolygonZ',3) ,
                        ('CURVEPOLYGONM', 'CurvePolygonM',3) ,
                        ('CURVEPOLYGON', 'CurvePolygonZM',4) ,
-                       
+
                        ('MULTICURVE', 'MultiCurve',2 ) ,
                        ('MULTICURVE', 'MultiCurveZ',3 ) ,
                        ('MULTICURVEM', 'MultiCurveM',3 ) ,
                        ('MULTICURVE', 'MultiCurveZM',4 ) ,
-                       
+
                        ('MULTISURFACE', 'MultiSurface', 2) ,
                        ('MULTISURFACE', 'MultiSurfaceZ', 3) ,
                        ('MULTISURFACEM', 'MultiSurfaceM', 3) ,
                        ('MULTISURFACE', 'MultiSurfaceZM', 4) ,
-                       
+
                        ('POLYHEDRALSURFACE', 'PolyhedralSurface',2) ,
                        ('POLYHEDRALSURFACE', 'PolyhedralSurfaceZ',3) ,
                        ('POLYHEDRALSURFACEM', 'PolyhedralSurfaceM',3) ,
                        ('POLYHEDRALSURFACE', 'PolyhedralSurfaceZM',4) ,
-                       
+
                        ('TRIANGLE', 'Triangle',2) ,
                        ('TRIANGLE', 'TriangleZ',3) ,
                        ('TRIANGLEM', 'TriangleM',3) ,
@@ -5281,7 +5281,7 @@ LANGUAGE 'sql' STABLE STRICT _PARALLEL;
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION postgis_constraint_type(geomschema text, geomtable text, geomcolumn text) RETURNS varchar AS
 $$
-SELECT  replace(split_part(s.consrc, '''', 2), ')', '')::varchar               
+SELECT  replace(split_part(s.consrc, '''', 2), ')', '')::varchar
                 FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
                 WHERE n.nspname = $1
                 AND c.relname = $2
@@ -5297,7 +5297,7 @@ LANGUAGE 'sql' STABLE STRICT _PARALLEL;
 -- Availability: 2.0.0
 -- Changed: 2.1.8 significant performance improvement for constraint based columns
 -- Changed: 2.2.0 get rid of scheman, table, column cast to improve performance
-CREATE OR REPLACE VIEW geometry_columns AS 
+CREATE OR REPLACE VIEW geometry_columns AS
  SELECT current_database()::character varying(256) AS f_table_catalog,
     n.nspname AS f_table_schema,
     c.relname AS f_table_name,
@@ -5313,25 +5313,25 @@ CREATE OR REPLACE VIEW geometry_columns AS
             s.conrelid,
             s.conkey, replace(split_part(s.consrc, ''''::text, 2), ')'::text, ''::text) As type
            FROM pg_constraint AS s
-          WHERE s.consrc ~~* '%geometrytype(% = %'::text 
-          
+          WHERE s.consrc ~~* '%geometrytype(% = %'::text
+
 ) st ON st.connamespace = n.oid AND st.conrelid = c.oid AND (a.attnum = ANY (st.conkey))
      LEFT JOIN ( SELECT s.connamespace,
             s.conrelid,
             s.conkey, replace(split_part(s.consrc, ' = '::text, 2), ')'::text, ''::text)::integer As ndims
            FROM pg_constraint AS s
           WHERE s.consrc ~~* '%ndims(% = %'::text
-          
+
 ) sn ON sn.connamespace = n.oid AND sn.conrelid = c.oid AND (a.attnum = ANY (sn.conkey))
      LEFT JOIN ( SELECT s.connamespace,
             s.conrelid,
             s.conkey, replace(replace(split_part(s.consrc, ' = '::text, 2), ')'::text, ''::text), '('::text, ''::text)::integer As srid
            FROM pg_constraint AS s
           WHERE s.consrc ~~* '%srid(% = %'::text
-          
+
 ) sr ON sr.connamespace = n.oid AND sr.conrelid = c.oid AND (a.attnum = ANY (sr.conkey))
-  WHERE (c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'm'::"char", 'f'::"char"])) 
-  AND NOT c.relname = 'raster_columns'::name AND t.typname = 'geometry'::name 
+  WHERE (c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'm'::"char", 'f'::"char"]))
+  AND NOT c.relname = 'raster_columns'::name AND t.typname = 'geometry'::name
   AND NOT pg_is_other_temp_schema(c.relnamespace) AND has_table_privilege(c.oid, 'SELECT'::text);
 
 
@@ -5360,12 +5360,12 @@ CREATE OR REPLACE FUNCTION ST_3DDistance(geom1 geometry, geom2 geometry)
        AS 'MODULE_PATHNAME', 'distance3d'
        LANGUAGE 'c' IMMUTABLE STRICT
        COST 100;
-       
+
 CREATE OR REPLACE FUNCTION ST_3DMaxDistance(geom1 geometry, geom2 geometry)
        RETURNS float8
        AS 'MODULE_PATHNAME', 'LWGEOM_maxdistance3d'
        LANGUAGE 'c' IMMUTABLE STRICT
-       COST 100;       
+       COST 100;
 
 CREATE OR REPLACE FUNCTION ST_3DClosestPoint(geom1 geometry, geom2 geometry)
        RETURNS geometry
@@ -5384,25 +5384,25 @@ CREATE OR REPLACE FUNCTION ST_3DLongestLine(geom1 geometry, geom2 geometry)
        AS 'MODULE_PATHNAME', 'LWGEOM_longestline3d'
        LANGUAGE 'c' IMMUTABLE STRICT
        COST 100;
-       
+
 CREATE OR REPLACE FUNCTION _ST_3DDWithin(geom1 geometry, geom2 geometry,float8)
        RETURNS boolean
        AS 'MODULE_PATHNAME', 'LWGEOM_dwithin3d'
        LANGUAGE 'c' IMMUTABLE STRICT
        COST 100;
-       
+
 CREATE OR REPLACE FUNCTION ST_3DDWithin(geom1 geometry, geom2 geometry,float8)
        RETURNS boolean
        AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_3DDWithin($1, $2, $3)'
        LANGUAGE 'sql' IMMUTABLE
        COST 100;
-       
+
 CREATE OR REPLACE FUNCTION _ST_3DDFullyWithin(geom1 geometry, geom2 geometry,float8)
        RETURNS boolean
        AS 'MODULE_PATHNAME', 'LWGEOM_dfullywithin3d'
        LANGUAGE 'c' IMMUTABLE STRICT
        COST 100;
-       
+
 CREATE OR REPLACE FUNCTION ST_3DDFullyWithin(geom1 geometry, geom2 geometry,float8)
        RETURNS boolean
        AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_3DDFullyWithin($1, $2, $3)'
@@ -5414,14 +5414,14 @@ CREATE OR REPLACE FUNCTION _ST_3DIntersects(geom1 geometry, geom2 geometry)
        AS 'MODULE_PATHNAME','intersects3d'
        LANGUAGE 'c' IMMUTABLE STRICT
        COST 100;
-       
+
 CREATE OR REPLACE FUNCTION ST_3DIntersects(geom1 geometry, geom2 geometry)
        RETURNS boolean
        AS 'SELECT $1 && $2 AND _ST_3DIntersects($1, $2)'
        LANGUAGE 'sql' IMMUTABLE
        COST 100;
-       
-       
+
+
 ---------------------------------------------------------------
 -- SQL-MM
 ---------------------------------------------------------------
@@ -5430,7 +5430,7 @@ CREATE OR REPLACE FUNCTION ST_CoordDim(Geometry geometry)
        RETURNS smallint
        AS 'MODULE_PATHNAME', 'LWGEOM_ndims'
        LANGUAGE 'c' IMMUTABLE STRICT
-       COST 5; 
+       COST 5;
 --
 -- SQL-MM
 --
@@ -5464,7 +5464,7 @@ CREATE OR REPLACE FUNCTION ST_LineToCurve(Geometry geometry)
        RETURNS geometry
        AS 'MODULE_PATHNAME', 'LWGEOM_line_desegmentize'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
-       
+
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION _ST_OrderingEquals(GeometryA geometry, GeometryB geometry)
        RETURNS boolean
@@ -5475,11 +5475,11 @@ CREATE OR REPLACE FUNCTION _ST_OrderingEquals(GeometryA geometry, GeometryB geom
 -- Availability: 1.3.0
 CREATE OR REPLACE FUNCTION ST_OrderingEquals(GeometryA geometry, GeometryB geometry)
        RETURNS boolean
-       AS $$ 
+       AS $$
        SELECT $1 ~= $2 AND _ST_OrderingEquals($1, $2)
-       $$      
-       LANGUAGE 'sql' IMMUTABLE; 
-       
+       $$
+       LANGUAGE 'sql' IMMUTABLE;
+
 -------------------------------------------------------------------------------
 -- SQL/MM - SQL Functions on type ST_Point
 -------------------------------------------------------------------------------
@@ -5488,23 +5488,23 @@ CREATE OR REPLACE FUNCTION ST_OrderingEquals(GeometryA geometry, GeometryB geome
 CREATE OR REPLACE FUNCTION ST_Point(float8, float8)
        RETURNS geometry
        AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
-       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL; 
-       
+       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+
 -- PostGIS equivalent function: ST_MakePolygon(Geometry geometry)
 CREATE OR REPLACE FUNCTION ST_Polygon(geometry, int)
        RETURNS geometry
-       AS $$ 
+       AS $$
        SELECT ST_SetSRID(ST_MakePolygon($1), $2)
-       $$      
-       LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL; 
-       
+       $$
+       LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
+
 -- PostGIS equivalent function: GeomFromWKB(WKB bytea))
 -- Note: Defaults to an SRID=-1, not 0 as per SQL/MM specs.
 CREATE OR REPLACE FUNCTION ST_WKBToSQL(WKB bytea)
        RETURNS geometry
        AS 'MODULE_PATHNAME','LWGEOM_from_WKB'
-       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL; 
-       
+       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+
 ---
 -- Linear referencing functions
 ---
@@ -5513,7 +5513,7 @@ CREATE OR REPLACE FUNCTION ST_LocateBetween(Geometry geometry, FromMeasure float
        RETURNS geometry
        AS 'MODULE_PATHNAME', 'ST_LocateBetween'
        LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
-       
+
 -- Availability: 2.0.0
 CREATE OR REPLACE FUNCTION ST_LocateAlong(Geometry geometry, Measure float8, LeftRightOffset float8 default 0.0)
        RETURNS geometry
@@ -5550,7 +5550,7 @@ CREATE OR REPLACE FUNCTION ST_InterpolatePoint(Line geometry, Point geometry)
 CREATE OR REPLACE FUNCTION _st_concavehull(param_inputgeom geometry)
   RETURNS geometry AS
 $$
-       DECLARE     
+       DECLARE
        vexhull GEOMETRY;
        var_resultgeom geometry;
        var_inputgeom geometry;
@@ -5561,7 +5561,7 @@ $$
        var_tempgeom geometry;
        scale_factor integer := 1;
        i integer;
-       
+
        BEGIN
 
                -- First compute the ConvexHull of the geometry
@@ -5587,20 +5587,20 @@ $$
                cavering := ST_Collect(
                        ARRAY(
 
-                               SELECT 
+                               SELECT
                                        ST_ClosestPoint(var_inputgeom, pt ) As the_geom
                                        FROM (
                                                SELECT  ST_PointN(vexring, n ) As pt, n
-                                                       FROM 
+                                                       FROM
                                                        generate_series(1, ST_NPoints(vexring) ) As n
                                                ) As pt
-                               
+
                                )
                        )
-               ; 
-               
+               ;
 
-               var_resultgeom := ST_MakeLine(geom) 
+
+               var_resultgeom := ST_MakeLine(geom)
                        FROM ST_Dump(cavering) As foo;
 
                IF ST_IsSimple(var_resultgeom) THEN
@@ -5610,16 +5610,16 @@ $$
                        --RAISE NOTICE 'is not Simple: %', var_resultgeom;
                        var_resultgeom := ST_ConvexHull(var_resultgeom);
                END IF;
-               
+
                IF scale_factor > 1 THEN -- scale the result back
                        var_resultgeom := ST_Scale(var_resultgeom, 1/scale_factor, 1/scale_factor);
                END IF;
                RETURN var_resultgeom;
-       
+
        END;
 $$
   LANGUAGE plpgsql IMMUTABLE STRICT _PARALLEL;
-  
+
 CREATE OR REPLACE FUNCTION ST_ConcaveHull(param_geom geometry, param_pctconvex float, param_allow_holes boolean DEFAULT false) RETURNS geometry AS
 $$
        DECLARE
@@ -5639,7 +5639,7 @@ $$
        BEGIN
                -- We start with convex hull as our base
                var_resultgeom := var_convhull;
-               
+
                IF param_pctconvex = 1 THEN
                        return var_resultgeom;
                ELSIF ST_GeometryType(var_param_geom) = 'ST_Polygon' THEN -- it is as concave as it is going to get
@@ -5655,7 +5655,7 @@ $$
                        var_enline := ST_Boundary(ST_Envelope(var_param_geom));
                        var_buf := ST_Length(var_enline)/1000.0;
                        IF ST_GeometryType(var_param_geom) = 'ST_MultiPoint' AND ST_NumGeometries(var_param_geom) BETWEEN 4 and 200 THEN
-                       -- we make polygons out of points since they are easier to cave in. 
+                       -- we make polygons out of points since they are easier to cave in.
                        -- Note we limit to between 4 and 200 points because this process is slow and gets quadratically slow
                                var_buf := sqrt(ST_Area(var_convhull)*0.8/(ST_NumGeometries(var_param_geom)*ST_NumGeometries(var_param_geom)));
                                var_atempgeoms := ARRAY(SELECT geom FROM ST_DumpPoints(var_param_geom));
@@ -5665,7 +5665,7 @@ $$
                                                -- fuse near neighbors together
                                                SELECT DISTINCT ON (i) i,  ST_Distance(var_atempgeoms[i],var_atempgeoms[j]), ST_Buffer(ST_MakeLine(var_atempgeoms[i], var_atempgeoms[j]) , var_buf*5, 'quad_segs=3') As geom
                                                                FROM generate_series(1,array_upper(var_atempgeoms, 1)) As i
-                                                                       INNER JOIN generate_series(1,array_upper(var_atempgeoms, 1)) As j 
+                                                                       INNER JOIN generate_series(1,array_upper(var_atempgeoms, 1)) As j
                                                                                ON (
                                                                 NOT ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
                                                                        AND ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
@@ -5674,10 +5674,10 @@ $$
                                                -- catch the ones with no near neighbors
                                                                SELECT i, 0, ST_Buffer(var_atempgeoms[i] , var_buf*10, 'quad_segs=3') As geom
                                                                FROM generate_series(1,array_upper(var_atempgeoms, 1)) As i
-                                                                       LEFT JOIN generate_series(ceiling(array_upper(var_atempgeoms,1)/2)::integer,array_upper(var_atempgeoms, 1)) As j 
+                                                                       LEFT JOIN generate_series(ceiling(array_upper(var_atempgeoms,1)/2)::integer,array_upper(var_atempgeoms, 1)) As j
                                                                                ON (
                                                                 NOT ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
-                                                                       AND ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10) 
+                                                                       AND ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
                                                                        )
                                                                        WHERE j IS NULL
                                                                ORDER BY 1, 2
@@ -5691,7 +5691,7 @@ $$
                                        END IF;
                                        return var_param_geom;
                                ELSIF ST_IsValid(var_tempgeom) THEN
-                                       var_param_geom := ST_ForceSFS(ST_Intersection(var_tempgeom, var_convhull));     
+                                       var_param_geom := ST_ForceSFS(ST_Intersection(var_tempgeom, var_convhull));
                                END IF;
                        END IF;
 
@@ -5717,16 +5717,16 @@ $$
                     FOR i in 1 .. 4 LOOP
                        var_geoms[i] := ST_MakePolygon(ST_MakeLine(ARRAY[ST_PointN(var_enline,i), ST_PointN(var_enline,i+1), var_cent, ST_PointN(var_enline,i)]));
                        var_geoms[i] := ST_ForceSFS(ST_Intersection(var_param_geom, ST_Buffer(var_geoms[i],var_buf)));
-                       IF ST_IsValid(var_geoms[i]) THEN 
-                            
+                       IF ST_IsValid(var_geoms[i]) THEN
+
                        ELSE
                             var_geoms[i] := ST_BuildArea(ST_MakeLine(ARRAY[ST_PointN(var_enline,i), ST_PointN(var_enline,i+1), var_cent, ST_PointN(var_enline,i)]));
-                       END IF; 
+                       END IF;
                     END LOOP;
-                    var_tempgeom := ST_Union(ARRAY[ST_ConvexHull(var_geoms[1]), ST_ConvexHull(var_geoms[2]) , ST_ConvexHull(var_geoms[3]), ST_ConvexHull(var_geoms[4])]); 
+                    var_tempgeom := ST_Union(ARRAY[ST_ConvexHull(var_geoms[1]), ST_ConvexHull(var_geoms[2]) , ST_ConvexHull(var_geoms[3]), ST_ConvexHull(var_geoms[4])]);
                     --RAISE NOTICE 'Curr vex % ', ST_AsText(var_tempgeom);
                     IF ST_Area(var_tempgeom) <= var_newarea AND ST_IsValid(var_tempgeom)  THEN --AND ST_GeometryType(var_tempgeom) ILIKE '%Polygon'
-                        
+
                         var_tempgeom := ST_Buffer(ST_ConcaveHull(var_geoms[1],least(param_pctconvex + param_pctconvex/var_div),true),var_buf, 'quad_segs=2');
                         FOR i IN 1 .. 4 LOOP
                             var_geoms[i] := ST_Buffer(ST_ConcaveHull(var_geoms[i],least(param_pctconvex + param_pctconvex/var_div),true), var_buf, 'quad_segs=2');
@@ -5735,7 +5735,7 @@ $$
                             ELSE
                                 RAISE NOTICE 'Not valid % %', i, ST_AsText(var_tempgeom);
                                 var_tempgeom := ST_Union(var_tempgeom, ST_ConvexHull(var_geoms[i]));
-                            END IF; 
+                            END IF;
                         END LOOP;
 
                         --RAISE NOTICE 'Curr concave % ', ST_AsText(var_tempgeom);
@@ -5755,7 +5755,7 @@ $$
                             var_resultgeom := ST_Buffer(var_tempgeom,var_buf, 'quad_segs=2');
                         END IF;
                     END IF;
-                    IF param_allow_holes = false THEN 
+                    IF param_allow_holes = false THEN
                     -- only keep exterior ring since we do not want holes
                         var_resultgeom := ST_MakePolygon(ST_ExteriorRing(var_resultgeom));
                     END IF;
@@ -5781,7 +5781,7 @@ CREATE OR REPLACE FUNCTION _ST_AsX3D(int4, geometry, int4, int4, text)
        RETURNS TEXT
        AS 'MODULE_PATHNAME','LWGEOM_asX3D'
        LANGUAGE 'c' IMMUTABLE;
-       
+
 -- ST_AsX3D(geom, precision, options)
 CREATE OR REPLACE FUNCTION ST_AsX3D(geom geometry, maxdecimaldigits integer DEFAULT 15, options integer DEFAULT 0)
        RETURNS TEXT