]> granicus.if.org Git - postgis/commitdiff
Reorganize SQL definitions a bit: type creation at the start, indexes and operators...
authorPaul Ramsey <pramsey@cleverelephant.ca>
Tue, 3 Jan 2012 20:31:15 +0000 (20:31 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Tue, 3 Jan 2012 20:31:15 +0000 (20:31 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8658 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/geography.sql.in.c
postgis/postgis.sql.in.c
utils/postgis_restore.pl

index e2d7d90de39f57e31a45571051c5fa519b22a364..6ee506879fa8bc74affbae4de9823d54caaf3182 100644 (file)
@@ -9,6 +9,10 @@
 --
 ---------------------------------------------------------------------------
 
+-----------------------------------------------------------------------------
+--  GEOGRAPHY TYPE
+-----------------------------------------------------------------------------
+
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION geography_typmod_in(cstring[])
        RETURNS integer
@@ -52,30 +56,6 @@ CREATE TYPE geography (
        alignment = double
 );
 
---
--- GIDX type is used by the GiST index bindings. 
--- In/out functions are stubs, as all access should be internal.
----
--- Availability: 1.5.0
-CREATE OR REPLACE FUNCTION gidx_in(cstring)
-       RETURNS gidx
-       AS 'MODULE_PATHNAME','gidx_in'
-       LANGUAGE 'C' IMMUTABLE STRICT; 
-
--- Availability: 1.5.0
-CREATE OR REPLACE FUNCTION gidx_out(gidx)
-       RETURNS cstring
-       AS 'MODULE_PATHNAME','gidx_out'
-       LANGUAGE 'C' IMMUTABLE STRICT; 
-
--- Availability: 1.5.0
-CREATE TYPE gidx (
-       internallength = variable,
-       input = gidx_in,
-       output = gidx_out,
-       storage = plain,
-       alignment = double
-);
 
 
 -- Availability: 1.5.0
@@ -708,97 +688,3 @@ CREATE OR REPLACE FUNCTION ST_Intersection(text, text)
 -----------------------------------------------------------------------------
 
 
-
------------------------------------------------------------------------------
--- GiST ND GEOMETRY-over-GSERIALIZED
------------------------------------------------------------------------------
-
--- ---------- ---------- ---------- ---------- ---------- ---------- ----------
--- GiST Support Functions
--- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-
--- Availability: 2.0.0
-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 
-       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 
-       AS 'MODULE_PATHNAME' ,'gserialized_gist_penalty'
-       LANGUAGE 'C';
-
--- Availability: 2.0.0
-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 
-       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 
-       AS 'MODULE_PATHNAME' ,'gserialized_gist_same'
-       LANGUAGE 'C';
-
--- Availability: 2.0.0
-CREATE OR REPLACE FUNCTION geometry_gist_decompress_nd(internal) 
-       RETURNS internal 
-       AS 'MODULE_PATHNAME' ,'gserialized_gist_decompress'
-       LANGUAGE 'C';
-
--- Availability: 2.0.0
---CREATE OR REPLACE FUNCTION geometry_gist_selectivity_nd (internal, oid, internal, int4)
---     RETURNS float8
---     AS 'MODULE_PATHNAME', 'geometry_gist_selectivity_nd'
---     LANGUAGE 'C';
-
--- Availability: 2.0.0
---CREATE OR REPLACE FUNCTION geography_gist_join_selectivity_nd(internal, oid, internal, smallint)
---     RETURNS float8
---     AS 'MODULE_PATHNAME', 'geometry_gist_join_selectivity_nd'
---     LANGUAGE 'C';
-
--- Availability: 2.0.0
-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_nd,
-       COMMUTATOR = '&&&'
-       ,RESTRICT = contsel, JOIN = contjoinsel
---     ,RESTRICT = geometry_gist_selectivity_nd 
---     ,JOIN = geometry_gist_join_selectivity_nd
-);
-
--- Availability: 2.0.0
-CREATE OPERATOR CLASS gist_geometry_ops_nd
-       FOR TYPE geometry USING GIST AS
-       STORAGE         gidx,
-       OPERATOR        3        &&&    ,
---     OPERATOR        6        ~=     ,
---     OPERATOR        7        ~      ,
---     OPERATOR        8        @      ,
-       FUNCTION        1        geometry_gist_consistent_nd (internal, geometry, int4),
-       FUNCTION        2        geometry_gist_union_nd (bytea, internal),
-       FUNCTION        3        geometry_gist_compress_nd (internal),
-       FUNCTION        4        geometry_gist_decompress_nd (internal),
-       FUNCTION        5        geometry_gist_penalty_nd (internal, internal, internal),
-       FUNCTION        6        geometry_gist_picksplit_nd (internal, internal),
-       FUNCTION        7        geometry_gist_same_nd (geometry, geometry, internal);
-
index abeb80ec6c0f0fc1a554671445e9914040561168..61145f2ed6c891e9502321530d772fb1bb5c0cb2 100644 (file)
@@ -23,7 +23,6 @@
 \r
 SET client_min_messages TO warning;\r
 \r
-\r
 -- INSTALL VERSION: POSTGIS_LIB_VERSION\r
 \r
 BEGIN;\r
@@ -114,82 +113,6 @@ CREATE OR REPLACE FUNCTION geometry(geometry, integer, boolean)
 CREATE CAST (geometry AS geometry) WITH FUNCTION geometry(geometry, integer, boolean) AS IMPLICIT;\r
 \r
 \r
--------------------------------------------\r
--- Affine transforms\r
--------------------------------------------\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)\r
-       RETURNS geometry\r
-       AS 'MODULE_PATHNAME', 'LWGEOM_affine'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_Affine($1,  $2, $3, 0,  $4, $5, 0,  0, 0, 1,  $6, $7, 0)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_RotateZ(geometry,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_Affine($1,  cos($2), -sin($2), 0,  sin($2), cos($2), 0,  0, 0, 1,  0, 0, 0)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_RotateZ($1, $2)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_RotateX(geometry,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_Affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_RotateY(geometry,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_Affine($1,  cos($2), 0, sin($2),  0, 1, 0,  -sin($2), 0, cos($2), 0,  0, 0)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_Affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_Translate($1, $2, $3, 0)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_Affine($1,  $2, 0, 0,  0, $3, 0,  0, 0, $4,  0, 0, 0)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_Scale($1, $2, $3, 1)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Transscale(geometry,float8,float8,float8,float8)\r
-       RETURNS geometry\r
-       AS 'SELECT ST_Affine($1,  $4, 0, 0,  0, $5, 0,\r
-               0, 0, 1,  $2 * $4, $3 * $5, 0)'\r
-       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Shift_Longitude(geometry)\r
-       RETURNS geometry\r
-       AS 'MODULE_PATHNAME', 'LWGEOM_longitude_shift'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
 -------------------------------------------------------------------\r
 --  BOX3D TYPE\r
 -------------------------------------------------------------------\r
@@ -211,42 +134,6 @@ CREATE TYPE box3d (
        output = box3d_out\r
 );\r
 \r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_XMin(box3d)\r
-       RETURNS FLOAT8\r
-       AS 'MODULE_PATHNAME','BOX3D_xmin'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_YMin(box3d)\r
-       RETURNS FLOAT8\r
-       AS 'MODULE_PATHNAME','BOX3D_ymin'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_ZMin(box3d)\r
-       RETURNS FLOAT8\r
-       AS 'MODULE_PATHNAME','BOX3D_zmin'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_XMax(box3d)\r
-       RETURNS FLOAT8\r
-       AS 'MODULE_PATHNAME','BOX3D_xmax'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_YMax(box3d)\r
-       RETURNS FLOAT8\r
-       AS 'MODULE_PATHNAME','BOX3D_ymax'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_ZMax(box3d)\r
-       RETURNS FLOAT8\r
-       AS 'MODULE_PATHNAME','BOX3D_zmax'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
 -----------------------------------------------------------------------\r
 -- BOX2D\r
 -----------------------------------------------------------------------\r
@@ -268,86 +155,63 @@ CREATE TYPE box2d (
        storage = plain\r
 );\r
 \r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_expand(box2d,float8)\r
-       RETURNS box2d\r
-       AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_expand'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.5.0\r
-CREATE OR REPLACE FUNCTION postgis_getbbox(geometry)\r
-       RETURNS box2d\r
-       AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DFLOAT4'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_MakeBox2d(geom1 geometry, geom2 geometry)\r
-       RETURNS box2d\r
-       AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_construct'\r
-       LANGUAGE 'C' IMMUTABLE STRICT;\r
-\r
-\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_Combine_BBox(box2d,geometry)\r
-       RETURNS box2d\r
-       AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_combine'\r
-       LANGUAGE 'C' IMMUTABLE;\r
+-------------------------------------------------------------------\r
+--  BOX2DF TYPE (INTERNAL ONLY)\r
+-------------------------------------------------------------------\r
+--\r
+-- Box2Df type is used by the GiST index bindings. \r
+-- In/out functions are stubs, as all access should be internal.\r
+---\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION box2df_in(cstring)\r
+       RETURNS box2df\r
+       AS 'MODULE_PATHNAME','box2df_in'\r
+       LANGUAGE 'C' IMMUTABLE STRICT; \r
 \r
------------------------------------------------------------------------\r
--- ESTIMATED_EXTENT( <schema name>, <table name>, <column name> )\r
------------------------------------------------------------------------\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_estimated_extent(text,text,text) RETURNS box2d AS\r
-       'MODULE_PATHNAME', 'geometry_estimated_extent'\r
-       LANGUAGE 'C' IMMUTABLE STRICT SECURITY DEFINER;\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION box2df_out(box2df)\r
+       RETURNS cstring\r
+       AS 'MODULE_PATHNAME','box2df_out'\r
+       LANGUAGE 'C' IMMUTABLE STRICT; \r
 \r
------------------------------------------------------------------------\r
--- ESTIMATED_EXTENT( <table name>, <column name> )\r
------------------------------------------------------------------------\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_estimated_extent(text,text) RETURNS box2d AS\r
-       'MODULE_PATHNAME', 'geometry_estimated_extent'\r
-       LANGUAGE 'C' IMMUTABLE STRICT SECURITY DEFINER;\r
+-- Availability: 2.0.0\r
+CREATE TYPE box2df (\r
+       internallength = 16,\r
+       input = box2df_in,\r
+       output = box2df_out,\r
+       storage = plain,\r
+       alignment = double\r
+);\r
 \r
------------------------------------------------------------------------\r
--- FIND_EXTENT( <schema name>, <table name>, <column name> )\r
------------------------------------------------------------------------\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_find_extent(text,text,text) RETURNS box2d AS\r
-$$\r
-DECLARE\r
-       schemaname alias for $1;\r
-       tablename alias for $2;\r
-       columnname alias for $3;\r
-       myrec RECORD;\r
 \r
-BEGIN\r
-       FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") As extent FROM "' || schemaname || '"."' || tablename || '"' LOOP\r
-               return myrec.extent;\r
-       END LOOP;\r
-END;\r
-$$\r
-LANGUAGE 'plpgsql' IMMUTABLE STRICT;\r
+-------------------------------------------------------------------\r
+--  GIDX TYPE (INTERNAL ONLY)\r
+-------------------------------------------------------------------\r
+--\r
+-- GIDX type is used by the N-D and GEOGRAPHY GiST index bindings. \r
+-- In/out functions are stubs, as all access should be internal.\r
+---\r
 \r
+-- Availability: 1.5.0\r
+CREATE OR REPLACE FUNCTION gidx_in(cstring)\r
+       RETURNS gidx\r
+       AS 'MODULE_PATHNAME','gidx_in'\r
+       LANGUAGE 'C' IMMUTABLE STRICT; \r
 \r
------------------------------------------------------------------------\r
--- FIND_EXTENT( <table name>, <column name> )\r
------------------------------------------------------------------------\r
--- Availability: 1.2.2\r
-CREATE OR REPLACE FUNCTION ST_find_extent(text,text) RETURNS box2d AS\r
-$$\r
-DECLARE\r
-       tablename alias for $1;\r
-       columnname alias for $2;\r
-       myrec RECORD;\r
+-- Availability: 1.5.0\r
+CREATE OR REPLACE FUNCTION gidx_out(gidx)\r
+       RETURNS cstring\r
+       AS 'MODULE_PATHNAME','gidx_out'\r
+       LANGUAGE 'C' IMMUTABLE STRICT; \r
 \r
-BEGIN\r
-       FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") As extent FROM "' || tablename || '"' LOOP\r
-               return myrec.extent;\r
-       END LOOP;\r
-END;\r
-$$\r
-LANGUAGE 'plpgsql' IMMUTABLE STRICT;\r
+-- Availability: 1.5.0\r
+CREATE TYPE gidx (\r
+       internallength = variable,\r
+       input = gidx_in,\r
+       output = gidx_out,\r
+       storage = plain,\r
+       alignment = double\r
+);\r
 \r
 -------------------------------------------------------------------\r
 -- BTREE indexes\r
@@ -426,34 +290,13 @@ CREATE OPERATOR CLASS btree_geometry_ops
        FUNCTION        1       geometry_cmp (geom1 geometry, geom2 geometry);\r
 \r
 \r
-\r
 -----------------------------------------------------------------------------\r
--- GiST 2D GEOMETRY-over-GSERIALIZED\r
+-- GiST 2D GEOMETRY-over-GSERIALIZED INDEX\r
 -----------------------------------------------------------------------------\r
---\r
--- Box2Df type is used by the GiST index bindings. \r
--- In/out functions are stubs, as all access should be internal.\r
----\r
--- Availability: 2.0.0\r
-CREATE OR REPLACE FUNCTION box2df_in(cstring)\r
-       RETURNS box2df\r
-       AS 'MODULE_PATHNAME','box2df_in'\r
-       LANGUAGE 'C' IMMUTABLE STRICT; \r
 \r
--- Availability: 2.0.0\r
-CREATE OR REPLACE FUNCTION box2df_out(box2df)\r
-       RETURNS cstring\r
-       AS 'MODULE_PATHNAME','box2df_out'\r
-       LANGUAGE 'C' IMMUTABLE STRICT; \r
-\r
--- Availability: 2.0.0\r
-CREATE TYPE box2df (\r
-       internallength = 16,\r
-       input = box2df_in,\r
-       output = box2df_out,\r
-       storage = plain,\r
-       alignment = double\r
-);\r
+-- ---------- ---------- ---------- ---------- ---------- ---------- ----------\r
+-- GiST Support Functions\r
+-- ---------- ---------- ---------- ---------- ---------- ---------- ----------\r
 \r
 -- Availability: 2.0.0\r
 CREATE OR REPLACE FUNCTION geometry_gist_distance_2d(internal,geometry,int4) \r
@@ -519,6 +362,10 @@ CREATE OR REPLACE FUNCTION geometry_gist_joinsel_2d(internal, oid, internal, sma
 -- GEOMETRY Operators\r
 -----------------------------------------------------------------------------\r
 \r
+-- ---------- ---------- ---------- ---------- ---------- ---------- ----------\r
+-- 2D GEOMETRY Operators\r
+-- ---------- ---------- ---------- ---------- ---------- ---------- ----------\r
+\r
 -- Availability: 2.0.0\r
 CREATE OR REPLACE FUNCTION geometry_overlaps(geom1 geometry, geom2 geometry) \r
        RETURNS boolean \r
@@ -717,6 +564,307 @@ CREATE OPERATOR CLASS gist_geometry_ops_2d
        FUNCTION        7        geometry_gist_same_2d (geom1 geometry, geom2 geometry, internal);\r
 \r
 \r
+-----------------------------------------------------------------------------\r
+-- GiST ND GEOMETRY-over-GSERIALIZED\r
+-----------------------------------------------------------------------------\r
+\r
+-- ---------- ---------- ---------- ---------- ---------- ---------- ----------\r
+-- GiST Support Functions\r
+-- ---------- ---------- ---------- ---------- ---------- ---------- ----------\r
+\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION geometry_gist_consistent_nd(internal,geometry,int4) \r
+       RETURNS bool \r
+       AS 'MODULE_PATHNAME' ,'gserialized_gist_consistent'\r
+       LANGUAGE 'C';\r
+\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION geometry_gist_compress_nd(internal) \r
+       RETURNS internal \r
+       AS 'MODULE_PATHNAME','gserialized_gist_compress'\r
+       LANGUAGE 'C';\r
+\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION geometry_gist_penalty_nd(internal,internal,internal) \r
+       RETURNS internal \r
+       AS 'MODULE_PATHNAME' ,'gserialized_gist_penalty'\r
+       LANGUAGE 'C';\r
+\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION geometry_gist_picksplit_nd(internal, internal) \r
+       RETURNS internal \r
+       AS 'MODULE_PATHNAME' ,'gserialized_gist_picksplit'\r
+       LANGUAGE 'C';\r
+\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION geometry_gist_union_nd(bytea, internal) \r
+       RETURNS internal \r
+       AS 'MODULE_PATHNAME' ,'gserialized_gist_union'\r
+       LANGUAGE 'C';\r
+\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION geometry_gist_same_nd(geometry, geometry, internal) \r
+       RETURNS internal \r
+       AS 'MODULE_PATHNAME' ,'gserialized_gist_same'\r
+       LANGUAGE 'C';\r
+\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION geometry_gist_decompress_nd(internal) \r
+       RETURNS internal \r
+       AS 'MODULE_PATHNAME' ,'gserialized_gist_decompress'\r
+       LANGUAGE 'C';\r
+\r
+-- Availability: 2.0.0\r
+--CREATE OR REPLACE FUNCTION geometry_gist_selectivity_nd (internal, oid, internal, int4)\r
+--     RETURNS float8\r
+--     AS 'MODULE_PATHNAME', 'geometry_gist_selectivity_nd'\r
+--     LANGUAGE 'C';\r
+\r
+-- Availability: 2.0.0\r
+--CREATE OR REPLACE FUNCTION geography_gist_join_selectivity_nd(internal, oid, internal, smallint)\r
+--     RETURNS float8\r
+--     AS 'MODULE_PATHNAME', 'geometry_gist_join_selectivity_nd'\r
+--     LANGUAGE 'C';\r
+\r
+-- ---------- ---------- ---------- ---------- ---------- ---------- ----------\r
+-- N-D GEOMETRY Operators\r
+-- ---------- ---------- ---------- ---------- ---------- ---------- ----------\r
+\r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION geometry_overlaps_nd(geometry, geometry) \r
+       RETURNS boolean \r
+       AS 'MODULE_PATHNAME' ,'gserialized_overlaps'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-- Availability: 2.0.0\r
+CREATE OPERATOR &&& (\r
+       LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlaps_nd,\r
+       COMMUTATOR = '&&&'\r
+       ,RESTRICT = contsel, JOIN = contjoinsel\r
+--     ,RESTRICT = geometry_gist_selectivity_nd \r
+--     ,JOIN = geometry_gist_join_selectivity_nd\r
+);\r
+\r
+-- Availability: 2.0.0\r
+CREATE OPERATOR CLASS gist_geometry_ops_nd\r
+       FOR TYPE geometry USING GIST AS\r
+       STORAGE         gidx,\r
+       OPERATOR        3        &&&    ,\r
+--     OPERATOR        6        ~=     ,\r
+--     OPERATOR        7        ~      ,\r
+--     OPERATOR        8        @      ,\r
+       FUNCTION        1        geometry_gist_consistent_nd (internal, geometry, int4),\r
+       FUNCTION        2        geometry_gist_union_nd (bytea, internal),\r
+       FUNCTION        3        geometry_gist_compress_nd (internal),\r
+       FUNCTION        4        geometry_gist_decompress_nd (internal),\r
+       FUNCTION        5        geometry_gist_penalty_nd (internal, internal, internal),\r
+       FUNCTION        6        geometry_gist_picksplit_nd (internal, internal),\r
+       FUNCTION        7        geometry_gist_same_nd (geometry, geometry, internal);\r
+\r
+\r
+-----------------------------------------------------------------------------\r
+-- Affine transforms\r
+-----------------------------------------------------------------------------\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)\r
+       RETURNS geometry\r
+       AS 'MODULE_PATHNAME', 'LWGEOM_affine'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_Affine($1,  $2, $3, 0,  $4, $5, 0,  0, 0, 1,  $6, $7, 0)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_RotateZ(geometry,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_Affine($1,  cos($2), -sin($2), 0,  sin($2), cos($2), 0,  0, 0, 1,  0, 0, 0)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_RotateZ($1, $2)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_RotateX(geometry,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_Affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_RotateY(geometry,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_Affine($1,  cos($2), 0, sin($2),  0, 1, 0,  -sin($2), 0, cos($2), 0,  0, 0)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_Affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_Translate($1, $2, $3, 0)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_Affine($1,  $2, 0, 0,  0, $3, 0,  0, 0, $4,  0, 0, 0)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_Scale($1, $2, $3, 1)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Transscale(geometry,float8,float8,float8,float8)\r
+       RETURNS geometry\r
+       AS 'SELECT ST_Affine($1,  $4, 0, 0,  0, $5, 0,\r
+               0, 0, 1,  $2 * $4, $3 * $5, 0)'\r
+       LANGUAGE 'SQL' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Shift_Longitude(geometry)\r
+       RETURNS geometry\r
+       AS 'MODULE_PATHNAME', 'LWGEOM_longitude_shift'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-----------------------------------------------------------------------------\r
+--  BOX3D FUNCTIONS\r
+-----------------------------------------------------------------------------\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_XMin(box3d)\r
+       RETURNS FLOAT8\r
+       AS 'MODULE_PATHNAME','BOX3D_xmin'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_YMin(box3d)\r
+       RETURNS FLOAT8\r
+       AS 'MODULE_PATHNAME','BOX3D_ymin'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_ZMin(box3d)\r
+       RETURNS FLOAT8\r
+       AS 'MODULE_PATHNAME','BOX3D_zmin'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_XMax(box3d)\r
+       RETURNS FLOAT8\r
+       AS 'MODULE_PATHNAME','BOX3D_xmax'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_YMax(box3d)\r
+       RETURNS FLOAT8\r
+       AS 'MODULE_PATHNAME','BOX3D_ymax'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_ZMax(box3d)\r
+       RETURNS FLOAT8\r
+       AS 'MODULE_PATHNAME','BOX3D_zmax'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-----------------------------------------------------------------------------\r
+--  BOX2D FUNCTIONS\r
+-----------------------------------------------------------------------------\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_expand(box2d,float8)\r
+       RETURNS box2d\r
+       AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_expand'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.5.0\r
+CREATE OR REPLACE FUNCTION postgis_getbbox(geometry)\r
+       RETURNS box2d\r
+       AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DFLOAT4'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_MakeBox2d(geom1 geometry, geom2 geometry)\r
+       RETURNS box2d\r
+       AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_construct'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
+\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_Combine_BBox(box2d,geometry)\r
+       RETURNS box2d\r
+       AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_combine'\r
+       LANGUAGE 'C' IMMUTABLE;\r
+\r
+-----------------------------------------------------------------------\r
+-- ESTIMATED_EXTENT( <schema name>, <table name>, <column name> )\r
+-----------------------------------------------------------------------\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_estimated_extent(text,text,text) RETURNS box2d AS\r
+       'MODULE_PATHNAME', 'geometry_estimated_extent'\r
+       LANGUAGE 'C' IMMUTABLE STRICT SECURITY DEFINER;\r
+\r
+-----------------------------------------------------------------------\r
+-- ESTIMATED_EXTENT( <table name>, <column name> )\r
+-----------------------------------------------------------------------\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_estimated_extent(text,text) RETURNS box2d AS\r
+       'MODULE_PATHNAME', 'geometry_estimated_extent'\r
+       LANGUAGE 'C' IMMUTABLE STRICT SECURITY DEFINER;\r
+\r
+-----------------------------------------------------------------------\r
+-- FIND_EXTENT( <schema name>, <table name>, <column name> )\r
+-----------------------------------------------------------------------\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_find_extent(text,text,text) RETURNS box2d AS\r
+$$\r
+DECLARE\r
+       schemaname alias for $1;\r
+       tablename alias for $2;\r
+       columnname alias for $3;\r
+       myrec RECORD;\r
+\r
+BEGIN\r
+       FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") As extent FROM "' || schemaname || '"."' || tablename || '"' LOOP\r
+               return myrec.extent;\r
+       END LOOP;\r
+END;\r
+$$\r
+LANGUAGE 'plpgsql' IMMUTABLE STRICT;\r
+\r
+\r
+-----------------------------------------------------------------------\r
+-- FIND_EXTENT( <table name>, <column name> )\r
+-----------------------------------------------------------------------\r
+-- Availability: 1.2.2\r
+CREATE OR REPLACE FUNCTION ST_find_extent(text,text) RETURNS box2d AS\r
+$$\r
+DECLARE\r
+       tablename alias for $1;\r
+       columnname alias for $2;\r
+       myrec RECORD;\r
+\r
+BEGIN\r
+       FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") As extent FROM "' || tablename || '"' LOOP\r
+               return myrec.extent;\r
+       END LOOP;\r
+END;\r
+$$\r
+LANGUAGE 'plpgsql' IMMUTABLE STRICT;\r
+\r
+\r
 -------------------------------------------\r
 -- other lwgeom functions\r
 -------------------------------------------\r
@@ -773,7 +921,7 @@ CREATE OR REPLACE FUNCTION ST_nrings(geometry)
        LANGUAGE 'C' IMMUTABLE STRICT;\r
 \r
 ------------------------------------------------------------------------\r
--- Misures\r
+-- Measures\r
 ------------------------------------------------------------------------\r
 -- Availability: 2.0.0\r
 CREATE OR REPLACE FUNCTION ST_3DLength(geometry)\r
@@ -1063,7 +1211,6 @@ CREATE OR REPLACE FUNCTION ST_MakePoint(float8, float8, float8)
        AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'\r
        LANGUAGE 'C' IMMUTABLE STRICT;\r
 \r
-\r
 -- Availability: 1.2.2\r
 CREATE OR REPLACE FUNCTION ST_MakePoint(float8, float8, float8, float8)\r
        RETURNS geometry\r
index 2d46247106d7192acedff436035a857d558417e1..578aa68505677f4267a9305fc3c351fb1aa03efe 100755 (executable)
@@ -2129,6 +2129,10 @@ FUNCTION st_linestringfromwkb(bytea, integer)
 FUNCTION       st_line_substring(geometry, double precision, double precision)
 FUNCTION       st_linetocurve(geometry)
 FUNCTION       st_locate_along_measure(geometry, double precision)
+FUNCTION       st_locatealong(geometry, double precision)
+FUNCTION       st_locatealong(geometry, double precision, double precision)
+FUNCTION       st_locatebetween(geometry, double precision, double precision)
+FUNCTION       st_locatebetween(geometry, double precision, double precision, double precision)
 FUNCTION       st_locatebetweenelevations(geometry, double precision, double precision)
 FUNCTION       st_locate_between_measures(geometry, double precision, double precision)
 FUNCTION       _st_longestline(geometry, geometry)