--- a/lib/postgis.sql +++ b/lib/postgis.sql @@ -1,1 +1,7788 @@ - +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +-- +-- $Id: postgis.sql.in.c 5385 2010-03-09 00:22:41Z pramsey $ +-- +-- PostGIS - Spatial Types for PostgreSQL +-- http://postgis.refractions.net +-- Copyright 2001-2003 Refractions Research Inc. +-- +-- This is free software; you can redistribute and/or modify it under +-- the terms of the GNU General Public Licence. See the COPYING file. +-- +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +-- +-- WARNING: Any change in this file must be evaluated for compatibility. +-- Changes cleanly handled by postgis_upgrade.sql are fine, +-- other changes will require a bump in Major version. +-- Currently only function replaceble by CREATE OR REPLACE +-- are cleanly handled. +-- +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + +-- INSTALL VERSION: 1.5.1 + +SET client_min_messages TO warning; + +BEGIN; + +------------------------------------------------------------------- +-- SPHEROID TYPE +------------------------------------------------------------------- + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_spheroid_in(cstring) + RETURNS spheroid + AS '$libdir/postgis-1.5','ellipsoid_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_spheroid_out(spheroid) + RETURNS cstring + AS '$libdir/postgis-1.5','ellipsoid_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION spheroid_in(cstring) + RETURNS spheroid + AS '$libdir/postgis-1.5','ellipsoid_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION spheroid_out(spheroid) + RETURNS cstring + AS '$libdir/postgis-1.5','ellipsoid_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE spheroid ( + alignment = double, + internallength = 65, + input = spheroid_in, + output = spheroid_out +); + +------------------------------------------------------------------- +-- GEOMETRY TYPE (lwgeom) +------------------------------------------------------------------- + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_in(cstring) + RETURNS geometry + AS '$libdir/postgis-1.5','LWGEOM_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_out(geometry) + RETURNS cstring + AS '$libdir/postgis-1.5','LWGEOM_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_analyze(internal) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_analyze' + LANGUAGE 'C' VOLATILE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_recv(internal) + RETURNS geometry + AS '$libdir/postgis-1.5','LWGEOM_recv' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_send(geometry) + RETURNS bytea + AS '$libdir/postgis-1.5','LWGEOM_send' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_in(cstring) + RETURNS geometry + AS '$libdir/postgis-1.5','LWGEOM_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_out(geometry) + RETURNS cstring + AS '$libdir/postgis-1.5','LWGEOM_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_analyze(internal) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_analyze' + LANGUAGE 'C' VOLATILE STRICT; + +CREATE OR REPLACE FUNCTION geometry_recv(internal) + RETURNS geometry + AS '$libdir/postgis-1.5','LWGEOM_recv' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_send(geometry) + RETURNS bytea + AS '$libdir/postgis-1.5','LWGEOM_send' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE geometry ( + internallength = variable, + input = geometry_in, + output = geometry_out, + send = geometry_send, + receive = geometry_recv, + delimiter = ':', + analyze = geometry_analyze, + storage = main +); + +------------------------------------------- +-- Affine transforms +------------------------------------------- + +-- Availability: 1.1.2 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_affine' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_affine' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.1.2 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION Affine(geometry,float8,float8,float8,float8,float8,float8) + RETURNS geometry + AS 'SELECT affine($1, $2, $3, 0, $4, $5, 0, 0, 0, 1, $6, $7, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8) + RETURNS geometry + AS 'SELECT affine($1, $2, $3, 0, $4, $5, 0, 0, 0, 1, $6, $7, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.1.2 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION RotateZ(geometry,float8) + RETURNS geometry + AS 'SELECT affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, 0, 0, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_RotateZ(geometry,float8) + RETURNS geometry + AS 'SELECT affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, 0, 0, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.1.2 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION Rotate(geometry,float8) + RETURNS geometry + AS 'SELECT rotateZ($1, $2)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8) + RETURNS geometry + AS 'SELECT rotateZ($1, $2)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.1.2 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION RotateX(geometry,float8) + RETURNS geometry + AS 'SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_RotateX(geometry,float8) + RETURNS geometry + AS 'SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.1.2 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION RotateY(geometry,float8) + RETURNS geometry + AS 'SELECT affine($1, cos($2), 0, sin($2), 0, 1, 0, -sin($2), 0, cos($2), 0, 0, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_RotateY(geometry,float8) + RETURNS geometry + AS 'SELECT affine($1, cos($2), 0, sin($2), 0, 1, 0, -sin($2), 0, cos($2), 0, 0, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION Translate(geometry,float8,float8,float8) + RETURNS geometry + AS 'SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8,float8) + RETURNS geometry + AS 'SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION Translate(geometry,float8,float8) + RETURNS geometry + AS 'SELECT translate($1, $2, $3, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8) + RETURNS geometry + AS 'SELECT translate($1, $2, $3, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.1.0 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION Scale(geometry,float8,float8,float8) + RETURNS geometry + AS 'SELECT affine($1, $2, 0, 0, 0, $3, 0, 0, 0, $4, 0, 0, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8,float8) + RETURNS geometry + AS 'SELECT affine($1, $2, 0, 0, 0, $3, 0, 0, 0, $4, 0, 0, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.1.0 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION Scale(geometry,float8,float8) + RETURNS geometry + AS 'SELECT scale($1, $2, $3, 1)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8) + RETURNS geometry + AS 'SELECT scale($1, $2, $3, 1)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.1.0 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION transscale(geometry,float8,float8,float8,float8) + RETURNS geometry + AS 'SELECT affine($1, $4, 0, 0, 0, $5, 0, + 0, 0, 1, $2 * $4, $3 * $5, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_transscale(geometry,float8,float8,float8,float8) + RETURNS geometry + AS 'SELECT affine($1, $4, 0, 0, 0, $5, 0, + 0, 0, 1, $2 * $4, $3 * $5, 0)' + LANGUAGE 'SQL' IMMUTABLE STRICT; + +-- Availability: 1.1.0 +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION shift_longitude(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_longitude_shift' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_shift_longitude(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_longitude_shift' + LANGUAGE 'C' IMMUTABLE STRICT; + +------------------------------------------------------------------- +-- BOX3D TYPE +------------------------------------------------------------------- + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_box3d_in(cstring) + RETURNS box3d + AS '$libdir/postgis-1.5', 'BOX3D_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_box3d_out(box3d) + RETURNS cstring + AS '$libdir/postgis-1.5', 'BOX3D_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box3d_in(cstring) + RETURNS box3d + AS '$libdir/postgis-1.5', 'BOX3D_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box3d_out(box3d) + RETURNS cstring + AS '$libdir/postgis-1.5', 'BOX3D_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE box3d ( + alignment = double, + internallength = 48, + input = box3d_in, + output = box3d_out +); + +-- Temporary box3d aggregate type to retain full double precision +-- for ST_Extent(). Should be removed when we change the output +-- type of ST_Extent() to return something other than BOX2DFLOAT4. +CREATE OR REPLACE FUNCTION box3d_extent_in(cstring) + RETURNS box3d_extent + AS '$libdir/postgis-1.5', 'BOX3D_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box3d_extent_out(box3d_extent) + RETURNS cstring + AS '$libdir/postgis-1.5', 'BOX3D_extent_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE box3d_extent ( + alignment = double, + internallength = 48, + input = box3d_extent_in, + output = box3d_extent_out +); + +-- Availability: 1.4.0 +CREATE OR REPLACE FUNCTION box3d_extent(box3d_extent) + RETURNS box3d + AS '$libdir/postgis-1.5', 'BOX3D_extent_to_BOX3D' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box2d(box3d_extent) + RETURNS box2d + AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry(box3d_extent) + RETURNS geometry + AS '$libdir/postgis-1.5','BOX3D_to_LWGEOM' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- End of temporary hack + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION xmin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_xmin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_XMin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_xmin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION ymin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_ymin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_YMin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_ymin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION zmin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_zmin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_ZMin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_zmin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION xmax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_xmax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_XMax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_xmax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION ymax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_ymax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_YMax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_ymax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION zmax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_zmax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_ZMax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_zmax' + LANGUAGE 'C' IMMUTABLE STRICT; + +------------------------------------------------------------------- +-- CHIP TYPE +------------------------------------------------------------------- + +CREATE OR REPLACE FUNCTION chip_in(cstring) + RETURNS chip + AS '$libdir/postgis-1.5','CHIP_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION chip_out(chip) + RETURNS cstring + AS '$libdir/postgis-1.5','CHIP_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION ST_chip_in(cstring) + RETURNS chip + AS '$libdir/postgis-1.5','CHIP_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION ST_chip_out(chip) + RETURNS cstring + AS '$libdir/postgis-1.5','CHIP_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE chip ( + alignment = double, + internallength = variable, + input = chip_in, + output = chip_out, + storage = extended +); + +----------------------------------------------------------------------- +-- BOX2D +----------------------------------------------------------------------- + + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_box2d_in(cstring) + RETURNS box2d + AS '$libdir/postgis-1.5','BOX2DFLOAT4_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_box2d_out(box2d) + RETURNS cstring + AS '$libdir/postgis-1.5','BOX2DFLOAT4_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box2d_in(cstring) + RETURNS box2d + AS '$libdir/postgis-1.5','BOX2DFLOAT4_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box2d_out(box2d) + RETURNS cstring + AS '$libdir/postgis-1.5','BOX2DFLOAT4_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE box2d ( + internallength = 16, + input = box2d_in, + output = box2d_out, + storage = plain +); + + +------------------------------------------------------------------- +-- BTREE indexes +------------------------------------------------------------------- + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_lt(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_lt' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_le(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_le' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_gt(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_gt' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_ge(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_ge' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_eq(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_eq' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_cmp(geometry, geometry) + RETURNS integer + AS '$libdir/postgis-1.5', 'lwgeom_cmp' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_lt(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_lt' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_le(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_le' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_gt(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_gt' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_ge(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_ge' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_eq(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_eq' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_cmp(geometry, geometry) + RETURNS integer + AS '$libdir/postgis-1.5', 'lwgeom_cmp' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- +-- Sorting operators for Btree +-- + +CREATE OPERATOR < ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_lt, + COMMUTATOR = '>', NEGATOR = '>=', + RESTRICT = contsel, JOIN = contjoinsel +); + +CREATE OPERATOR <= ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_le, + COMMUTATOR = '>=', NEGATOR = '>', + RESTRICT = contsel, JOIN = contjoinsel +); + +CREATE OPERATOR = ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_eq, + COMMUTATOR = '=', -- we might implement a faster negator here + RESTRICT = contsel, JOIN = contjoinsel +); + +CREATE OPERATOR >= ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_ge, + COMMUTATOR = '<=', NEGATOR = '<', + RESTRICT = contsel, JOIN = contjoinsel +); +CREATE OPERATOR > ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_gt, + COMMUTATOR = '<', NEGATOR = '<=', + RESTRICT = contsel, JOIN = contjoinsel +); + + +CREATE OPERATOR CLASS btree_geometry_ops + DEFAULT FOR TYPE geometry USING btree AS + OPERATOR 1 < , + OPERATOR 2 <= , + OPERATOR 3 = , + OPERATOR 4 >= , + OPERATOR 5 > , + FUNCTION 1 geometry_cmp (geometry, geometry); + + + +------------------------------------------------------------------- +-- GiST indexes +------------------------------------------------------------------- + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION postgis_gist_sel (internal, oid, internal, int4) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel' + LANGUAGE 'C'; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION postgis_gist_joinsel(internal, oid, internal, smallint) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel' + LANGUAGE 'C'; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_postgis_gist_sel (internal, oid, internal, int4) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel' + LANGUAGE 'C'; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_postgis_gist_joinsel(internal, oid, internal, smallint) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel' + LANGUAGE 'C'; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overleft(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overleft' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overright(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overright' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overabove(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overabove' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overbelow(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overbelow' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_left(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_left' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_right(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_right' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_above(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_above' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_below(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_below' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_contain(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_contain' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_contained(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_contained' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overlap(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overlap' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_same(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_samebox' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION geometry_same(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_samebox' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_gist_sel (internal, oid, internal, int4) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION geometry_gist_joinsel(internal, oid, internal, smallint) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION geometry_overleft(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overleft' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_overright(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overright' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_overabove(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overabove' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_overbelow(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overbelow' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_left(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_left' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_right(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_right' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_above(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_above' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_below(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_below' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_contain(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_contain' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_contained(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_contained' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_overlap(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overlap' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_samebox(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_samebox' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OPERATOR << ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_left, + COMMUTATOR = '>>', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR &< ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overleft, + COMMUTATOR = '&>', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR <<| ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_below, + COMMUTATOR = '|>>', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR &<| ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overbelow, + COMMUTATOR = '|&>', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR && ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlap, + COMMUTATOR = '&&', + RESTRICT = geometry_gist_sel, JOIN = geometry_gist_joinsel +); + +CREATE OPERATOR &> ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overright, + COMMUTATOR = '&<', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR >> ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_right, + COMMUTATOR = '<<', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR |&> ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overabove, + COMMUTATOR = '&<|', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR |>> ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_above, + COMMUTATOR = '<<|', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR ~= ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_samebox, + COMMUTATOR = '~=', + RESTRICT = eqsel, JOIN = eqjoinsel +); + +CREATE OPERATOR @ ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_contained, + COMMUTATOR = '~', + RESTRICT = contsel, JOIN = contjoinsel +); + +CREATE OPERATOR ~ ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_contain, + COMMUTATOR = '@', + RESTRICT = contsel, JOIN = contjoinsel +); + +-- gist support functions + +CREATE OR REPLACE FUNCTION LWGEOM_gist_consistent(internal,geometry,int4) + RETURNS bool + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_consistent' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_compress(internal) + RETURNS internal + AS '$libdir/postgis-1.5','LWGEOM_gist_compress' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_penalty(internal,internal,internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_penalty' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_picksplit(internal, internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_picksplit' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_union(bytea, internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_union' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_same(box2d, box2d, internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_same' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_decompress(internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_decompress' + LANGUAGE 'C'; + +------------------------------------------- +-- GIST opclass index binding entries. +------------------------------------------- +-- +-- Create opclass index bindings for PG>=73