[postgis-commits] svn - r2774 - in trunk: . loader lwgeom macros
regress
postgis-commits at postgis.refractions.net
postgis-commits at postgis.refractions.net
Wed May 14 10:10:20 PDT 2008
Author: mcayland
Date: 2008-05-14 10:10:19 -0700 (Wed, 14 May 2008)
New Revision: 2774
Added:
trunk/loader/Makefile.pgsql2shp.in
trunk/loader/Makefile.shp2pgsql
trunk/lwgeom/Makefile.in
trunk/lwgeom/lwpostgis.sql.in.c
trunk/lwgeom/sqldefines.h.in
trunk/macros/
trunk/macros/ac_proj4_version.m4
trunk/postgis_config.h.in
trunk/regress/Makefile.in
Removed:
trunk/Makefile.config.in
trunk/config.h.in
trunk/lwgeom/Makefile.shlib
trunk/lwgeom/lwpostgis.sql.in
trunk/regress/Makefile
Modified:
trunk/HOWTO_RELEASE
trunk/Version.config
trunk/autogen.sh
trunk/configure.in
trunk/loader/Makefile
trunk/loader/pgsql2shp.c
trunk/loader/shp2pgsql.c
trunk/lwgeom/Makefile
trunk/lwgeom/liblwgeom.c
trunk/lwgeom/liblwgeom.h
trunk/lwgeom/long_xact.sql.in
trunk/lwgeom/lwgeom_btree.c
trunk/lwgeom/lwgeom_dump.c
trunk/lwgeom/lwgeom_estimate.c
trunk/lwgeom/lwgeom_functions_basic.c
trunk/lwgeom/lwgeom_geos_c.c
trunk/lwgeom/lwgeom_gist.c
trunk/lwgeom/lwgeom_inout.c
trunk/lwgeom/lwgeom_pg.c
trunk/lwgeom/lwgeom_pg.h
trunk/lwgeom/lwgeom_transform.c
trunk/lwgeom/pgsql_compat.h
trunk/lwgeom/sqldefines.h
trunk/lwgeom/sqlmm.sql.in
trunk/regress/run_test
trunk/regress/sql-mm-circularstring_expected.in
trunk/regress/sql-mm-compoundcurve_expected.in
trunk/regress/sql-mm-curvepoly_expected.in
trunk/regress/sql-mm-multicurve_expected.in
trunk/regress/sql-mm-multisurface_expected.in
Log:
Commit new build system based upon PGXS. Due to the large number of changes, please refer to http://postgis.refractions.net/pipermail/postgis-devel/2008-May/003010.html.
Modified: trunk/HOWTO_RELEASE
===================================================================
--- trunk/HOWTO_RELEASE 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/HOWTO_RELEASE 2008-05-14 17:10:19 UTC (rev 2774)
@@ -5,16 +5,16 @@
Versioning Scheme
-----------------
-Release version is composed by REL_MAJOR_VERSION, REL_MINOR_VERSION
-and REL_MICRO_VERSION components.
+Release version is composed by POSTGIS_MAJOR_VERSION, POSTGIS_MINOR_VERSION
+and POSTGIS_MICRO_VERSION components.
-By default only [REL_MICRO_VERSION] increments between releases.
+By default only [POSTGIS_MICRO_VERSION] increments between releases.
-[REL_MINOR_VERSION] is incremented (and MICRO set to 0) when minor
+[POSTGIS_MINOR_VERSION] is incremented (and MICRO set to 0) when minor
additions have been introduced (one or two functions can be considered
*micro* additions)
-[REL_MAJOR_VERSION] is incremented (and MICRO and MINOR set to 0) when
+[POSTGIS_MAJOR_VERSION] is incremented (and MICRO and MINOR set to 0) when
a dump/reload of existing spatial databases is *REQUIRED* for things
to work or rather *HIGHLY RECOMMENDED* to get new functionalities.
Deleted: trunk/Makefile.config.in
===================================================================
--- trunk/Makefile.config.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/Makefile.config.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,167 +0,0 @@
-#---------------------------------------------------------------
-# Configuration Directives
-#---------------------------------------------------------------
-
-#
-# We recommend that you install the Proj4 and GEOS libraries
-# referenced below to get the most use out of your PostGIS
-# database.
-
-#
-# Set USE_PROJ to 1 for Proj4 reprojection support (recommended)
-#
-# Reprojection allows you to transform coordinate systems
-# in the database with the Transform() function.
-#
-# Download from: http://www.remotesensing.org/proj
-#
-USE_PROJ=@USE_PROJ@
-PROJ_DIR=@PROJ_DIR@
-PROJ_LIBDIR=@PROJ_LIBDIR@
-
-#
-# Set USE_GEOS to 1 for GEOS spatial predicate and operator
-# support (recommended).
-# GEOS installation directory defaults to /usr/local,
-# set GEOS_DIR environment variable to change it.
-#
-# GEOS allows you to do exact topological tests, such as
-# Intersects() and Touches(), as well as geometry operations,
-# such as Buffer(), GeomUnion() and Difference().
-#
-# Download from: http://geos.refractions.net
-#
-# PostGIS >= 1.2.0 requires a CAPI GEOS (GEOS >= 2.2.0)
-#
-USE_GEOS=@USE_GEOS@
-GEOS_DIR=@GEOS_DIR@
-GEOS_LDFLAGS=@GEOS_LDFLAGS@
-GEOS_VERNUM=@GEOS_VERNUM@
-
-#
-# Set USE_JTS to 1 if you have libjts installed.
-#
-USE_JTS=@USE_JTS@
-JTS_INCLUDES=@JTS_INCLUDES@
-JTS_LIBDIR=@JTS_LIBDIR@
-
-#
-# Set USE_STATS to 1 for new GiST statistics collection support
-# Note that this support requires additional columns in
-# GEOMETRY_COLUMNS, so see the list archives for info or
-# install a fresh database using postgis.sql.
-# This option is useless for builds against PGSQL>=80 (stats
-# are always gathered in that case, and you don't need additional
-# columns in geometry_columns).
-#
-USE_STATS=1
-
-#
-# Set AUTOCACHE_BBOX to 0 if you want finer control over
-# bounding box computation and caching for your geometries.
-# If you do, bbox computattion strategies are listed in
-# the file lwgeom/BBOXCACHE_BEHAVIOURS, but don't expect
-# them to be easy nor consistent.
-#
-AUTOCACHE_BBOX=1
-
-#
-# Set USE_ICONV to 1 if you want the loader (shp2pgsql)
-# to support UTF-8 output.
-#
-USE_ICONV=@USE_ICONV@
-ICONV_LDFLAGS=@ICONV_LDFLAGS@
-
-#
-# PGSQL
-#
-PGCONFIG=@PGCONFIG@
-PGFEINCLUDES=@PGFEINCLUDES@
-PGBEINCLUDES=@PGBEINCLUDES@
-PGFELIBS=@PGFELIBS@
-PGBELIBS=@PGBELIBS@
-PORTNAME=@PORTNAME@
-
-#
-# Docbook
-#
-XSLBASE=@XSLBASE@
-XSLTPROC=@XSLTPROC@
-PDFXMLTEX=@PDFXMLTEX@
-DB2PDF=@DB2PDF@
-JW=@JW@
-DOC_RULE=@DOC_RULE@
-
-#
-# Compilers
-#
-CC=@CC@
-CXX=@CXX@
-ELF_SYSTEM=@ELF_SYS@
-
-#
-# Other programs
-#
-PERL=@PERL@
-FLEX=@FLEX@
-YACC=@YACC@
-LN_S=@LN_S@
-INSTALL=@INSTALL@ -c
-PWDREGRESS=@PWDREGRESS@
-INSTALL_DATA=$(INSTALL) -m 644
-INSTALL_BIN=$(INSTALL) -m 755
-INSTALL_LIB=$(INSTALL) -m 755
-INSTALL_SHLIB=$(INSTALL_LIB)
-
-#
-# PATHS
-#
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-bindir=@bindir@
-datadir=@datadir@
-mandir=@mandir@
-docdir=@docdir@
-libexecdir=@libexecdir@
-libdir=@libdir@
-LPATH=@LPATH@
-
-#
-# DLL
-#
-DLSUFFIX=@DLSUFFIX@
-DLFLAGS=@DLFLAGS@
-# these are for win32 and cygwin platforms
-DLLTOOL=@DLLTOOL@
-DLLWRAP=@DLLWRAP@
-
-#
-# EXE
-#
-EXE=@EXE@
-
-#
-# HOST OS
-#
-HOST_OS=@HOST_OS@
-
-
-#---------------------------------------------------------------
-# END OF CONFIGURATION
-#---------------------------------------------------------------
-
-# Use JTS instead of GEOS if available
-ifeq ($(USE_JTS),1)
- USE_GEOS=0
-endif
-
-#---------------------------------------------------------------
-# Test the version string and set the USE_VERSION macro
-# appropriately. eg:
-#
-# pg_config --version => PostgreSQL 8.3.1
-#
-PG_VERSION_MAJOR=$(shell $(PGCONFIG) --version | cut -f2 -d' ' | cut -f1 -d.)
-PG_VERSION_MINOR=$(shell $(PGCONFIG) --version | cut -f2 -d' ' | cut -f2 -d.)
-USE_VERSION=$(PG_VERSION_MAJOR)$(PG_VERSION_MINOR)
-
Modified: trunk/Version.config
===================================================================
--- trunk/Version.config 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/Version.config 2008-05-14 17:10:19 UTC (rev 2774)
@@ -3,7 +3,7 @@
# See HOWTO_RELEASE file in SVN for definitions of those three.
-REL_MAJOR_VERSION=1
-REL_MINOR_VERSION=3
-REL_MICRO_VERSION=4SVN
+POSTGIS_MAJOR_VERSION=1
+POSTGIS_MINOR_VERSION=4
+POSTGIS_MICRO_VERSION=0
Modified: trunk/autogen.sh
===================================================================
(Binary files differ)
Deleted: trunk/config.h.in
===================================================================
--- trunk/config.h.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/config.h.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,3 +0,0 @@
-#undef HAVE_ICONV_H
-#undef USE_GEOS
-#undef USE_JTS
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/configure.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,625 +1,249 @@
-AC_INIT(README.postgis)
-AC_CONFIG_HEADER(config.h)
+dnl
+dnl PostGIS build system
+dnl
+dnl Written by Mark Cave-Ayland
+dnl
-dnl AC_ARG_ENABLE(autoconf, [ --enable-autoconf really use autoconf],
-dnl AC_MSG_RESULT(Using autoconf),
-dnl AC_MSG_ERROR([
-dnl
-dnl Autoconf-based configuration is not widely tested.
-dnl If you want to use it anyway specify --enable-autoconf.
-dnl ])
-dnl )
+AC_INIT()
+AC_CONFIG_HEADERS([postgis_config.h])
dnl
dnl Compilers
dnl
AC_PROG_CC
+AC_PROG_CPP
AC_PROG_CXX
-AC_PROG_LN_S
dnl
-dnl iconv support (might fail in case of non-default iconv installation)
+dnl Version Information imported from Version.config
dnl
-AC_SUBST(USE_ICONV)
-AC_SUBST(ICONV_LDFLAGS)
-ICONV_LDFLAGS=
-USE_ICONV=1
-AC_ARG_WITH(iconv,
-[ --without-iconv disable unicode support],
- if test "$with_iconv" = "no"; then
- USE_ICONV=0
- fi
-)
+POSTGIS_MAJOR_VERSION=`cat Version.config | grep POSTGIS_MAJOR_VERSION | sed 's/[[^=]]*=\([[0-9]]\)/\1/g'`
+POSTGIS_MINOR_VERSION=`cat Version.config | grep POSTGIS_MINOR_VERSION | sed 's/[[^=]]*=\([[0-9]]\)/\1/g'`
+POSTGIS_MICRO_VERSION=`cat Version.config | grep POSTGIS_MICRO_VERSION | sed 's/[[^=]]*=\([[0-9]]\)/\1/g'`
-if test "$USE_ICONV" = 1; then
- AC_CHECK_LIB(iconv, iconv_open,
- USE_ICONV=1
- ICONV_LDFLAGS=-liconv
- ,
- AC_CHECK_LIB(iconv, libiconv_open,
- USE_ICONV=1
- ICONV_LDFLAGS=-liconv
- ,
- AC_CHECK_LIB(c, iconv_open,
- USE_ICONV=1
- ,
- USE_ICONV=0
- )
- )
- )
-fi
-AC_CHECK_HEADERS(iconv.h)
-
-
-
dnl
-dnl host operating system
+dnl Detect the version of PostgreSQL installed on the system
dnl
-AC_CANONICAL_HOST
-dnl
-dnl Search for pg_config and setup pgsql stuff
-dnl
-AC_SUBST(PGCONFIG)
-PGCONFIG=
-AC_ARG_WITH(pgsql,
-[ --with-pgsql[[=ARG]] build for a specific pgsql version
- [[ARG=path to pg_config]]],
- if test "$with_pgsql" != "no" -a "$with_pgsql" != "yes"; then
- if test ! -f "$with_pgsql"; then
- AC_MSG_ERROR([Invalid argument to --with-pgsql]);
- fi
- PGCONFIG="$with_pgsql"
- fi
-)
-if test -z "$PGCONFIG"; then
+AC_ARG_WITH([pgconfig], [Specify the path to an alternative pg_config], [PGCONFIG="$withval"], [PGCONFIG=""])
+if test "x$PGCONFIG" = "x"; then
+ dnl PGCONFIG was not specified, so search within the current path
AC_PATH_PROG([PGCONFIG], [pg_config])
-fi
-if test -z "$PGCONFIG"; then
- AC_MSG_ERROR([PostgreSQL is required by PostGIS]);
-fi
-AC_SUBST(PGFEINCLUDES)
-AC_SUBST(PGBEINCLUDES)
-AC_SUBST(PGFELIBS)
-AC_SUBST(PGBELIBS)
-AC_SUBST(PGBIN)
-AC_SUBST(PGTEMPLATE)
-AC_SUBST(LPATH)
-PGFEINCLUDES="-I"`${PGCONFIG} --includedir`
-PGFELIBS="-L"`${PGCONFIG} --libdir`" -lpq " #(1)# `${PGCONFIG} --libs 2> /dev/null`
-#(1)#
-# We don't really want to link to more libs then required, see:
-# http://postgis.refractions.net/pipermail/postgis-devel/2006-May/002124.html
-PGBELIBS="-L"`${PGCONFIG} --libdir`" -lpostgres"
-PGBEINCLUDES="-I"`${PGCONFIG} --includedir-server`
-PGBIN=`${PGCONFIG} --bindir`
-dnl
-dnl MingW requires use of pwd -W to give proper Windows (not MingW) paths
-dnl for in-place regression tests
-dnl
-case $host_os in
- *mingw*)
- PWDREGRESS="pwd -W"
- ;;
- *)
- PWDREGRESS="pwd"
- ;;
-esac
-AC_SUBST(PWDREGRESS)
-
-dnl
-dnl Test for GEOS
-dnl
-
-AC_SUBST(USE_GEOS)
-AC_SUBST(GEOS_DIR)
-AC_SUBST(GEOS_LDFLAGS)
-AC_SUBST(GEOS_VERNUM)
-USE_GEOS=0
-GEOS_DIR=
-GEOS_LDFLAGS=
-GEOS_VERNUM=10
-
-AC_PATH_PROG([GEOSCONFIG], [geos-config])
-if test -n "$GEOSCONFIG"; then
- USE_GEOS=1
-fi
-
-AC_ARG_WITH(geos,
-[ --with-geos[[=ARG]] enable spatial predicates and operators using GEOS
- [[ARG=path to geos-config]]],
- if test "$with_geos" = "no"; then
- USE_GEOS=0
+ dnl If we couldn't find pg_config, display an error
+ if test "x$PGCONFIG" = "x"; then
+ AC_MSG_ERROR([could not find pg_config within the current path. You may need to try re-running configure with a --with-pgconfig parameter.])
+ fi
+else
+ dnl PGCONFIG was specified; display a message to the user
+ if test "x$PGCONFIG" = "xyes"; then
+ AC_MSG_ERROR([you must specify a parameter to --with-pgconfig, e.g. --with-pgconfig=/path/to/pg_config])
else
- if test "$with_geos" != "yes"; then
- if test ! -f "$with_geos"; then
- AC_MSG_ERROR([Invalid argument to --with-geos]);
- else
- GEOSCONFIG="$with_geos"
- USE_GEOS=1
- AC_MSG_RESULT([Using specified geos-config file: $GEOSCONFIG])
- fi
+ if test -f $PGCONFIG; then
+ AC_MSG_RESULT([Using user-specified pg_config file: $PGCONFIG])
+ else
+ AC_MSG_ERROR([the user-specified pg_config file $PGCONFIG does not exist])
fi
fi
-)
+fi
-if test $USE_GEOS -gt 0; then
+dnl Extract the version information from pg_config
+dnl Note: we extract the major & minor separately, ensure they are numeric, and then combine to give
+dnl the final version. This is to guard against user error...
+PGSQL_MAJOR_VERSION=`$PGCONFIG --version | sed 's/[[A-Za-z ]]*//' | cut -d. -f1 | sed 's/[[^0-9]]//g'`
+PGSQL_MINOR_VERSION=`$PGCONFIG --version | sed 's/[[A-Za-z ]]*//' | cut -d. -f2 | sed 's/[[^0-9]]//g'`
+POSTGIS_PGSQL_VERSION="$PGSQL_MAJOR_VERSION$PGSQL_MINOR_VERSION"
- GEOS_DIR=`$GEOSCONFIG --prefix`
- GEOS_LDFLAGS=`$GEOSCONFIG --ldflags 2> /dev/null`
-
- if test x"$GEOS_LDFLAGS" = "x"; then
- # older geos-config versions did not
- # support the --ldflags switch, we'll
- # default to GEOS_DIR/lib in this case.
- #
- GEOS_LDFLAGS="-L${GEOS_DIR}/lib"
+dnl Ensure that we are using PostgreSQL >= 8.1
+if test ! "$PGSQL_MAJOR_VERSION" -ge 8; then
+ AC_MSG_ERROR([PostGIS requires PostgreSQL >= 8.1])
+else
+ if test "$PGSQL_MAJOR_VERSION" -eq 8; then
+ if test ! "$PGSQL_MINOR_VERSION" -ge 1; then
+ AC_MSG_ERROR([PostGIS requires PostgreSQL >= 8.1])
+ fi
fi
+fi
- GEOS_MAJOR=`$GEOSCONFIG --version | cut -d. -f1`
- GEOS_MINOR=`$GEOSCONFIG --version | cut -d. -f2`
- GEOS_VERNUM=`expr $GEOS_MAJOR "*" 10`
- GEOS_VERNUM=`expr $GEOS_VERNUM "+" $GEOS_MINOR`
+dnl Note: We don't need the server-side LDFLAGS or CPPFLAGS because we get these from PGXS
- # GEOS >= 3.0.0 always has CAPI, however only GEOS >= 2.2.0 has CAPI support
- # so abort if CAPI support is not available.
- if test $GEOS_VERNUM -lt 22; then
- AC_MSG_ERROR([PostGIS version >= 1.2.0 requires GEOS version >= 2.2.0])
- fi
+dnl Extract the linker and include flags for the frontend (for programs that use libpq)
+PGSQL_FE_LDFLAGS=-L`$PGCONFIG --libdir`
+PGSQL_FE_CPPFLAGS=-I`$PGCONFIG --includedir`
-fi
+AC_SUBST([PGSQL_FE_LDFLAGS])
+AC_SUBST([PGSQL_FE_CPPFLAGS])
-AC_SUBST(USE_PROJ)
-AC_SUBST(PROJ_DIR)
-AC_SUBST(PROJ_LIBDIR)
-USE_PROJ=0
-PROJ_DIR=
-PROJ_LIBDIR=
-AC_PATH_PROG([PROJ], [proj])
-if test -n "$PROJ"; then
- USE_PROJ=1
- PROJ_DIR=`dirname ${PROJ}`/..
- owd=`pwd`; cd ${PROJ_DIR}; PROJ_DIR=`pwd`; cd $owd;
-fi
-AC_ARG_WITH(proj,
- [ --with-proj[[=DIR]] enable reprojection support],
- if test "$with_proj" = "no"; then
- USE_PROJ=0
- else
- USE_PROJ=1
- if test "$with_proj" != "yes"; then
- PROJ_DIR=$with_proj
- fi
- fi
-)
-if test $USE_PROJ -gt 0; then
- if test ! -f $PROJ_DIR/include/projects.h; then
- AC_MSG_ERROR([Can't find proj dir.]);
- fi
- PROJ_LIBDIR=${PROJ_DIR}/lib
-fi
-AC_ARG_WITH(proj-libdir,
-[ --with-proj-libdir=PATH path to PROJ4 libdir],
-[
-case "$with_proj_libdir" in
- no|yes)
- AC_MSG_ERROR([Invalid argument to --with-proj-libdir])
- ;;
- *)
- PROJ_LIBDIR=${with_proj_libdir}
- ;;
-esac
-], with_proj_libdir=no)
+dnl Ensure that we can parse libpq-fe.h
+CPPFLAGS_SAVE="$CPPFLAGS"
+CPPFLAGS="$PGSQL_FE_CPPFLAGS"
+AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([could not find libpq-fe.h])])
+CPPFLAGS="$CPPFLAGS_SAVE"
-AC_SUBST(USE_JTS)
-AC_SUBST(JTS_INCLUDES)
-AC_SUBST(JTS_LIBDIR)
-USE_JTS=0
-JTS_INCLUDES=
-JTS_INCLUDES=
-AC_ARG_WITH(jts,
-[ --with-jts[[=ARG]] use JTS for spatial predicates and operators
- [[ARG=path to jts-config]]],
- if test "$with_jts" != "no"; then
- USE_JTS=1
- if test "$with_jts" != "yes"; then
- if test ! -f "$with_jts"; then
- AC_MSG_ERROR([Invalid argument to --with-jts]);
- else
- JTSCONFIG=$with_jts
- fi
- fi
- fi
-)
-if test $USE_JTS -gt 0; then
- if test -z "$JTSCONFIG"; then
- AC_PATH_PROG([JTSCONFIG], [jts-config])
- if test -z "$JTSCONFIG"; then
- AC_MSG_ERROR([Can't find jts-config]);
- fi
- fi
- JTS_INCLUDES=`$JTSCONFIG --includedir`
- JTS_LIBDIR=`$JTSCONFIG --libdir`
-fi
+dnl Ensure we can link against libpq
+LIBS_SAVE="$LIBS"
+LIBS="$PGSQL_FE_LDFLAGS"
+AC_CHECK_LIB([pq], [PQserverVersion],
+ [],
+ [AC_MSG_ERROR([could not find libpq])],
+ [])
+LIBS="$LIBS_SAVE"
-dnl
-dnl Search flex and yacc
-dnl
-AC_SUBST(FLEX)
-AC_PATH_PROG([FLEX], [flex])
-if test -z "$FLEX"; then
- AC_MSG_ERROR(Can't find 'flex');
-fi
+AC_DEFINE_UNQUOTED([POSTGIS_PGSQL_VERSION], [$POSTGIS_PGSQL_VERSION], [PostgreSQL server version])
+AC_SUBST([POSTGIS_PGSQL_VERSION])
-AC_SUBST(DLLWRAP)
-AC_PATH_PROG([DLLWRAP], [dllwrap])
-AC_SUBST(DLLTOOL)
-AC_PATH_PROG([DLLTOOL], [dlltool])
-dnl AC_SUBST(YACC)
-dnl AC_PATH_PROG([YACC], [yacc])
-AC_PROG_YACC
-if test -z "$YACC"; then
- AC_MSG_ERROR(Can't find 'yacc');
-fi
-
dnl
-dnl Find 'install'
+dnl Detect the version of GEOS installed on the system
dnl
-dnl AC_PATH_PROG([INSTALL], [install])
-dnl if test -z "$INSTALL"; then
-dnl AC_MSG_ERROR(Can't find 'install');
-dnl fi
-AC_SUBST(INSTALL)
-INSTALL=`pwd`"/install-sh"
-dnl
-dnl Search perl
-dnl
-AC_SUBST(PERL)
-AC_PATH_PROG([PERL], [perl])
-if test -z "$PERL"; then
- AC_MSG_ERROR(Can't find 'perl');
-fi
+AC_ARG_WITH([geosconfig], [Specify the path to an alternative geos-config], [GEOSCONFIG="$withval"], [GEOSCONFIG=""])
+if test "x$GEOSCONFIG" = "x"; then
+ dnl GEOSCONFIG was not specified, so search within the current path
+ AC_PATH_PROG([GEOSCONFIG], [geos-config])
-AC_SUBST(docdir)
-docdir='${prefix}/share/doc'
-AC_ARG_WITH(docdir,
-[ --with-docdir=DIR install the documentation in DIR [[PREFIX/share/doc]]],
- if test "$with_docdir" = "yes"; then
- AC_MSG_ERROR([option --with-docdir requires an argument])
+ dnl If we couldn't find geos-config, display an error
+ if test "x$GEOSCONFIG" = "x"; then
+ AC_MSG_ERROR([could not find geos-config within the current path. You may need to try re-running configure with a --with-geosconfig parameter.])
fi
- if test "$with_docdir" != "no"; then
- docdir="$with_docdir"
+else
+ dnl GEOSCONFIG was specified; display a message to the user
+ if test "x$GEOSCONFIG" = "xyes"; then
+ AC_MSG_ERROR([you must specify a parameter to --with-geosconfig, e.g. --with-geosconfig=/path/to/geos-config])
+ else
+ if test -f $GEOSCONFIG; then
+ AC_MSG_RESULT([Using user-specified geos-config file: $GEOSCONFIG])
+ else
+ AC_MSG_ERROR([the user-specified geos-config file $GEOSCONFIG does not exist])
+ fi
fi
-)
+fi
-dnl
-dnl Find 'html/docbook.xsl'
-dnl
-AC_SUBST(XSLBASE)
-XSLBASE=
-AC_ARG_WITH(xsl,
-[ --with-xsl=DIR Specify the DIR containing html/docbook.xsl stylesheet],
- if test "$with_xsl" = yes; then
- AC_MSG_ERROR([option --with-xsl requires an argument])
- fi
- if test "$with_xsl" != "no"; then
- xsl="$with_xsl"
- fi
- ,
- SEARCHPATH="
- /usr/share/sgml/docbook/xsl-stylesheets
- /usr/share/xml/docbook/stylesheet/nwalsh
- /usr/share/sgml/docbook/stylesheet/xsl/nwalsh
- "
- for p in ${SEARCHPATH}; do
- if test -r "${p}"/html/docbook.xsl; then
- xsl="${p}"
- break
- fi
- done
-)
-XSLBASE="${xsl}"
+dnl Extract the version information from pg_config
+dnl Note: we extract the major & minor separately, ensure they are numeric, and then combine to give
+dnl the final version. This is to guard against user error...
+GEOS_MAJOR_VERSION=`$GEOSCONFIG --version | cut -d. -f1 | sed 's/[[^0-9]]//g'`
+GEOS_MINOR_VERSION=`$GEOSCONFIG --version | cut -d. -f2 | sed 's/[[^0-9]]//g'`
+POSTGIS_GEOS_VERSION="$GEOS_MAJOR_VERSION$GEOS_MINOR_VERSION"
-dnl
-dnl Search for other binaries needed to build docs
-dnl
-AC_PATH_PROG([XSLTPROC], [xsltproc])
-AC_PATH_PROG([PDFXMLTEX], [pdfxmltex])
-AC_PATH_PROG([DB2PDF], [db2pdf])
-AC_PATH_PROG([JW], [jw])
-AC_SUBST(XSLTPROC)
-AC_SUBST(PDFXMLTEX)
-AC_SUBST(JW)
-
-DOC_RULE=requirements_not_met
-if test -n "${XSLBASE}"; then
- if test -n "${XSLTPROC}"; then
- DOC_RULE=html/postgis.html
- else
- if test -n "${JW}"; then
- DOC_RULE=jw
+dnl Ensure that we are using GEOS >= 2.2.0 (requires CAPI)
+if test ! "$GEOS_MAJOR_VERSION" -ge 2; then
+ AC_MSG_ERROR([PostGIS requires GEOS >= 2.2])
+else
+ if test "$GEOS_MAJOR_VERSION" -eq 2; then
+ if test ! "$GEOS_MINOR_VERSION" -ge 2; then
+ AC_MSG_ERROR([PostGIS requires GEOS >= 2.2])
fi
fi
-fi
-AC_SUBST(DOC_RULE)
+fi
+dnl Extract the linker and include flags
+GEOS_LDFLAGS=`$GEOSCONFIG --ldflags`
+GEOS_CPPFLAGS=-I`$GEOSCONFIG --includes`
-if test $USE_JTS -gt 0; then
-dnl AC_MSG_RESULT([ GEOS disabled, using JTS.])
- USE_GEOS=0
- AC_DEFINE(USE_JTS)
-fi
+dnl Ensure that we can parse geos_c.h
+CPPFLAGS_SAVE="$CPPFLAGS"
+CPPFLAGS="$GEOS_CPPFLAGS"
+AC_CHECK_HEADER([geos_c.h], [], [AC_MSG_ERROR([could not find geos_c.h - you may need to specify the directory of a geos-config file using --with-geosconfig])])
+CPPFLAGS="$CPPFLAGS_SAVE"
-if test $USE_GEOS -gt 0; then
- AC_DEFINE(USE_GEOS)
-fi
+dnl Ensure we can link against libgeos_c
+LIBS_SAVE="$LIBS"
+LIBS="$GEOS_LDFLAGS"
+AC_CHECK_LIB([geos_c], [initGEOS],
+ [],
+ [AC_MSG_ERROR([could not find libgeos_c - you may need to specify the directory of a geos-config file using --with-geosconfig])],
+ [])
+LIBS="$LIBS_SAVE"
-#
-# Extract PostgreSQL paths from pg_config
-##
+AC_DEFINE_UNQUOTED([POSTGIS_GEOS_VERSION], [$POSTGIS_GEOS_VERSION], [GEOS library version])
+AC_SUBST([POSTGIS_GEOS_VERSION])
-#
-# Prefix (pg_prefix)
-#
-pg_prefix=/usr/local/pgsql
-pg_eprefix=
-pg_docdir=
-pg_datadir=
-pg_mandir=
-pg_bindir="`${PGCONFIG} --bindir`"
-pg_pkglibdir="`${PGCONFIG} --pkglibdir`"
-for v in `${PGCONFIG} --configure`; do
- strip=`echo $v | sed "s/'//g"`
- var=`echo "$strip" | cut -d= -f1`
- if test "$var" = "--prefix"; then
- pg_prefix=`echo "$strip" | cut -d= -f2`
- elif test "$var" = "--exec-prefix"; then
- pg_eprefix=`echo "$strip" | cut -d= -f2`
- elif test "$var" = "--docdir"; then
- pg_docdir=`echo "$strip" | cut -d= -f2`
- elif test "$var" = "--with-docdir"; then
- pg_docdir=`echo "$strip" | cut -d= -f2`
- elif test "$var" = "--datadir"; then
- pg_datadir=`echo "$strip" | cut -d= -f2`
- elif test "$var" = "--mandir"; then
- pg_mandir=`echo "$strip" | cut -d= -f2`
- elif test "$var" = "--with-template"; then
- PGTEMPLATE=`echo "$strip" | cut -d= -f2`
- fi
-done
-#
-# We set these defaults after scan of
-# pg_config --configure to safely expand pg_prefix
-# We need expansion for the 'postgresq' path component
-# addition below (default paths take from pg_config)
-#
-if test -z "$pg_eprefix"; then pg_eprefix=${pg_prefix}; fi
-if test -z "$pg_docdir"; then pg_docdir=${pg_prefix}'/doc'; fi
-if test -z "$pg_datadir"; then pg_datadir=${pg_prefix}'/share'; fi
-if test -z "$pg_mandir"; then pg_mandir=${pg_prefix}'/man'; fi
-# Use old layout by default
-use_new_layout=0
+dnl
+dnl Detect the version of PROJ.4 installed
+dnl
-if test "$prefix" != 'NONE'; then
- use_new_layout=1
-fi
+AC_ARG_WITH([projdir], [Specify the directory to an alternative PROJ installation], [PROJDIR="$withval"], [PROJDIR=""])
+if test ! "x$PROJDIR" = "x"; then
+ dnl Make sure that the directory exists
+ if test "x$PROJDIR" = "xyes"; then
+ AC_MSG_ERROR([you must specifiy a parameter to --with-projdir, e.g. --with-projdir=/path/to])
+ else
+ if test -d "$PROJDIR"; then
+ AC_MSG_RESULT([Using user-specified proj directory: $PROJDIR])
-if test "${use_new_layout}" = "1"; then
- LPATH=$libdir
-else
-
- #
- # Use old layout: everything under PGSQL paths
- # Note: still allow override by user, this is
- # done checking each variable against its
- # default value, if it has a different
- # value do not use PGSQL versions
- #
-
- if test "$prefix" = 'NONE'; then
- prefix=${pg_prefix}
- fi
-
- if test "$docdir" = '${prefix}/share/doc'; then
- docdir=${pg_docdir}
- #
- # If docdir contains no 'pgsql' or 'postgres'
- # add the suffix. This is derived from
- # PGSQL_SRC/src/Makefile.global
- #
- if expr "${docdir}" : ".*/pgsql" > /dev/null ; then :; else
- if expr "${docdir}" : ".*/postgres" > /dev/null ; then :; else
- docdir=${docdir}"/postgresql"
+ dnl Add the include directory to PROJ_CPPFLAGS
+ PROJ_CPPFLAGS="-I$PROJDIR/include"
+ PROJ_LDFLAGS="-L$PROJDIR/lib"
+ else
+ AC_MSG_ERROR([the --with-projdir directory "$PROJDIR" cannot be found])
fi
- fi
- # Add the "contrib" part
- docdir=${docdir}"/contrib"
fi
-
- if test "$datadir" = '${prefix}/share'; then
- datadir=${pg_datadir}
- #
- # If datadir contains no 'pgsql' or 'postgres'
- # add the suffix. This is derived from
- # PGSQL_SRC/src/Makefile.global
- #
- if expr "${datadir}" : ".*/pgsql" > /dev/null ; then :; else
- if expr "${datadir}" : ".*/postgres" > /dev/null ; then :; else
- datadir=${datadir}"/postgresql"
- fi
- fi
- # Add the "contrib" part
- datadir=${datadir}"/contrib"
- fi
-
- if test "$mandir" = '${prefix}/man'; then
- mandir=${pg_mandir}
- fi
-
- if test "$bindir" = '${exec_prefix}/bin'; then
- bindir=${pg_bindir}
- fi
-
- if test "$libdir" = '${exec_prefix}/lib'; then
- libdir=${pg_pkglibdir}
- LPATH='\$$libdir'
- else
- LPATH=$libdir
- fi
fi
-# --with-template parsing is done in the single
-# pg_config --configure scan above
-AC_MSG_CHECKING([which template to use])
-template=$PGTEMPLATE
+dnl Check that we can find the proj_api.h header file
+CPPFLAGS_SAVE="$CPPFLAGS"
+CPPFLAGS="$PROJ_CPPFLAGS"
+AC_CHECK_HEADER([proj_api.h], [], [AC_MSG_ERROR([could not find proj_api.h - you may need to specify the directory of a PROJ.4 installation using --with-projdir])])
-case $host_os in
- aix*) template=aix ;;
- beos*) template=beos ;;
- bsdi*) template=bsdi ;;
- cygwin*) template=cygwin ;;
- darwin*) template=darwin ;;
- dgux*) template=dgux ;;
- freebsd*) template=freebsd ;;
- hpux*) template=hpux ;;
- irix*) template=irix ;;
- linux*|gnu*|k*bsd*-gnu)
- template=linux ;;
- mingw*) template=win32 ;;
- netbsd*) template=netbsd ;;
-nextstep*) template=nextstep ;;
- openbsd*) template=openbsd ;;
- osf*) template=osf ;;
- qnx*) template=qnx4 ;;
- sco*) template=sco ;;
- solaris*) template=solaris ;;
- sunos*) template=sunos4 ;;
- sysv4.2*)
- case $host_vendor in
- univel) template=univel ;;
- esac ;;
- sysv4*) template=svr4 ;;
- sysv5*) template=unixware ;;
- ultrix*) template=ultrix4 ;;
-esac
+dnl Return the PROJ.4 version number
+AC_PROJ_VERSION([POSTGIS_PROJ_VERSION])
+AC_DEFINE_UNQUOTED([POSTGIS_PROJ_VERSION], [$POSTGIS_PROJ_VERSION], [PROJ library version])
+AC_SUBST([POSTGIS_PROJ_VERSION])
+CPPFLAGS="$CPPFLAGS_SAVE"
- if test x"$template" = x"" ; then
- AC_MSG_ERROR([[
-*******************************************************************
-PostgreSQL has apparently not been ported to your platform yet.
-To try a manual configuration, look into the src/template directory
-for a similar platform and use the '--with-template=' option.
+dnl Ensure we can link against libproj
+LIBS_SAVE="$LIBS"
+LIBS="$PROJ_LDFLAGS"
+AC_CHECK_LIB([proj], [pj_get_release],
+ [],
+ [AC_MSG_ERROR([could not find libproj - you may need to specify the directory of a PROJ.4 installation using --with-projdir])],
+ [])
+LIBS="$LIBS_SAVE"
-Please also contact <pgsql-ports at postgresql.org> to see about
-rectifying this. Include the above 'checking host system type...'
-line.
-*******************************************************************
-]])
- fi
-AC_MSG_RESULT([$template])
+dnl
+dnl Define version macros
+dnl
-PORTNAME=$template
-AC_SUBST(PORTNAME)
+POSTGIS_VERSION="$POSTGIS_MAJOR_VERSION.$POSTGIS_MINOR_VERSION USE_GEOS=1 USE_PROJ=1 USE_STATS=1"
+POSTGIS_LIB_VERSION="$POSTGIS_MAJOR_VERSION.$POSTGIS_MINOR_VERSION.$POSTGIS_MICRO_VERSION"
+POSTGIS_BUILD_DATE=`date -u "+%Y-%m-%d %H:%M:%S"`
+POSTGIS_SCRIPTS_VERSION="$POSTGIS_LIB_VERSION"
+AC_DEFINE_UNQUOTED([POSTGIS_VERSION], ["$POSTGIS_VERSION"], [PostGIS version])
+AC_DEFINE_UNQUOTED([POSTGIS_LIB_VERSION], ["$POSTGIS_LIB_VERSION"], [PostGIS library version])
+AC_DEFINE_UNQUOTED([POSTGIS_BUILD_DATE], ["$POSTGIS_BUILD_DATE"], [PostGIS build date])
+AC_DEFINE_UNQUOTED([POSTGIS_SCRIPTS_VERSION], ["$POSTGIS_SCRIPTS_VERSION"], [PostGIS scripts version])
-#
-# OS-specific settings
-#
-AC_SUBST(DLSUFFIX)
-AC_SUBST(DLFLAGS)
-AC_SUBST(EXE)
-AC_SUBST(HOST_OS)
+AC_SUBST([POSTGIS_VERSION])
+AC_SUBST([POSTGIS_LIB_VERSION])
+AC_SUBST([POSTGIS_BUILD_DATE])
+AC_SUBST([POSTGIS_SCRIPTS_VERSION])
-# host_os is defined by AC_CANONICAL_HOST
-HOST_OS=$host_os
-DLSUFFIX=.so
-DLFLAGS=-shared
-EXE=
-case $host_os in
- *mingw*)
- PGBEINCLUDES="$PGBEINCLUDES $PGBEINCLUDES/port/win32"
- DLSUFFIX=.dll
- DLFLAGS='${PGBELIBS}'
- EXE=.exe
- ;;
- *darwin*)
- DLFLAGS="-no-cpp-precomp -flat_namespace -undefined suppress -multiply_defined suppress"
- ;;
-esac
-# Assume system is ELF if it predefines __ELF__ as 1,
-# otherwise believe host_os based default.
-case $host_os in
- freebsd1*|freebsd2*) elf=no;;
- freebsd3*|freebsd4*) elf=yes;;
-esac
+dnl
+dnl Other parameters
+dnl
-AC_EGREP_CPP(yes,
-[#if __ELF__
- yes
-#endif
-],
-[ELF_SYS=true],
-[if test "X$elf" = "Xyes" ; then
- ELF_SYS=true
-else
- ELF_SYS=
-fi])
-AC_SUBST(ELF_SYS)
+dnl Always enable BBOX caching by default
+AC_DEFINE_UNQUOTED([POSTGIS_AUTOCACHE_BBOX], [1], [Enable caching of bounding box within geometries])
+dnl Always enable use of ANALYZE statistics by default
+AC_DEFINE_UNQUOTED([POSTGIS_USE_STATS], [1], [Enable use of ANALYZE statistics])
-AC_OUTPUT(Makefile.config)
+CPPFLAGS="$PGSQL_CPPFLAGS $GEOS_CPPFLAGS $PROJ_CPPFLAGS"
+dnl AC_MSG_RESULT([CPPFLAGS: $CPPFLAGS])
-AC_MSG_RESULT([ ])
-AC_MSG_RESULT([ SUMMARY])
-AC_MSG_RESULT([ -------------------------------------------------------])
-AC_MSG_RESULT([ ])
-AC_MSG_RESULT([ HOST_OS: $host_os])
-AC_MSG_RESULT([ ])
-AC_MSG_RESULT([ PGSQL: $PGCONFIG])
+SHLIB_LINK="$PGSQL_LDFLAGS $GEOS_LDFLAGS $PROJ_LDFLAGS -lgeos_c -lproj"
+AC_SUBST([SHLIB_LINK])
+dnl AC_MSG_RESULT([SHLIB_LINK: $SHLIB_LINK])
-if test $USE_JTS -gt 0; then
- AC_MSG_RESULT([ JTS: includedir=$JTS_INCLUDES libdir=$JTS_LIBDIR])
-fi
+dnl Output the relevant files
+AC_OUTPUT([lwgeom/Makefile lwgeom/sqldefines.h loader/Makefile.pgsql2shp regress/Makefile])
-# GEOS CAPI information
-if test $USE_GEOS -gt 0; then
- AC_MSG_RESULT([ GEOS: $GEOSCONFIG (with C-API)])
- AC_MSG_RESULT([ (ldflags: $GEOS_LDFLAGS)])
-fi
-
-# PROJ.4 information
-if test $USE_PROJ -gt 0; then
- AC_MSG_RESULT([ PROJ: prefix=$PROJ_DIR libdir=$PROJ_LIBDIR])
-fi
-
-AC_MSG_RESULT([ ICONV: $USE_ICONV $ICONV_LDFLAGS])
-dnl AC_MSG_RESULT([ FLEX: path=$FLEX])
-dnl AC_MSG_RESULT([ YACC: path=$YACC])
-
-AC_MSG_RESULT([ ])
-AC_MSG_RESULT([ PORTNAME: $PORTNAME])
-AC_MSG_RESULT([ PREFIX: $prefix])
-AC_MSG_RESULT([ EPREFIX: $exec_prefix])
-AC_MSG_RESULT([ DOC: $docdir])
-AC_MSG_RESULT([ DATA: $datadir])
-AC_MSG_RESULT([ MAN: $mandir])
-AC_MSG_RESULT([ BIN: $bindir])
-if test "$MODULE_INSTALLDIR" = "$LPATH"; then
- AC_MSG_RESULT([ EXT: $libdir])
-else
- AC_MSG_RESULT([ EXT: $libdir ($LPATH)])
-fi
-
-AC_MSG_RESULT([ -------------------------------------------------------])
-AC_MSG_RESULT([ ])
-
Modified: trunk/loader/Makefile
===================================================================
--- trunk/loader/Makefile 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/loader/Makefile 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,44 +1,9 @@
-include ../Makefile.config
-
-# Version handling:
-include ../Version.config
-POSTGIS_VERSION = $(REL_MAJOR_VERSION).$(REL_MINOR_VERSION).$(REL_MICRO_VERSION)
-
#
-# PostGIS Loader Makefile
+# PostGIS PGXS build system
#
-OBJS = shpopen.o dbfopen.o getopt.o
+all:
+%:
+ make -f Makefile.shp2pgsql $@
+ make -f Makefile.pgsql2shp $@
-#---------------------------------------------------------------
-
-ifeq ($(USE_ICONV),1)
- override CFLAGS += -DUSE_ICONV
- override LDFLAGS += $(ICONV_LDFLAGS)
-endif
-
-override CFLAGS := -g -Wall -I.. $(CFLAGS) -DUSE_VERSION=$(USE_VERSION) -DPOSTGIS_VERSION='"$(POSTGIS_VERSION)"'
-
-all: shp2pgsql$(EXE) pgsql2shp$(EXE)
-
-pgsql2shp.o: pgsql2shp.c
- $(CC) $(CFLAGS) $(PGFEINCLUDES) -c $<
-
-pgsql2shp$(EXE): $(OBJS) pgsql2shp.o PQunescapeBytea.o
- $(CC) $(CFLAGS) $(OBJS) PQunescapeBytea.o pgsql2shp.o $(LDFLAGS) $(PGFELIBS) -o $@
-
-shp2pgsql$(EXE): $(OBJS) shp2pgsql.o
- $(CC) $(CFLAGS) $(OBJS) shp2pgsql.o $(LDFLAGS) -o $@
-
-install: all
- @mkdir -p $(DESTDIR)$(bindir)
- $(INSTALL_BIN) pgsql2shp$(EXE) $(DESTDIR)$(bindir)/pgsql2shp$(EXE)
- $(INSTALL_BIN) shp2pgsql$(EXE) $(DESTDIR)$(bindir)/shp2pgsql$(EXE)
-
-uninstall:
- rm -f $(DESTDIR)$(bindir)/pgsql2shp$(EXE)
- rm -f $(DESTDIR)$(bindir)/shp2pgsql$(EXE)
-
-clean:
- rm -f $(OBJS) shp2pgsql.o pgsql2shp.o PQunescapeBytea.o shp2pgsql$(EXE) pgsql2shp$(EXE)
-
Added: trunk/loader/Makefile.pgsql2shp.in
===================================================================
--- trunk/loader/Makefile.pgsql2shp.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/loader/Makefile.pgsql2shp.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -0,0 +1,22 @@
+#
+# PostGIS PGXS build system
+#
+PROGRAM=pgsql2shp
+
+# List of objects to build
+OBJS= shpopen.o \
+ dbfopen.o \
+ getopt.o \
+ pgsql2shp.o \
+ PQunescapeBytea.o
+
+# Link against libpq
+PG_CPPFLAGS=@PGSQL_FE_CPPFLAGS@
+PG_LIBS=@PGSQL_FE_LDFLAGS@ -lpq
+
+
+# PGXS information
+PG_CONFIG = pg_config
+PGXS := $(shell $(PG_CONFIG) --pgxs)
+include $(PGXS)
+
Added: trunk/loader/Makefile.shp2pgsql
===================================================================
--- trunk/loader/Makefile.shp2pgsql 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/loader/Makefile.shp2pgsql 2008-05-14 17:10:19 UTC (rev 2774)
@@ -0,0 +1,16 @@
+#
+# PostGIS PGXS build system
+#
+PROGRAM=shp2pgsql
+
+# List of objects to build
+OBJS= shpopen.o \
+ dbfopen.o \
+ getopt.o \
+ shp2pgsql.o
+
+# PGXS information
+PG_CONFIG = pg_config
+PGXS := $(shell $(PG_CONFIG) --pgxs)
+include $(PGXS)
+
Modified: trunk/loader/pgsql2shp.c
===================================================================
--- trunk/loader/pgsql2shp.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/loader/pgsql2shp.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -21,6 +21,8 @@
static char rcsid[] =
"$Id$";
+#include "../postgis_config.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Modified: trunk/loader/shp2pgsql.c
===================================================================
--- trunk/loader/shp2pgsql.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/loader/shp2pgsql.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -22,7 +22,7 @@
*
**********************************************************************/
-#include "../config.h"
+#include "../postgis_config.h"
#include "shapefil.h"
#include <stdio.h>
#include <string.h>
Modified: trunk/lwgeom/Makefile
===================================================================
--- trunk/lwgeom/Makefile 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/Makefile 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,172 +1,87 @@
-# Configuration Directives
-include ../Makefile.config
-include ../Version.config
-
-#---------------------------------------------------------------
-# Default missing CXX variable to c++
-#
-ifndef $(CXX)
- CXX = c++
-endif
-
-#---------------------------------------------------------------
-# Shared library parameters.
#
-NAME=lwgeom
-SHLIB_LINK = $(DLFLAGS)
-
-#---------------------------------------------------------------
-# Postgis version and build date
-#---------------------------------------------------------------
-
-POSTGIS_VERSION = $(REL_MAJOR_VERSION).$(REL_MINOR_VERSION) USE_GEOS=$(USE_GEOS) USE_PROJ=$(USE_PROJ) USE_STATS=$(USE_STATS)
-POSTGIS_LIB_VERSION = $(REL_MAJOR_VERSION).$(REL_MINOR_VERSION).$(REL_MICRO_VERSION)
-POSTGIS_BUILD_DATE := $(shell date -u "+%Y-%m-%d %H:%M:%S")
-SCRIPTS_VERSION=$(POSTGIS_LIB_VERSION)
-
-SQL_FLAGS = -DUSE_VERSION=$(USE_VERSION)
-
-#---------------------------------------------------------------
-
-CSTAR_FLAGS = -Wall -g -O2 -fPIC -fexceptions
-
-override CFLAGS += -DUSE_VERSION=$(USE_VERSION)
-override CFLAGS += -DPOSTGIS_LIB_VERSION='"$(POSTGIS_LIB_VERSION)"'
-override CFLAGS += -DPOSTGIS_VERSION='"$(POSTGIS_VERSION)"'
-override CFLAGS += -DPOSTGIS_SCRIPTS_VERSION='"$(SCRIPTS_VERSION)"'
-override CFLAGS += -DPOSTGIS_BUILD_DATE='"$(POSTGIS_BUILD_DATE)"'
-
-JTS_OBJ=lwgeom_nojts.o
-ifeq ($(USE_GEOS),1)
- CSTAR_FLAGS += -DUSE_GEOS
- CSTAR_FLAGS += -DGEOS_VERNUM=$(GEOS_VERNUM)
- SQL_FLAGS += -DUSE_GEOS -DGEOS_VERNUM=$(GEOS_VERNUM)
- GEOS_RULES=
- CSTAR_FLAGS += -I$(GEOS_DIR)/include
- GEOS_WRAPPER=
- JTS_OBJ=lwgeom_geos_c.o
- SHLIB_LINK += $(GEOS_LDFLAGS) -lgeos_c
-endif
-
-ifeq ($(USE_JTS),1)
- CXXFLAGS += -I$(JTS_INCLUDES)
- CSTAR_FLAGS += -DUSE_JTS
- SQL_FLAGS += -DUSE_JTS
- JTS_WRAPPER=lwgeom_jts_wrapper.o
- JTS_OBJ=lwgeom_jts.o
- SHLIB_LINK += -lgcj -ljts -lstdc++ -L$(JTS_LIBDIR)
-endif
-
-ifeq ($(USE_PROJ),1)
- override CFLAGS += -I$(PROJ_DIR)/include -DUSE_PROJ
- SHLIB_LINK += -L$(PROJ_LIBDIR) -lproj
- SQL_FLAGS += -DUSE_PROJ
-endif
-
-override CFLAGS += $(PGBEINCLUDES) -DAUTOCACHE_BBOX=$(AUTOCACHE_BBOX)
-
-# memory debug for gcc 2.91, 2.95, 3.0 and 3.1
-# for gcc >= 3.2.2 set GLIBCPP_FORCE_NEW at runtime instead
-#override CXXFLAGS += -D__USE_MALLOC
-
-#---------------------------------------------------------------
-# Add index selectivity to C flags
+# PostGIS PGXS build system
#
-ifeq ($(USE_STATS),1)
- override CFLAGS += -DUSE_STATS
-endif
+MODULE_big=lwpostgis
-override CFLAGS += $(CSTAR_FLAGS)
-override CXXFLAGS += $(CSTAR_FLAGS)
-SA_OBJS=measures.o box2d.o ptarray.o lwgeom_api.o lwgeom.o lwpoint.o lwline.o lwpoly.o lwmpoint.o lwmline.o lwmpoly.o lwcollection.o $(GEOS_WRAPPER) $(JTS_WRAPPER) wktunparse.o lwgparse.o wktparse.tab.o lex.yy.o vsprintf.o
+# Files to be copied to the contrib/ directory
+DATA_built=lwpostgis.sql
+DATA=../spatial_ref_sys.sql
-OBJS=$(SA_OBJS) liblwgeom.o lwgeom_pg.o lwgeom_debug.o lwgeom_spheroid.o lwgeom_ogc.o lwgeom_functions_analytic.o $(JTS_OBJ) lwgeom_inout.o lwgeom_estimate.o lwgeom_functions_basic.o lwgeom_gist.o lwgeom_btree.o lwgeom_transform.o stringBuffer.o lwgeom_box.o lwgeom_box3d.o lwgeom_box2dfloat4.o lwgeom_chip.o lwgeom_svg.o lwgeom_gml.o lwgeom_kml.o lwgeom_geojson.o lwgeom_triggers.o lwgeom_dump.o lwgeom_functions_lrs.o long_xact.o lwcurve.o lwcompound.o lwcurvepoly.o lwmcurve.o lwmsurface.o lwgeom_sqlmm.o lwgeom_rtree.o
+# SQL objects (files requiring C pre-processing)
+SQL_OBJS=lwpostgis.sql.in
-#OTHERS=y.output lex.yy.c wktparse.tab.c wktparse.tab.h lwpostgis.sql
-OTHERS=y.output postgis_geos_version.h
+# Standalone LWGEOM objects
+SA_OBJS=measures.o \
+ box2d.o \
+ ptarray.o \
+ lwgeom_api.o \
+ lwgeom.o \
+ lwpoint.o \
+ lwline.o \
+ lwpoly.o \
+ lwmpoint.o \
+ lwmline.o \
+ lwmpoly.o \
+ lwcollection.o \
+ lwgeom_geos_c.o \
+ wktunparse.o \
+ lwgparse.o \
+ wktparse.tab.o \
+ lex.yy.o \
+ vsprintf.o
-all: $(GEOS_RULES) ../lwpostgis.sql ../regress/lwpostgis.sql ../lwpostgis_upgrade.sql all-shared-lib
+# PostgreSQL objects
+PG_OBJS=liblwgeom.o \
+ lwgeom_pg.o \
+ lwgeom_debug.o \
+ lwgeom_spheroid.o \
+ lwgeom_ogc.o \
+ lwgeom_functions_analytic.o \
+ $(JTS_OBJ) \
+ lwgeom_inout.o \
+ lwgeom_estimate.o \
+ lwgeom_functions_basic.o \
+ lwgeom_gist.o \
+ lwgeom_btree.o \
+ lwgeom_transform.o \
+ stringBuffer.o \
+ lwgeom_box.o \
+ lwgeom_box3d.o \
+ lwgeom_box2dfloat4.o \
+ lwgeom_chip.o \
+ lwgeom_svg.o \
+ lwgeom_gml.o \
+ lwgeom_kml.o \
+ lwgeom_geojson.o \
+ lwgeom_triggers.o \
+ lwgeom_dump.o \
+ lwgeom_functions_lrs.o \
+ long_xact.o \
+ lwcurve.o \
+ lwcompound.o \
+ lwcurvepoly.o \
+ lwmcurve.o \
+ lwmsurface.o \
+ lwgeom_sqlmm.o \
+ lwgeom_rtree.o
-enable_shared=yes
-include Makefile.shlib
+# Objects to build using PGXS
+OBJS=$(SA_OBJS) $(PG_OBJS)
-MODULE_FILENAME = $(LPATH)/lib$(NAME)
-REGRESS_MODULE_FILENAME = $(shell $(PWDREGRESS))/$(shlib)
+# Libraries to link into the module (proj, geos)
+SHLIB_LINK= -L/usr/lib -lgeos_c -lproj
-#---------------------------------------------------------------
-# Makefile targets
+# Extra files to remove during 'make clean'
+EXTRA_CLEAN=$(SQL_OBJS)
-wktparse.tab.c: wktparse.y
- $(YACC) -vd -p lwg_parse_yy wktparse.y
- mv -f y.tab.c wktparse.tab.c
- mv -f y.tab.h wktparse.tab.h
+# PGXS information
+PG_CONFIG = pg_config
+PGXS := $(shell $(PG_CONFIG) --pgxs)
+include $(PGXS)
-lex.yy.c: wktparse.lex wktparse.tab.c
- $(FLEX) -Plwg_parse_yy -i -f -o'lex.yy.c' wktparse.lex
+# Generate any .sql.in files from .sql.in.c files by running them through the C pre-processor
+$(SQL_OBJS): %.in: %.in.c
+ $(CPP) -traditional-cpp $< | grep -v '^#' > $@
-lwgeom_jts_wrapper.o: lwgeom_jts_wrapper.cpp
-
-lwgeom_geos_c.o: lwgeom_geos_c.c profile.h
-
-lwgeom_jts.o: lwgeom_jts.c profile.h
-
-lwgeom_nojts.o: lwgeom_nojts.c
-
-lwgeom_functions_basic.o: lwgeom_functions_basic.c profile.h
-
-# Shared library stuff
-
-../lwpostgis_upgrade.sql: ../lwpostgis.sql ../utils/postgis_proc_upgrade.pl
- $(PERL) ../utils/postgis_proc_upgrade.pl ../lwpostgis.sql > ../lwpostgis_upgrade.sql
-
-../lwpostgis.sql: lwpostgis.sql.in long_xact.sql.in sqlmm.sql.in sqldefines.h
- cpp -P -traditional-cpp $(SQL_FLAGS) $< | sed -e 's:@MODULE_FILENAME@:$(MODULE_FILENAME):g;s:@POSTGIS_VERSION@:$(POSTGIS_VERSION):g;s:@POSTGIS_SCRIPTS_VERSION@:$(SCRIPTS_VERSION):g;s/@POSTGIS_BUILD_DATE@/$(POSTGIS_BUILD_DATE)/g' | grep -v '^#' > $@
-
-../regress/lwpostgis.sql: lwpostgis.sql.in long_xact.sql.in sqlmm.sql.in sqldefines.h
- cpp -P -traditional-cpp $(SQL_FLAGS) $< | sed -e 's#@MODULE_FILENAME@#$(MODULE_FILENAME)#g;s#@POSTGIS_VERSION@#$(POSTGIS_VERSION)#g;s#@POSTGIS_SCRIPTS_VERSION@#$(SCRIPTS_VERSION)#g;s/@POSTGIS_BUILD_DATE@/$(POSTGIS_BUILD_DATE)/g' | grep -v '^#' > $@
-
-install: all install-lib-shared install-lwgeom-scripts
-
-install-lwgeom-scripts:
- @mkdir -p $(DESTDIR)$(datadir)
- $(INSTALL_DATA) ../lwpostgis.sql $(DESTDIR)$(datadir)/lwpostgis.sql
- $(INSTALL_DATA) ../lwpostgis_upgrade.sql $(DESTDIR)$(datadir)/lwpostgis_upgrade.sql
- $(INSTALL_DATA) ../spatial_ref_sys.sql $(DESTDIR)$(datadir)/spatial_ref_sys.sql
-
-#----------------------------------------------------------
-
-detect_geos_version:
- sh ../geos_version.sh $(GEOS_DIR) > postgis_geos_version.h
-
-uninstall-lwgeom-scripts:
- rm -f $(DESTDIR)$(datadir)/lwpostgis.sql
- rm -f $(DESTDIR)$(datadir)/lwpostgis_upgrade.sql
- rm -f $(DESTDIR)$(datadir)/spatial_ref_sys.sql
-
-uninstall: uninstall-lib uninstall-lwgeom-scripts
-
-clean-lwgeom-lib: clean-lib
-
-clean distclean: clean-lwgeom-lib
- rm -f *.o *.so *.a ../lwpostgis.sql ../lwpostgis_upgrade.sql test $(OTHERS)
-
-maintainer-clean: clean
- rm -f lex.yy.c wktparse.tab.c wktparse.tab.h
-
-liblwgeom_sa.o: liblwgeom.c
- $(CC) -DSTANDALONE -o $@ -c $<
-
-liblwgeom_sa.so: $(SA_OBJS) liblwgeom_sa.o
- $(CC) -shared -o $@ $^
-
-liblwgeom_sa.a: $(SA_OBJS) liblwgeom_sa.o
- $(AR) -rc $@ $^
-
-
-test: liblwgeom_sa.so liblwgeom_sa.a test.c
- $(CC) -Wall -lm -g -o test test.c liblwgeom_sa.a
-
-tsort:
- lorder $(SA_OBJS) | tsort
Added: trunk/lwgeom/Makefile.in
===================================================================
--- trunk/lwgeom/Makefile.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/Makefile.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -0,0 +1,87 @@
+#
+# PostGIS PGXS build system
+#
+MODULE_big=lwpostgis
+
+
+# Files to be copied to the contrib/ directory
+DATA_built=lwpostgis.sql
+DATA=../spatial_ref_sys.sql
+
+# SQL objects (files requiring C pre-processing)
+SQL_OBJS=lwpostgis.sql.in
+
+# Standalone LWGEOM objects
+SA_OBJS=measures.o \
+ box2d.o \
+ ptarray.o \
+ lwgeom_api.o \
+ lwgeom.o \
+ lwpoint.o \
+ lwline.o \
+ lwpoly.o \
+ lwmpoint.o \
+ lwmline.o \
+ lwmpoly.o \
+ lwcollection.o \
+ lwgeom_geos_c.o \
+ wktunparse.o \
+ lwgparse.o \
+ wktparse.tab.o \
+ lex.yy.o \
+ vsprintf.o
+
+# PostgreSQL objects
+PG_OBJS=liblwgeom.o \
+ lwgeom_pg.o \
+ lwgeom_debug.o \
+ lwgeom_spheroid.o \
+ lwgeom_ogc.o \
+ lwgeom_functions_analytic.o \
+ $(JTS_OBJ) \
+ lwgeom_inout.o \
+ lwgeom_estimate.o \
+ lwgeom_functions_basic.o \
+ lwgeom_gist.o \
+ lwgeom_btree.o \
+ lwgeom_transform.o \
+ stringBuffer.o \
+ lwgeom_box.o \
+ lwgeom_box3d.o \
+ lwgeom_box2dfloat4.o \
+ lwgeom_chip.o \
+ lwgeom_svg.o \
+ lwgeom_gml.o \
+ lwgeom_kml.o \
+ lwgeom_geojson.o \
+ lwgeom_triggers.o \
+ lwgeom_dump.o \
+ lwgeom_functions_lrs.o \
+ long_xact.o \
+ lwcurve.o \
+ lwcompound.o \
+ lwcurvepoly.o \
+ lwmcurve.o \
+ lwmsurface.o \
+ lwgeom_sqlmm.o \
+ lwgeom_rtree.o
+
+# Objects to build using PGXS
+OBJS=$(SA_OBJS) $(PG_OBJS)
+
+# Libraries to link into the module (proj, geos)
+SHLIB_LINK=@SHLIB_LINK@
+
+# Extra files to remove during 'make clean'
+EXTRA_CLEAN=$(SQL_OBJS)
+
+# PGXS information
+PG_CONFIG = pg_config
+PGXS := $(shell $(PG_CONFIG) --pgxs)
+include $(PGXS)
+
+
+# Generate any .sql.in files from .sql.in.c files by running them through the C pre-processor
+$(SQL_OBJS): %.in: %.in.c
+ $(CPP) -traditional-cpp $< | grep -v '^#' > $@
+
Deleted: trunk/lwgeom/Makefile.shlib
===================================================================
--- trunk/lwgeom/Makefile.shlib 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/Makefile.shlib 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,417 +0,0 @@
-#-------------------------------------------------------------------------
-#
-# Makefile.shlib
-# Common rules for building shared libraries
-#
-# Copyright (c) 1998, Regents of the University of California
-#
-# IDENTIFICATION
-# $PostgreSQL: pgsql/src/Makefile.shlib,v 1.90 2004/11/20 21:13:04 tgl Exp $
-#
-#-------------------------------------------------------------------------
-
-# This file should be included by any Postgres module Makefile that
-# wants to build a shared library (if possible for the current
-# platform). A static library is also built from the same object
-# files. Only one library can be built per makefile.
-#
-# Before including this file, the module Makefile must define these
-# variables:
-#
-# NAME Name of library to build (no suffix nor "lib" prefix)
-# REL_MAJOR_VERSION Major version number to use for shared library
-# REL_MINOR_VERSION Minor version number to use for shared library
-# OBJS List of object files to include in library
-# SHLIB_LINK If shared library relies on other libraries,
-# additional stuff to put in its link command
-# (If you want a patchlevel, include it in REL_MINOR_VERSION, e.g., "6.2".)
-#
-# Optional flags when building DLL's (only applicable to win32 and cygwin
-# platforms).
-# DLLTOOL_DEFFLAGS Additional flags when creating the dll .def file
-# DLLTOOL_LIBFLAGS Additional flags when creating the lib<module>.a file
-# DLLWRAP_FLAGS Additional flags to dllwrap
-# DLL_DEFFILE Use pre-existing .def file instead of auto-generating
-# one with all exports in it (win32 only).
-#
-# The module Makefile must also include
-# $(top_builddir)/src/Makefile.global before including this file.
-# (Makefile.global sets PORTNAME and other needed symbols.)
-#
-# This makefile provides the following (phony) targets:
-#
-# all-lib build the static and shared (if applicable) libraries
-# install-lib install the libraries into $(libdir)
-# uninstall-lib remove the libraries from $(libdir)
-# clean-lib delete the static and shared libraries from the build dir
-#
-# Since `all-lib' is the first rule in this file you probably want to
-# have the `all' target before including this file. In the most simple
-# case it would look like this:
-#
-# all: all-lib
-#
-# Similarly, the install rule might look like
-#
-# install: install-lib
-#
-# plus any additional things you want to install. Et cetera.
-#
-# Got that? Look at src/interfaces/libpq/Makefile for an example.
-#
-# While the linker allows creation of most shared libraries,
-# -Bsymbolic requires resolution of all symbols, making the
-# compiler a better choice for shared library creation on ELF platforms.
-# With the linker, -Bsymbolic requires the crt1.o startup object file.
-# bjm 2001-02-10
-
-
-COMPILER = $(CC) $(CFLAGS)
-LINK.static = $(AR) $(AROPT)
-
-
-
-ifeq ($(enable_shared), yes)
-
-# Default shlib naming convention used by the majority of platforms
-shlib = lib$(NAME)$(DLSUFFIX).$(REL_MAJOR_VERSION).$(REL_MINOR_VERSION)
-shlib_major = lib$(NAME)$(DLSUFFIX).$(REL_MAJOR_VERSION)
-shlib_bare = lib$(NAME)$(DLSUFFIX)
-
-# For each platform we support shared libraries on, set shlib to the
-# name of the library (if default above is not right), set
-# LINK.shared to the command to link the library,
-# and adjust SHLIB_LINK if necessary.
-
-# Try to keep the sections in some kind of order, folks...
-
-override CFLAGS += $(CFLAGS_SL)
-
-soname = lib$(NAME)$(DLSUFFIX).$(REL_MAJOR_VERSION)
-
-ifeq ($(PORTNAME), aix)
- shlib = lib$(NAME)$(DLSUFFIX)
-# SHLIB_LINK += -lc
-endif
-
-ifeq ($(PORTNAME), darwin)
- ifneq ($(REL_MAJOR_VERSION), 0)
- version_link := -compatibility_version $(REL_MAJOR_VERSION) -current_version $(REL_MAJOR_VERSION).$(REL_MINOR_VERSION)
- endif
- ifeq ($(DLTYPE), library)
- # linkable library
- DLSUFFIX := .dylib
- LINK.shared = $(COMPILER) -dynamiclib -install_name $(libdir)/lib$(NAME).$(REL_MAJOR_VERSION)$(DLSUFFIX) $(version_link) -multiply_defined suppress
- else
- # loadable module (default case)
- DLSUFFIX := .so
- LINK.shared = $(COMPILER) -bundle
- endif
- shlib = lib$(NAME).$(REL_MAJOR_VERSION).$(REL_MINOR_VERSION)$(DLSUFFIX)
- shlib_major = lib$(NAME).$(REL_MAJOR_VERSION)$(DLSUFFIX)
-endif
-
-ifeq ($(PORTNAME), openbsd)
- ifdef ELF_SYSTEM
- LINK.shared = $(COMPILER) -shared -Wl,-x,-soname,$(soname)
- SHLIB_LINK += -lc
- else
- LINK.shared = $(LD) -x -Bshareable -Bforcearchive
- endif
-endif
-
-ifeq ($(PORTNAME), bsdi)
- ifeq ($(DLSUFFIX), .so)
- LINK.shared = $(COMPILER) -shared -Wl,-x,-soname,$(soname)
- SHLIB_LINK += -lc
- endif
- ifeq ($(DLSUFFIX), .o)
- LINK.shared = shlicc -O $(LDREL)
- endif
-endif
-
-ifeq ($(PORTNAME), freebsd)
- ifdef ELF_SYSTEM
- shlib = lib$(NAME)$(DLSUFFIX).$(REL_MAJOR_VERSION)
- LINK.shared = $(COMPILER) -shared -Wl,-x,-soname,$(soname)
- else
- shlib = lib$(NAME)$(DLSUFFIX).$(REL_MAJOR_VERSION).$(REL_MINOR_VERSION)
- LINK.shared = $(LD) -x -Bshareable -Bforcearchive
- endif
-endif
-
-ifeq ($(PORTNAME), netbsd)
- ifdef ELF_SYSTEM
- LINK.shared = $(COMPILER) -shared -Wl,-x,-soname,$(soname)
- else
- LINK.shared = $(LD) -x -Bshareable -Bforcearchive
- endif
-endif
-
-ifeq ($(PORTNAME), hpux)
- shlib = lib$(NAME)$(DLSUFFIX).$(REL_MAJOR_VERSION)
- ifeq ($(GCC), yes)
- SHLIB_LINK += `$(CC) $(LDFLAGS) -print-libgcc-file-name`
- endif
- ifeq ($(with_gnu_ld), yes)
- LINK.shared = $(CC) $(LDFLAGS) -shared -Wl,-h -Wl,$(soname)
- else
- # can't use the CC-syntax rpath pattern here
- rpath =
- ifeq ($(enable_rpath), yes)
- LINK.shared = $(LD) +h $(soname) -b +b $(rpathdir)
- else
- LINK.shared = $(LD) +h $(soname) -b
- endif
- endif
-endif
-
-ifeq ($(PORTNAME), irix)
- shlib = lib$(NAME)$(DLSUFFIX).$(REL_MAJOR_VERSION)
- LINK.shared = $(COMPILER) -shared -Wl,-set_version,sgi$(REL_MAJOR_VERSION).$(REL_MINOR_VERSION)
-endif
-
-ifeq ($(PORTNAME), linux)
- LINK.shared = $(COMPILER) -shared -Wl,-soname,$(soname)
-endif
-
-ifeq ($(PORTNAME), solaris)
- ifeq ($(GCC), yes)
- LINK.shared = $(CC) -shared
- else
- LINK.shared = $(CC) -G
- endif
- ifeq ($(with_gnu_ld), yes)
- LINK.shared += -Wl,-soname,$(soname)
- else
- LINK.shared += -h $(soname)
- endif
-endif
-
-ifeq ($(PORTNAME), sunos4)
- LINK.shared = $(LD) -assert pure-text -Bdynamic
-endif
-
-ifeq ($(PORTNAME), osf)
- LINK.shared = $(LD) -shared -expect_unresolved '*'
-endif
-
-ifeq ($(PORTNAME), sco)
- ifeq ($(GCC), yes)
- LINK.shared = $(CC) -shared
- else
- LINK.shared = $(CC) -G
- endif
- LINK.shared += -Wl,-z,text -Wl,-h,$(soname)
-endif
-
-ifeq ($(PORTNAME), svr4)
- LINK.shared = $(LD) -G
-endif
-
-ifeq ($(PORTNAME), univel)
- LINK.shared = $(LD) -G -z text
-endif
-
-ifeq ($(PORTNAME), unixware)
- ifeq ($(GCC), yes)
- LINK.shared = $(CC) -shared
- else
- LINK.shared = $(CC) -G
- endif
- LINK.shared += -Wl,-z,text -Wl,-h,$(soname)
-endif
-
-ifeq ($(PORTNAME), cygwin)
- shlib = $(NAME)$(DLSUFFIX)
- # needed for /contrib modules, not sure why
- SHLIB_LINK += $(LIBS)
- haslibarule = yes
-endif
-
-ifeq ($(PORTNAME), win32)
- shlib = lib$(NAME)$(DLSUFFIX)
- haslibarule = yes
-endif
-
-ifeq ($(PORTNAME), beos)
- shlib = lib$(NAME)$(DLSUFFIX)
- LINK.shared = $(LD) -nostart
- SHLIB_LINK += -ltermcap -lstdc++.r4 -lbind -lsocket -L/boot/develop/lib/x86
-endif
-
-SHLIB_LINK := $(filter -L%, $(LDFLAGS)) $(SHLIB_LINK)
-ifeq ($(enable_rpath), yes)
-SHLIB_LINK += $(rpath)
-endif
-
-endif # enable_shared
-
-
-
-##
-## BUILD
-##
-
-.PHONY: all-lib all-static-lib all-shared-lib
-
-all-lib: all-static-lib all-shared-lib
-
-all-static-lib: lib$(NAME).a
-
-all-shared-lib: $(shlib)
-
-ifndef LORDER
-MK_NO_LORDER := true
-endif
-
-ifndef haslibarule
-lib$(NAME).a: $(OBJS)
-ifdef MK_NO_LORDER
- $(LINK.static) $@ $^
-else
- $(LINK.static) $@ `$(LORDER) $^ | tsort`
-endif
- $(RANLIB) $@
-endif #haslibarule
-
-ifeq ($(enable_shared), yes)
-
-ifneq ($(PORTNAME), win32)
-ifneq ($(PORTNAME), cygwin)
-ifneq ($(PORTNAME), beos)
-ifneq ($(PORTNAME), aix)
-
-# Normal case
-$(shlib): $(OBJS)
- $(LINK.shared) $(LDFLAGS_SL) $(OBJS) $(SHLIB_LINK) -o $@
-# If we're using major and minor versions, then make a symlink to major-version-only.
-ifneq ($(shlib), $(shlib_major))
- rm -f $(shlib_major)
- $(LN_S) $(shlib) $(shlib_major)
-endif
-# Make sure we have a link to a name without any version numbers
-ifneq ($(shlib), $(shlib_bare))
- rm -f $(shlib_bare)
- $(LN_S) $(shlib) $(shlib_bare)
-endif
-
-else # PORTNAME == aix
-
-# AIX case
-$(shlib): lib$(NAME).a
- $(MKLDEXPORT) lib$(NAME).a > lib$(NAME)$(EXPSUFF)
- $(COMPILER) $(LDFLAGS_SL) -o $@ $< $(LDFLAGS) $(SHLIB_LINK) -Wl,-bI:$(top_builddir)/src/backend/$(POSTGRES_IMP) -Wl,-bE:lib$(NAME)$(EXPSUFF)
-
-endif # PORTNAME == aix
-
-else # PORTNAME == beos
-
-# BEOS case
-$(shlib): $(OBJS)
- ln -fs $(top_srcdir)/src/backend/postgres _APP_
- $(CC) -Xlinker -soname=$@ $(LDFLAGS_SL) -o $@ _APP_ $(OBJS) $(SHLIB_LINK)
-
-endif # PORTNAME == beos
-
-else # PORTNAME == cygwin
-
-# Cygwin case
-$(shlib) lib$(NAME).a: $(OBJS)
-ifndef DLL_DEFFILE
- $(DLLTOOL) --export-all $(DLLTOOL_DEFFLAGS) --output-def $(NAME).def $(OBJS)
- $(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(NAME).def $(OBJS) $(SHLIB_LINK)
- $(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(NAME).def --output-lib lib$(NAME).a
-else
- $(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(DLL_DEFFILE) $(OBJS) $(SHLIB_LINK)
- $(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(DLL_DEFFILE) --output-lib lib$(NAME).a
-endif
-
-endif # PORTNAME == cygwin
-
-else # PORTNAME == win32
-
-# win32 case
-$(shlib) lib$(NAME).a: $(OBJS)
-ifndef DLL_DEFFILE
- $(DLLTOOL) --export-all $(DLLTOOL_DEFFLAGS) --output-def $(NAME).def $(OBJS)
- $(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(NAME).def $(OBJS) $(SHLIB_LINK)
- $(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(NAME).def --output-lib lib$(NAME).a
-else
- $(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(DLL_DEFFILE) $(OBJS) $(SHLIB_LINK)
- $(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(DLL_DEFFILE) --output-lib lib$(NAME).a
-endif
-
-endif # PORTNAME == win32
-
-endif # enable_shared
-
-
-##
-## INSTALL
-##
-
-.PHONY: install-lib install-lib-static install-lib-shared
-install-lib: install-lib-static install-lib-shared
-
-install-lib-static: lib$(NAME).a
- $(INSTALL_STLIB) $< $(DESTDIR)$(libdir)/lib$(NAME).a
-ifeq ($(PORTNAME), darwin)
- cd $(DESTDIR)$(libdir) && \
- ranlib lib$(NAME).a
-endif
-
-ifeq ($(enable_shared), yes)
-install-lib-shared: $(shlib)
- $(INSTALL_SHLIB) $< $(DESTDIR)$(libdir)/$(shlib)
-ifneq ($(PORTNAME), cygwin)
-ifneq ($(PORTNAME), win32)
-ifneq ($(shlib), $(shlib_major))
- cd $(DESTDIR)$(libdir) && \
- rm -f $(shlib_major) && \
- $(LN_S) $(shlib) $(shlib_major)
-endif
-ifneq ($(shlib), $(shlib_bare))
- cd $(DESTDIR)$(libdir) && \
- rm -f $(shlib_bare) && \
- $(LN_S) $(shlib) $(shlib_bare)
-endif
-endif # not win32
-endif # not cygwin
-endif # enable_shared
-
-
-##
-## UNINSTALL
-##
-
-.PHONY: uninstall-lib
-uninstall-lib:
- rm -f $(DESTDIR)$(libdir)/lib$(NAME).a
-ifeq ($(enable_shared), yes)
- rm -f $(DESTDIR)$(libdir)/$(shlib_bare) \
- $(DESTDIR)$(libdir)/$(shlib_major) \
- $(DESTDIR)$(libdir)/$(shlib)
-endif # enable_shared
-
-
-##
-## CLEAN
-##
-
-.PHONY: clean-lib
-clean-lib:
- rm -f lib$(NAME).a
-ifeq ($(enable_shared), yes)
- rm -f $(shlib_bare) $(shlib_major) $(shlib)
-ifdef EXPSUFF
- rm -f lib$(NAME)$(EXPSUFF)
-endif
-endif
-ifeq ($(PORTNAME), cygwin)
- rm -f $(NAME).dll $(NAME).def
-endif
-
-ifeq ($(PORTNAME), win32)
- rm -f $(NAME).dll $(NAME).def
-endif
Modified: trunk/lwgeom/liblwgeom.c
===================================================================
--- trunk/lwgeom/liblwgeom.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/liblwgeom.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -15,6 +15,8 @@
#endif
/* Global variables */
+#include "../postgis_config.h"
+
#if DEFAULT_CONTEXT == CONTEXT_SA
#include "liblwgeom.h"
lwallocator lwalloc_var = default_allocator;
Modified: trunk/lwgeom/liblwgeom.h
===================================================================
--- trunk/lwgeom/liblwgeom.h 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/liblwgeom.h 2008-05-14 17:10:19 UTC (rev 2774)
@@ -34,8 +34,10 @@
typedef void (*lwreporter)(const char* fmt, ...);
#ifndef C_H
+
typedef unsigned int uint32;
typedef int int32;
+
#endif
/*
Modified: trunk/lwgeom/long_xact.sql.in
===================================================================
--- trunk/lwgeom/long_xact.sql.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/long_xact.sql.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -211,12 +211,12 @@
CREATEFUNCTION CheckAuthTrigger()
RETURNS trigger AS
- '@MODULE_FILENAME@', 'check_authorization'
+ 'MODULE_PATHNAME', 'check_authorization'
LANGUAGE C;
CREATEFUNCTION GetTransactionID()
RETURNS xid AS
- '@MODULE_FILENAME@', 'getTransactionID'
+ 'MODULE_PATHNAME', 'getTransactionID'
LANGUAGE C;
Modified: trunk/lwgeom/lwgeom_btree.c
===================================================================
--- trunk/lwgeom/lwgeom_btree.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_btree.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -29,10 +29,10 @@
/* #define PGIS_DEBUG */
-#if USE_VERSION == 72
+#if POSTGIS_PGSQL_VERSION == 72
#define BTREE_SRID_MISMATCH_SEVERITY NOTICE
#else
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
#define BTREE_SRID_MISMATCH_SEVERITY WARNING
#else
#define BTREE_SRID_MISMATCH_SEVERITY ERROR
Modified: trunk/lwgeom/lwgeom_dump.c
===================================================================
--- trunk/lwgeom/lwgeom_dump.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_dump.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,7 +1,9 @@
+#include "../postgis_config.h"
+
/*
* This only works for PGSQL > 72
*/
-#if USE_VERSION > 72
+#if POSTGIS_PGSQL_VERSION > 72
#include <math.h>
#include <float.h>
@@ -307,4 +309,4 @@
}
-#endif /* USE_VERSION > 72 */
+#endif /* POSTGIS_PGSQL_VERSION > 72 */
Modified: trunk/lwgeom/lwgeom_estimate.c
===================================================================
--- trunk/lwgeom/lwgeom_estimate.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_estimate.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -29,7 +29,7 @@
/*#define DEBUG_GEOMETRY_STATS 1*/
-#if USE_VERSION >= 80
+#if POSTGIS_PGSQL_VERSION >= 80
#include "commands/vacuum.h"
#include "utils/lsyscache.h"
@@ -82,7 +82,7 @@
static float8 estimate_selectivity(BOX2DFLOAT4 *box, GEOM_STATS *geomstats);
-#endif /* USE_VERSION >= 80 */
+#endif /* POSTGIS_PGSQL_VERSION >= 80 */
#define SHOW_DIGS_DOUBLE 15
#define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 6 + 1 + 3 +1)
@@ -136,7 +136,7 @@
Datum LWGEOM_gist_sel(PG_FUNCTION_ARGS);
Datum LWGEOM_gist_joinsel(PG_FUNCTION_ARGS);
Datum LWGEOM_estimated_extent(PG_FUNCTION_ARGS);
-#if USE_VERSION >= 80
+#if POSTGIS_PGSQL_VERSION >= 80
Datum LWGEOM_analyze(PG_FUNCTION_ARGS);
#endif
@@ -405,7 +405,7 @@
PG_RETURN_NULL() ;
}
-#if USE_VERSION >= 80
+#if POSTGIS_PGSQL_VERSION >= 80
SPIportal = SPI_cursor_open(NULL, SPIplan, NULL, NULL, 1);
#else
SPIportal = SPI_cursor_open(NULL, SPIplan, NULL, NULL);
@@ -765,7 +765,7 @@
}
-#if ! REALLY_DO_JOINSEL || USE_VERSION < 80
+#if ! REALLY_DO_JOINSEL || POSTGIS_PGSQL_VERSION < 80
/*
* JOIN selectivity in the GiST && operator
* for all PG versions
@@ -780,7 +780,7 @@
PG_RETURN_FLOAT8(DEFAULT_GEOMETRY_JOINSEL);
}
-#else /* REALLY_DO_JOINSEL && USE_VERSION >= 80 */
+#else /* REALLY_DO_JOINSEL && POSTGIS_PGSQL_VERSION >= 80 */
int calculate_column_intersection(BOX2DFLOAT4 *search_box, GEOM_STATS *geomstats1, GEOM_STATS *geomstats2);
@@ -817,7 +817,7 @@
PG_FUNCTION_INFO_V1(LWGEOM_gist_joinsel);
Datum LWGEOM_gist_joinsel(PG_FUNCTION_ARGS)
{
-#if USE_VERSION < 81
+#if POSTGIS_PGSQL_VERSION < 81
Query *root = (Query *) PG_GETARG_POINTER(0);
#else
PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0);
@@ -881,7 +881,7 @@
var1 = (Var *)arg1;
var2 = (Var *)arg2;
-#if USE_VERSION < 81
+#if POSTGIS_PGSQL_VERSION < 81
relid1 = getrelid(var1->varno, root->rtable);
relid2 = getrelid(var2->varno, root->rtable);
#else
@@ -1052,7 +1052,7 @@
/**************************** FROM POSTGIS ****************/
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
/*
* get_restriction_var
* Examine the args of a restriction clause to see if it's of the
@@ -1139,7 +1139,7 @@
double myest;
-#ifndef USE_STATS
+#ifndef POSTGIS_USE_STATS
PG_RETURN_FLOAT8(DEFAULT_GEOMETRY_SEL);
#endif
@@ -1432,7 +1432,7 @@
PG_RETURN_POINTER(box);
}
-#else /* USE_VERSION >= 80 */
+#else /* POSTGIS_PGSQL_VERSION >= 80 */
/*
* This function returns an estimate of the selectivity
@@ -1693,7 +1693,7 @@
PG_FUNCTION_INFO_V1(LWGEOM_gist_sel);
Datum LWGEOM_gist_sel(PG_FUNCTION_ARGS)
{
-#if USE_VERSION < 81
+#if POSTGIS_PGSQL_VERSION < 81
Query *root = (Query *) PG_GETARG_POINTER(0);
#else
PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0);
@@ -1788,7 +1788,7 @@
* Get pg_statistic row
*/
-#if USE_VERSION < 81
+#if POSTGIS_PGSQL_VERSION < 81
/* relid = getrelid(varRelid, root->rtable); */
relid = getrelid(self->varno, root->rtable);
#else
@@ -2626,7 +2626,7 @@
}
-#endif /* USE_VERSION >= 80 */
+#endif /* POSTGIS_PGSQL_VERSION >= 80 */
/**********************************************************************
Modified: trunk/lwgeom/lwgeom_functions_basic.c
===================================================================
--- trunk/lwgeom/lwgeom_functions_basic.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_functions_basic.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -180,7 +180,7 @@
PG_FUNCTION_INFO_V1(postgis_autocache_bbox);
Datum postgis_autocache_bbox(PG_FUNCTION_ARGS)
{
-#ifdef AUTOCACHE_BBOX
+#ifdef POSTGIS_AUTOCACHE_BBOX
PG_RETURN_BOOL(TRUE);
#else
PG_RETURN_BOOL(FALSE);
@@ -1858,13 +1858,13 @@
Datum datum;
PG_LWGEOM *geom;
ArrayType *result;
-#if USE_VERSION > 72
-# if USE_VERSION == 73
+#if POSTGIS_PGSQL_VERSION > 72
+# if POSTGIS_PGSQL_VERSION == 73
Oid oid = getGeometryOID();
-# else /* USE_VERSION > 73 */
+# else /* POSTGIS_PGSQL_VERSION > 73 */
Oid oid = get_fn_expr_argtype(fcinfo->flinfo, 1);
-# endif /* USE_VERSION > 73 */
-#endif /* USE_VERSION > 72 */
+# endif /* POSTGIS_PGSQL_VERSION > 73 */
+#endif /* POSTGIS_PGSQL_VERSION > 72 */
#ifdef PGIS_DEBUG
@@ -1926,10 +1926,10 @@
SET_VARSIZE(result, nbytes);
result->ndim = 1;
-#if USE_VERSION > 72
+#if POSTGIS_PGSQL_VERSION > 72
result->elemtype = oid;
#endif
-#if USE_VERSION > 81
+#if POSTGIS_PGSQL_VERSION > 81
result->dataoffset = 0;
#endif
memcpy(ARR_DIMS(result), &nelems, sizeof(int));
Modified: trunk/lwgeom/lwgeom_geos_c.c
===================================================================
--- trunk/lwgeom/lwgeom_geos_c.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_geos_c.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,3 +1,5 @@
+#include "../postgis_config.h"
+
#include "postgres.h"
#include "utils/array.h"
#include "utils/builtins.h"
@@ -3,5 +5,4 @@
#include "fmgr.h"
-
#include "lwgeom_pg.h"
#include "liblwgeom.h"
@@ -752,7 +753,7 @@
}
-#if GEOS_VERNUM >= 30
+#if POSTGIS_GEOS_VERSION >= 30
PG_FUNCTION_INFO_V1(topologypreservesimplify);
Datum topologypreservesimplify(PG_FUNCTION_ARGS)
Modified: trunk/lwgeom/lwgeom_gist.c
===================================================================
--- trunk/lwgeom/lwgeom_gist.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_gist.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -4,16 +4,19 @@
#include <stdio.h>
#include <errno.h>
+#include "../postgis_config.h"
+
#include "postgres.h"
#include "access/gist.h"
#include "access/itup.h"
-#if USE_VERSION > 80
+#if POSTGIS_PGSQL_VERSION > 80
#include "access/skey.h"
#endif
#include "fmgr.h"
#include "utils/elog.h"
#include "liblwgeom.h"
+
#include "lwgeom_pg.h"
#include "stringBuffer.h"
@@ -542,7 +545,7 @@
if (in != (PG_LWGEOM*)DatumGetPointer(entry->key))
pfree(in); /* PG_FREE_IF_COPY */
-#if USE_VERSION >= 82
+#if POSTGIS_PGSQL_VERSION >= 82
gistentryinit(*retval, PointerGetDatum(rr),
entry->rel, entry->page,
entry->offset,
@@ -562,7 +565,7 @@
elog(NOTICE,"GIST: LWGEOM_gist_compress got a NULL key");
#endif
-#if USE_VERSION >= 82
+#if POSTGIS_PGSQL_VERSION >= 82
gistentryinit(*retval, (Datum) 0, entry->rel,
entry->page, entry->offset, FALSE);
#else
@@ -807,7 +810,7 @@
PG_FUNCTION_INFO_V1(LWGEOM_gist_union);
Datum LWGEOM_gist_union(PG_FUNCTION_ARGS)
{
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
bytea *entryvec = (bytea *) PG_GETARG_POINTER(0);
#else
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
@@ -822,7 +825,7 @@
elog(NOTICE,"GIST: LWGEOM_gist_union called\n");
#endif
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
numranges = (VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY);
cur = (BOX2DFLOAT4 *) DatumGetPointer(((GISTENTRY *) VARDATA(entryvec))[0].key);
#else
@@ -837,7 +840,7 @@
for (i = 1; i < numranges; i++)
{
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
cur = (BOX2DFLOAT4*) DatumGetPointer(((GISTENTRY *) VARDATA(entryvec))[i].key);
#else
cur = (BOX2DFLOAT4*) DatumGetPointer(entryvec->vector[i].key);
@@ -1030,7 +1033,7 @@
PG_FUNCTION_INFO_V1(LWGEOM_gist_picksplit);
Datum LWGEOM_gist_picksplit(PG_FUNCTION_ARGS)
{
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
bytea *entryvec = (bytea *) PG_GETARG_POINTER(0);
#else
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
@@ -1053,7 +1056,7 @@
posL = posR = posB = posT = 0;
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
maxoff = ((VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY)) - 1;
cur = (BOX2DFLOAT4*) DatumGetPointer(((GISTENTRY *) VARDATA(entryvec))[FirstOffsetNumber].key);
#else
@@ -1071,7 +1074,7 @@
/* find MBR */
for (i = OffsetNumberNext(FirstOffsetNumber); i <= maxoff; i = OffsetNumberNext(i))
{
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
cur = (BOX2DFLOAT4*) DatumGetPointer(((GISTENTRY *) VARDATA(entryvec))[i].key);
#else
cur = (BOX2DFLOAT4 *) DatumGetPointer(entryvec->vector[i].key);
@@ -1111,7 +1114,7 @@
#ifdef PGIS_DEBUG_GIST6
elog(NOTICE," AllIsEqual!");
#endif
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
cur = (BOX2DFLOAT4*) DatumGetPointer(((GISTENTRY *) VARDATA(entryvec))[OffsetNumberNext(FirstOffsetNumber)].key);
#else
cur = (BOX2DFLOAT4*) DatumGetPointer(entryvec->vector[OffsetNumberNext(FirstOffsetNumber)].key);
@@ -1167,7 +1170,7 @@
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
cur = (BOX2DFLOAT4*) DatumGetPointer(((GISTENTRY *) VARDATA(entryvec))[i].key);
#else
cur = (BOX2DFLOAT4*) DatumGetPointer(entryvec->vector[i].key);
@@ -1196,7 +1199,7 @@
KBsort *arr = (KBsort*)palloc( sizeof(KBsort) * maxoff );
posL = posR = posB = posT = 0;
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) {
-#if USE_VERSION < 80
+#if POSTGIS_PGSQL_VERSION < 80
arr[i-1].key = (BOX2DFLOAT4*) DatumGetPointer(((GISTENTRY *) VARDATA(entryvec))[i].key);
#else
arr[i-1].key = (BOX2DFLOAT4*) DatumGetPointer(entryvec->vector[i].key);
Modified: trunk/lwgeom/lwgeom_inout.c
===================================================================
--- trunk/lwgeom/lwgeom_inout.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_inout.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,3 +1,5 @@
+#include "../postgis_config.h"
+
#include "postgres.h"
#include <math.h>
@@ -13,7 +15,7 @@
#include "fmgr.h"
#include "utils/elog.h"
-#if USE_VERSION > 73
+#if POSTGIS_PGSQL_VERSION > 73
# include "lib/stringinfo.h" /* for binary input */
#endif
@@ -37,7 +39,7 @@
Datum LWGEOM_to_bytea(PG_FUNCTION_ARGS);
Datum LWGEOM_from_bytea(PG_FUNCTION_ARGS);
Datum parse_WKT_lwgeom(PG_FUNCTION_ARGS);
-#if USE_VERSION > 73
+#if POSTGIS_PGSQL_VERSION > 73
Datum LWGEOM_recv(PG_FUNCTION_ARGS);
Datum LWGEOM_send(PG_FUNCTION_ARGS);
#endif
@@ -404,7 +406,7 @@
char
is_worth_caching_pglwgeom_bbox(const PG_LWGEOM *in)
{
-#if ! AUTOCACHE_BBOX
+#if ! POSTGIS_AUTOCACHE_BBOX
return false;
#endif
if ( TYPE_GETTYPE(in->type) == POINTTYPE ) return false;
@@ -414,7 +416,7 @@
char
is_worth_caching_serialized_bbox(const uchar *in)
{
-#if ! AUTOCACHE_BBOX
+#if ! POSTGIS_AUTOCACHE_BBOX
return false;
#endif
if ( TYPE_GETTYPE((uchar)in[0]) == POINTTYPE ) return false;
@@ -424,7 +426,7 @@
char
is_worth_caching_lwgeom_bbox(const LWGEOM *in)
{
-#if ! AUTOCACHE_BBOX
+#if ! POSTGIS_AUTOCACHE_BBOX
return false;
#endif
if ( TYPE_GETTYPE(in->type) == POINTTYPE ) return false;
@@ -537,7 +539,7 @@
}
-#if USE_VERSION > 73
+#if POSTGIS_PGSQL_VERSION > 73
/*
* This function must advance the StringInfo.cursor pointer
* and leave it at the end of StringInfo.buf. If it fails
@@ -604,7 +606,7 @@
}
-#endif /* USE_VERSION > 73 */
+#endif /* POSTGIS_PGSQL_VERSION > 73 */
PG_FUNCTION_INFO_V1(LWGEOM_to_bytea);
Datum LWGEOM_to_bytea(PG_FUNCTION_ARGS)
Modified: trunk/lwgeom/lwgeom_pg.c
===================================================================
--- trunk/lwgeom/lwgeom_pg.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_pg.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,3 +1,5 @@
+#include "../postgis_config.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -114,7 +116,7 @@
size_t size;
PG_LWGEOM *result;
-#if AUTOCACHE_BBOX
+#if POSTGIS_AUTOCACHE_BBOX
if ( ! in->bbox && is_worth_caching_lwgeom_bbox(in) )
{
lwgeom_addBBOX(in);
Modified: trunk/lwgeom/lwgeom_pg.h
===================================================================
--- trunk/lwgeom/lwgeom_pg.h 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_pg.h 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,6 +1,7 @@
#ifndef _LWGEOM_PG_H
#define _LWGEOM_PG_H 1
+#include "../postgis_config.h"
#include "postgres.h"
#include "utils/geo_decls.h"
#include "fmgr.h"
@@ -11,7 +12,7 @@
#define PG_NARGS() (fcinfo->nargs)
#endif
-#if USE_VERSION < 82
+#if POSTGIS_PGSQL_VERSION < 82
#define ARR_OVERHEAD_NONULLS(x) ARR_OVERHEAD((x))
#endif
Modified: trunk/lwgeom/lwgeom_transform.c
===================================================================
--- trunk/lwgeom/lwgeom_transform.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwgeom_transform.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -28,8 +28,8 @@
Datum transform_geom(PG_FUNCTION_ARGS);
Datum postgis_proj_version(PG_FUNCTION_ARGS);
-/* if USE_PROJECTION undefined, we get a do-nothing transform() function */
-#ifndef USE_PROJ
+/* if POSTGIS_PROJ_VERSION undefined, we get a do-nothing transform() function */
+#ifndef POSTGIS_PROJ_VERSION
PG_FUNCTION_INFO_V1(transform);
Datum transform(PG_FUNCTION_ARGS)
@@ -53,7 +53,7 @@
PG_RETURN_NULL();
}
-#else /* defined USE_PROJ */
+#else /* defined POSTGIS_PROJ_VERSION */
#include "projects.h"
#include "utils/memutils.h"
@@ -122,13 +122,13 @@
/* PJ Hash API */
-#if USE_VERSION == 72
+#if POSTGIS_PGSQL_VERSION == 72
long mcxt_ptr_hash(void *key, int keysize);
#endif
-#if USE_VERSION == 73
+#if POSTGIS_PGSQL_VERSION == 73
uint32 mcxt_ptr_hash(void *key, int keysize);
#endif
-#if USE_VERSION > 73
+#if POSTGIS_PGSQL_VERSION > 73
uint32 mcxt_ptr_hash(const void *key, Size keysize);
#endif
@@ -159,7 +159,7 @@
/* Memory context definition must match the current version of PostgreSQL */
-#if USE_VERSION == 72
+#if POSTGIS_PGSQL_VERSION == 72
static MemoryContextMethods PROJ4SRSCacheContextMethods = {
NULL,
NULL,
@@ -174,7 +174,7 @@
};
#endif
-#if USE_VERSION == 73 || USE_VERSION == 74
+#if POSTGIS_PGSQL_VERSION == 73 || POSTGIS_PGSQL_VERSION == 74
static MemoryContextMethods PROJ4SRSCacheContextMethods = {
NULL,
NULL,
@@ -190,7 +190,7 @@
};
#endif
-#if USE_VERSION >= 80
+#if POSTGIS_PGSQL_VERSION >= 80
static MemoryContextMethods PROJ4SRSCacheContextMethods = {
NULL,
NULL,
@@ -291,13 +291,13 @@
* has changed over the years....
*/
-#if USE_VERSION == 72
+#if POSTGIS_PGSQL_VERSION == 72
long mcxt_ptr_hash(void *key, int keysize)
#endif
-#if USE_VERSION == 73
+#if POSTGIS_PGSQL_VERSION == 73
uint32 mcxt_ptr_hash(void *key, int keysize)
#endif
-#if USE_VERSION > 73
+#if POSTGIS_PGSQL_VERSION > 73
uint32 mcxt_ptr_hash(const void *key, Size keysize)
#endif
{
@@ -582,7 +582,7 @@
*/
void SetPROJ4LibPath()
{
-#if USE_VERSION >= 80
+#if POSTGIS_PGSQL_VERSION >= 80
char *path;
const char **proj_lib_path;
Deleted: trunk/lwgeom/lwpostgis.sql.in
===================================================================
--- trunk/lwgeom/lwpostgis.sql.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwpostgis.sql.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,6343 +0,0 @@
--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
---
--- $Id$
---
--- 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 lwpostgis_uptrade.sql are fine,
--- other changes will require a bump in Major version.
--- Currently only function replaceble by CREATE OR REPLACE
--- are cleanly handled.
---
--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-#include "sqldefines.h"
-
-BEGIN;
-
--------------------------------------------------------------------
--- HISTOGRAM2D TYPE (lwhistogram2d)
--------------------------------------------------------------------
-
-#if USE_VERSION < 73
-# define HISTOGRAM_IN_REP opaque
-# define HISTOGRAM_OUT_REP opaque
-#else
-# define HISTOGRAM_IN_REP histogram2d
-# define HISTOGRAM_OUT_REP cstring
-#endif
-
--- Deprecation in 1.2.3
-CREATEFUNCTION histogram2d_in(HISTOGRAM_OUT_REP)
- RETURNS HISTOGRAM_IN_REP
- AS '@MODULE_FILENAME@', 'lwhistogram2d_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_histogram2d_in(HISTOGRAM_OUT_REP)
- RETURNS HISTOGRAM_IN_REP
- AS '@MODULE_FILENAME@', 'lwhistogram2d_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION histogram2d_out(HISTOGRAM_IN_REP)
- RETURNS HISTOGRAM_OUT_REP
- AS '@MODULE_FILENAME@', 'lwhistogram2d_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_histogram2d_out(HISTOGRAM_IN_REP)
- RETURNS HISTOGRAM_OUT_REP
- AS '@MODULE_FILENAME@', 'lwhistogram2d_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
-CREATE TYPE histogram2d (
- alignment = double,
- internallength = variable,
- input = ST_histogram2d_in,
- output = ST_histogram2d_out,
- storage = main
-);
-
--------------------------------------------------------------------
--- SPHEROID TYPE
--------------------------------------------------------------------
-
-#if USE_VERSION < 73
-# define SPHEROID_IN_REP opaque
-# define SPHEROID_OUT_REP opaque
-#else
-# define SPHEROID_IN_REP spheroid
-# define SPHEROID_OUT_REP cstring
-#endif
-
--- Deprecation in 1.2.3
-CREATEFUNCTION spheroid_in(SPHEROID_OUT_REP)
- RETURNS SPHEROID_IN_REP
- AS '@MODULE_FILENAME@','ellipsoid_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_spheroid_in(SPHEROID_OUT_REP)
- RETURNS SPHEROID_IN_REP
- AS '@MODULE_FILENAME@','ellipsoid_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION spheroid_out(SPHEROID_IN_REP)
- RETURNS SPHEROID_OUT_REP
- AS '@MODULE_FILENAME@','ellipsoid_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_spheroid_out(SPHEROID_IN_REP)
- RETURNS SPHEROID_OUT_REP
- AS '@MODULE_FILENAME@','ellipsoid_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
-CREATE TYPE spheroid (
- alignment = double,
- internallength = 65,
- input = ST_spheroid_in,
- output = ST_spheroid_out
-);
-
--------------------------------------------------------------------
--- GEOMETRY TYPE (lwgeom)
--------------------------------------------------------------------
-
-#if USE_VERSION < 73
-# define GEOMETRY_IN_REP opaque
-# define GEOMETRY_OUT_REP opaque
-#else
-# define GEOMETRY_IN_REP geometry
-# define GEOMETRY_OUT_REP cstring
-#endif
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_in(GEOMETRY_OUT_REP)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_in(GEOMETRY_OUT_REP)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_out(GEOMETRY_IN_REP)
- RETURNS cstring
- AS '@MODULE_FILENAME@','LWGEOM_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_out(GEOMETRY_IN_REP)
- RETURNS cstring
- AS '@MODULE_FILENAME@','LWGEOM_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-#if USE_VERSION >= 80
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_analyze(internal)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_analyze'
- LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_analyze(internal)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_analyze'
- LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict);
-#endif
-
-#if USE_VERSION > 73
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_recv(internal)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_recv'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_recv(internal)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_recv'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_send(geometry)
- RETURNS bytea
- AS '@MODULE_FILENAME@','LWGEOM_send'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_send(geometry)
- RETURNS bytea
- AS '@MODULE_FILENAME@','LWGEOM_send'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-#endif
-
-CREATE TYPE geometry (
- internallength = variable,
- input = ST_geometry_in,
- output = ST_geometry_out,
-#if USE_VERSION > 73
- send = ST_geometry_send,
- receive = ST_geometry_recv,
-#endif
- delimiter = ':',
-#if USE_VERSION >= 80
- analyze = ST_geometry_analyze,
-#endif
- 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 '@MODULE_FILENAME@', '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 '@MODULE_FILENAME@', '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
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION Rotate(geometry,float8)
- RETURNS geometry
- AS 'SELECT rotateZ($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Rotate(geometry,float8)
- RETURNS geometry
- AS 'SELECT rotateZ($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT;
-
--- Availability: 1.1.2
--- Deprecation in 1.2.3
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION Translate(geometry,float8,float8)
- RETURNS geometry
- AS 'SELECT translate($1, $2, $3, 0)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION Scale(geometry,float8,float8)
- RETURNS geometry
- AS 'SELECT scale($1, $2, $3, 1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION 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
-CREATEFUNCTION shift_longitude(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_longitude_shift'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_shift_longitude(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_longitude_shift'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--------------------------------------------------------------------
--- BOX3D TYPE
--------------------------------------------------------------------
-
-#if USE_VERSION < 73
-# define BOX3D_IN_REP opaque
-# define BOX3D_OUT_REP opaque
-#else
-# define BOX3D_IN_REP box3d
-# define BOX3D_OUT_REP cstring
-#endif
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box3d_in(BOX3D_OUT_REP)
- RETURNS BOX3D_IN_REP
- AS '@MODULE_FILENAME@', 'BOX3D_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box3d_out(BOX3D_IN_REP)
- RETURNS BOX3D_OUT_REP
- AS '@MODULE_FILENAME@', 'BOX3D_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box3d_in(BOX3D_OUT_REP)
- RETURNS BOX3D_IN_REP
- AS '@MODULE_FILENAME@', 'BOX3D_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box3d_out(BOX3D_IN_REP)
- RETURNS BOX3D_OUT_REP
- AS '@MODULE_FILENAME@', 'BOX3D_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
-CREATE TYPE box3d (
- alignment = double,
- internallength = 48,
- input = ST_box3d_in,
- output = ST_box3d_out
-);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION xmin(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_xmin'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_XMin(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_xmin'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION ymin(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_ymin'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_YMin(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_ymin'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION zmin(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_zmin'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_ZMin(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_zmin'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION xmax(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_xmax'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_XMax(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_xmax'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION ymax(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_ymax'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_YMax(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_ymax'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION zmax(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_zmax'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_ZMax(box3d)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','BOX3D_zmax'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--------------------------------------------------------------------
--- CHIP TYPE
--------------------------------------------------------------------
-
-#if USE_VERSION < 73
-# define CHIP_IN_REP opaque
-# define CHIP_OUT_REP opaque
-#else
-# define CHIP_IN_REP chip
-# define CHIP_OUT_REP cstring
-#endif
-
--- Deprecation in 1.2.3
-CREATEFUNCTION chip_in(CHIP_OUT_REP)
- RETURNS CHIP_IN_REP
- AS '@MODULE_FILENAME@','CHIP_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_chip_in(CHIP_OUT_REP)
- RETURNS CHIP_IN_REP
- AS '@MODULE_FILENAME@','CHIP_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION chip_out(CHIP_IN_REP)
- RETURNS CHIP_OUT_REP
- AS '@MODULE_FILENAME@','CHIP_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_chip_out(CHIP_IN_REP)
- RETURNS CHIP_OUT_REP
- AS '@MODULE_FILENAME@','CHIP_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
-CREATE TYPE chip (
- alignment = double,
- internallength = variable,
- input = ST_chip_in,
- output = ST_chip_out,
- storage = extended
-);
-
------------------------------------------------------------------------
--- BOX2D
------------------------------------------------------------------------
-
-
-#if USE_VERSION < 73
-# define BOX2D_IN_REP opaque
-# define BOX2D_OUT_REP opaque
-#else
-# define BOX2D_IN_REP box2d
-# define BOX2D_OUT_REP cstring
-#endif
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_in(BOX2D_OUT_REP)
- RETURNS box2d
- AS '@MODULE_FILENAME@','BOX2DFLOAT4_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_in(BOX2D_OUT_REP)
- RETURNS box2d
- AS '@MODULE_FILENAME@','BOX2DFLOAT4_in'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_out(BOX2D_IN_REP)
- RETURNS cstring
- AS '@MODULE_FILENAME@','BOX2DFLOAT4_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_out(BOX2D_IN_REP)
- RETURNS cstring
- AS '@MODULE_FILENAME@','BOX2DFLOAT4_out'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-CREATE TYPE box2d (
- internallength = 16,
- input = ST_box2d_in,
- output = ST_box2d_out,
- storage = plain
-);
-
----- BOX2D support functions
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_overleft(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_overleft'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_overleft(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_overleft'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_overright(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_overright'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_overright(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_overright'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_left(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_left'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_left(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_left'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_right(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_right'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_right(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_right'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_contain(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_contain'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_contain(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_contain'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_contained(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_contained'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_contained(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_contained'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_overlap(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_overlap'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_overlap(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_overlap'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_same(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_same'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_same(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_same'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d_intersects(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_intersects'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d_intersects(box2d, box2d)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'BOX2D_intersects'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-
--- lwgeom operator support functions
-
--------------------------------------------------------------------
--- BTREE indexes
--------------------------------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_lt(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_lt'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_lt(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_lt'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_le(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_le'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_le(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_le'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_gt(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_gt'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_gt(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_gt'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_ge(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_ge'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_ge(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_ge'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_eq(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_eq'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_eq(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'lwgeom_eq'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_cmp(geometry, geometry)
- RETURNS integer
- AS '@MODULE_FILENAME@', 'lwgeom_cmp'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_cmp(geometry, geometry)
- RETURNS integer
- AS '@MODULE_FILENAME@', 'lwgeom_cmp'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
---
--- Sorting operators for Btree
---
-
-CREATE OPERATOR < (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_lt,
- COMMUTATOR = '>', NEGATOR = '>=',
- RESTRICT = contsel, JOIN = contjoinsel
-);
-
-CREATE OPERATOR <= (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_le,
- COMMUTATOR = '>=', NEGATOR = '>',
- RESTRICT = contsel, JOIN = contjoinsel
-);
-
-CREATE OPERATOR = (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_eq,
- COMMUTATOR = '=', -- we might implement a faster negator here
- RESTRICT = contsel, JOIN = contjoinsel
-);
-
-CREATE OPERATOR >= (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_ge,
- COMMUTATOR = '<=', NEGATOR = '<',
- RESTRICT = contsel, JOIN = contjoinsel
-);
-CREATE OPERATOR > (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_gt,
- COMMUTATOR = '<', NEGATOR = '<=',
- RESTRICT = contsel, JOIN = contjoinsel
-);
-
-#if USE_VERSION >= 74
-
-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);
-
-#endif
-
-
--------------------------------------------------------------------
--- GiST indexes
--------------------------------------------------------------------
--- Deprecation in 1.2.3
-#if USE_VERSION < 73
-CREATEFUNCTION postgis_gist_sel(opaque, oid, opaque, int4)
-#else
-CREATEFUNCTION postgis_gist_sel (internal, oid, internal, int4)
-#endif
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_gist_sel'
- LANGUAGE 'C';
-
--- Availability: 1.2.2
-#if USE_VERSION < 73
-CREATEFUNCTION ST_postgis_gist_sel(opaque, oid, opaque, int4)
-#else
-CREATEFUNCTION ST_postgis_gist_sel (internal, oid, internal, int4)
-#endif
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_gist_sel'
- LANGUAGE 'C';
-
--- Deprecation in 1.2.3
-#if USE_VERSION == 72
-CREATEFUNCTION postgis_gist_joinsel(opaque, oid, opaque)
-#elif USE_VERSION == 73
-CREATEFUNCTION postgis_gist_joinsel(internal, oid, internal)
-#else
-CREATEFUNCTION postgis_gist_joinsel(internal, oid, internal, smallint)
-#endif
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_gist_joinsel'
- LANGUAGE 'C';
-
--- Availability: 1.2.2
-#if USE_VERSION == 72
-CREATEFUNCTION ST_postgis_gist_joinsel(opaque, oid, opaque)
-#elif USE_VERSION == 73
-CREATEFUNCTION ST_postgis_gist_joinsel(internal, oid, internal)
-#else
-CREATEFUNCTION ST_postgis_gist_joinsel(internal, oid, internal, smallint)
-#endif
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_gist_joinsel'
- LANGUAGE 'C';
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_overleft(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overleft'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_overleft(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overleft'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_overright(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overright'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_overright(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overright'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_overabove(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overabove'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_overabove(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overabove'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_overbelow(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overbelow'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_overbelow(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overbelow'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_left(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_left'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_left(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_left'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_right(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_right'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_right(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_right'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_above(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_above'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_above(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_above'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_below(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_below'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_below(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_below'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_contain(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_contain'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_contain(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_contain'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_contained(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_contained'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_contained(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_contained'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_overlap(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overlap'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry_overlap(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_overlap'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry_same(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_same'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
---Availability: 1.2.2
-CREATEFUNCTION ST_geometry_same(geometry, geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_same'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- GEOMETRY operators
-
-CREATE OPERATOR << (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_left,
- COMMUTATOR = '>>',
- RESTRICT = positionsel, JOIN = positionjoinsel
-);
-
-CREATE OPERATOR &< (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overleft,
- COMMUTATOR = '&>',
- RESTRICT = positionsel, JOIN = positionjoinsel
-);
-
-CREATE OPERATOR <<| (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_below,
- COMMUTATOR = '|>>',
- RESTRICT = positionsel, JOIN = positionjoinsel
-);
-
-CREATE OPERATOR &<| (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overbelow,
- COMMUTATOR = '|&>',
- RESTRICT = positionsel, JOIN = positionjoinsel
-);
-
-CREATE OPERATOR && (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overlap,
- COMMUTATOR = '&&',
- RESTRICT = ST_postgis_gist_sel, JOIN = ST_postgis_gist_joinsel
-);
-
-CREATE OPERATOR &> (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overright,
- COMMUTATOR = '&<',
- RESTRICT = positionsel, JOIN = positionjoinsel
-);
-
-CREATE OPERATOR >> (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_right,
- COMMUTATOR = '<<',
- RESTRICT = positionsel, JOIN = positionjoinsel
-);
-
-CREATE OPERATOR |&> (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overabove,
- COMMUTATOR = '&<|',
- RESTRICT = positionsel, JOIN = positionjoinsel
-);
-
-CREATE OPERATOR |>> (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_above,
- COMMUTATOR = '<<|',
- RESTRICT = positionsel, JOIN = positionjoinsel
-);
-
-CREATE OPERATOR ~= (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_same,
- COMMUTATOR = '~=',
- RESTRICT = eqsel, JOIN = eqjoinsel
-);
-
-CREATE OPERATOR @ (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_contained,
- COMMUTATOR = '~',
- RESTRICT = contsel, JOIN = contjoinsel
-);
-
-CREATE OPERATOR ~ (
- LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_contain,
- COMMUTATOR = '@',
- RESTRICT = contsel, JOIN = contjoinsel
-);
-
--- gist support functions
-
-#if USE_VERSION < 73
-#define OPAQUE_TYPE opaque
-#else
-#define OPAQUE_TYPE internal
-#endif
-
-CREATEFUNCTION LWGEOM_gist_consistent(OPAQUE_TYPE,geometry,int4)
- RETURNS bool
- AS '@MODULE_FILENAME@' ,'LWGEOM_gist_consistent'
- LANGUAGE 'C';
-
-CREATEFUNCTION LWGEOM_gist_compress(OPAQUE_TYPE)
- RETURNS OPAQUE_TYPE
- AS '@MODULE_FILENAME@','LWGEOM_gist_compress'
- LANGUAGE 'C';
-
-CREATEFUNCTION LWGEOM_gist_penalty(OPAQUE_TYPE,OPAQUE_TYPE,OPAQUE_TYPE)
- RETURNS OPAQUE_TYPE
- AS '@MODULE_FILENAME@' ,'LWGEOM_gist_penalty'
- LANGUAGE 'C';
-
-CREATEFUNCTION LWGEOM_gist_picksplit(OPAQUE_TYPE, OPAQUE_TYPE)
- RETURNS OPAQUE_TYPE
- AS '@MODULE_FILENAME@' ,'LWGEOM_gist_picksplit'
- LANGUAGE 'C';
-
-CREATEFUNCTION LWGEOM_gist_union(bytea, OPAQUE_TYPE)
- RETURNS OPAQUE_TYPE
- AS '@MODULE_FILENAME@' ,'LWGEOM_gist_union'
- LANGUAGE 'C';
-
-CREATEFUNCTION LWGEOM_gist_same(box2d, box2d, OPAQUE_TYPE)
- RETURNS OPAQUE_TYPE
- AS '@MODULE_FILENAME@' ,'LWGEOM_gist_same'
- LANGUAGE 'C';
-
-CREATEFUNCTION LWGEOM_gist_decompress(OPAQUE_TYPE)
- RETURNS OPAQUE_TYPE
- AS '@MODULE_FILENAME@' ,'LWGEOM_gist_decompress'
- LANGUAGE 'C';
-
--------------------------------------------
--- GIST opclass index binding entries.
--------------------------------------------
-
-#if USE_VERSION == 72
-
---
--- Create opclass index binding entries for PG72
---
-
-INSERT INTO pg_opclass (opcamid, opcname, opcintype, opcdefault, opckeytype)
- VALUES (
- (SELECT oid FROM pg_am WHERE amname = 'gist'),
- 'gist_geometry_ops',
- (SELECT oid FROM pg_type WHERE typname = 'geometry'),
- true,
- (SELECT oid FROM pg_type WHERE typname = 'box2d'));
-
--- drop table rt_ops_tmp;
-
-SELECT o.oid AS opoid, o.oprname
- INTO TABLE rt_ops_tmp
- FROM pg_operator o, pg_type t
- WHERE o.oprleft = t.oid
- AND t.typname = 'geometry';
-
--- poly_left
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 1, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '<<';
-
--- poly_overleft
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 2, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '&<';
-
--- poly_overlap
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 3, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '&&';
-
--- poly_overright
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 4, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '&>';
-
--- poly_right
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 5, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '>>';
-
--- poly_same
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 6, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '~=';
-
--- poly_contains
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 7, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '~';
-
--- poly_contained
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 8, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '@';
-
--- poly_overbelow
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 9, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '&<|';
-
--- poly_below
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 10, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '<<|';
-
--- poly_above
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 11, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '|>>';
-
--- poly_overabove
-INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
- SELECT opcl.oid, 12, true, c.opoid
- FROM pg_opclass opcl, rt_ops_tmp c
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and c.oprname = '|&>';
-
-DROP TABLE rt_ops_tmp;
-
-
--- add the entries to amproc for the support methods
--- note the amprocnum numbers associated with each are specific!
-INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
- SELECT opcl.oid, 1, pro.oid
- FROM pg_opclass opcl, pg_proc pro
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and proname = 'lwgeom_gist_consistent';
-
-INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
- SELECT opcl.oid, 2, pro.oid
- FROM pg_opclass opcl, pg_proc pro
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and proname = 'lwgeom_gist_union';
-
-INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
- SELECT opcl.oid, 3, pro.oid
- FROM pg_opclass opcl, pg_proc pro
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and proname = 'lwgeom_gist_compress';
-
-INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
- SELECT opcl.oid, 4, pro.oid
- FROM pg_opclass opcl, pg_proc pro
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and proname = 'lwgeom_gist_decompress';
-
-INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
- SELECT opcl.oid, 5, pro.oid
- FROM pg_opclass opcl, pg_proc pro
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and proname = 'lwgeom_gist_penalty';
-
-INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
- SELECT opcl.oid, 6, pro.oid
- FROM pg_opclass opcl, pg_proc pro
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and proname = 'lwgeom_gist_picksplit';
-
-INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
- SELECT opcl.oid, 7, pro.oid
- FROM pg_opclass opcl, pg_proc pro
- WHERE
- opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
- and opcname = 'gist_geometry_ops'
- and proname = 'lwgeom_gist_same';
-
-#else
-
---
--- Create opclass index bindings for PG>=73
---
-
-CREATE OPERATOR CLASS gist_geometry_ops
- DEFAULT FOR TYPE geometry USING gist AS
- OPERATOR 1 << RECHECK,
- OPERATOR 2 &< RECHECK,
- OPERATOR 3 && RECHECK,
- OPERATOR 4 &> RECHECK,
- OPERATOR 5 >> RECHECK,
- OPERATOR 6 ~= RECHECK,
- OPERATOR 7 ~ RECHECK,
- OPERATOR 8 @ RECHECK,
- OPERATOR 9 &<| RECHECK,
- OPERATOR 10 <<| RECHECK,
- OPERATOR 11 |>> RECHECK,
- OPERATOR 12 |&> RECHECK,
- FUNCTION 1 LWGEOM_gist_consistent (internal, geometry, int4),
- FUNCTION 2 LWGEOM_gist_union (bytea, internal),
- FUNCTION 3 LWGEOM_gist_compress (internal),
- FUNCTION 4 LWGEOM_gist_decompress (internal),
- FUNCTION 5 LWGEOM_gist_penalty (internal, internal, internal),
- FUNCTION 6 LWGEOM_gist_picksplit (internal, internal),
- FUNCTION 7 LWGEOM_gist_same (box2d, box2d, internal);
-
-UPDATE pg_opclass
- SET opckeytype = (SELECT oid FROM pg_type
- WHERE typname = 'box2d'
- AND typnamespace = (SELECT oid FROM pg_namespace
- WHERE nspname=current_schema()))
- WHERE opcname = 'gist_geometry_ops'
- AND opcnamespace = (SELECT oid from pg_namespace
- WHERE nspname=current_schema());
-
--- TODO: add btree binding...
-
-#endif
-
--------------------------------------------
--- other lwgeom functions
--------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION addBBOX(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_addBBOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_addBBOX(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_addBBOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION dropBBOX(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_dropBBOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_dropBBOX(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_dropBBOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION getSRID(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@','LWGEOM_getSRID'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION getSRID(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@','LWGEOM_getSRID'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION getBBOX(geometry)
- RETURNS box2d
- AS '@MODULE_FILENAME@','LWGEOM_to_BOX2DFLOAT4'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION getBBOX(geometry)
- RETURNS box2d
- AS '@MODULE_FILENAME@','LWGEOM_to_BOX2DFLOAT4'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--------------------------------------------
---- CHIP functions
--------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION srid(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getSRID'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_srid(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getSRID'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION height(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getHeight'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_height(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getHeight'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION factor(chip)
- RETURNS FLOAT4
- AS '@MODULE_FILENAME@','CHIP_getFactor'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_factor(chip)
- RETURNS FLOAT4
- AS '@MODULE_FILENAME@','CHIP_getFactor'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION width(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getWidth'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_width(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getWidth'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION datatype(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getDatatype'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_datatype(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getDatatype'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION compression(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getCompression'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_compression(chip)
- RETURNS int4
- AS '@MODULE_FILENAME@','CHIP_getCompression'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION setSRID(chip,int4)
- RETURNS chip
- AS '@MODULE_FILENAME@','CHIP_setSRID'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION setFactor(chip,float4)
- RETURNS chip
- AS '@MODULE_FILENAME@','CHIP_setFactor'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_setFactor(chip,float4)
- RETURNS chip
- AS '@MODULE_FILENAME@','CHIP_setFactor'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-------------------------------------------------------------------------
--- DEBUG
-------------------------------------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION mem_size(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_mem_size'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_mem_size(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_mem_size'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION summary(geometry)
- RETURNS text
- AS '@MODULE_FILENAME@', 'LWGEOM_summary'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_summary(geometry)
- RETURNS text
- AS '@MODULE_FILENAME@', 'LWGEOM_summary'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION npoints(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_npoints'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_npoints(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_npoints'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION nrings(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_nrings'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_nrings(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_nrings'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
-------------------------------------------------------------------------
--- Misures
-------------------------------------------------------------------------
-
--- this is a fake (for back-compatibility)
--- uses 3d if 3d is available, 2d otherwise
--- Deprecation in 1.2.3
-CREATEFUNCTION length3d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_length_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_length3d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_length_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION length2d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_length2d_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_length2d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_length2d_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
-CREATEFUNCTION length(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_length_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: length2d(geometry)
-CREATEFUNCTION ST_Length(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_length2d_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- this is a fake (for back-compatibility)
--- uses 3d if 3d is available, 2d otherwise
--- Deprecation in 1.2.3
-CREATEFUNCTION length3d_spheroid(geometry, spheroid)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_length_ellipsoid_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_length3d_spheroid(geometry, spheroid)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_length_ellipsoid_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION length_spheroid(geometry, spheroid)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_length_ellipsoid_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_length_spheroid(geometry, spheroid)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_length_ellipsoid_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION length2d_spheroid(geometry, spheroid)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_length2d_ellipsoid_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_length2d_spheroid(geometry, spheroid)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_length2d_ellipsoid_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- this is a fake (for back-compatibility)
--- uses 3d if 3d is available, 2d otherwise
--- Deprecation in 1.2.3
-CREATEFUNCTION perimeter3d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_perimeter_poly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_perimeter3d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_perimeter_poly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION perimeter2d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_perimeter2d_poly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_perimeter2d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_perimeter2d_poly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION perimeter(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_perimeter_poly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: perimeter2d(geometry)
-CREATEFUNCTION ST_Perimeter(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_perimeter2d_poly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- this is an alias for 'area(geometry)'
--- there is nothing such an 'area3d'...
--- Deprecation in 1.2.3
-CREATEFUNCTION area2d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_area_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_area2d(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@', 'LWGEOM_area_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION area(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_area_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: area(geometry)
-CREATEFUNCTION ST_Area(geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_area_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION distance_spheroid(geometry,geometry,spheroid)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_distance_ellipsoid_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_distance_spheroid(geometry,geometry,spheroid)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_distance_ellipsoid_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION distance_sphere(geometry,geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_distance_sphere'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_distance_sphere(geometry,geometry)
- RETURNS FLOAT8
- AS '@MODULE_FILENAME@','LWGEOM_distance_sphere'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Minimum distance. 2d only.
--- Deprecation in 1.2.3
-CREATEFUNCTION distance(geometry,geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_mindistance2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: distance(geometry,geometry)
-CREATEFUNCTION ST_Distance(geometry,geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_mindistance2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Maximum distance between linestrings. 2d only. Very bogus.
--- Deprecation in 1.2.3
-CREATEFUNCTION max_distance(geometry,geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_maxdistance2d_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_max_distance(geometry,geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_maxdistance2d_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION point_inside_circle(geometry,float8,float8,float8)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_inside_circle_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_point_inside_circle(geometry,float8,float8,float8)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_inside_circle_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION azimuth(geometry,geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_azimuth'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_azimuth(geometry,geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_azimuth'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
-------------------------------------------------------------------------
--- MISC
-------------------------------------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION force_2d(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_force_2d(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION force_3dz(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_3dz'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_force_3dz(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_3dz'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- an alias for force_3dz
--- Deprecation in 1.2.3
-CREATEFUNCTION force_3d(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_3dz'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_force_3d(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_3dz'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION force_3dm(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_3dm'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_force_3dm(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_3dm'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION force_4d(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_4d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_force_4d(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_4d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION force_collection(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_collection'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_force_collection(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_collection'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION multi(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_multi'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_multi(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_force_multi'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION collector(geometry, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_collect'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_collector(geometry, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_collect'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Deprecation in 1.2.3
-CREATEFUNCTION collect(geometry, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_collect'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_collect(geometry, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_collect'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Deprecation in 1.2.3
-CREATE AGGREGATE memcollect(
- sfunc = ST_collect,
- basetype = geometry,
- stype = geometry
- );
-
--- Availability: 1.2.2
-CREATE AGGREGATE ST_memcollect(
- sfunc = ST_collect,
- basetype = geometry,
- stype = geometry
- );
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geom_accum (geometry[],geometry)
- RETURNS geometry[]
- AS '@MODULE_FILENAME@', 'LWGEOM_accum'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geom_accum (geometry[],geometry)
- RETURNS geometry[]
- AS '@MODULE_FILENAME@', 'LWGEOM_accum'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Deprecation in 1.2.3
-CREATE AGGREGATE accum (
- sfunc = ST_geom_accum,
- basetype = geometry,
- stype = geometry[]
- );
-
--- Availability: 1.2.2
-CREATE AGGREGATE ST_accum (
- sfunc = ST_geom_accum,
- basetype = geometry,
- stype = geometry[]
- );
-
--- Deprecation in 1.2.3
-CREATEFUNCTION collect_garray (geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_collect_garray'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_collect_garray (geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_collect_garray'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Deprecation in 1.2.3
-CREATE AGGREGATE collect (
- sfunc = ST_geom_accum,
- basetype = geometry,
- stype = geometry[],
- finalfunc = ST_collect_garray
- );
-
-
--- Availability: 1.2.2
-CREATE AGGREGATE ST_collect (
- sfunc = ST_geom_accum,
- basetype = geometry,
- stype = geometry[],
- finalfunc = ST_collect_garray
- );
-
--- Deprecation in 1.2.3
-CREATEFUNCTION expand(box3d,float8)
- RETURNS box3d
- AS '@MODULE_FILENAME@', 'BOX3D_expand'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Expand(box3d,float8)
- RETURNS box3d
- AS '@MODULE_FILENAME@', 'BOX3D_expand'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION expand(box2d,float8)
- RETURNS box2d
- AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_expand'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_expand(box2d,float8)
- RETURNS box2d
- AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_expand'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION expand(geometry,float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_expand'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_expand(geometry,float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_expand'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION envelope(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_envelope'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- PostGIS equivalent function: envelope(geometry)
-CREATEFUNCTION ST_Envelope(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_envelope'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION reverse(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_reverse'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Reverse(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_reverse'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION ForceRHR(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_forceRHR_poly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_ForceRHR(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_forceRHR_poly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION noop(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_noop'
- LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_noop(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_noop'
- LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION zmflag(geometry)
- RETURNS smallint
- AS '@MODULE_FILENAME@', 'LWGEOM_zmflag'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_zmflag(geometry)
- RETURNS smallint
- AS '@MODULE_FILENAME@', 'LWGEOM_zmflag'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION hasBBOX(geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_hasBBOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availabitily: 1.2.2
-CREATEFUNCTION ST_HasBBOX(geometry)
- RETURNS bool
- AS '@MODULE_FILENAME@', 'LWGEOM_hasBBOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION ndims(geometry)
- RETURNS smallint
- AS '@MODULE_FILENAME@', 'LWGEOM_ndims'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_NDims(geometry)
- RETURNS smallint
- AS '@MODULE_FILENAME@', 'LWGEOM_ndims'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsEWKT(geometry)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asEWKT'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsEWKT(geometry)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asEWKT'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsEWKB(geometry)
- RETURNS BYTEA
- AS '@MODULE_FILENAME@','WKBFromLWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsEWKB(geometry)
- RETURNS BYTEA
- AS '@MODULE_FILENAME@','WKBFromLWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsHEXEWKB(geometry)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asHEXEWKB'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsHEXEWKB(geometry)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asHEXEWKB'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsHEXEWKB(geometry, text)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asHEXEWKB'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsHEXEWKB(geometry, text)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asHEXEWKB'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsEWKB(geometry,text)
- RETURNS bytea
- AS '@MODULE_FILENAME@','WKBFromLWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsEWKB(geometry,text)
- RETURNS bytea
- AS '@MODULE_FILENAME@','WKBFromLWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomFromEWKB(bytea)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOMFromWKB'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeomFromEWKB(bytea)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOMFromWKB'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomFromEWKT(text)
- RETURNS geometry
- AS '@MODULE_FILENAME@','parse_WKT_lwgeom'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeomFromEWKT(text)
- RETURNS geometry
- AS '@MODULE_FILENAME@','parse_WKT_lwgeom'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION cache_bbox()
- RETURNS trigger
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C';
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Cache_BBox()
- RETURNS trigger
- AS '@MODULE_FILENAME@','cache_bbox'
- LANGUAGE 'C';
-
-------------------------------------------------------------------------
--- CONSTRUCTORS
-------------------------------------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MakePoint(float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MakePoint(float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MakePoint(float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MakePoint(float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MakePoint(float8, float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MakePoint(float8, float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MakePointM(float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoint3dm'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION MakePointM(float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoint3dm'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MakeBox2d(geometry, geometry)
- RETURNS box2d
- AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_construct'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MakeBox2d(geometry, geometry)
- RETURNS box2d
- AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_construct'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MakeBox3d(geometry, geometry)
- RETURNS box3d
- AS '@MODULE_FILENAME@', 'BOX3D_construct'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MakeBox3d(geometry, geometry)
- RETURNS box3d
- AS '@MODULE_FILENAME@', 'BOX3D_construct'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION makeline_garray (geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makeline_garray'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MakeLine_GArray (geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makeline_garray'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LineFromMultiPoint(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_line_from_mpoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_LineFromMultiPoint(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_line_from_mpoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MakeLine(geometry, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makeline'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MakeLine(geometry, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makeline'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AddPoint(geometry, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_addpoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AddPoint(geometry, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_addpoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AddPoint(geometry, geometry, integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_addpoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AddPoint(geometry, geometry, integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_addpoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION RemovePoint(geometry, integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_removepoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_RemovePoint(geometry, integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_removepoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION SetPoint(geometry, integer, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_setpoint_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_SetPoint(geometry, integer, geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_setpoint_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATE AGGREGATE makeline (
- sfunc = geom_accum,
- basetype = geometry,
- stype = geometry[],
- finalfunc = makeline_garray
- );
-
--- Availability: 1.2.2
-CREATE AGGREGATE ST_MakeLine (
- sfunc = geom_accum,
- basetype = geometry,
- stype = geometry[],
- finalfunc = ST_makeline_garray
- );
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MakePolygon(geometry, geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MakePolygon(geometry, geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MakePolygon(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MakePolygon(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoly'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION BuildArea(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_buildarea'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_BuildArea(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_buildarea'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION Polygonize_GArray (geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'polygonize_garray'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Polygonize_GArray (geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'polygonize_garray'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LineMerge(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'linemerge'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_LineMerge(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'linemerge'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Deprecation in 1.2.3
-CREATE AGGREGATE Polygonize (
- sfunc = geom_accum,
- basetype = geometry,
- stype = geometry[],
- finalfunc = polygonize_garray
- );
-
--- Availability: 1.2.2
-CREATE AGGREGATE ST_Polygonize (
- sfunc = ST_geom_accum,
- basetype = geometry,
- stype = geometry[],
- finalfunc = ST_polygonize_garray
- );
-
-#if USE_VERSION > 72
-
-CREATE TYPE geometry_dump AS (path integer[], geom geometry);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION Dump(geometry)
- RETURNS SETOF geometry_dump
- AS '@MODULE_FILENAME@', 'LWGEOM_dump'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Dump(geometry)
- RETURNS SETOF geometry_dump
- AS '@MODULE_FILENAME@', 'LWGEOM_dump'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION DumpRings(geometry)
- RETURNS SETOF geometry_dump
- AS '@MODULE_FILENAME@', 'LWGEOM_dump_rings'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_DumpRings(geometry)
- RETURNS SETOF geometry_dump
- AS '@MODULE_FILENAME@', 'LWGEOM_dump_rings'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-#endif
-
-------------------------------------------------------------------------
-
---
--- Aggregate functions
---
-
--- Deprecation in 1.2.3
-CREATEFUNCTION combine_bbox(box2d,geometry)
- RETURNS box2d
- AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_combine'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Combine_BBox(box2d,geometry)
- RETURNS box2d
- AS '@MODULE_FILENAME@', 'BOX2DFLOAT4_combine'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Deprecation in 1.2.3
-CREATE AGGREGATE Extent(
- sfunc = ST_combine_bbox,
- basetype = geometry,
- stype = box2d
- );
-
--- Availability: 1.2.2
-CREATE AGGREGATE ST_Extent(
- sfunc = ST_combine_bbox,
- basetype = geometry,
- stype = box2d
- );
-
--- Deprecation in 1.2.3
-CREATEFUNCTION combine_bbox(box3d,geometry)
- RETURNS box3d
- AS '@MODULE_FILENAME@', 'BOX3D_combine'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Combine_BBox(box3d,geometry)
- RETURNS box3d
- AS '@MODULE_FILENAME@', 'BOX3D_combine'
- LANGUAGE 'C' _IMMUTABLE;
-
--- Deprecation in 1.2.3
-CREATE AGGREGATE Extent3d(
- sfunc = combine_bbox,
- basetype = geometry,
- stype = box3d
- );
-
--- Availability: 1.2.2
-CREATE AGGREGATE ST_Extent3d(
- sfunc = ST_combine_bbox,
- basetype = geometry,
- stype = box3d
- );
-
------------------------------------------------------------------------
--- CREATE_HISTOGRAM2D( <box2d>, <size> )
------------------------------------------------------------------------
---
--- Returns a histgram with 0s in all the boxes.
---
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION create_histogram2d(box2d,int)
- RETURNS histogram2d
- AS '@MODULE_FILENAME@','create_lwhistogram2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_create_histogram2d(box2d,int)
- RETURNS histogram2d
- AS '@MODULE_FILENAME@','create_lwhistogram2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- BUILD_HISTOGRAM2D( <histogram2d>, <tablename>, <columnname> )
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION build_histogram2d (histogram2d,text,text)
- RETURNS histogram2d
- AS '@MODULE_FILENAME@','build_lwhistogram2d'
- LANGUAGE 'C' _STABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_build_histogram2d (histogram2d,text,text)
- RETURNS histogram2d
- AS '@MODULE_FILENAME@','build_lwhistogram2d'
- LANGUAGE 'C' _STABLE_STRICT; -- WITH (isstrict);
-
-#if USE_VERSION >= 73
------------------------------------------------------------------------
--- BUILD_HISTOGRAM2D(<histogram2d>,<schema>,<tablename>,<columnname>)
------------------------------------------------------------------------
--- This is a wrapper to the omonimous schema unaware function,
--- thanks to Carl Anderson for the idea.
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION build_histogram2d (histogram2d,text,text,text)
-RETURNS histogram2d
-AS '
-BEGIN
- EXECUTE ''SET local search_path = ''||$2||'',public'';
- RETURN public.build_histogram2d($1,$3,$4);
-END
-'
-LANGUAGE 'plpgsql' _STABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_build_histogram2d (histogram2d,text,text,text)
-RETURNS histogram2d
-AS '
-BEGIN
- EXECUTE ''SET local search_path = ''||$2||'',public'';
- RETURN public.build_histogram2d($1,$3,$4);
-END
-'
-LANGUAGE 'plpgsql' _STABLE_STRICT; -- WITH (isstrict);
-
-#endif
-
------------------------------------------------------------------------
--- EXPLODE_HISTOGRAM2D( <histogram2d>, <tablename> )
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION explode_histogram2d (histogram2d,text)
- RETURNS histogram2d
- AS '@MODULE_FILENAME@','explode_lwhistogram2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_explode_histogram2d (histogram2d,text)
- RETURNS histogram2d
- AS '@MODULE_FILENAME@','explode_lwhistogram2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- ESTIMATE_HISTOGRAM2D( <histogram2d>, <box> )
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION estimate_histogram2d(histogram2d,box2d)
- RETURNS float8
- AS '@MODULE_FILENAME@','estimate_lwhistogram2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_estimate_histogram2d(histogram2d,box2d)
- RETURNS float8
- AS '@MODULE_FILENAME@','estimate_lwhistogram2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- ESTIMATED_EXTENT( <schema name>, <table name>, <column name> )
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION estimated_extent(text,text,text) RETURNS box2d AS
- '@MODULE_FILENAME@', 'LWGEOM_estimated_extent'
- LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_estimated_extent(text,text,text) RETURNS box2d AS
- '@MODULE_FILENAME@', 'LWGEOM_estimated_extent'
- LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
-
------------------------------------------------------------------------
--- ESTIMATED_EXTENT( <table name>, <column name> )
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION estimated_extent(text,text) RETURNS box2d AS
- '@MODULE_FILENAME@', 'LWGEOM_estimated_extent'
- LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_estimated_extent(text,text) RETURNS box2d AS
- '@MODULE_FILENAME@', 'LWGEOM_estimated_extent'
- LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
-
------------------------------------------------------------------------
--- FIND_EXTENT( <schema name>, <table name>, <column name> )
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION find_extent(text,text,text) RETURNS box2d AS
-'
-DECLARE
- schemaname alias for $1;
- tablename alias for $2;
- columnname alias for $3;
- myrec RECORD;
-
-BEGIN
- FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||schemaname||''"."''||tablename||''"'' LOOP
- return myrec.extent;
- END LOOP;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_find_extent(text,text,text) RETURNS box2d AS
-'
-DECLARE
- schemaname alias for $1;
- tablename alias for $2;
- columnname alias for $3;
- myrec RECORD;
-
-BEGIN
- FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||schemaname||''"."''||tablename||''"'' LOOP
- return myrec.extent;
- END LOOP;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
-
------------------------------------------------------------------------
--- FIND_EXTENT( <table name>, <column name> )
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION find_extent(text,text) RETURNS box2d AS
-'
-DECLARE
- tablename alias for $1;
- columnname alias for $2;
- myrec RECORD;
-
-BEGIN
- FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||tablename||''"'' LOOP
- return myrec.extent;
- END LOOP;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_find_extent(text,text) RETURNS box2d AS
-'
-DECLARE
- tablename alias for $1;
- columnname alias for $2;
- myrec RECORD;
-
-BEGIN
- FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||tablename||''"'' LOOP
- return myrec.extent;
- END LOOP;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--------------------------------------------------------------------
--- SPATIAL_REF_SYS
--------------------------------------------------------------------
-CREATE TABLE spatial_ref_sys (
- srid integer not null primary key,
- auth_name varchar(256),
- auth_srid integer,
- srtext varchar(2048),
- proj4text varchar(2048)
-);
-
--------------------------------------------------------------------
--- GEOMETRY_COLUMNS
--------------------------------------------------------------------
-CREATE TABLE geometry_columns (
- f_table_catalog varchar(256) not null,
- f_table_schema varchar(256) not null,
- f_table_name varchar(256) not null,
- f_geometry_column varchar(256) not null,
- coord_dimension integer not null,
- srid integer not null,
- type varchar(30) not null,
-#if USE_VERSION < 80
- attrelid oid,
- varattnum int,
- stats histogram2d,
-#endif
- CONSTRAINT geometry_columns_pk primary key (
- f_table_catalog,
- f_table_schema,
- f_table_name,
- f_geometry_column )
-) WITH OIDS;
-
------------------------------------------------------------------------
--- RENAME_GEOMETRY_TABLE_CONSTRAINTS()
------------------------------------------------------------------------
--- This function has been obsoleted for the difficulty in
--- finding attribute on which the constraint is applied.
--- AddGeometryColumn will name the constraints in a meaningful
--- way, but nobody can rely on it since old postgis versions did
--- not do that.
------------------------------------------------------------------------
-CREATEFUNCTION rename_geometry_table_constraints() RETURNS text
-AS
-'
-SELECT ''rename_geometry_table_constraint() is obsoleted''::text
-'
-LANGUAGE 'SQL' _IMMUTABLE;
-
------------------------------------------------------------------------
--- FIX_GEOMETRY_COLUMNS()
------------------------------------------------------------------------
--- This function will:
---
--- o try to fix the schema of records with an invalid one
--- (for PG>=73)
---
--- o link records to system tables through attrelid and varattnum
--- (for PG<75)
---
--- o delete all records for which no linking was possible
--- (for PG<75)
---
---
------------------------------------------------------------------------
-CREATEFUNCTION fix_geometry_columns() RETURNS text
-AS
-'
-DECLARE
- mislinked record;
- result text;
- linked integer;
- deleted integer;
-#if USE_VERSION >= 73
- foundschema integer;
-#endif
-BEGIN
-
-#if USE_VERSION >= 73
- -- Since 7.3 schema support has been added.
- -- Previous postgis versions used to put the database name in
- -- the schema column. This needs to be fixed, so we try to
- -- set the correct schema for each geometry_colums record
- -- looking at table, column, type and srid.
- UPDATE geometry_columns SET f_table_schema = n.nspname
- FROM pg_namespace n, pg_class c, pg_attribute a,
- pg_constraint sridcheck, pg_constraint typecheck
- WHERE ( f_table_schema is NULL
- OR f_table_schema = ''''
- OR f_table_schema NOT IN (
- SELECT nspname::varchar
- FROM pg_namespace nn, pg_class cc, pg_attribute aa
- WHERE cc.relnamespace = nn.oid
- AND cc.relname = f_table_name::name
- AND aa.attrelid = cc.oid
- AND aa.attname = f_geometry_column::name))
- AND f_table_name::name = c.relname
- AND c.oid = a.attrelid
- AND c.relnamespace = n.oid
- AND f_geometry_column::name = a.attname
-
- AND sridcheck.conrelid = c.oid
- AND sridcheck.consrc LIKE ''(srid(% = %)''
- AND sridcheck.consrc ~ textcat('' = '', srid::text)
-
- AND typecheck.conrelid = c.oid
- AND typecheck.consrc LIKE
- ''((geometrytype(%) = ''''%''''::text) OR (% IS NULL))''
- AND typecheck.consrc ~ textcat('' = '''''', type::text)
-
- AND NOT EXISTS (
- SELECT oid FROM geometry_columns gc
- WHERE c.relname::varchar = gc.f_table_name
- AND n.nspname::varchar = gc.f_table_schema
- AND a.attname::varchar = gc.f_geometry_column
- );
-
- GET DIAGNOSTICS foundschema = ROW_COUNT;
-#endif
-
-#if USE_VERSION >= 80
- -- no linkage to system table needed
- return ''fixed:''||foundschema::text;
-#endif
-
- -- fix linking to system tables
- SELECT 0 INTO linked;
- FOR mislinked in
- SELECT gc.oid as gcrec,
- a.attrelid as attrelid, a.attnum as attnum
- FROM geometry_columns gc, pg_class c,
-#if USE_VERSION >= 73
- pg_namespace n, pg_attribute a
-#else
- pg_attribute a
-#endif
- WHERE ( gc.attrelid IS NULL OR gc.attrelid != a.attrelid
- OR gc.varattnum IS NULL OR gc.varattnum != a.attnum)
-#if USE_VERSION >= 73
- AND n.nspname = gc.f_table_schema::name
- AND c.relnamespace = n.oid
-#endif
- AND c.relname = gc.f_table_name::name
- AND a.attname = f_geometry_column::name
- AND a.attrelid = c.oid
- LOOP
- UPDATE geometry_columns SET
- attrelid = mislinked.attrelid,
- varattnum = mislinked.attnum,
- stats = NULL
- WHERE geometry_columns.oid = mislinked.gcrec;
- SELECT linked+1 INTO linked;
- END LOOP;
-
- -- remove stale records
- DELETE FROM geometry_columns WHERE attrelid IS NULL;
-
- GET DIAGNOSTICS deleted = ROW_COUNT;
-
- result =
-#if USE_VERSION >= 73
- ''fixed:'' || foundschema::text ||
-#endif
- '' linked:'' || linked::text ||
- '' deleted:'' || deleted::text;
-
- return result;
-
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE;
-
------------------------------------------------------------------------
--- PROBE_GEOMETRY_COLUMNS()
------------------------------------------------------------------------
--- Fill the geometry_columns table with values probed from the system
--- catalogues. 3d flag cannot be probed, it defaults to 2
---
--- Note that bogus records already in geometry_columns are not
--- overridden (a check for schema.table.column is performed), so
--- to have a fresh probe backup your geometry_column, delete from
--- it and probe.
------------------------------------------------------------------------
-CREATEFUNCTION probe_geometry_columns() RETURNS text AS
-'
-DECLARE
- inserted integer;
- oldcount integer;
- probed integer;
- stale integer;
-BEGIN
-
- SELECT count(*) INTO oldcount FROM geometry_columns;
-
- SELECT count(*) INTO probed
- FROM pg_class c, pg_attribute a, pg_type t,
-#if USE_VERSION >= 73
- pg_namespace n,
- pg_constraint sridcheck, pg_constraint typecheck
-#else
- pg_relcheck sridcheck, pg_relcheck typecheck
-#endif
-
- WHERE t.typname = ''geometry''
- AND a.atttypid = t.oid
- AND a.attrelid = c.oid
-#if USE_VERSION >= 73
- AND c.relnamespace = n.oid
- AND sridcheck.connamespace = n.oid
- AND typecheck.connamespace = n.oid
-#endif
-
-#if USE_VERSION >= 73
- AND sridcheck.conrelid = c.oid
- AND sridcheck.consrc LIKE ''(srid(''||a.attname||'') = %)''
- AND typecheck.conrelid = c.oid
- AND typecheck.consrc LIKE
- ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
-#else
- AND sridcheck.rcrelid = c.oid
- AND sridcheck.rcsrc LIKE ''(srid(''||a.attname||'') = %)''
- AND typecheck.rcrelid = c.oid
- AND typecheck.rcsrc LIKE
- ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
-#endif
- ;
-
- INSERT INTO geometry_columns SELECT
- ''''::varchar as f_table_catalogue,
-#if USE_VERSION >= 73
- n.nspname::varchar as f_table_schema,
-#else
- ''''::varchar as f_table_schema,
-#endif
- c.relname::varchar as f_table_name,
- a.attname::varchar as f_geometry_column,
- 2 as coord_dimension,
-#if USE_VERSION >= 73
- trim(both '' =)'' from substr(sridcheck.consrc,
- strpos(sridcheck.consrc, ''='')))::integer as srid,
- trim(both '' =)'''''' from substr(typecheck.consrc,
- strpos(typecheck.consrc, ''=''),
- strpos(typecheck.consrc, ''::'')-
- strpos(typecheck.consrc, ''='')
- ))::varchar as type
-#else
- trim(both '' =)'' from substr(sridcheck.rcsrc,
- strpos(sridcheck.rcsrc, ''='')))::integer as srid,
- trim(both '' =)'''''' from substr(typecheck.rcsrc,
- strpos(typecheck.rcsrc, ''=''),
- strpos(typecheck.rcsrc, ''::'')-
- strpos(typecheck.rcsrc, ''='')
- ))::varchar as type
-#endif
-
-#if USE_VERSION < 80
- , a.attrelid,
- a.attnum as varattnum,
- null::histogram2d as stats
-#endif
- FROM pg_class c, pg_attribute a, pg_type t,
-#if USE_VERSION >= 73
- pg_namespace n,
- pg_constraint sridcheck, pg_constraint typecheck
-#else
- pg_relcheck sridcheck, pg_relcheck typecheck
-#endif
- WHERE t.typname = ''geometry''
- AND a.atttypid = t.oid
- AND a.attrelid = c.oid
-#if USE_VERSION >= 73
- AND c.relnamespace = n.oid
- AND sridcheck.connamespace = n.oid
- AND typecheck.connamespace = n.oid
- AND sridcheck.conrelid = c.oid
- AND sridcheck.consrc LIKE ''(srid(''||a.attname||'') = %)''
- AND typecheck.conrelid = c.oid
- AND typecheck.consrc LIKE
- ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
-#else
- AND sridcheck.rcrelid = c.oid
- AND sridcheck.rcsrc LIKE ''(srid(''||a.attname||'') = %)''
- AND typecheck.rcrelid = c.oid
- AND typecheck.rcsrc LIKE
- ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
-#endif
-
- AND NOT EXISTS (
- SELECT oid FROM geometry_columns gc
- WHERE c.relname::varchar = gc.f_table_name
-#if USE_VERSION >= 73
- AND n.nspname::varchar = gc.f_table_schema
-#endif
- AND a.attname::varchar = gc.f_geometry_column
- );
-
- GET DIAGNOSTICS inserted = ROW_COUNT;
-
- IF oldcount > probed THEN
- stale = oldcount-probed;
- ELSE
- stale = 0;
- END IF;
-
- RETURN ''probed:''||probed::text||
- '' inserted:''||inserted::text||
- '' conflicts:''||(probed-inserted)::text||
- '' stale:''||stale::text;
-END
-
-'
-LANGUAGE 'plpgsql' _VOLATILE;
-
------------------------------------------------------------------------
--- ADDGEOMETRYCOLUMN
--- <catalogue>, <schema>, <table>, <column>, <srid>, <type>, <dim>
------------------------------------------------------------------------
---
--- Type can be one of geometry, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON,
--- MULTIPOLYGON, LINESTRING, or MULTILINESTRING.
---
--- Types (except geometry) are checked for consistency using a CHECK constraint
--- uses SQL ALTER TABLE command to add the geometry column to the table.
--- Addes a row to geometry_columns.
--- Addes a constraint on the table that all the geometries MUST have the same
--- SRID. Checks the coord_dimension to make sure its between 0 and 3.
--- Should also check the precision grid (future expansion).
--- Calls fix_geometry_columns() at the end.
---
------------------------------------------------------------------------
-CREATEFUNCTION AddGeometryColumn(varchar,varchar,varchar,varchar,integer,varchar,integer)
- RETURNS text
- AS
-'
-DECLARE
- catalog_name alias for $1;
- schema_name alias for $2;
- table_name alias for $3;
- column_name alias for $4;
- new_srid alias for $5;
- new_type alias for $6;
- new_dim alias for $7;
-#if USE_VERSION >= 73
- rec RECORD;
- schema_ok bool;
- real_schema name;
-#endif
-
-BEGIN
-
- IF ( not ( (new_type =''GEOMETRY'') or
- (new_type =''GEOMETRYCOLLECTION'') or
- (new_type =''POINT'') or
- (new_type =''MULTIPOINT'') or
- (new_type =''POLYGON'') or
- (new_type =''MULTIPOLYGON'') or
- (new_type =''LINESTRING'') or
- (new_type =''MULTILINESTRING'') or
- (new_type =''GEOMETRYCOLLECTIONM'') or
- (new_type =''POINTM'') or
- (new_type =''MULTIPOINTM'') or
- (new_type =''POLYGONM'') or
- (new_type =''MULTIPOLYGONM'') or
- (new_type =''LINESTRINGM'') or
- (new_type =''MULTILINESTRINGM'') or
- (new_type = ''CIRCULARSTRING'') or
- (new_type = ''CIRCULARSTRINGM'') or
- (new_type = ''COMPOUNDCURVE'') or
- (new_type = ''COMPOUNDCURVEM'') or
- (new_type = ''CURVEPOLYGON'') or
- (new_type = ''CURVEPOLYGONM'') or
- (new_type = ''MULTICURVE'') or
- (new_type = ''MULTICURVEM'') or
- (new_type = ''MULTISURFACE'') or
- (new_type = ''MULTISURFACEM'')) )
- THEN
- RAISE EXCEPTION ''Invalid type name - valid ones are:
- GEOMETRY, GEOMETRYCOLLECTION, POINT,
- MULTIPOINT, POLYGON, MULTIPOLYGON,
- LINESTRING, MULTILINESTRING,
- CIRCULARSTRING, COMPOUNDCURVE,
- CURVEPOLYGON, MULTICURVE, MULTISURFACE,
- GEOMETRYCOLLECTIONM, POINTM,
- MULTIPOINTM, POLYGONM, MULTIPOLYGONM,
- LINESTRINGM, MULTILINESTRINGM
- CIRCULARSTRINGM, COMPOUNDCURVEM,
- CURVEPOLYGONM, MULTICURVEM or MULTISURFACEM'';
- return ''fail'';
- END IF;
-
- IF ( (new_dim >4) or (new_dim <0) ) THEN
- RAISE EXCEPTION ''invalid dimension'';
- return ''fail'';
- END IF;
-
- IF ( (new_type LIKE ''%M'') and (new_dim!=3) ) THEN
-
- RAISE EXCEPTION ''TypeM needs 3 dimensions'';
- return ''fail'';
- END IF;
-
-#if USE_VERSION >= 73
- IF ( schema_name != '''' ) THEN
- schema_ok = ''f'';
- FOR rec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
- schema_ok := ''t'';
- END LOOP;
-
- if ( schema_ok <> ''t'' ) THEN
- RAISE NOTICE ''Invalid schema name - using current_schema()'';
- SELECT current_schema() into real_schema;
- ELSE
- real_schema = schema_name;
- END IF;
-
- ELSE
- SELECT current_schema() into real_schema;
- END IF;
-#endif
-
-
- -- Add geometry column
-
- EXECUTE ''ALTER TABLE '' ||
-#if USE_VERSION >= 73
- quote_ident(real_schema) || ''.'' || quote_ident(table_name)
-#else
- quote_ident(table_name)
-#endif
- || '' ADD COLUMN '' || quote_ident(column_name) ||
- '' geometry '';
-
-
- -- Delete stale record in geometry_column (if any)
-
- EXECUTE ''DELETE FROM geometry_columns WHERE
- f_table_catalog = '' || quote_literal('''') ||
- '' AND f_table_schema = '' ||
-#if USE_VERSION >= 73
- quote_literal(real_schema) ||
-#else
- quote_literal('''') ||
-#endif
- '' AND f_table_name = '' || quote_literal(table_name) ||
- '' AND f_geometry_column = '' || quote_literal(column_name);
-
-
- -- Add record in geometry_column
-
- EXECUTE ''INSERT INTO geometry_columns VALUES ('' ||
- quote_literal('''') || '','' ||
-#if USE_VERSION >= 73
- quote_literal(real_schema) || '','' ||
-#else
- quote_literal('''') || '','' ||
-#endif
- quote_literal(table_name) || '','' ||
- quote_literal(column_name) || '','' ||
- new_dim::text || '','' || new_srid::text || '','' ||
- quote_literal(new_type) || '')'';
-
- -- Add table checks
-
- EXECUTE ''ALTER TABLE '' ||
-#if USE_VERSION >= 73
- quote_ident(real_schema) || ''.'' || quote_ident(table_name)
-#else
- quote_ident(table_name)
-#endif
- || '' ADD CONSTRAINT ''
- || quote_ident(''enforce_srid_'' || column_name)
- || '' CHECK (SRID('' || quote_ident(column_name) ||
- '') = '' || new_srid::text || '')'' ;
-
- EXECUTE ''ALTER TABLE '' ||
-#if USE_VERSION >= 73
- quote_ident(real_schema) || ''.'' || quote_ident(table_name)
-#else
- quote_ident(table_name)
-#endif
- || '' ADD CONSTRAINT ''
- || quote_ident(''enforce_dims_'' || column_name)
- || '' CHECK (ndims('' || quote_ident(column_name) ||
- '') = '' || new_dim::text || '')'' ;
-
- IF (not(new_type = ''GEOMETRY'')) THEN
- EXECUTE ''ALTER TABLE '' ||
-#if USE_VERSION >= 73
- quote_ident(real_schema) || ''.'' || quote_ident(table_name)
-#else
- quote_ident(table_name)
-#endif
- || '' ADD CONSTRAINT ''
- || quote_ident(''enforce_geotype_'' || column_name)
- || '' CHECK (geometrytype('' ||
- quote_ident(column_name) || '')='' ||
- quote_literal(new_type) || '' OR ('' ||
- quote_ident(column_name) || '') is null)'';
- END IF;
-
- return
-#if USE_VERSION >= 73
- real_schema || ''.'' ||
-#endif
- table_name || ''.'' || column_name ||
- '' SRID:'' || new_srid::text ||
- '' TYPE:'' || new_type ||
- '' DIMS:'' || new_dim::text || chr(10) || '' '';
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
-
-----------------------------------------------------------------------------
--- ADDGEOMETRYCOLUMN ( <schema>, <table>, <column>, <srid>, <type>, <dim> )
-----------------------------------------------------------------------------
---
--- This is a wrapper to the real AddGeometryColumn, for use
--- when catalogue is undefined
---
-----------------------------------------------------------------------------
-CREATEFUNCTION AddGeometryColumn(varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS '
-DECLARE
- ret text;
-BEGIN
- SELECT AddGeometryColumn('''',$1,$2,$3,$4,$5,$6) into ret;
- RETURN ret;
-END;
-'
-LANGUAGE 'plpgsql' _STABLE_STRICT; -- WITH (isstrict);
-
-----------------------------------------------------------------------------
--- ADDGEOMETRYCOLUMN ( <table>, <column>, <srid>, <type>, <dim> )
-----------------------------------------------------------------------------
---
--- This is a wrapper to the real AddGeometryColumn, for use
--- when catalogue and schema are undefined
---
-----------------------------------------------------------------------------
-CREATEFUNCTION AddGeometryColumn(varchar,varchar,integer,varchar,integer) RETURNS text AS '
-DECLARE
- ret text;
-BEGIN
- SELECT AddGeometryColumn('''','''',$1,$2,$3,$4,$5) into ret;
- RETURN ret;
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- DROPGEOMETRYCOLUMN
--- <catalogue>, <schema>, <table>, <column>
------------------------------------------------------------------------
---
--- Removes geometry column reference from geometry_columns table.
--- Drops the column with pgsql >= 73.
--- Make some silly enforcements on it for pgsql < 73
---
------------------------------------------------------------------------
-CREATEFUNCTION DropGeometryColumn(varchar, varchar,varchar,varchar)
- RETURNS text
- AS
-'
-DECLARE
- catalog_name alias for $1;
- schema_name alias for $2;
- table_name alias for $3;
- column_name alias for $4;
- myrec RECORD;
- okay boolean;
- real_schema name;
-
-BEGIN
-
-
-#if USE_VERSION >= 73
- -- Find, check or fix schema_name
- IF ( schema_name != '''' ) THEN
- okay = ''f'';
-
- FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
- okay := ''t'';
- END LOOP;
-
- IF ( okay <> ''t'' ) THEN
- RAISE NOTICE ''Invalid schema name - using current_schema()'';
- SELECT current_schema() into real_schema;
- ELSE
- real_schema = schema_name;
- END IF;
- ELSE
- SELECT current_schema() into real_schema;
- END IF;
-#else
- real_schema = schema_name;
-#endif
-
- -- Find out if the column is in the geometry_columns table
- okay = ''f'';
- FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
- okay := ''t'';
- END LOOP;
- IF (okay <> ''t'') THEN
- RAISE EXCEPTION ''column not found in geometry_columns table'';
- RETURN ''f'';
- END IF;
-
- -- Remove ref from geometry_columns table
- EXECUTE ''delete from geometry_columns where f_table_schema = '' ||
- quote_literal(real_schema) || '' and f_table_name = '' ||
- quote_literal(table_name) || '' and f_geometry_column = '' ||
- quote_literal(column_name);
-
-#if USE_VERSION < 73
- -- Remove not-null constraint to table column
- EXECUTE ''update pg_attribute set attnotnull = false from pg_class where pg_attribute.attrelid = pg_class.oid and pg_class.relname = '' || quote_literal(table_name) ||'' and pg_attribute.attname = '' || quote_literal(column_name);
- -- update the given table/column so that it it all NULLS
- EXECUTE ''update "''||table_name||''" set "''||column_name||''"= NULL'';
- -- add = NULL constraint to given table/column
- EXECUTE ''ALTER TABLE "''||table_name||''" ADD CHECK ("''||column_name||''" IS NULL)'';
-#else
- -- Remove table column
- EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' ||
- quote_ident(table_name) || '' DROP COLUMN '' ||
- quote_ident(column_name);
-#endif
-
-
- RETURN real_schema || ''.'' || table_name || ''.'' || column_name ||'' effectively removed.'';
-
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- DROPGEOMETRYCOLUMN
--- <schema>, <table>, <column>
------------------------------------------------------------------------
---
--- This is a wrapper to the real DropGeometryColumn, for use
--- when catalogue is undefined
---
------------------------------------------------------------------------
-CREATEFUNCTION DropGeometryColumn(varchar,varchar,varchar)
- RETURNS text
- AS
-'
-DECLARE
- ret text;
-BEGIN
- SELECT DropGeometryColumn('''',$1,$2,$3) into ret;
- RETURN ret;
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- DROPGEOMETRYCOLUMN
--- <table>, <column>
------------------------------------------------------------------------
---
--- This is a wrapper to the real DropGeometryColumn, for use
--- when catalogue and schema is undefined.
---
------------------------------------------------------------------------
-CREATEFUNCTION DropGeometryColumn(varchar,varchar)
- RETURNS text
- AS
-'
-DECLARE
- ret text;
-BEGIN
- SELECT DropGeometryColumn('''','''',$1,$2) into ret;
- RETURN ret;
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- DROPGEOMETRYTABLE
--- <catalogue>, <schema>, <table>
------------------------------------------------------------------------
---
--- Drop a table and all its references in geometry_columns
---
------------------------------------------------------------------------
-CREATEFUNCTION DropGeometryTable(varchar, varchar,varchar)
- RETURNS text
- AS
-'
-DECLARE
- catalog_name alias for $1;
- schema_name alias for $2;
- table_name alias for $3;
- real_schema name;
-
-BEGIN
-
-#if USE_VERSION >= 73
- IF ( schema_name = '''' ) THEN
- SELECT current_schema() into real_schema;
- ELSE
- real_schema = schema_name;
- END IF;
-#endif
-
- -- Remove refs from geometry_columns table
- EXECUTE ''DELETE FROM geometry_columns WHERE '' ||
-#if USE_VERSION >= 73
- ''f_table_schema = '' || quote_literal(real_schema) ||
- '' AND '' ||
-#endif
- '' f_table_name = '' || quote_literal(table_name);
-
- -- Remove table
- EXECUTE ''DROP TABLE ''
-#if USE_VERSION >= 73
- || quote_ident(real_schema) || ''.'' ||
-#endif
- quote_ident(table_name);
-
- RETURN
-#if USE_VERSION >= 73
- real_schema || ''.'' ||
-#endif
- table_name ||'' dropped.'';
-
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- DROPGEOMETRYTABLE
--- <schema>, <table>
------------------------------------------------------------------------
---
--- Drop a table and all its references in geometry_columns
---
------------------------------------------------------------------------
-CREATEFUNCTION DropGeometryTable(varchar,varchar) RETURNS text AS
-'SELECT DropGeometryTable('''',$1,$2)'
-LANGUAGE 'sql' WITH (isstrict);
-
------------------------------------------------------------------------
--- DROPGEOMETRYTABLE
--- <table>
------------------------------------------------------------------------
---
--- Drop a table and all its references in geometry_columns
--- For PG>=73 use current_schema()
---
------------------------------------------------------------------------
-CREATEFUNCTION DropGeometryTable(varchar) RETURNS text AS
-'SELECT DropGeometryTable('''','''',$1)'
-LANGUAGE 'sql' _VOLATILE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- UPDATEGEOMETRYSRID
--- <catalogue>, <schema>, <table>, <column>, <srid>
------------------------------------------------------------------------
---
--- Change SRID of all features in a spatially-enabled table
---
------------------------------------------------------------------------
-CREATEFUNCTION UpdateGeometrySRID(varchar,varchar,varchar,varchar,integer)
- RETURNS text
- AS
-'
-DECLARE
- catalog_name alias for $1;
- schema_name alias for $2;
- table_name alias for $3;
- column_name alias for $4;
- new_srid alias for $5;
- myrec RECORD;
- okay boolean;
- cname varchar;
- real_schema name;
-
-BEGIN
-
-
-#if USE_VERSION >= 73
- -- Find, check or fix schema_name
- IF ( schema_name != '''' ) THEN
- okay = ''f'';
-
- FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
- okay := ''t'';
- END LOOP;
-
- IF ( okay <> ''t'' ) THEN
- RAISE EXCEPTION ''Invalid schema name'';
- ELSE
- real_schema = schema_name;
- END IF;
- ELSE
- SELECT INTO real_schema current_schema()::text;
- END IF;
-#endif
-
- -- Find out if the column is in the geometry_columns table
- okay = ''f'';
- FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
- okay := ''t'';
- END LOOP;
- IF (okay <> ''t'') THEN
- RAISE EXCEPTION ''column not found in geometry_columns table'';
- RETURN ''f'';
- END IF;
-
- -- Update ref from geometry_columns table
- EXECUTE ''UPDATE geometry_columns SET SRID = '' || new_srid::text ||
- '' where f_table_schema = '' ||
- quote_literal(real_schema) || '' and f_table_name = '' ||
- quote_literal(table_name) || '' and f_geometry_column = '' ||
- quote_literal(column_name);
-
- -- Make up constraint name
- cname = ''enforce_srid_'' || column_name;
-
- -- Drop enforce_srid constraint
-#if USE_VERSION < 73
- EXECUTE ''ALTER TABLE '' || quote_ident(table_name) ||
-#else
- EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) ||
- ''.'' || quote_ident(table_name) ||
-#endif
- '' DROP constraint '' || quote_ident(cname);
-
- -- Update geometries SRID
-#if USE_VERSION < 73
- EXECUTE ''UPDATE '' || quote_ident(table_name) ||
-#else
- EXECUTE ''UPDATE '' || quote_ident(real_schema) ||
- ''.'' || quote_ident(table_name) ||
-#endif
- '' SET '' || quote_ident(column_name) ||
- '' = setSRID('' || quote_ident(column_name) ||
- '', '' || new_srid::text || '')'';
-
- -- Reset enforce_srid constraint
-#if USE_VERSION < 73
- EXECUTE ''ALTER TABLE '' || quote_ident(table_name) ||
-#else
- EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) ||
- ''.'' || quote_ident(table_name) ||
-#endif
- '' ADD constraint '' || quote_ident(cname) ||
- '' CHECK (srid('' || quote_ident(column_name) ||
- '') = '' || new_srid::text || '')'';
-
- RETURN real_schema || ''.'' || table_name || ''.'' || column_name ||'' SRID changed to '' || new_srid::text;
-
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- UPDATEGEOMETRYSRID
--- <schema>, <table>, <column>, <srid>
------------------------------------------------------------------------
-CREATEFUNCTION UpdateGeometrySRID(varchar,varchar,varchar,integer)
- RETURNS text
- AS '
-DECLARE
- ret text;
-BEGIN
- SELECT UpdateGeometrySRID('''',$1,$2,$3,$4) into ret;
- RETURN ret;
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- UPDATEGEOMETRYSRID
--- <table>, <column>, <srid>
------------------------------------------------------------------------
-CREATEFUNCTION UpdateGeometrySRID(varchar,varchar,integer)
- RETURNS text
- AS '
-DECLARE
- ret text;
-BEGIN
- SELECT UpdateGeometrySRID('''','''',$1,$2,$3) into ret;
- RETURN ret;
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
-
------------------------------------------------------------------------
--- UPDATE_GEOMETRY_STATS()
------------------------------------------------------------------------
---
--- Only meaningful for PG<75.
--- Gather statisticts about geometry columns for use
--- with cost estimator.
---
--- It is defined also for PG>=75 for back-compatibility
---
------------------------------------------------------------------------
-#if USE_VERSION >= 80
-CREATEFUNCTION update_geometry_stats() RETURNS text
-AS ' SELECT ''update_geometry_stats() has been obsoleted. Statistics are automatically built running the ANALYZE command''::text' LANGUAGE 'sql';
-#else
-CREATEFUNCTION update_geometry_stats()
-RETURNS text
-AS
-'
-DECLARE
- result text;
- stated integer;
-BEGIN
-
- UPDATE geometry_columns SET
-#if USE_VERSION >= 73
- stats = (build_histogram2d(create_histogram2d(
- find_extent(f_table_schema, f_table_name, f_geometry_column), 40), f_table_schema, f_table_name, f_geometry_column))
- FROM pg_class c, pg_attribute a, pg_namespace n
- WHERE n.nspname = f_table_schema::name
- AND c.relname = f_table_name::name
- AND c.relnamespace = n.oid
-#else
- stats = (build_histogram2d(create_histogram2d(
- find_extent(f_table_name, f_geometry_column),
- 40), f_table_name, f_geometry_column))
- FROM pg_class c, pg_attribute a
- WHERE c.relname = f_table_name::name
-#endif
- AND a.attname = f_geometry_column::name
- AND a.attrelid = c.oid
- AND geometry_columns.attrelid is not null;
-
- GET DIAGNOSTICS stated = ROW_COUNT;
-
- result = ''stats:'' || stated::text;
-
- return result;
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT;
-#endif
-
------------------------------------------------------------------------
--- UPDATE_GEOMETRY_STATS( <table>, <column> )
------------------------------------------------------------------------
---
--- Only meaningful for PG<75.
--- Gather statisticts about a geometry column for use
--- with cost estimator.
---
--- It is defined also for PG>=75 for back-compatibility
---
------------------------------------------------------------------------
-#if USE_VERSION >= 80
-CREATEFUNCTION update_geometry_stats(varchar,varchar) RETURNS text
-AS 'SELECT update_geometry_stats();' LANGUAGE 'sql' ;
-#else
-CREATEFUNCTION update_geometry_stats(varchar,varchar) RETURNS text
-AS
-'
-DECLARE
- tablename aliAS for $1;
- columnname aliAS for $2;
- stated integer;
- result text;
-BEGIN
-
- EXECUTE ''UPDATE geometry_columns SET
-#if USE_VERSION >= 73
- stats = (build_histogram2d(create_histogram2d(
- find_extent(f_table_schema,
- f_table_name,
- f_geometry_column), 40),
- f_table_schema, f_table_name,
- f_geometry_column))
- FROM pg_class c, pg_attribute a, pg_namespace n
- WHERE n.nspname = f_table_schema::name
- AND c.relname = f_table_name::name
- AND a.attname = f_geometry_column::name
- AND c.relnamespace = n.oid
- AND a.attrelid = c.oid
-#else
- stats = (build_histogram2d(create_histogram2d(
- find_extent(f_table_name, f_geometry_column),
- 40), f_table_name, f_geometry_column))
- FROM pg_class c, pg_attribute a
- WHERE c.relname = f_table_name::name
- AND a.attname = f_geometry_column::name
- AND a.attrelid = c.oid
-#endif
- AND f_table_name = '' || quote_literal(tablename) || ''
- AND f_geometry_column = '' || quote_literal(columnname)
- || '' AND geometry_columns.attrelid is not null'';
-
- GET DIAGNOSTICS stated = ROW_COUNT;
-
- result = ''stats:'' || stated::text;
-
- return result;
-END;
-'
-LANGUAGE 'plpgsql' _VOLATILE_STRICT;
-
-#endif
-
------------------------------------------------------------------------
--- FIND_SRID( <schema>, <table>, <geom col> )
------------------------------------------------------------------------
-CREATEFUNCTION find_srid(varchar,varchar,varchar) RETURNS int4 AS
-'DECLARE
- schem text;
- tabl text;
- sr int4;
-BEGIN
- IF $1 IS NULL THEN
- RAISE EXCEPTION ''find_srid() - schema is NULL!'';
- END IF;
- IF $2 IS NULL THEN
- RAISE EXCEPTION ''find_srid() - table name is NULL!'';
- END IF;
- IF $3 IS NULL THEN
- RAISE EXCEPTION ''find_srid() - column name is NULL!'';
- END IF;
- schem = $1;
- tabl = $2;
--- if the table contains a . and the schema is empty
--- split the table into a schema and a table
--- otherwise drop through to default behavior
- IF ( schem = '''' and tabl LIKE ''%.%'' ) THEN
- schem = substr(tabl,1,strpos(tabl,''.'')-1);
- tabl = substr(tabl,length(schem)+2);
- ELSE
- schem = schem || ''%'';
- END IF;
-
- select SRID into sr from geometry_columns where f_table_schema like schem and f_table_name = tabl and f_geometry_column = $3;
- IF NOT FOUND THEN
- RAISE EXCEPTION ''find_srid() - couldnt find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase missmatch?'';
- END IF;
- return sr;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (iscachable);
-
-
----------------------------------------------------------------
--- PROJ support
----------------------------------------------------------------
-
-CREATEFUNCTION get_proj4_from_srid(integer) RETURNS text AS
-'
-BEGIN
- RETURN proj4text::text FROM spatial_ref_sys WHERE srid= $1;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-
-
-
-CREATEFUNCTION transform_geometry(geometry,text,text,int)
- RETURNS geometry
- AS '@MODULE_FILENAME@','transform_geom'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-CREATEFUNCTION transform(geometry,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@','transform'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: transform(geometry,integer)
-CREATEFUNCTION ST_Transform(geometry,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@','transform'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-
------------------------------------------------------------------------
--- POSTGIS_VERSION()
------------------------------------------------------------------------
-
-CREATEFUNCTION postgis_version() RETURNS text
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE;
-
-CREATEFUNCTION postgis_proj_version() RETURNS text
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE;
-
---
--- IMPORTANT:
--- Starting at 1.1.0 this function is used by postgis_proc_upgrade.pl
--- to extract version of postgis being installed.
--- Do not modify this w/out also changing postgis_proc_upgrade.pl
---
-CREATEFUNCTION postgis_scripts_installed() RETURNS text
- AS 'SELECT ''@POSTGIS_SCRIPTS_VERSION@''::text AS version'
- LANGUAGE 'sql' _IMMUTABLE;
-
-CREATEFUNCTION postgis_lib_version() RETURNS text
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE; -- a new lib will require a new session
-
--- NOTE: starting at 1.1.0 this is the same of postgis_lib_version()
-CREATEFUNCTION postgis_scripts_released() RETURNS text
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE;
-
-CREATEFUNCTION postgis_uses_stats() RETURNS bool
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE;
-
-CREATEFUNCTION postgis_geos_version() RETURNS text
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE;
-
-CREATEFUNCTION postgis_jts_version() RETURNS text
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE;
-
-CREATEFUNCTION postgis_scripts_build_date() RETURNS text
- AS 'SELECT ''@POSTGIS_BUILD_DATE@''::text AS version'
- LANGUAGE 'sql' _IMMUTABLE;
-
-CREATEFUNCTION postgis_lib_build_date() RETURNS text
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE;
-
-
-
-CREATEFUNCTION postgis_full_version() RETURNS text
-AS '
-DECLARE
- libver text;
- projver text;
- geosver text;
- jtsver text;
- usestats bool;
- dbproc text;
- relproc text;
- fullver text;
-BEGIN
- SELECT postgis_lib_version() INTO libver;
- SELECT postgis_proj_version() INTO projver;
- SELECT postgis_geos_version() INTO geosver;
- SELECT postgis_jts_version() INTO jtsver;
- SELECT postgis_uses_stats() INTO usestats;
- SELECT postgis_scripts_installed() INTO dbproc;
- SELECT postgis_scripts_released() INTO relproc;
-
- fullver = ''POSTGIS="'' || libver || ''"'';
-
- IF geosver IS NOT NULL THEN
- fullver = fullver || '' GEOS="'' || geosver || ''"'';
- END IF;
-
- IF jtsver IS NOT NULL THEN
- fullver = fullver || '' JTS="'' || jtsver || ''"'';
- END IF;
-
- IF projver IS NOT NULL THEN
- fullver = fullver || '' PROJ="'' || projver || ''"'';
- END IF;
-
- IF usestats THEN
- fullver = fullver || '' USE_STATS'';
- END IF;
-
- -- fullver = fullver || '' DBPROC="'' || dbproc || ''"'';
- -- fullver = fullver || '' RELPROC="'' || relproc || ''"'';
-
- IF dbproc != relproc THEN
- fullver = fullver || '' (procs from '' || dbproc || '' need upgrade)'';
- END IF;
-
- RETURN fullver;
-END
-'
-LANGUAGE 'plpgsql' _IMMUTABLE;
-
----------------------------------------------------------------
--- CASTS
----------------------------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d(geometry)
- RETURNS box2d
- AS '@MODULE_FILENAME@','LWGEOM_to_BOX2DFLOAT4'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d(geometry)
- RETURNS box2d
- AS '@MODULE_FILENAME@','LWGEOM_to_BOX2DFLOAT4'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box3d(geometry)
- RETURNS box3d
- AS '@MODULE_FILENAME@','LWGEOM_to_BOX3D'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box3d(geometry)
- RETURNS box3d
- AS '@MODULE_FILENAME@','LWGEOM_to_BOX3D'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box(geometry)
- RETURNS box
- AS '@MODULE_FILENAME@','LWGEOM_to_BOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box(geometry)
- RETURNS box
- AS '@MODULE_FILENAME@','LWGEOM_to_BOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box2d(box3d)
- RETURNS box2d
- AS '@MODULE_FILENAME@','BOX3D_to_BOX2DFLOAT4'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box2d(box3d)
- RETURNS box2d
- AS '@MODULE_FILENAME@','BOX3D_to_BOX2DFLOAT4'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box3d(box2d)
- RETURNS box3d
- AS '@MODULE_FILENAME@','BOX2DFLOAT4_to_BOX3D'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box3d(box2d)
- RETURNS box3d
- AS '@MODULE_FILENAME@','BOX2DFLOAT4_to_BOX3D'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION box(box3d)
- RETURNS box
- AS '@MODULE_FILENAME@','BOX3D_to_BOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_box(box3d)
- RETURNS box
- AS '@MODULE_FILENAME@','BOX3D_to_BOX'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION text(geometry)
- RETURNS text
- AS '@MODULE_FILENAME@','LWGEOM_to_text'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_text(geometry)
- RETURNS text
- AS '@MODULE_FILENAME@','LWGEOM_to_text'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- this is kept for backward-compatibility
--- Deprecation in 1.2.3
-CREATEFUNCTION box3dtobox(box3d)
- RETURNS box
- AS 'SELECT box($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry(box2d)
- RETURNS geometry
- AS '@MODULE_FILENAME@','BOX2DFLOAT4_to_LWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry(box2d)
- RETURNS geometry
- AS '@MODULE_FILENAME@','BOX2DFLOAT4_to_LWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry(box3d)
- RETURNS geometry
- AS '@MODULE_FILENAME@','BOX3D_to_LWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry(box3d)
- RETURNS geometry
- AS '@MODULE_FILENAME@','BOX3D_to_LWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry(text)
- RETURNS geometry
- AS '@MODULE_FILENAME@','parse_WKT_lwgeom'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry(text)
- RETURNS geometry
- AS '@MODULE_FILENAME@','parse_WKT_lwgeom'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry(chip)
- RETURNS geometry
- AS '@MODULE_FILENAME@','CHIP_to_LWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry(chip)
- RETURNS geometry
- AS '@MODULE_FILENAME@','CHIP_to_LWGEOM'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION geometry(bytea)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_from_bytea'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_geometry(bytea)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_from_bytea'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION bytea(geometry)
- RETURNS bytea
- AS '@MODULE_FILENAME@','LWGEOM_to_bytea'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_bytea(geometry)
- RETURNS bytea
- AS '@MODULE_FILENAME@','LWGEOM_to_bytea'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION text(bool)
- RETURNS text
- AS '@MODULE_FILENAME@','BOOL_to_text'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_text(bool)
- RETURNS text
- AS '@MODULE_FILENAME@','BOOL_to_text'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- 7.3+ explicit casting definitions
-#if USE_VERSION >= 73
-CREATE CAST (geometry AS box2d) WITH FUNCTION ST_box2d(geometry) AS IMPLICIT;
-CREATE CAST (geometry AS box3d) WITH FUNCTION ST_box3d(geometry) AS IMPLICIT;
-CREATE CAST (geometry AS box) WITH FUNCTION ST_box(geometry) AS IMPLICIT;
-CREATE CAST (box3d AS box2d) WITH FUNCTION ST_box2d(box3d) AS IMPLICIT;
-CREATE CAST (box2d AS box3d) WITH FUNCTION ST_box3d(box2d) AS IMPLICIT;
-CREATE CAST (box2d AS geometry) WITH FUNCTION ST_geometry(box2d) AS IMPLICIT;
-CREATE CAST (box3d AS box) WITH FUNCTION ST_box(box3d) AS IMPLICIT;
-CREATE CAST (box3d AS geometry) WITH FUNCTION ST_geometry(box3d) AS IMPLICIT;
-CREATE CAST (text AS geometry) WITH FUNCTION ST_geometry(text) AS IMPLICIT;
-CREATE CAST (geometry AS text) WITH FUNCTION ST_text(geometry) AS IMPLICIT;
-CREATE CAST (chip AS geometry) WITH FUNCTION ST_geometry(chip) AS IMPLICIT;
-CREATE CAST (bytea AS geometry) WITH FUNCTION ST_geometry(bytea) AS IMPLICIT;
-CREATE CAST (geometry AS bytea) WITH FUNCTION ST_bytea(geometry) AS IMPLICIT;
--- CREATE CAST (bool AS text) WITH FUNCTION ST_text(bool) AS IMPLICIT;
-#endif
-
----------------------------------------------------------------
--- Algorithms
----------------------------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION Simplify(geometry, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_simplify2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Simplify(geometry, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_simplify2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- SnapToGrid(input, xoff, yoff, xsize, ysize)
--- Deprecation in 1.2.3
-CREATEFUNCTION SnapToGrid(geometry, float8, float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_snaptogrid'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_SnapToGrid(geometry, float8, float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_snaptogrid'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- SnapToGrid(input, xsize, ysize) # offsets=0
--- Deprecation in 1.2.3
-CREATEFUNCTION SnapToGrid(geometry, float8, float8)
- RETURNS geometry
- AS 'SELECT SnapToGrid($1, 0, 0, $2, $3)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_SnapToGrid(geometry, float8, float8)
- RETURNS geometry
- AS 'SELECT SnapToGrid($1, 0, 0, $2, $3)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- SnapToGrid(input, size) # xsize=ysize=size, offsets=0
--- Deprecation in 1.2.3
-CREATEFUNCTION SnapToGrid(geometry, float8)
- RETURNS geometry
- AS 'SELECT SnapToGrid($1, 0, 0, $2, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_SnapToGrid(geometry, float8)
- RETURNS geometry
- AS 'SELECT SnapToGrid($1, 0, 0, $2, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- SnapToGrid(input, point_offsets, xsize, ysize, zsize, msize)
--- Deprecation in 1.2.3
-CREATEFUNCTION SnapToGrid(geometry, geometry, float8, float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_snaptogrid_pointoff'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_SnapToGrid(geometry, geometry, float8, float8, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_snaptogrid_pointoff'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION Segmentize(geometry, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_segmentize2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Segmentize(geometry, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_segmentize2d'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
----------------------------------------------------------------
--- LRS
----------------------------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION line_interpolate_point(geometry, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_line_interpolate_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_line_interpolate_point(geometry, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_line_interpolate_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION line_substring(geometry, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_line_substring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_line_substring(geometry, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_line_substring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION line_locate_point(geometry, geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_line_locate_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_line_locate_point(geometry, geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@', 'LWGEOM_line_locate_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION locate_between_measures(geometry, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_locate_between_m'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_locate_between_measures(geometry, float8, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_locate_between_m'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
-
--- Deprecation in 1.2.3
-CREATEFUNCTION locate_along_measure(geometry, float8)
- RETURNS geometry
- AS 'SELECT locate_between_measures($1, $2, $2)'
- LANGUAGE 'sql' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_locate_along_measure(geometry, float8)
- RETURNS geometry
- AS 'SELECT locate_between_measures($1, $2, $2)'
- LANGUAGE 'sql' _IMMUTABLE_STRICT;
-
----------------------------------------------------------------
--- GEOS
----------------------------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION intersection(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','intersection'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: intersection(geometry,geometry)
-CREATEFUNCTION ST_Intersection(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','intersection'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION buffer(geometry,float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@','buffer'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: buffer(geometry,float8)
-CREATEFUNCTION ST_Buffer(geometry,float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@','buffer'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION buffer(geometry,float8,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@','buffer'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_buffer(geometry,float8,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@','buffer'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION convexhull(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','convexhull'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: convexhull(geometry)
-CREATEFUNCTION ST_ConvexHull(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','convexhull'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-#if GEOS_VERNUM >= 30
--- Requires GEOS >= 3.0.0
--- Availability: 1.3.3
-CREATEFUNCTION ST_SimplifyPreserveTopology(geometry, float8)
- RETURNS geometry
- AS '@MODULE_FILENAME@','topologypreservesimplify'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-#endif
-
--- Deprecation in 1.2.3
-CREATEFUNCTION difference(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','difference'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: difference(geometry,geometry)
-CREATEFUNCTION ST_Difference(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','difference'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION boundary(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','boundary'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: boundary(geometry)
-CREATEFUNCTION ST_Boundary(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','boundary'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION symdifference(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','symdifference'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: symdifference(geometry,geometry)
-CREATEFUNCTION ST_SymDifference(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','symdifference'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION symmetricdifference(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','symdifference'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_symmetricdifference(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','symdifference'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomUnion(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','geomunion'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: GeomUnion(geometry,geometry)
-CREATEFUNCTION ST_Union(geometry,geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','geomunion'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATE AGGREGATE MemGeomUnion (
- basetype = geometry,
- sfunc = geomunion,
- stype = geometry
- );
-
--- Availability: 1.2.2
-CREATE AGGREGATE ST_MemUnion (
- basetype = geometry,
- sfunc = ST_union,
- stype = geometry
- );
-
--- Deprecation in 1.2.3
-CREATEFUNCTION unite_garray (geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_unite_garray (geometry[])
- RETURNS geometry
- AS '@MODULE_FILENAME@','unite_garray'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATE AGGREGATE GeomUnion (
- sfunc = geom_accum,
- basetype = geometry,
- stype = geometry[],
- finalfunc = ST_unite_garray
- );
-
--- Availability: 1.2.2
-CREATE AGGREGATE ST_Union (
- sfunc = ST_geom_accum,
- basetype = geometry,
- stype = geometry[],
- finalfunc = ST_unite_garray
- );
-
--- Deprecation in 1.2.3
-CREATEFUNCTION relate(geometry,geometry)
- RETURNS text
- AS '@MODULE_FILENAME@','relate_full'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_relate(geometry,geometry)
- RETURNS text
- AS '@MODULE_FILENAME@','relate_full'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION relate(geometry,geometry,text)
- RETURNS boolean
- AS '@MODULE_FILENAME@','relate_pattern'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: relate(geometry,geometry,text)
-CREATEFUNCTION ST_Relate(geometry,geometry,text)
- RETURNS boolean
- AS '@MODULE_FILENAME@','relate_pattern'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION disjoint(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: disjoint(geometry,geometry)
-CREATEFUNCTION ST_Disjoint(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@','disjoint'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION touches(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: touches(geometry,geometry)
-CREATEFUNCTION _ST_Touches(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@','touches'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
--- Inlines index magic
-CREATEFUNCTION ST_Touches(geometry,geometry)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_Touches($1,$2)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_DWithin(geometry, geometry, float8)
- RETURNS boolean
- AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND ST_Distance($1, $2) < $3'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION intersects(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: intersects(geometry,geometry)
-CREATEFUNCTION _ST_Intersects(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@','intersects'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
--- Inlines index magic
-CREATEFUNCTION ST_Intersects(geometry,geometry)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_Intersects($1,$2)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
--- Deprecation in 1.2.3
-CREATEFUNCTION crosses(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: crosses(geometry,geometry)
-CREATEFUNCTION _ST_Crosses(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@','crosses'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
--- Inlines index magic
-CREATEFUNCTION ST_Crosses(geometry,geometry)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_Crosses($1,$2)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION within(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: within(geometry,geometry)
-CREATEFUNCTION _ST_Within(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@','within'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
--- Inlines index magic
-CREATEFUNCTION ST_Within(geometry,geometry)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_Within($1,$2)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION Contains(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: contains(geometry,geometry)
-CREATEFUNCTION _ST_Contains(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@','contains'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
--- Inlines index magic
-CREATEFUNCTION ST_Contains(geometry,geometry)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_Contains($1,$2)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
-#if GEOS_VERNUM >= 30
--- Availability: 1.2.2
-CREATEFUNCTION _ST_CoveredBy(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'coveredby'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_CoveredBy(geometry,geometry)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_CoveredBy($1,$2)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH(iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION _ST_Covers(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'covers'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
--- Inlines index magic
-CREATEFUNCTION ST_Covers(geometry,geometry)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_Covers($1,$2)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-#endif
-
--- Deprecation in 1.2.3
-CREATEFUNCTION overlaps(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: overlaps(geometry,geometry)
-CREATEFUNCTION _ST_Overlaps(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@','overlaps'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
--- Inlines index magic
-CREATEFUNCTION ST_Overlaps(geometry,geometry)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_Overlaps($1,$2)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION IsValid(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'isvalid'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: IsValid(geometry)
--- TODO: change null returns to true
-CREATEFUNCTION ST_IsValid(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'isvalid'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GEOSnoop(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'GEOSnoop'
- LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION JTSnoop(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'JTSnoop'
- LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict,iscachable);
-
--- This is also available w/out GEOS
-CREATEFUNCTION Centroid(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: Centroid(geometry)
-CREATEFUNCTION ST_Centroid(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'centroid'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION IsRing(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: IsRing(geometry)
-CREATEFUNCTION ST_IsRing(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'isring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PointOnSurface(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: PointOnSurface(geometry)
-CREATEFUNCTION ST_PointOnSurface(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'pointonsurface'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION IsSimple(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'issimple'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: IsSimple(geometry)
-CREATEFUNCTION ST_IsSimple(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'issimple'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION Equals(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@','geomequals'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: Equals(geometry,geometry)
-CREATEFUNCTION ST_Equals(geometry,geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@','geomequals'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
------------------------------------------------------------------------
--- Prepared Geometry Predicates
--- requires GEOS 3.1.0-CAPI-1.5.0 or better
------------------------------------------------------------------------
-
-#if GEOS_VERNUM >= 31
-
--- Availability: 1.4.0
-CREATEFUNCTION _ST_ContainsPrepared(geometry,geometry,integer)
- RETURNS boolean
- AS '@MODULE_FILENAME@','containsPrepared'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.4.0
--- Inlines index magic
-CREATEFUNCTION ST_Contains(geometry,geometry,integer)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_ContainsPrepared($1,$2,$3)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
--- Availability: 1.4.0
-CREATEFUNCTION _ST_ContainsProperlyPrepared(geometry,geometry,integer)
- RETURNS boolean
- AS '@MODULE_FILENAME@','containsProperlyPrepared'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.4.0
--- Inlines index magic
-CREATEFUNCTION ST_ContainsProperly(geometry,geometry,integer)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_ContainsProperlyPrepared($1,$2,$3)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
--- Availability: 1.4.0
--- Added for completeness, and to make testing ST_ContainsProperlyPrepared easier
-CREATE OR REPLACE FUNCTION ST_ContainsProperly(geometry,geometry)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND ST_relate($1,$2,''T**FF*FF*'')'
- LANGUAGE 'SQL' IMMUTABLE;
-
--- Availability: 1.4.0
-CREATEFUNCTION _ST_CoversPrepared(geometry,geometry,integer)
- RETURNS boolean
- AS '@MODULE_FILENAME@','coversPrepared'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.4.0
--- Inlines index magic
-CREATEFUNCTION ST_Covers(geometry,geometry,integer)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_CoversPrepared($1,$2,$3)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
--- Availability: 1.4.0
-CREATEFUNCTION _ST_IntersectsPrepared(geometry,geometry,integer)
- RETURNS boolean
- AS '@MODULE_FILENAME@','intersectsPrepared'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.4.0
--- Inlines index magic
-CREATEFUNCTION ST_Intersects(geometry,geometry,integer)
- RETURNS boolean
- AS 'SELECT $1 && $2 AND _ST_IntersectsPrepared($1,$2,$3)'
- LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
-
-#endif
-
------------------------------------------------------------------------
--- SVG OUTPUT
------------------------------------------------------------------------
--- Deprecation in 1.2.3
-CREATEFUNCTION AsSVG(geometry,int4,int4)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','assvg_geometry'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsSVG(geometry,int4,int4)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','assvg_geometry'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsSVG(geometry,int4)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','assvg_geometry'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsSVG(geometry,int4)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','assvg_geometry'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsSVG(geometry)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','assvg_geometry'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsSVG(geometry)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','assvg_geometry'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
------------------------------------------------------------------------
--- GML OUTPUT
------------------------------------------------------------------------
--- _ST_AsGML(version, geom, precision)
-CREATEFUNCTION _ST_AsGML(int4, geometry, int4)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asGML'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- AsGML(geom, precision) / version=2
--- Deprecation in 1.2.3
-CREATEFUNCTION AsGML(geometry, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsGML(2, $1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsGML(geometry, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsGML(2, $1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- AsGML(geom) / precision=15 version=2
--- Deprecation in 1.2.3
-CREATEFUNCTION AsGML(geometry)
- RETURNS TEXT
- AS 'SELECT _ST_AsGML(2, $1, 15)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availabiltiy: 1.2.2
-CREATEFUNCTION ST_AsGML(geometry)
- RETURNS TEXT
- AS 'SELECT _ST_AsGML(2, $1, 15)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsGML(version, geom) / precision=15 version=2
--- Availabiltiy: 1.3.2
-CREATEFUNCTION ST_AsGML(int4, geometry)
- RETURNS TEXT
- AS 'SELECT _ST_AsGML($1, $2, 15)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsGML(version, geom, precision)
--- Availabiltiy: 1.3.2
-CREATEFUNCTION ST_AsGML(int4, geometry, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsGML($1, $2, $3)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
------------------------------------------------------------------------
--- KML OUTPUT
------------------------------------------------------------------------
--- _ST_AsKML(version, geom, precision)
-CREATEFUNCTION _ST_AsKML(int4, geometry, int4)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asKML'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-#ifdef USE_PROJ
--- AsKML(geom, precision) / version=2
--- Deprecation in 1.2.3
-CREATEFUNCTION AsKML(geometry, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsKML(2, transform($1,4326), $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsKML(geometry, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsKML(2, transform($1,4326), $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- AsKML(geom) / precision=15 version=2
--- Deprecation in 1.2.3
-CREATEFUNCTION AsKML(geometry)
- RETURNS TEXT
- AS 'SELECT _ST_AsKML(2, transform($1,4326), 15)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- AsKML(version, geom, precision)
--- Deprecation in 1.2.3
-CREATEFUNCTION AsKML(int4, geometry, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsKML($1, transform($2,4326), $3)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availabiltiy: 1.2.2
-CREATEFUNCTION ST_AsKML(geometry)
- RETURNS TEXT
- AS 'SELECT _ST_AsKML(2, transform($1,4326), 15)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsKML(version, geom) / precision=15 version=2
--- Availabiltiy: 1.3.2
-CREATEFUNCTION ST_AsKML(int4, geometry)
- RETURNS TEXT
- AS 'SELECT _ST_AsKML($1, transform($2,4326), 15)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsKML(version, geom, precision)
--- Availabiltiy: 1.3.2
-CREATEFUNCTION ST_AsKML(int4, geometry, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsKML($1, transform($2,4326), $3)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-#endif
-
------------------------------------------------------------------------
--- GEOJSON OUTPUT
--- Availabiltiy: 1.3.4
------------------------------------------------------------------------
--- _ST_AsGeoJson(version, geom, precision, options)
-CREATEFUNCTION _ST_AsGeoJson(int4, geometry, int4, int4)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asGeoJson'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsGeoJson(geom, precision) / version=1 options=0
-CREATEFUNCTION ST_AsGeoJson(geometry, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsGeoJson(1, $1, $2, 0)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsGeoJson(geom) / precision=15 version=1 options=0
-CREATEFUNCTION ST_AsGeoJson(geometry)
- RETURNS TEXT
- AS 'SELECT _ST_AsGeoJson(1, $1, 15, 0)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsGeoJson(version, geom) / precision=15 options=0
-CREATEFUNCTION ST_AsGeoJson(int4, geometry)
- RETURNS TEXT
- AS 'SELECT _ST_AsGeoJson($1, $2, 15, 0)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsGeoJson(version, geom, precision) / options=0
-CREATEFUNCTION ST_AsGeoJson(int4, geometry, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsGeoJson($1, $2, $3, 0)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsGeoJson(geom, precision, options) / version=1
-CREATEFUNCTION ST_AsGeoJson(geometry, int4, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsGeoJson(1, $1, $2, $3)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- ST_AsGeoJson(version, geom, precision,options)
-CREATEFUNCTION ST_AsGeoJson(int4, geometry, int4, int4)
- RETURNS TEXT
- AS 'SELECT _ST_AsGeoJson($1, $2, $3, $4)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-
-------------------------------------------------------------------------
--- OGC defined
-------------------------------------------------------------------------
-
--- Deprecation in 1.2.3
-CREATEFUNCTION NumPoints(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_numpoints_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: NumPoints(geometry)
-CREATEFUNCTION ST_NumPoints(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_numpoints_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION NumGeometries(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_numgeometries_collection'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: NumGeometries(geometry)
-CREATEFUNCTION ST_NumGeometries(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_numgeometries_collection'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeometryN(geometry,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_geometryn_collection'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: GeometryN(geometry)
-CREATEFUNCTION ST_GeometryN(geometry,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_geometryn_collection'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION Dimension(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_dimension'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: Dimension(geometry)
-CREATEFUNCTION ST_Dimension(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@', 'LWGEOM_dimension'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION ExteriorRing(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_exteriorring_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: ExteriorRing(geometry)
-CREATEFUNCTION ST_ExteriorRing(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_exteriorring_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION NumInteriorRings(geometry)
- RETURNS integer
- AS '@MODULE_FILENAME@','LWGEOM_numinteriorrings_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: NumInteriorRings(geometry)
-CREATEFUNCTION ST_NumInteriorRings(geometry)
- RETURNS integer
- AS '@MODULE_FILENAME@','LWGEOM_numinteriorrings_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION NumInteriorRing(geometry)
- RETURNS integer
- AS '@MODULE_FILENAME@','LWGEOM_numinteriorrings_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_NumInteriorRing(geometry)
- RETURNS integer
- AS '@MODULE_FILENAME@','LWGEOM_numinteriorrings_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION InteriorRingN(geometry,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_interiorringn_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: InteriorRingN(geometry)
-CREATEFUNCTION ST_InteriorRingN(geometry,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_interiorringn_polygon'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeometryType(geometry)
- RETURNS text
- AS '@MODULE_FILENAME@', 'LWGEOM_getTYPE'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Not quite equivalent to GeometryType
-CREATEFUNCTION ST_GeometryType(geometry)
- RETURNS text
- AS '
- DECLARE
- gtype text := geometrytype($1);
- BEGIN
- IF (gtype IN (''POINT'', ''POINTM'')) THEN
- gtype := ''Point'';
- ELSIF (gtype IN (''LINESTRING'', ''LINESTRINGM'')) THEN
- gtype := ''LineString'';
- ELSIF (gtype IN (''POLYGON'', ''POLYGONM'')) THEN
- gtype := ''Polygon'';
- ELSIF (gtype IN (''MULTIPOINT'', ''MULTIPOINTM'')) THEN
- gtype := ''MultiPoint'';
- ELSIF (gtype IN (''MULTILINESTRING'', ''MULTILINESTRINGM'')) THEN
- gtype := ''MultiLineString'';
- ELSIF (gtype IN (''MULTIPOLYGON'', ''MULTIPOLYGONM'')) THEN
- gtype := ''MultiPolygon'';
- ELSE
- gtype := ''Geometry'';
- END IF;
- RETURN ''ST_'' || gtype;
- END
- '
- LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PointN(geometry,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_pointn_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: PointN(geometry,integer)
-CREATEFUNCTION ST_PointN(geometry,integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_pointn_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION X(geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_x_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: X(geometry)
-CREATEFUNCTION ST_X(geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_x_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION Y(geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_y_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: Y(geometry)
-CREATEFUNCTION ST_Y(geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_y_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION Z(geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_z_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: Z(geometry)
-CREATEFUNCTION SE_Z(geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_z_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_Z(geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_z_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION M(geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_m_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_M(geometry)
- RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_m_point'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION StartPoint(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_startpoint_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: StartPoint(geometry))
-CREATEFUNCTION ST_StartPoint(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_startpoint_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION EndPoint(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_endpoint_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: EndPoint(geometry))
-CREATEFUNCTION ST_EndPoint(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_endpoint_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION IsClosed(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'LWGEOM_isclosed_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: IsClosed(geometry)
-CREATEFUNCTION ST_IsClosed(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'LWGEOM_isclosed_linestring'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION IsEmpty(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'LWGEOM_isempty'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- PostGIS equivalent function: IsEmpty(geometry)
-CREATEFUNCTION ST_IsEmpty(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'LWGEOM_isempty'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION SRID(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@','LWGEOM_getSRID'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: getSRID(geometry)
-CREATEFUNCTION ST_SRID(geometry)
- RETURNS int4
- AS '@MODULE_FILENAME@','LWGEOM_getSRID'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION SetSRID(geometry,int4)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_setSRID'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_SetSRID(geometry,int4)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_setSRID'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsBinary(geometry)
- RETURNS bytea
- AS '@MODULE_FILENAME@','LWGEOM_asBinary'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: AsBinary(geometry)
-CREATEFUNCTION ST_AsBinary(geometry)
- RETURNS bytea
- AS '@MODULE_FILENAME@','LWGEOM_asBinary'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsBinary(geometry,text)
- RETURNS bytea
- AS '@MODULE_FILENAME@','LWGEOM_asBinary'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_AsBinary(geometry,text)
- RETURNS bytea
- AS '@MODULE_FILENAME@','LWGEOM_asBinary'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION AsText(geometry)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asText'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: AsText(geometry)
-CREATEFUNCTION ST_AsText(geometry)
- RETURNS TEXT
- AS '@MODULE_FILENAME@','LWGEOM_asText'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeometryFromText(text)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_from_text'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeometryFromText(text)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_from_text'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeometryFromText(text, int4)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_from_text'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeometryFromText(text, int4)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_from_text'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomFromText(text)
- RETURNS geometry AS 'SELECT geometryfromtext($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeomFromText(text)
- RETURNS geometry AS 'SELECT geometryfromtext($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomFromText(text, int4)
- RETURNS geometry AS 'SELECT geometryfromtext($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: GeometryFromText(text, int4)
-CREATEFUNCTION ST_GeomFromText(text, int4)
- RETURNS geometry AS 'SELECT geometryfromtext($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PointFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POINT''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_PointFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POINT''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PointFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POINT''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: PointFromText(text, int4)
--- TODO: improve this ... by not duplicating constructor time.
-CREATEFUNCTION ST_PointFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POINT''
- THEN GeomFromText($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LineFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''LINESTRING''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_LineFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''LINESTRING''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LineFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''LINESTRING''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: LineFromText(text, int4)
-CREATEFUNCTION ST_LineFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''LINESTRING''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LineStringFromText(text)
- RETURNS geometry
- AS 'SELECT LineFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LineStringFromText(text, int4)
- RETURNS geometry
- AS 'SELECT LineFromText($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PolyFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POLYGON''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_PolyFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POLYGON''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PolyFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POLYGON''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: PolyFromText(text, int4)
-CREATEFUNCTION ST_PolyFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POLYGON''
- THEN GeomFromText($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PolygonFromText(text, int4)
- RETURNS geometry
- AS 'SELECT PolyFromText($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_PolygonFromText(text, int4)
- RETURNS geometry
- AS 'SELECT PolyFromText($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PolygonFromText(text)
- RETURNS geometry
- AS 'SELECT PolyFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_PolygonFromText(text)
- RETURNS geometry
- AS 'SELECT PolyFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MLineFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromText($1, $2)) = ''MULTILINESTRING''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: MLineFromText(text, int4)
-CREATEFUNCTION ST_MLineFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromText($1, $2)) = ''MULTILINESTRING''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MLineFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTILINESTRING''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MLineFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTILINESTRING''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiLineStringFromText(text)
- RETURNS geometry
- AS 'SELECT MLineFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiLineStringFromText(text)
- RETURNS geometry
- AS 'SELECT MLineFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiLineStringFromText(text, int4)
- RETURNS geometry
- AS 'SELECT MLineFromText($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiLineStringFromText(text, int4)
- RETURNS geometry
- AS 'SELECT MLineFromText($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MPointFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1,$2)) = ''MULTIPOINT''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: MPointFromText(text, int4)
-CREATEFUNCTION ST_MPointFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOINT''
- THEN GeomFromText($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MPointFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOINT''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MPointFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOINT''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiPointFromText(text, int4)
- RETURNS geometry
- AS 'SELECT MPointFromText($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiPointFromText(text)
- RETURNS geometry
- AS 'SELECT MPointFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiPointFromText(text)
- RETURNS geometry
- AS 'SELECT MPointFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiPointFromText(text)
- RETURNS geometry
- AS 'SELECT MPointFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiPointFromText(text)
- RETURNS geometry
- AS 'SELECT MPointFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MPolyFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOLYGON''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: MPolyFromText(text, int4)
-CREATEFUNCTION ST_MPolyFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOLYGON''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MPolyFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOLYGON''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
---Availability: 1.2.2
-CREATEFUNCTION ST_MPolyFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOLYGON''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiPolygonFromText(text, int4)
- RETURNS geometry
- AS 'SELECT MPolyFromText($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiPolygonFromText(text, int4)
- RETURNS geometry
- AS 'SELECT MPolyFromText($1, $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiPolygonFromText(text)
- RETURNS geometry
- AS 'SELECT MPolyFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiPolygonFromText(text)
- RETURNS geometry
- AS 'SELECT MPolyFromText($1)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomCollFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeomCollFromText(text, int4)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
- THEN GeomFromText($1,$2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomCollFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromText($1)) = ''GEOMETRYCOLLECTION''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeomCollFromText(text)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromText($1)) = ''GEOMETRYCOLLECTION''
- THEN GeomFromText($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomFromWKB(bytea)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_from_WKB'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeomFromWKB(bytea)
- RETURNS geometry
- AS '@MODULE_FILENAME@','LWGEOM_from_WKB'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomFromWKB(bytea, int)
- RETURNS geometry
- AS 'SELECT setSRID(GeomFromWKB($1), $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: GeomFromWKB(bytea, int)
-CREATEFUNCTION ST_GeomFromWKB(bytea, int)
- RETURNS geometry
- AS 'SELECT setSRID(GeomFromWKB($1), $2)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PointFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POINT''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: PointFromWKB(bytea, int)
-CREATEFUNCTION ST_PointFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POINT''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PointFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POINT''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_PointFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POINT''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LineFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: LineFromWKB(text, int)
-CREATEFUNCTION ST_LineFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LineFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_LineFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LinestringFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_LinestringFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION LinestringFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_LinestringFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PolyFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POLYGON''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: PolyFromWKB(text, int)
-CREATEFUNCTION ST_PolyFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POLYGON''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PolyFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_PolyFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PolygonFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''POLYGON''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_PolygonFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''POLYGON''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION PolygonFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_PolygonFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MPointFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: MPointFromWKB(text, int)
-CREATEFUNCTION ST_MPointFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOINT''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MPointFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MPointFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiPointFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiPointFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiPointFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiPointFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiLineFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION MultiLineFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiLineFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiLineFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MLineFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: MLineFromWKB(text, int)
-CREATEFUNCTION ST_MLineFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MLineFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MLineFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MPolyFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- PostGIS equivalent function: MPolyFromWKB(text, int)
-CREATEFUNCTION ST_MPolyFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MPolyFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MPolyFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiPolyFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiPolyFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION MultiPolyFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_MultiPolyFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomCollFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeomCollFromWKB(bytea, int)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
- THEN GeomFromWKB($1, $2)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Deprecation in 1.2.3
-CREATEFUNCTION GeomCollFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_GeomCollFromWKB(bytea)
- RETURNS geometry
- AS '
- SELECT CASE
- WHEN geometrytype(GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
- THEN GeomFromWKB($1)
- ELSE NULL END
- '
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
---
--- SFSQL 1.1
---
--- BdPolyFromText(multiLineStringTaggedText String, SRID Integer): Polygon
---
--- Construct a Polygon given an arbitrary
--- collection of closed linestrings as a
--- MultiLineString text representation.
---
--- This is a PLPGSQL function rather then an SQL function
--- To avoid double call of BuildArea (one to get GeometryType
--- and another to actual return, in a CASE WHEN construct).
--- Also, we profit from plpgsql to RAISE exceptions.
---
--- Deprecation in 1.2.3
-CREATE OR REPLACE FUNCTION BdPolyFromText(text, integer)
-RETURNS geometry
-AS '
-DECLARE
- geomtext alias for $1;
- srid alias for $2;
- mline geometry;
- geom geometry;
-BEGIN
- mline := MultiLineStringFromText(geomtext, srid);
-
- IF mline IS NULL
- THEN
- RAISE EXCEPTION ''Input is not a MultiLinestring'';
- END IF;
-
- geom := BuildArea(mline);
-
- IF GeometryType(geom) != ''POLYGON''
- THEN
- RAISE EXCEPTION ''Input returns more then a single polygon, try using BdMPolyFromText instead'';
- END IF;
-
- RETURN geom;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATE OR REPLACE FUNCTION ST_BdPolyFromText(text, integer)
-RETURNS geometry
-AS '
-DECLARE
- geomtext alias for $1;
- srid alias for $2;
- mline geometry;
- geom geometry;
-BEGIN
- mline := MultiLineStringFromText(geomtext, srid);
-
- IF mline IS NULL
- THEN
- RAISE EXCEPTION ''Input is not a MultiLinestring'';
- END IF;
-
- geom := BuildArea(mline);
-
- IF GeometryType(geom) != ''POLYGON''
- THEN
- RAISE EXCEPTION ''Input returns more then a single polygon, try using BdMPolyFromText instead'';
- END IF;
-
- RETURN geom;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT;
-
---
--- SFSQL 1.1
---
--- BdMPolyFromText(multiLineStringTaggedText String, SRID Integer): MultiPolygon
---
--- Construct a MultiPolygon given an arbitrary
--- collection of closed linestrings as a
--- MultiLineString text representation.
---
--- This is a PLPGSQL function rather then an SQL function
--- To raise an exception in case of invalid input.
---
--- Deprecation in 1.2.3
-CREATEFUNCTION BdMPolyFromText(text, integer)
-RETURNS geometry
-AS '
-DECLARE
- geomtext alias for $1;
- srid alias for $2;
- mline geometry;
- geom geometry;
-BEGIN
- mline := MultiLineStringFromText(geomtext, srid);
-
- IF mline IS NULL
- THEN
- RAISE EXCEPTION ''Input is not a MultiLinestring'';
- END IF;
-
- geom := multi(BuildArea(mline));
-
- RETURN geom;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT;
-
--- Availability: 1.2.2
-CREATEFUNCTION ST_BdMPolyFromText(text, integer)
-RETURNS geometry
-AS '
-DECLARE
- geomtext alias for $1;
- srid alias for $2;
- mline geometry;
- geom geometry;
-BEGIN
- mline := MultiLineStringFromText(geomtext, srid);
-
- IF mline IS NULL
- THEN
- RAISE EXCEPTION ''Input is not a MultiLinestring'';
- END IF;
-
- geom := multi(BuildArea(mline));
-
- RETURN geom;
-END;
-'
-LANGUAGE 'plpgsql' _IMMUTABLE_STRICT;
-
-#include "long_xact.sql.in"
-#include "sqlmm.sql.in"
-
----------------------------------------------------------------
--- SQL-MM
----------------------------------------------------------------
-
---
--- SQL-MM
---
--- ST_CurveToLine(Geometry geometry, SegmentsPerQuarter integer)
---
--- Converts a given geometry to a linear geometry. Each curveed
--- geometry or segment is converted into a linear approximation using
--- the given number of segments per quarter circle.
-CREATEFUNCTION ST_CurveToLine(geometry, integer)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_curve_segmentize'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
---
--- SQL-MM
---
--- ST_CurveToLine(Geometry geometry, SegmentsPerQuarter integer)
---
--- Converts a given geometry to a linear geometry. Each curveed
--- geometry or segment is converted into a linear approximation using
--- the default value of 32 segments per quarter circle
-CREATEFUNCTION ST_CurveToLine(geometry)
- RETURNS geometry AS 'SELECT ST_CurveToLine($1, 32)'
- LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-
-CREATEFUNCTION ST_HasArc(geometry)
- RETURNS boolean
- AS '@MODULE_FILENAME@', 'LWGEOM_has_arc'
- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-
-CREATEFUNCTION ST_LineToCurve(geometry)
- RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_line_desegmentize'
- LANGUAGE 'C' _IMMUTABLE_STRICT;
----------------------------------------------------------------
--- END
----------------------------------------------------------------
-
-COMMIT;
-
Added: trunk/lwgeom/lwpostgis.sql.in.c
===================================================================
--- trunk/lwgeom/lwpostgis.sql.in.c 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/lwpostgis.sql.in.c 2008-05-14 17:10:19 UTC (rev 2774)
@@ -0,0 +1,6341 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- $Id: lwpostgis.sql.in 2772 2008-04-24 01:04:52Z 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 lwpostgis_uptrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+#include "sqldefines.h"
+
+BEGIN;
+
+-------------------------------------------------------------------
+-- HISTOGRAM2D TYPE (lwhistogram2d)
+-------------------------------------------------------------------
+
+#if POSTGIS_PGSQL_VERSION < 73
+# define HISTOGRAM_IN_REP opaque
+# define HISTOGRAM_OUT_REP opaque
+#else
+# define HISTOGRAM_IN_REP histogram2d
+# define HISTOGRAM_OUT_REP cstring
+#endif
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION histogram2d_in(HISTOGRAM_OUT_REP)
+ RETURNS HISTOGRAM_IN_REP
+ AS 'MODULE_PATHNAME', 'lwhistogram2d_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_histogram2d_in(HISTOGRAM_OUT_REP)
+ RETURNS HISTOGRAM_IN_REP
+ AS 'MODULE_PATHNAME', 'lwhistogram2d_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION histogram2d_out(HISTOGRAM_IN_REP)
+ RETURNS HISTOGRAM_OUT_REP
+ AS 'MODULE_PATHNAME', 'lwhistogram2d_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_histogram2d_out(HISTOGRAM_IN_REP)
+ RETURNS HISTOGRAM_OUT_REP
+ AS 'MODULE_PATHNAME', 'lwhistogram2d_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+CREATE TYPE histogram2d (
+ alignment = double,
+ internallength = variable,
+ input = ST_histogram2d_in,
+ output = ST_histogram2d_out,
+ storage = main
+);
+
+-------------------------------------------------------------------
+-- SPHEROID TYPE
+-------------------------------------------------------------------
+
+#if POSTGIS_PGSQL_VERSION < 73
+# define SPHEROID_IN_REP opaque
+# define SPHEROID_OUT_REP opaque
+#else
+# define SPHEROID_IN_REP spheroid
+# define SPHEROID_OUT_REP cstring
+#endif
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION spheroid_in(SPHEROID_OUT_REP)
+ RETURNS SPHEROID_IN_REP
+ AS 'MODULE_PATHNAME','ellipsoid_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_spheroid_in(SPHEROID_OUT_REP)
+ RETURNS SPHEROID_IN_REP
+ AS 'MODULE_PATHNAME','ellipsoid_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION spheroid_out(SPHEROID_IN_REP)
+ RETURNS SPHEROID_OUT_REP
+ AS 'MODULE_PATHNAME','ellipsoid_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_spheroid_out(SPHEROID_IN_REP)
+ RETURNS SPHEROID_OUT_REP
+ AS 'MODULE_PATHNAME','ellipsoid_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+CREATE TYPE spheroid (
+ alignment = double,
+ internallength = 65,
+ input = ST_spheroid_in,
+ output = ST_spheroid_out
+);
+
+-------------------------------------------------------------------
+-- GEOMETRY TYPE (lwgeom)
+-------------------------------------------------------------------
+
+#if POSTGIS_PGSQL_VERSION < 73
+# define GEOMETRY_IN_REP opaque
+# define GEOMETRY_OUT_REP opaque
+#else
+# define GEOMETRY_IN_REP geometry
+# define GEOMETRY_OUT_REP cstring
+#endif
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_in(GEOMETRY_OUT_REP)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_in(GEOMETRY_OUT_REP)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_out(GEOMETRY_IN_REP)
+ RETURNS cstring
+ AS 'MODULE_PATHNAME','LWGEOM_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_out(GEOMETRY_IN_REP)
+ RETURNS cstring
+ AS 'MODULE_PATHNAME','LWGEOM_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+#if POSTGIS_PGSQL_VERSION >= 80
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_analyze(internal)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_analyze'
+ LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_analyze(internal)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_analyze'
+ LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict);
+#endif
+
+#if POSTGIS_PGSQL_VERSION > 73
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_recv(internal)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_recv'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_recv(internal)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_recv'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_send(geometry)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','LWGEOM_send'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_send(geometry)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','LWGEOM_send'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+#endif
+
+CREATE TYPE geometry (
+ internallength = variable,
+ input = ST_geometry_in,
+ output = ST_geometry_out,
+#if POSTGIS_PGSQL_VERSION > 73
+ send = ST_geometry_send,
+ receive = ST_geometry_recv,
+#endif
+ delimiter = ':',
+#if POSTGIS_PGSQL_VERSION >= 80
+ analyze = ST_geometry_analyze,
+#endif
+ 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 'MODULE_PATHNAME', '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 'MODULE_PATHNAME', '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
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION Rotate(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT rotateZ($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Rotate(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT rotateZ($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT;
+
+-- Availability: 1.1.2
+-- Deprecation in 1.2.3
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION Translate(geometry,float8,float8)
+ RETURNS geometry
+ AS 'SELECT translate($1, $2, $3, 0)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION Scale(geometry,float8,float8)
+ RETURNS geometry
+ AS 'SELECT scale($1, $2, $3, 1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION 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
+CREATEFUNCTION shift_longitude(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_longitude_shift'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_shift_longitude(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_longitude_shift'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-------------------------------------------------------------------
+-- BOX3D TYPE
+-------------------------------------------------------------------
+
+#if POSTGIS_PGSQL_VERSION < 73
+# define BOX3D_IN_REP opaque
+# define BOX3D_OUT_REP opaque
+#else
+# define BOX3D_IN_REP box3d
+# define BOX3D_OUT_REP cstring
+#endif
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box3d_in(BOX3D_OUT_REP)
+ RETURNS BOX3D_IN_REP
+ AS 'MODULE_PATHNAME', 'BOX3D_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box3d_out(BOX3D_IN_REP)
+ RETURNS BOX3D_OUT_REP
+ AS 'MODULE_PATHNAME', 'BOX3D_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box3d_in(BOX3D_OUT_REP)
+ RETURNS BOX3D_IN_REP
+ AS 'MODULE_PATHNAME', 'BOX3D_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box3d_out(BOX3D_IN_REP)
+ RETURNS BOX3D_OUT_REP
+ AS 'MODULE_PATHNAME', 'BOX3D_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+CREATE TYPE box3d (
+ alignment = double,
+ internallength = 48,
+ input = ST_box3d_in,
+ output = ST_box3d_out
+);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION xmin(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_xmin'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_XMin(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_xmin'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION ymin(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_ymin'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_YMin(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_ymin'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION zmin(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_zmin'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_ZMin(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_zmin'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION xmax(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_xmax'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_XMax(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_xmax'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION ymax(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_ymax'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_YMax(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_ymax'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION zmax(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_zmax'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_ZMax(box3d)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','BOX3D_zmax'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-------------------------------------------------------------------
+-- CHIP TYPE
+-------------------------------------------------------------------
+
+#if POSTGIS_PGSQL_VERSION < 73
+# define CHIP_IN_REP opaque
+# define CHIP_OUT_REP opaque
+#else
+# define CHIP_IN_REP chip
+# define CHIP_OUT_REP cstring
+#endif
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION chip_in(CHIP_OUT_REP)
+ RETURNS CHIP_IN_REP
+ AS 'MODULE_PATHNAME','CHIP_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_chip_in(CHIP_OUT_REP)
+ RETURNS CHIP_IN_REP
+ AS 'MODULE_PATHNAME','CHIP_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION chip_out(CHIP_IN_REP)
+ RETURNS CHIP_OUT_REP
+ AS 'MODULE_PATHNAME','CHIP_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_chip_out(CHIP_IN_REP)
+ RETURNS CHIP_OUT_REP
+ AS 'MODULE_PATHNAME','CHIP_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+CREATE TYPE chip (
+ alignment = double,
+ internallength = variable,
+ input = ST_chip_in,
+ output = ST_chip_out,
+ storage = extended
+);
+
+-----------------------------------------------------------------------
+-- BOX2D
+-----------------------------------------------------------------------
+
+
+#if POSTGIS_PGSQL_VERSION < 73
+# define BOX2D_IN_REP opaque
+# define BOX2D_OUT_REP opaque
+#else
+# define BOX2D_IN_REP box2d
+# define BOX2D_OUT_REP cstring
+#endif
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_in(BOX2D_OUT_REP)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME','BOX2DFLOAT4_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_in(BOX2D_OUT_REP)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME','BOX2DFLOAT4_in'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_out(BOX2D_IN_REP)
+ RETURNS cstring
+ AS 'MODULE_PATHNAME','BOX2DFLOAT4_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_out(BOX2D_IN_REP)
+ RETURNS cstring
+ AS 'MODULE_PATHNAME','BOX2DFLOAT4_out'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+CREATE TYPE box2d (
+ internallength = 16,
+ input = ST_box2d_in,
+ output = ST_box2d_out,
+ storage = plain
+);
+
+---- BOX2D support functions
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_overleft(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_overleft'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_overleft(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_overleft'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_overright(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_overright'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_overright(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_overright'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_left(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_left'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_left(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_left'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_right(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_right'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_right(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_right'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_contain(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_contain'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_contain(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_contain'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_contained(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_contained'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_contained(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_contained'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_overlap(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_overlap'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_overlap(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_overlap'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_same(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_same'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_same(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_same'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d_intersects(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_intersects'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d_intersects(box2d, box2d)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'BOX2D_intersects'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+
+-- lwgeom operator support functions
+
+-------------------------------------------------------------------
+-- BTREE indexes
+-------------------------------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_lt(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_lt'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_lt(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_lt'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_le(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_le'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_le(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_le'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_gt(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_gt'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_gt(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_gt'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_ge(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_ge'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_ge(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_ge'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_eq(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_eq'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_eq(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'lwgeom_eq'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_cmp(geometry, geometry)
+ RETURNS integer
+ AS 'MODULE_PATHNAME', 'lwgeom_cmp'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_cmp(geometry, geometry)
+ RETURNS integer
+ AS 'MODULE_PATHNAME', 'lwgeom_cmp'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+--
+-- Sorting operators for Btree
+--
+
+CREATE OPERATOR < (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_lt,
+ COMMUTATOR = '>', NEGATOR = '>=',
+ RESTRICT = contsel, JOIN = contjoinsel
+);
+
+CREATE OPERATOR <= (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_le,
+ COMMUTATOR = '>=', NEGATOR = '>',
+ RESTRICT = contsel, JOIN = contjoinsel
+);
+
+CREATE OPERATOR = (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_eq,
+ COMMUTATOR = '=', -- we might implement a faster negator here
+ RESTRICT = contsel, JOIN = contjoinsel
+);
+
+CREATE OPERATOR >= (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_ge,
+ COMMUTATOR = '<=', NEGATOR = '<',
+ RESTRICT = contsel, JOIN = contjoinsel
+);
+CREATE OPERATOR > (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_gt,
+ COMMUTATOR = '<', NEGATOR = '<=',
+ RESTRICT = contsel, JOIN = contjoinsel
+);
+
+#if POSTGIS_PGSQL_VERSION >= 74
+
+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);
+
+#endif
+
+
+-------------------------------------------------------------------
+-- GiST indexes
+-------------------------------------------------------------------
+-- Deprecation in 1.2.3
+#if POSTGIS_PGSQL_VERSION < 73
+CREATEFUNCTION postgis_gist_sel(opaque, oid, opaque, int4)
+#else
+CREATEFUNCTION postgis_gist_sel (internal, oid, internal, int4)
+#endif
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_gist_sel'
+ LANGUAGE 'C';
+
+-- Availability: 1.2.2
+#if POSTGIS_PGSQL_VERSION < 73
+CREATEFUNCTION ST_postgis_gist_sel(opaque, oid, opaque, int4)
+#else
+CREATEFUNCTION ST_postgis_gist_sel (internal, oid, internal, int4)
+#endif
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_gist_sel'
+ LANGUAGE 'C';
+
+-- Deprecation in 1.2.3
+#if POSTGIS_PGSQL_VERSION == 72
+CREATEFUNCTION postgis_gist_joinsel(opaque, oid, opaque)
+#elif POSTGIS_PGSQL_VERSION == 73
+CREATEFUNCTION postgis_gist_joinsel(internal, oid, internal)
+#else
+CREATEFUNCTION postgis_gist_joinsel(internal, oid, internal, smallint)
+#endif
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_gist_joinsel'
+ LANGUAGE 'C';
+
+-- Availability: 1.2.2
+#if POSTGIS_PGSQL_VERSION == 72
+CREATEFUNCTION ST_postgis_gist_joinsel(opaque, oid, opaque)
+#elif POSTGIS_PGSQL_VERSION == 73
+CREATEFUNCTION ST_postgis_gist_joinsel(internal, oid, internal)
+#else
+CREATEFUNCTION ST_postgis_gist_joinsel(internal, oid, internal, smallint)
+#endif
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_gist_joinsel'
+ LANGUAGE 'C';
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_overleft(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overleft'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_overleft(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overleft'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_overright(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overright'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_overright(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overright'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_overabove(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overabove'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_overabove(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overabove'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_overbelow(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overbelow'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_overbelow(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overbelow'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_left(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_left'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_left(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_left'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_right(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_right'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_right(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_right'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_above(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_above'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_above(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_above'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_below(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_below'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_below(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_below'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_contain(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_contain'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_contain(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_contain'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_contained(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_contained'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_contained(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_contained'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_overlap(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overlap'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry_overlap(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_overlap'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry_same(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_same'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+--Availability: 1.2.2
+CREATEFUNCTION ST_geometry_same(geometry, geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_same'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- GEOMETRY operators
+
+CREATE OPERATOR << (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_left,
+ COMMUTATOR = '>>',
+ RESTRICT = positionsel, JOIN = positionjoinsel
+);
+
+CREATE OPERATOR &< (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overleft,
+ COMMUTATOR = '&>',
+ RESTRICT = positionsel, JOIN = positionjoinsel
+);
+
+CREATE OPERATOR <<| (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_below,
+ COMMUTATOR = '|>>',
+ RESTRICT = positionsel, JOIN = positionjoinsel
+);
+
+CREATE OPERATOR &<| (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overbelow,
+ COMMUTATOR = '|&>',
+ RESTRICT = positionsel, JOIN = positionjoinsel
+);
+
+CREATE OPERATOR && (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overlap,
+ COMMUTATOR = '&&',
+ RESTRICT = ST_postgis_gist_sel, JOIN = ST_postgis_gist_joinsel
+);
+
+CREATE OPERATOR &> (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overright,
+ COMMUTATOR = '&<',
+ RESTRICT = positionsel, JOIN = positionjoinsel
+);
+
+CREATE OPERATOR >> (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_right,
+ COMMUTATOR = '<<',
+ RESTRICT = positionsel, JOIN = positionjoinsel
+);
+
+CREATE OPERATOR |&> (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_overabove,
+ COMMUTATOR = '&<|',
+ RESTRICT = positionsel, JOIN = positionjoinsel
+);
+
+CREATE OPERATOR |>> (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_above,
+ COMMUTATOR = '<<|',
+ RESTRICT = positionsel, JOIN = positionjoinsel
+);
+
+CREATE OPERATOR ~= (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_same,
+ COMMUTATOR = '~=',
+ RESTRICT = eqsel, JOIN = eqjoinsel
+);
+
+CREATE OPERATOR @ (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_contained,
+ COMMUTATOR = '~',
+ RESTRICT = contsel, JOIN = contjoinsel
+);
+
+CREATE OPERATOR ~ (
+ LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = ST_geometry_contain,
+ COMMUTATOR = '@',
+ RESTRICT = contsel, JOIN = contjoinsel
+);
+
+-- gist support functions
+
+#if POSTGIS_PGSQL_VERSION < 73
+#define OPAQUE_TYPE opaque
+#else
+#define OPAQUE_TYPE internal
+#endif
+
+CREATEFUNCTION LWGEOM_gist_consistent(OPAQUE_TYPE,geometry,int4)
+ RETURNS bool
+ AS 'MODULE_PATHNAME' ,'LWGEOM_gist_consistent'
+ LANGUAGE 'C';
+
+CREATEFUNCTION LWGEOM_gist_compress(OPAQUE_TYPE)
+ RETURNS OPAQUE_TYPE
+ AS 'MODULE_PATHNAME','LWGEOM_gist_compress'
+ LANGUAGE 'C';
+
+CREATEFUNCTION LWGEOM_gist_penalty(OPAQUE_TYPE,OPAQUE_TYPE,OPAQUE_TYPE)
+ RETURNS OPAQUE_TYPE
+ AS 'MODULE_PATHNAME' ,'LWGEOM_gist_penalty'
+ LANGUAGE 'C';
+
+CREATEFUNCTION LWGEOM_gist_picksplit(OPAQUE_TYPE, OPAQUE_TYPE)
+ RETURNS OPAQUE_TYPE
+ AS 'MODULE_PATHNAME' ,'LWGEOM_gist_picksplit'
+ LANGUAGE 'C';
+
+CREATEFUNCTION LWGEOM_gist_union(bytea, OPAQUE_TYPE)
+ RETURNS OPAQUE_TYPE
+ AS 'MODULE_PATHNAME' ,'LWGEOM_gist_union'
+ LANGUAGE 'C';
+
+CREATEFUNCTION LWGEOM_gist_same(box2d, box2d, OPAQUE_TYPE)
+ RETURNS OPAQUE_TYPE
+ AS 'MODULE_PATHNAME' ,'LWGEOM_gist_same'
+ LANGUAGE 'C';
+
+CREATEFUNCTION LWGEOM_gist_decompress(OPAQUE_TYPE)
+ RETURNS OPAQUE_TYPE
+ AS 'MODULE_PATHNAME' ,'LWGEOM_gist_decompress'
+ LANGUAGE 'C';
+
+-------------------------------------------
+-- GIST opclass index binding entries.
+-------------------------------------------
+
+#if POSTGIS_PGSQL_VERSION == 72
+
+--
+-- Create opclass index binding entries for PG72
+--
+
+INSERT INTO pg_opclass (opcamid, opcname, opcintype, opcdefault, opckeytype)
+ VALUES (
+ (SELECT oid FROM pg_am WHERE amname = 'gist'),
+ 'gist_geometry_ops',
+ (SELECT oid FROM pg_type WHERE typname = 'geometry'),
+ true,
+ (SELECT oid FROM pg_type WHERE typname = 'box2d'));
+
+-- drop table rt_ops_tmp;
+
+SELECT o.oid AS opoid, o.oprname
+ INTO TABLE rt_ops_tmp
+ FROM pg_operator o, pg_type t
+ WHERE o.oprleft = t.oid
+ AND t.typname = 'geometry';
+
+-- poly_left
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 1, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '<<';
+
+-- poly_overleft
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 2, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '&<';
+
+-- poly_overlap
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 3, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '&&';
+
+-- poly_overright
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 4, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '&>';
+
+-- poly_right
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 5, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '>>';
+
+-- poly_same
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 6, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '~=';
+
+-- poly_contains
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 7, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '~';
+
+-- poly_contained
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 8, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '@';
+
+-- poly_overbelow
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 9, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '&<|';
+
+-- poly_below
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 10, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '<<|';
+
+-- poly_above
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 11, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '|>>';
+
+-- poly_overabove
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+ SELECT opcl.oid, 12, true, c.opoid
+ FROM pg_opclass opcl, rt_ops_tmp c
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and c.oprname = '|&>';
+
+DROP TABLE rt_ops_tmp;
+
+
+-- add the entries to amproc for the support methods
+-- note the amprocnum numbers associated with each are specific!
+INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
+ SELECT opcl.oid, 1, pro.oid
+ FROM pg_opclass opcl, pg_proc pro
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and proname = 'lwgeom_gist_consistent';
+
+INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
+ SELECT opcl.oid, 2, pro.oid
+ FROM pg_opclass opcl, pg_proc pro
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and proname = 'lwgeom_gist_union';
+
+INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
+ SELECT opcl.oid, 3, pro.oid
+ FROM pg_opclass opcl, pg_proc pro
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and proname = 'lwgeom_gist_compress';
+
+INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
+ SELECT opcl.oid, 4, pro.oid
+ FROM pg_opclass opcl, pg_proc pro
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and proname = 'lwgeom_gist_decompress';
+
+INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
+ SELECT opcl.oid, 5, pro.oid
+ FROM pg_opclass opcl, pg_proc pro
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and proname = 'lwgeom_gist_penalty';
+
+INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
+ SELECT opcl.oid, 6, pro.oid
+ FROM pg_opclass opcl, pg_proc pro
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and proname = 'lwgeom_gist_picksplit';
+
+INSERT INTO pg_amproc (amopclaid, amprocnum, amproc)
+ SELECT opcl.oid, 7, pro.oid
+ FROM pg_opclass opcl, pg_proc pro
+ WHERE
+ opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+ and opcname = 'gist_geometry_ops'
+ and proname = 'lwgeom_gist_same';
+
+#else
+
+--
+-- Create opclass index bindings for PG>=73
+--
+
+CREATE OPERATOR CLASS gist_geometry_ops
+ DEFAULT FOR TYPE geometry USING gist AS
+ OPERATOR 1 << RECHECK,
+ OPERATOR 2 &< RECHECK,
+ OPERATOR 3 && RECHECK,
+ OPERATOR 4 &> RECHECK,
+ OPERATOR 5 >> RECHECK,
+ OPERATOR 6 ~= RECHECK,
+ OPERATOR 7 ~ RECHECK,
+ OPERATOR 8 @ RECHECK,
+ OPERATOR 9 &<| RECHECK,
+ OPERATOR 10 <<| RECHECK,
+ OPERATOR 11 |>> RECHECK,
+ OPERATOR 12 |&> RECHECK,
+ FUNCTION 1 LWGEOM_gist_consistent (internal, geometry, int4),
+ FUNCTION 2 LWGEOM_gist_union (bytea, internal),
+ FUNCTION 3 LWGEOM_gist_compress (internal),
+ FUNCTION 4 LWGEOM_gist_decompress (internal),
+ FUNCTION 5 LWGEOM_gist_penalty (internal, internal, internal),
+ FUNCTION 6 LWGEOM_gist_picksplit (internal, internal),
+ FUNCTION 7 LWGEOM_gist_same (box2d, box2d, internal);
+
+UPDATE pg_opclass
+ SET opckeytype = (SELECT oid FROM pg_type
+ WHERE typname = 'box2d'
+ AND typnamespace = (SELECT oid FROM pg_namespace
+ WHERE nspname=current_schema()))
+ WHERE opcname = 'gist_geometry_ops'
+ AND opcnamespace = (SELECT oid from pg_namespace
+ WHERE nspname=current_schema());
+
+-- TODO: add btree binding...
+
+#endif
+
+-------------------------------------------
+-- other lwgeom functions
+-------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION addBBOX(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_addBBOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_addBBOX(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_addBBOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION dropBBOX(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_dropBBOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_dropBBOX(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_dropBBOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION getSRID(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','LWGEOM_getSRID'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION getSRID(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','LWGEOM_getSRID'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION getBBOX(geometry)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DFLOAT4'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION getBBOX(geometry)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DFLOAT4'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-------------------------------------------
+--- CHIP functions
+-------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION srid(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getSRID'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_srid(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getSRID'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION height(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getHeight'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_height(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getHeight'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION factor(chip)
+ RETURNS FLOAT4
+ AS 'MODULE_PATHNAME','CHIP_getFactor'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_factor(chip)
+ RETURNS FLOAT4
+ AS 'MODULE_PATHNAME','CHIP_getFactor'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION width(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getWidth'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_width(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getWidth'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION datatype(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getDatatype'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_datatype(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getDatatype'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION compression(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getCompression'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_compression(chip)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','CHIP_getCompression'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION setSRID(chip,int4)
+ RETURNS chip
+ AS 'MODULE_PATHNAME','CHIP_setSRID'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION setFactor(chip,float4)
+ RETURNS chip
+ AS 'MODULE_PATHNAME','CHIP_setFactor'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_setFactor(chip,float4)
+ RETURNS chip
+ AS 'MODULE_PATHNAME','CHIP_setFactor'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+------------------------------------------------------------------------
+-- DEBUG
+------------------------------------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION mem_size(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_mem_size'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_mem_size(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_mem_size'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION summary(geometry)
+ RETURNS text
+ AS 'MODULE_PATHNAME', 'LWGEOM_summary'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_summary(geometry)
+ RETURNS text
+ AS 'MODULE_PATHNAME', 'LWGEOM_summary'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION npoints(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_npoints'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_npoints(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_npoints'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION nrings(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_nrings'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_nrings(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_nrings'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+------------------------------------------------------------------------
+-- Misures
+------------------------------------------------------------------------
+
+-- this is a fake (for back-compatibility)
+-- uses 3d if 3d is available, 2d otherwise
+-- Deprecation in 1.2.3
+CREATEFUNCTION length3d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_length_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_length3d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_length_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION length2d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_length2d_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_length2d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_length2d_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+CREATEFUNCTION length(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_length_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: length2d(geometry)
+CREATEFUNCTION ST_Length(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_length2d_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- this is a fake (for back-compatibility)
+-- uses 3d if 3d is available, 2d otherwise
+-- Deprecation in 1.2.3
+CREATEFUNCTION length3d_spheroid(geometry, spheroid)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_length_ellipsoid_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_length3d_spheroid(geometry, spheroid)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_length_ellipsoid_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION length_spheroid(geometry, spheroid)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_length_ellipsoid_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_length_spheroid(geometry, spheroid)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_length_ellipsoid_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION length2d_spheroid(geometry, spheroid)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_length2d_ellipsoid_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_length2d_spheroid(geometry, spheroid)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_length2d_ellipsoid_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- this is a fake (for back-compatibility)
+-- uses 3d if 3d is available, 2d otherwise
+-- Deprecation in 1.2.3
+CREATEFUNCTION perimeter3d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_perimeter_poly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_perimeter3d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_perimeter_poly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION perimeter2d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_perimeter2d_poly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_perimeter2d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_perimeter2d_poly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION perimeter(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_perimeter_poly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: perimeter2d(geometry)
+CREATEFUNCTION ST_Perimeter(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_perimeter2d_poly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- this is an alias for 'area(geometry)'
+-- there is nothing such an 'area3d'...
+-- Deprecation in 1.2.3
+CREATEFUNCTION area2d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_area_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_area2d(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME', 'LWGEOM_area_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION area(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_area_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: area(geometry)
+CREATEFUNCTION ST_Area(geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_area_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION distance_spheroid(geometry,geometry,spheroid)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_distance_ellipsoid_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_distance_spheroid(geometry,geometry,spheroid)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_distance_ellipsoid_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION distance_sphere(geometry,geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_distance_sphere'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_distance_sphere(geometry,geometry)
+ RETURNS FLOAT8
+ AS 'MODULE_PATHNAME','LWGEOM_distance_sphere'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Minimum distance. 2d only.
+-- Deprecation in 1.2.3
+CREATEFUNCTION distance(geometry,geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_mindistance2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: distance(geometry,geometry)
+CREATEFUNCTION ST_Distance(geometry,geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_mindistance2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Maximum distance between linestrings. 2d only. Very bogus.
+-- Deprecation in 1.2.3
+CREATEFUNCTION max_distance(geometry,geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_maxdistance2d_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_max_distance(geometry,geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_maxdistance2d_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION point_inside_circle(geometry,float8,float8,float8)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_inside_circle_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_point_inside_circle(geometry,float8,float8,float8)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_inside_circle_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION azimuth(geometry,geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_azimuth'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_azimuth(geometry,geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_azimuth'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+------------------------------------------------------------------------
+-- MISC
+------------------------------------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION force_2d(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_force_2d(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION force_3dz(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_force_3dz(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- an alias for force_3dz
+-- Deprecation in 1.2.3
+CREATEFUNCTION force_3d(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_force_3d(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION force_3dm(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_3dm'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_force_3dm(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_3dm'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION force_4d(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_4d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_force_4d(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_4d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION force_collection(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_collection'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_force_collection(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_collection'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION multi(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_multi'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_multi(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_force_multi'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION collector(geometry, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_collect'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_collector(geometry, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_collect'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION collect(geometry, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_collect'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_collect(geometry, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_collect'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Deprecation in 1.2.3
+CREATE AGGREGATE memcollect(
+ sfunc = ST_collect,
+ basetype = geometry,
+ stype = geometry
+ );
+
+-- Availability: 1.2.2
+CREATE AGGREGATE ST_memcollect(
+ sfunc = ST_collect,
+ basetype = geometry,
+ stype = geometry
+ );
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geom_accum (geometry[],geometry)
+ RETURNS geometry[]
+ AS 'MODULE_PATHNAME', 'LWGEOM_accum'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geom_accum (geometry[],geometry)
+ RETURNS geometry[]
+ AS 'MODULE_PATHNAME', 'LWGEOM_accum'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Deprecation in 1.2.3
+CREATE AGGREGATE accum (
+ sfunc = ST_geom_accum,
+ basetype = geometry,
+ stype = geometry[]
+ );
+
+-- Availability: 1.2.2
+CREATE AGGREGATE ST_accum (
+ sfunc = ST_geom_accum,
+ basetype = geometry,
+ stype = geometry[]
+ );
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION collect_garray (geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_collect_garray'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_collect_garray (geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_collect_garray'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Deprecation in 1.2.3
+CREATE AGGREGATE collect (
+ sfunc = ST_geom_accum,
+ basetype = geometry,
+ stype = geometry[],
+ finalfunc = ST_collect_garray
+ );
+
+
+-- Availability: 1.2.2
+CREATE AGGREGATE ST_collect (
+ sfunc = ST_geom_accum,
+ basetype = geometry,
+ stype = geometry[],
+ finalfunc = ST_collect_garray
+ );
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION expand(box3d,float8)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME', 'BOX3D_expand'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Expand(box3d,float8)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME', 'BOX3D_expand'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION expand(box2d,float8)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_expand'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_expand(box2d,float8)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_expand'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION expand(geometry,float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_expand'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_expand(geometry,float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_expand'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION envelope(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_envelope'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- PostGIS equivalent function: envelope(geometry)
+CREATEFUNCTION ST_Envelope(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_envelope'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION reverse(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_reverse'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Reverse(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_reverse'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION ForceRHR(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_forceRHR_poly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_ForceRHR(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_forceRHR_poly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION noop(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_noop'
+ LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_noop(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_noop'
+ LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION zmflag(geometry)
+ RETURNS smallint
+ AS 'MODULE_PATHNAME', 'LWGEOM_zmflag'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_zmflag(geometry)
+ RETURNS smallint
+ AS 'MODULE_PATHNAME', 'LWGEOM_zmflag'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION hasBBOX(geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_hasBBOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availabitily: 1.2.2
+CREATEFUNCTION ST_HasBBOX(geometry)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'LWGEOM_hasBBOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION ndims(geometry)
+ RETURNS smallint
+ AS 'MODULE_PATHNAME', 'LWGEOM_ndims'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_NDims(geometry)
+ RETURNS smallint
+ AS 'MODULE_PATHNAME', 'LWGEOM_ndims'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsEWKT(geometry)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asEWKT'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsEWKT(geometry)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asEWKT'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsEWKB(geometry)
+ RETURNS BYTEA
+ AS 'MODULE_PATHNAME','WKBFromLWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsEWKB(geometry)
+ RETURNS BYTEA
+ AS 'MODULE_PATHNAME','WKBFromLWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsHEXEWKB(geometry)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsHEXEWKB(geometry)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsHEXEWKB(geometry, text)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsHEXEWKB(geometry, text)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsEWKB(geometry,text)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','WKBFromLWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsEWKB(geometry,text)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','WKBFromLWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomFromEWKB(bytea)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOMFromWKB'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeomFromEWKB(bytea)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOMFromWKB'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomFromEWKT(text)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeomFromEWKT(text)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION cache_bbox()
+ RETURNS trigger
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C';
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Cache_BBox()
+ RETURNS trigger
+ AS 'MODULE_PATHNAME','cache_bbox'
+ LANGUAGE 'C';
+
+------------------------------------------------------------------------
+-- CONSTRUCTORS
+------------------------------------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MakePoint(float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MakePoint(float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MakePoint(float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MakePoint(float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MakePoint(float8, float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MakePoint(float8, float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MakePointM(float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoint3dm'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION MakePointM(float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoint3dm'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MakeBox2d(geometry, geometry)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_construct'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MakeBox2d(geometry, geometry)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_construct'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MakeBox3d(geometry, geometry)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME', 'BOX3D_construct'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MakeBox3d(geometry, geometry)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME', 'BOX3D_construct'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION makeline_garray (geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makeline_garray'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MakeLine_GArray (geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makeline_garray'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LineFromMultiPoint(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_line_from_mpoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_LineFromMultiPoint(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_line_from_mpoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MakeLine(geometry, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makeline'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MakeLine(geometry, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makeline'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AddPoint(geometry, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_addpoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AddPoint(geometry, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_addpoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AddPoint(geometry, geometry, integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_addpoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AddPoint(geometry, geometry, integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_addpoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION RemovePoint(geometry, integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_removepoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_RemovePoint(geometry, integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_removepoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION SetPoint(geometry, integer, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_setpoint_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_SetPoint(geometry, integer, geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_setpoint_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATE AGGREGATE makeline (
+ sfunc = geom_accum,
+ basetype = geometry,
+ stype = geometry[],
+ finalfunc = makeline_garray
+ );
+
+-- Availability: 1.2.2
+CREATE AGGREGATE ST_MakeLine (
+ sfunc = geom_accum,
+ basetype = geometry,
+ stype = geometry[],
+ finalfunc = ST_makeline_garray
+ );
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MakePolygon(geometry, geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MakePolygon(geometry, geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MakePolygon(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MakePolygon(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoly'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION BuildArea(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_buildarea'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_BuildArea(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_buildarea'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION Polygonize_GArray (geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'polygonize_garray'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Polygonize_GArray (geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'polygonize_garray'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LineMerge(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'linemerge'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_LineMerge(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'linemerge'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Deprecation in 1.2.3
+CREATE AGGREGATE Polygonize (
+ sfunc = geom_accum,
+ basetype = geometry,
+ stype = geometry[],
+ finalfunc = polygonize_garray
+ );
+
+-- Availability: 1.2.2
+CREATE AGGREGATE ST_Polygonize (
+ sfunc = ST_geom_accum,
+ basetype = geometry,
+ stype = geometry[],
+ finalfunc = ST_polygonize_garray
+ );
+
+#if POSTGIS_PGSQL_VERSION > 72
+
+CREATE TYPE geometry_dump AS (path integer[], geom geometry);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION Dump(geometry)
+ RETURNS SETOF geometry_dump
+ AS 'MODULE_PATHNAME', 'LWGEOM_dump'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Dump(geometry)
+ RETURNS SETOF geometry_dump
+ AS 'MODULE_PATHNAME', 'LWGEOM_dump'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION DumpRings(geometry)
+ RETURNS SETOF geometry_dump
+ AS 'MODULE_PATHNAME', 'LWGEOM_dump_rings'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_DumpRings(geometry)
+ RETURNS SETOF geometry_dump
+ AS 'MODULE_PATHNAME', 'LWGEOM_dump_rings'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+#endif
+
+------------------------------------------------------------------------
+
+--
+-- Aggregate functions
+--
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION combine_bbox(box2d,geometry)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_combine'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Combine_BBox(box2d,geometry)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME', 'BOX2DFLOAT4_combine'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Deprecation in 1.2.3
+CREATE AGGREGATE Extent(
+ sfunc = ST_combine_bbox,
+ basetype = geometry,
+ stype = box2d
+ );
+
+-- Availability: 1.2.2
+CREATE AGGREGATE ST_Extent(
+ sfunc = ST_combine_bbox,
+ basetype = geometry,
+ stype = box2d
+ );
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION combine_bbox(box3d,geometry)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME', 'BOX3D_combine'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Combine_BBox(box3d,geometry)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME', 'BOX3D_combine'
+ LANGUAGE 'C' _IMMUTABLE;
+
+-- Deprecation in 1.2.3
+CREATE AGGREGATE Extent3d(
+ sfunc = combine_bbox,
+ basetype = geometry,
+ stype = box3d
+ );
+
+-- Availability: 1.2.2
+CREATE AGGREGATE ST_Extent3d(
+ sfunc = ST_combine_bbox,
+ basetype = geometry,
+ stype = box3d
+ );
+
+-----------------------------------------------------------------------
+-- CREATE_HISTOGRAM2D( <box2d>, <size> )
+-----------------------------------------------------------------------
+--
+-- Returns a histgram with 0s in all the boxes.
+--
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION create_histogram2d(box2d,int)
+ RETURNS histogram2d
+ AS 'MODULE_PATHNAME','create_lwhistogram2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_create_histogram2d(box2d,int)
+ RETURNS histogram2d
+ AS 'MODULE_PATHNAME','create_lwhistogram2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- BUILD_HISTOGRAM2D( <histogram2d>, <tablename>, <columnname> )
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION build_histogram2d (histogram2d,text,text)
+ RETURNS histogram2d
+ AS 'MODULE_PATHNAME','build_lwhistogram2d'
+ LANGUAGE 'C' _STABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_build_histogram2d (histogram2d,text,text)
+ RETURNS histogram2d
+ AS 'MODULE_PATHNAME','build_lwhistogram2d'
+ LANGUAGE 'C' _STABLE_STRICT; -- WITH (isstrict);
+
+#if POSTGIS_PGSQL_VERSION >= 73
+-----------------------------------------------------------------------
+-- BUILD_HISTOGRAM2D(<histogram2d>,<schema>,<tablename>,<columnname>)
+-----------------------------------------------------------------------
+-- This is a wrapper to the omonimous schema unaware function,
+-- thanks to Carl Anderson for the idea.
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION build_histogram2d (histogram2d,text,text,text)
+RETURNS histogram2d
+AS '
+BEGIN
+ EXECUTE ''SET local search_path = ''||$2||'',public'';
+ RETURN public.build_histogram2d($1,$3,$4);
+END
+'
+LANGUAGE 'plpgsql' _STABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_build_histogram2d (histogram2d,text,text,text)
+RETURNS histogram2d
+AS '
+BEGIN
+ EXECUTE ''SET local search_path = ''||$2||'',public'';
+ RETURN public.build_histogram2d($1,$3,$4);
+END
+'
+LANGUAGE 'plpgsql' _STABLE_STRICT; -- WITH (isstrict);
+
+#endif
+
+-----------------------------------------------------------------------
+-- EXPLODE_HISTOGRAM2D( <histogram2d>, <tablename> )
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION explode_histogram2d (histogram2d,text)
+ RETURNS histogram2d
+ AS 'MODULE_PATHNAME','explode_lwhistogram2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_explode_histogram2d (histogram2d,text)
+ RETURNS histogram2d
+ AS 'MODULE_PATHNAME','explode_lwhistogram2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- ESTIMATE_HISTOGRAM2D( <histogram2d>, <box> )
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION estimate_histogram2d(histogram2d,box2d)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','estimate_lwhistogram2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_estimate_histogram2d(histogram2d,box2d)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','estimate_lwhistogram2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- ESTIMATED_EXTENT( <schema name>, <table name>, <column name> )
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION estimated_extent(text,text,text) RETURNS box2d AS
+ 'MODULE_PATHNAME', 'LWGEOM_estimated_extent'
+ LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_estimated_extent(text,text,text) RETURNS box2d AS
+ 'MODULE_PATHNAME', 'LWGEOM_estimated_extent'
+ LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
+
+-----------------------------------------------------------------------
+-- ESTIMATED_EXTENT( <table name>, <column name> )
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION estimated_extent(text,text) RETURNS box2d AS
+ 'MODULE_PATHNAME', 'LWGEOM_estimated_extent'
+ LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_estimated_extent(text,text) RETURNS box2d AS
+ 'MODULE_PATHNAME', 'LWGEOM_estimated_extent'
+ LANGUAGE 'C' _IMMUTABLE_STRICT _SECURITY_DEFINER;
+
+-----------------------------------------------------------------------
+-- FIND_EXTENT( <schema name>, <table name>, <column name> )
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION find_extent(text,text,text) RETURNS box2d AS
+'
+DECLARE
+ schemaname alias for $1;
+ tablename alias for $2;
+ columnname alias for $3;
+ myrec RECORD;
+
+BEGIN
+ FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||schemaname||''"."''||tablename||''"'' LOOP
+ return myrec.extent;
+ END LOOP;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_find_extent(text,text,text) RETURNS box2d AS
+'
+DECLARE
+ schemaname alias for $1;
+ tablename alias for $2;
+ columnname alias for $3;
+ myrec RECORD;
+
+BEGIN
+ FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||schemaname||''"."''||tablename||''"'' LOOP
+ return myrec.extent;
+ END LOOP;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+
+-----------------------------------------------------------------------
+-- FIND_EXTENT( <table name>, <column name> )
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION find_extent(text,text) RETURNS box2d AS
+'
+DECLARE
+ tablename alias for $1;
+ columnname alias for $2;
+ myrec RECORD;
+
+BEGIN
+ FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||tablename||''"'' LOOP
+ return myrec.extent;
+ END LOOP;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_find_extent(text,text) RETURNS box2d AS
+'
+DECLARE
+ tablename alias for $1;
+ columnname alias for $2;
+ myrec RECORD;
+
+BEGIN
+ FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||tablename||''"'' LOOP
+ return myrec.extent;
+ END LOOP;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-------------------------------------------------------------------
+-- SPATIAL_REF_SYS
+-------------------------------------------------------------------
+CREATE TABLE spatial_ref_sys (
+ srid integer not null primary key,
+ auth_name varchar(256),
+ auth_srid integer,
+ srtext varchar(2048),
+ proj4text varchar(2048)
+);
+
+-------------------------------------------------------------------
+-- GEOMETRY_COLUMNS
+-------------------------------------------------------------------
+CREATE TABLE geometry_columns (
+ f_table_catalog varchar(256) not null,
+ f_table_schema varchar(256) not null,
+ f_table_name varchar(256) not null,
+ f_geometry_column varchar(256) not null,
+ coord_dimension integer not null,
+ srid integer not null,
+ type varchar(30) not null,
+#if POSTGIS_PGSQL_VERSION < 80
+ attrelid oid,
+ varattnum int,
+ stats histogram2d,
+#endif
+ CONSTRAINT geometry_columns_pk primary key (
+ f_table_catalog,
+ f_table_schema,
+ f_table_name,
+ f_geometry_column )
+) WITH OIDS;
+
+-----------------------------------------------------------------------
+-- RENAME_GEOMETRY_TABLE_CONSTRAINTS()
+-----------------------------------------------------------------------
+-- This function has been obsoleted for the difficulty in
+-- finding attribute on which the constraint is applied.
+-- AddGeometryColumn will name the constraints in a meaningful
+-- way, but nobody can rely on it since old postgis versions did
+-- not do that.
+-----------------------------------------------------------------------
+CREATEFUNCTION rename_geometry_table_constraints() RETURNS text
+AS
+'
+SELECT ''rename_geometry_table_constraint() is obsoleted''::text
+'
+LANGUAGE 'SQL' _IMMUTABLE;
+
+-----------------------------------------------------------------------
+-- FIX_GEOMETRY_COLUMNS()
+-----------------------------------------------------------------------
+-- This function will:
+--
+-- o try to fix the schema of records with an invalid one
+-- (for PG>=73)
+--
+-- o link records to system tables through attrelid and varattnum
+-- (for PG<75)
+--
+-- o delete all records for which no linking was possible
+-- (for PG<75)
+--
+--
+-----------------------------------------------------------------------
+CREATEFUNCTION fix_geometry_columns() RETURNS text
+AS
+'
+DECLARE
+ mislinked record;
+ result text;
+ linked integer;
+ deleted integer;
+#if POSTGIS_PGSQL_VERSION >= 73
+ foundschema integer;
+#endif
+BEGIN
+
+#if POSTGIS_PGSQL_VERSION >= 73
+ -- Since 7.3 schema support has been added.
+ -- Previous postgis versions used to put the database name in
+ -- the schema column. This needs to be fixed, so we try to
+ -- set the correct schema for each geometry_colums record
+ -- looking at table, column, type and srid.
+ UPDATE geometry_columns SET f_table_schema = n.nspname
+ FROM pg_namespace n, pg_class c, pg_attribute a,
+ pg_constraint sridcheck, pg_constraint typecheck
+ WHERE ( f_table_schema is NULL
+ OR f_table_schema = ''''
+ OR f_table_schema NOT IN (
+ SELECT nspname::varchar
+ FROM pg_namespace nn, pg_class cc, pg_attribute aa
+ WHERE cc.relnamespace = nn.oid
+ AND cc.relname = f_table_name::name
+ AND aa.attrelid = cc.oid
+ AND aa.attname = f_geometry_column::name))
+ AND f_table_name::name = c.relname
+ AND c.oid = a.attrelid
+ AND c.relnamespace = n.oid
+ AND f_geometry_column::name = a.attname
+
+ AND sridcheck.conrelid = c.oid
+ AND sridcheck.consrc LIKE ''(srid(% = %)''
+ AND sridcheck.consrc ~ textcat('' = '', srid::text)
+
+ AND typecheck.conrelid = c.oid
+ AND typecheck.consrc LIKE
+ ''((geometrytype(%) = ''''%''''::text) OR (% IS NULL))''
+ AND typecheck.consrc ~ textcat('' = '''''', type::text)
+
+ AND NOT EXISTS (
+ SELECT oid FROM geometry_columns gc
+ WHERE c.relname::varchar = gc.f_table_name
+ AND n.nspname::varchar = gc.f_table_schema
+ AND a.attname::varchar = gc.f_geometry_column
+ );
+
+ GET DIAGNOSTICS foundschema = ROW_COUNT;
+#endif
+
+#if POSTGIS_PGSQL_VERSION >= 80
+ -- no linkage to system table needed
+ return ''fixed:''||foundschema::text;
+#endif
+
+ -- fix linking to system tables
+ SELECT 0 INTO linked;
+ FOR mislinked in
+ SELECT gc.oid as gcrec,
+ a.attrelid as attrelid, a.attnum as attnum
+ FROM geometry_columns gc, pg_class c,
+#if POSTGIS_PGSQL_VERSION >= 73
+ pg_namespace n, pg_attribute a
+#else
+ pg_attribute a
+#endif
+ WHERE ( gc.attrelid IS NULL OR gc.attrelid != a.attrelid
+ OR gc.varattnum IS NULL OR gc.varattnum != a.attnum)
+#if POSTGIS_PGSQL_VERSION >= 73
+ AND n.nspname = gc.f_table_schema::name
+ AND c.relnamespace = n.oid
+#endif
+ AND c.relname = gc.f_table_name::name
+ AND a.attname = f_geometry_column::name
+ AND a.attrelid = c.oid
+ LOOP
+ UPDATE geometry_columns SET
+ attrelid = mislinked.attrelid,
+ varattnum = mislinked.attnum,
+ stats = NULL
+ WHERE geometry_columns.oid = mislinked.gcrec;
+ SELECT linked+1 INTO linked;
+ END LOOP;
+
+ -- remove stale records
+ DELETE FROM geometry_columns WHERE attrelid IS NULL;
+
+ GET DIAGNOSTICS deleted = ROW_COUNT;
+
+ result =
+#if POSTGIS_PGSQL_VERSION >= 73
+ ''fixed:'' || foundschema::text ||
+#endif
+ '' linked:'' || linked::text ||
+ '' deleted:'' || deleted::text;
+
+ return result;
+
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE;
+
+-----------------------------------------------------------------------
+-- PROBE_GEOMETRY_COLUMNS()
+-----------------------------------------------------------------------
+-- Fill the geometry_columns table with values probed from the system
+-- catalogues. 3d flag cannot be probed, it defaults to 2
+--
+-- Note that bogus records already in geometry_columns are not
+-- overridden (a check for schema.table.column is performed), so
+-- to have a fresh probe backup your geometry_column, delete from
+-- it and probe.
+-----------------------------------------------------------------------
+CREATEFUNCTION probe_geometry_columns() RETURNS text AS
+'
+DECLARE
+ inserted integer;
+ oldcount integer;
+ probed integer;
+ stale integer;
+BEGIN
+
+ SELECT count(*) INTO oldcount FROM geometry_columns;
+
+ SELECT count(*) INTO probed
+ FROM pg_class c, pg_attribute a, pg_type t,
+#if POSTGIS_PGSQL_VERSION >= 73
+ pg_namespace n,
+ pg_constraint sridcheck, pg_constraint typecheck
+#else
+ pg_relcheck sridcheck, pg_relcheck typecheck
+#endif
+
+ WHERE t.typname = ''geometry''
+ AND a.atttypid = t.oid
+ AND a.attrelid = c.oid
+#if POSTGIS_PGSQL_VERSION >= 73
+ AND c.relnamespace = n.oid
+ AND sridcheck.connamespace = n.oid
+ AND typecheck.connamespace = n.oid
+#endif
+
+#if POSTGIS_PGSQL_VERSION >= 73
+ AND sridcheck.conrelid = c.oid
+ AND sridcheck.consrc LIKE ''(srid(''||a.attname||'') = %)''
+ AND typecheck.conrelid = c.oid
+ AND typecheck.consrc LIKE
+ ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
+#else
+ AND sridcheck.rcrelid = c.oid
+ AND sridcheck.rcsrc LIKE ''(srid(''||a.attname||'') = %)''
+ AND typecheck.rcrelid = c.oid
+ AND typecheck.rcsrc LIKE
+ ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
+#endif
+ ;
+
+ INSERT INTO geometry_columns SELECT
+ ''''::varchar as f_table_catalogue,
+#if POSTGIS_PGSQL_VERSION >= 73
+ n.nspname::varchar as f_table_schema,
+#else
+ ''''::varchar as f_table_schema,
+#endif
+ c.relname::varchar as f_table_name,
+ a.attname::varchar as f_geometry_column,
+ 2 as coord_dimension,
+#if POSTGIS_PGSQL_VERSION >= 73
+ trim(both '' =)'' from substr(sridcheck.consrc,
+ strpos(sridcheck.consrc, ''='')))::integer as srid,
+ trim(both '' =)'''''' from substr(typecheck.consrc,
+ strpos(typecheck.consrc, ''=''),
+ strpos(typecheck.consrc, ''::'')-
+ strpos(typecheck.consrc, ''='')
+ ))::varchar as type
+#else
+ trim(both '' =)'' from substr(sridcheck.rcsrc,
+ strpos(sridcheck.rcsrc, ''='')))::integer as srid,
+ trim(both '' =)'''''' from substr(typecheck.rcsrc,
+ strpos(typecheck.rcsrc, ''=''),
+ strpos(typecheck.rcsrc, ''::'')-
+ strpos(typecheck.rcsrc, ''='')
+ ))::varchar as type
+#endif
+
+#if POSTGIS_PGSQL_VERSION < 80
+ , a.attrelid,
+ a.attnum as varattnum,
+ null::histogram2d as stats
+#endif
+ FROM pg_class c, pg_attribute a, pg_type t,
+#if POSTGIS_PGSQL_VERSION >= 73
+ pg_namespace n,
+ pg_constraint sridcheck, pg_constraint typecheck
+#else
+ pg_relcheck sridcheck, pg_relcheck typecheck
+#endif
+ WHERE t.typname = ''geometry''
+ AND a.atttypid = t.oid
+ AND a.attrelid = c.oid
+#if POSTGIS_PGSQL_VERSION >= 73
+ AND c.relnamespace = n.oid
+ AND sridcheck.connamespace = n.oid
+ AND typecheck.connamespace = n.oid
+ AND sridcheck.conrelid = c.oid
+ AND sridcheck.consrc LIKE ''(srid(''||a.attname||'') = %)''
+ AND typecheck.conrelid = c.oid
+ AND typecheck.consrc LIKE
+ ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
+#else
+ AND sridcheck.rcrelid = c.oid
+ AND sridcheck.rcsrc LIKE ''(srid(''||a.attname||'') = %)''
+ AND typecheck.rcrelid = c.oid
+ AND typecheck.rcsrc LIKE
+ ''((geometrytype(''||a.attname||'') = ''''%''''::text) OR (% IS NULL))''
+#endif
+
+ AND NOT EXISTS (
+ SELECT oid FROM geometry_columns gc
+ WHERE c.relname::varchar = gc.f_table_name
+#if POSTGIS_PGSQL_VERSION >= 73
+ AND n.nspname::varchar = gc.f_table_schema
+#endif
+ AND a.attname::varchar = gc.f_geometry_column
+ );
+
+ GET DIAGNOSTICS inserted = ROW_COUNT;
+
+ IF oldcount > probed THEN
+ stale = oldcount-probed;
+ ELSE
+ stale = 0;
+ END IF;
+
+ RETURN ''probed:''||probed::text||
+ '' inserted:''||inserted::text||
+ '' conflicts:''||(probed-inserted)::text||
+ '' stale:''||stale::text;
+END
+
+'
+LANGUAGE 'plpgsql' _VOLATILE;
+
+-----------------------------------------------------------------------
+-- ADDGEOMETRYCOLUMN
+-- <catalogue>, <schema>, <table>, <column>, <srid>, <type>, <dim>
+-----------------------------------------------------------------------
+--
+-- Type can be one of geometry, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON,
+-- MULTIPOLYGON, LINESTRING, or MULTILINESTRING.
+--
+-- Types (except geometry) are checked for consistency using a CHECK constraint
+-- uses SQL ALTER TABLE command to add the geometry column to the table.
+-- Addes a row to geometry_columns.
+-- Addes a constraint on the table that all the geometries MUST have the same
+-- SRID. Checks the coord_dimension to make sure its between 0 and 3.
+-- Should also check the precision grid (future expansion).
+-- Calls fix_geometry_columns() at the end.
+--
+-----------------------------------------------------------------------
+CREATEFUNCTION AddGeometryColumn(varchar,varchar,varchar,varchar,integer,varchar,integer)
+ RETURNS text
+ AS
+'
+DECLARE
+ catalog_name alias for $1;
+ schema_name alias for $2;
+ table_name alias for $3;
+ column_name alias for $4;
+ new_srid alias for $5;
+ new_type alias for $6;
+ new_dim alias for $7;
+#if POSTGIS_PGSQL_VERSION >= 73
+ rec RECORD;
+ schema_ok bool;
+ real_schema name;
+#endif
+
+BEGIN
+
+ IF ( not ( (new_type =''GEOMETRY'') or
+ (new_type =''GEOMETRYCOLLECTION'') or
+ (new_type =''POINT'') or
+ (new_type =''MULTIPOINT'') or
+ (new_type =''POLYGON'') or
+ (new_type =''MULTIPOLYGON'') or
+ (new_type =''LINESTRING'') or
+ (new_type =''MULTILINESTRING'') or
+ (new_type =''GEOMETRYCOLLECTIONM'') or
+ (new_type =''POINTM'') or
+ (new_type =''MULTIPOINTM'') or
+ (new_type =''POLYGONM'') or
+ (new_type =''MULTIPOLYGONM'') or
+ (new_type =''LINESTRINGM'') or
+ (new_type =''MULTILINESTRINGM'') or
+ (new_type = ''CIRCULARSTRING'') or
+ (new_type = ''CIRCULARSTRINGM'') or
+ (new_type = ''COMPOUNDCURVE'') or
+ (new_type = ''COMPOUNDCURVEM'') or
+ (new_type = ''CURVEPOLYGON'') or
+ (new_type = ''CURVEPOLYGONM'') or
+ (new_type = ''MULTICURVE'') or
+ (new_type = ''MULTICURVEM'') or
+ (new_type = ''MULTISURFACE'') or
+ (new_type = ''MULTISURFACEM'')) )
+ THEN
+ RAISE EXCEPTION ''Invalid type name - valid ones are:
+ GEOMETRY, GEOMETRYCOLLECTION, POINT,
+ MULTIPOINT, POLYGON, MULTIPOLYGON,
+ LINESTRING, MULTILINESTRING,
+ CIRCULARSTRING, COMPOUNDCURVE,
+ CURVEPOLYGON, MULTICURVE, MULTISURFACE,
+ GEOMETRYCOLLECTIONM, POINTM,
+ MULTIPOINTM, POLYGONM, MULTIPOLYGONM,
+ LINESTRINGM, MULTILINESTRINGM
+ CIRCULARSTRINGM, COMPOUNDCURVEM,
+ CURVEPOLYGONM, MULTICURVEM or MULTISURFACEM'';
+ return ''fail'';
+ END IF;
+
+ IF ( (new_dim >4) or (new_dim <0) ) THEN
+ RAISE EXCEPTION ''invalid dimension'';
+ return ''fail'';
+ END IF;
+
+ IF ( (new_type LIKE ''%M'') and (new_dim!=3) ) THEN
+
+ RAISE EXCEPTION ''TypeM needs 3 dimensions'';
+ return ''fail'';
+ END IF;
+
+#if POSTGIS_PGSQL_VERSION >= 73
+ IF ( schema_name != '''' ) THEN
+ schema_ok = ''f'';
+ FOR rec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
+ schema_ok := ''t'';
+ END LOOP;
+
+ if ( schema_ok <> ''t'' ) THEN
+ RAISE NOTICE ''Invalid schema name - using current_schema()'';
+ SELECT current_schema() into real_schema;
+ ELSE
+ real_schema = schema_name;
+ END IF;
+
+ ELSE
+ SELECT current_schema() into real_schema;
+ END IF;
+#endif
+
+
+ -- Add geometry column
+
+ EXECUTE ''ALTER TABLE '' ||
+#if POSTGIS_PGSQL_VERSION >= 73
+ quote_ident(real_schema) || ''.'' || quote_ident(table_name)
+#else
+ quote_ident(table_name)
+#endif
+ || '' ADD COLUMN '' || quote_ident(column_name) ||
+ '' geometry '';
+
+
+ -- Delete stale record in geometry_column (if any)
+
+ EXECUTE ''DELETE FROM geometry_columns WHERE
+ f_table_catalog = '' || quote_literal('''') ||
+ '' AND f_table_schema = '' ||
+#if POSTGIS_PGSQL_VERSION >= 73
+ quote_literal(real_schema) ||
+#else
+ quote_literal('''') ||
+#endif
+ '' AND f_table_name = '' || quote_literal(table_name) ||
+ '' AND f_geometry_column = '' || quote_literal(column_name);
+
+
+ -- Add record in geometry_column
+
+ EXECUTE ''INSERT INTO geometry_columns VALUES ('' ||
+ quote_literal('''') || '','' ||
+#if POSTGIS_PGSQL_VERSION >= 73
+ quote_literal(real_schema) || '','' ||
+#else
+ quote_literal('''') || '','' ||
+#endif
+ quote_literal(table_name) || '','' ||
+ quote_literal(column_name) || '','' ||
+ new_dim::text || '','' || new_srid::text || '','' ||
+ quote_literal(new_type) || '')'';
+
+ -- Add table checks
+
+ EXECUTE ''ALTER TABLE '' ||
+#if POSTGIS_PGSQL_VERSION >= 73
+ quote_ident(real_schema) || ''.'' || quote_ident(table_name)
+#else
+ quote_ident(table_name)
+#endif
+ || '' ADD CONSTRAINT ''
+ || quote_ident(''enforce_srid_'' || column_name)
+ || '' CHECK (SRID('' || quote_ident(column_name) ||
+ '') = '' || new_srid::text || '')'' ;
+
+ EXECUTE ''ALTER TABLE '' ||
+#if POSTGIS_PGSQL_VERSION >= 73
+ quote_ident(real_schema) || ''.'' || quote_ident(table_name)
+#else
+ quote_ident(table_name)
+#endif
+ || '' ADD CONSTRAINT ''
+ || quote_ident(''enforce_dims_'' || column_name)
+ || '' CHECK (ndims('' || quote_ident(column_name) ||
+ '') = '' || new_dim::text || '')'' ;
+
+ IF (not(new_type = ''GEOMETRY'')) THEN
+ EXECUTE ''ALTER TABLE '' ||
+#if POSTGIS_PGSQL_VERSION >= 73
+ quote_ident(real_schema) || ''.'' || quote_ident(table_name)
+#else
+ quote_ident(table_name)
+#endif
+ || '' ADD CONSTRAINT ''
+ || quote_ident(''enforce_geotype_'' || column_name)
+ || '' CHECK (geometrytype('' ||
+ quote_ident(column_name) || '')='' ||
+ quote_literal(new_type) || '' OR ('' ||
+ quote_ident(column_name) || '') is null)'';
+ END IF;
+
+ return
+#if POSTGIS_PGSQL_VERSION >= 73
+ real_schema || ''.'' ||
+#endif
+ table_name || ''.'' || column_name ||
+ '' SRID:'' || new_srid::text ||
+ '' TYPE:'' || new_type ||
+ '' DIMS:'' || new_dim::text || chr(10) || '' '';
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+----------------------------------------------------------------------------
+-- ADDGEOMETRYCOLUMN ( <schema>, <table>, <column>, <srid>, <type>, <dim> )
+----------------------------------------------------------------------------
+--
+-- This is a wrapper to the real AddGeometryColumn, for use
+-- when catalogue is undefined
+--
+----------------------------------------------------------------------------
+CREATEFUNCTION AddGeometryColumn(varchar,varchar,varchar,integer,varchar,integer) RETURNS text AS '
+DECLARE
+ ret text;
+BEGIN
+ SELECT AddGeometryColumn('''',$1,$2,$3,$4,$5,$6) into ret;
+ RETURN ret;
+END;
+'
+LANGUAGE 'plpgsql' _STABLE_STRICT; -- WITH (isstrict);
+
+----------------------------------------------------------------------------
+-- ADDGEOMETRYCOLUMN ( <table>, <column>, <srid>, <type>, <dim> )
+----------------------------------------------------------------------------
+--
+-- This is a wrapper to the real AddGeometryColumn, for use
+-- when catalogue and schema are undefined
+--
+----------------------------------------------------------------------------
+CREATEFUNCTION AddGeometryColumn(varchar,varchar,integer,varchar,integer) RETURNS text AS '
+DECLARE
+ ret text;
+BEGIN
+ SELECT AddGeometryColumn('''','''',$1,$2,$3,$4,$5) into ret;
+ RETURN ret;
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- DROPGEOMETRYCOLUMN
+-- <catalogue>, <schema>, <table>, <column>
+-----------------------------------------------------------------------
+--
+-- Removes geometry column reference from geometry_columns table.
+-- Drops the column with pgsql >= 73.
+-- Make some silly enforcements on it for pgsql < 73
+--
+-----------------------------------------------------------------------
+CREATEFUNCTION DropGeometryColumn(varchar, varchar,varchar,varchar)
+ RETURNS text
+ AS
+'
+DECLARE
+ catalog_name alias for $1;
+ schema_name alias for $2;
+ table_name alias for $3;
+ column_name alias for $4;
+ myrec RECORD;
+ okay boolean;
+ real_schema name;
+
+BEGIN
+
+
+#if POSTGIS_PGSQL_VERSION >= 73
+ -- Find, check or fix schema_name
+ IF ( schema_name != '''' ) THEN
+ okay = ''f'';
+
+ FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
+ okay := ''t'';
+ END LOOP;
+
+ IF ( okay <> ''t'' ) THEN
+ RAISE NOTICE ''Invalid schema name - using current_schema()'';
+ SELECT current_schema() into real_schema;
+ ELSE
+ real_schema = schema_name;
+ END IF;
+ ELSE
+ SELECT current_schema() into real_schema;
+ END IF;
+#else
+ real_schema = schema_name;
+#endif
+
+ -- Find out if the column is in the geometry_columns table
+ okay = ''f'';
+ FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
+ okay := ''t'';
+ END LOOP;
+ IF (okay <> ''t'') THEN
+ RAISE EXCEPTION ''column not found in geometry_columns table'';
+ RETURN ''f'';
+ END IF;
+
+ -- Remove ref from geometry_columns table
+ EXECUTE ''delete from geometry_columns where f_table_schema = '' ||
+ quote_literal(real_schema) || '' and f_table_name = '' ||
+ quote_literal(table_name) || '' and f_geometry_column = '' ||
+ quote_literal(column_name);
+
+#if POSTGIS_PGSQL_VERSION < 73
+ -- Remove not-null constraint to table column
+ EXECUTE ''update pg_attribute set attnotnull = false from pg_class where pg_attribute.attrelid = pg_class.oid and pg_class.relname = '' || quote_literal(table_name) ||'' and pg_attribute.attname = '' || quote_literal(column_name);
+ -- update the given table/column so that it it all NULLS
+ EXECUTE ''update "''||table_name||''" set "''||column_name||''"= NULL'';
+ -- add = NULL constraint to given table/column
+ EXECUTE ''ALTER TABLE "''||table_name||''" ADD CHECK ("''||column_name||''" IS NULL)'';
+#else
+ -- Remove table column
+ EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) || ''.'' ||
+ quote_ident(table_name) || '' DROP COLUMN '' ||
+ quote_ident(column_name);
+#endif
+
+
+ RETURN real_schema || ''.'' || table_name || ''.'' || column_name ||'' effectively removed.'';
+
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- DROPGEOMETRYCOLUMN
+-- <schema>, <table>, <column>
+-----------------------------------------------------------------------
+--
+-- This is a wrapper to the real DropGeometryColumn, for use
+-- when catalogue is undefined
+--
+-----------------------------------------------------------------------
+CREATEFUNCTION DropGeometryColumn(varchar,varchar,varchar)
+ RETURNS text
+ AS
+'
+DECLARE
+ ret text;
+BEGIN
+ SELECT DropGeometryColumn('''',$1,$2,$3) into ret;
+ RETURN ret;
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- DROPGEOMETRYCOLUMN
+-- <table>, <column>
+-----------------------------------------------------------------------
+--
+-- This is a wrapper to the real DropGeometryColumn, for use
+-- when catalogue and schema is undefined.
+--
+-----------------------------------------------------------------------
+CREATEFUNCTION DropGeometryColumn(varchar,varchar)
+ RETURNS text
+ AS
+'
+DECLARE
+ ret text;
+BEGIN
+ SELECT DropGeometryColumn('''','''',$1,$2) into ret;
+ RETURN ret;
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- DROPGEOMETRYTABLE
+-- <catalogue>, <schema>, <table>
+-----------------------------------------------------------------------
+--
+-- Drop a table and all its references in geometry_columns
+--
+-----------------------------------------------------------------------
+CREATEFUNCTION DropGeometryTable(varchar, varchar,varchar)
+ RETURNS text
+ AS
+'
+DECLARE
+ catalog_name alias for $1;
+ schema_name alias for $2;
+ table_name alias for $3;
+ real_schema name;
+
+BEGIN
+
+#if POSTGIS_PGSQL_VERSION >= 73
+ IF ( schema_name = '''' ) THEN
+ SELECT current_schema() into real_schema;
+ ELSE
+ real_schema = schema_name;
+ END IF;
+#endif
+
+ -- Remove refs from geometry_columns table
+ EXECUTE ''DELETE FROM geometry_columns WHERE '' ||
+#if POSTGIS_PGSQL_VERSION >= 73
+ ''f_table_schema = '' || quote_literal(real_schema) ||
+ '' AND '' ||
+#endif
+ '' f_table_name = '' || quote_literal(table_name);
+
+ -- Remove table
+ EXECUTE ''DROP TABLE ''
+#if POSTGIS_PGSQL_VERSION >= 73
+ || quote_ident(real_schema) || ''.'' ||
+#endif
+ quote_ident(table_name);
+
+ RETURN
+#if POSTGIS_PGSQL_VERSION >= 73
+ real_schema || ''.'' ||
+#endif
+ table_name ||'' dropped.'';
+
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- DROPGEOMETRYTABLE
+-- <schema>, <table>
+-----------------------------------------------------------------------
+--
+-- Drop a table and all its references in geometry_columns
+--
+-----------------------------------------------------------------------
+CREATEFUNCTION DropGeometryTable(varchar,varchar) RETURNS text AS
+'SELECT DropGeometryTable('''',$1,$2)'
+LANGUAGE 'sql' WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- DROPGEOMETRYTABLE
+-- <table>
+-----------------------------------------------------------------------
+--
+-- Drop a table and all its references in geometry_columns
+-- For PG>=73 use current_schema()
+--
+-----------------------------------------------------------------------
+CREATEFUNCTION DropGeometryTable(varchar) RETURNS text AS
+'SELECT DropGeometryTable('''','''',$1)'
+LANGUAGE 'sql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- UPDATEGEOMETRYSRID
+-- <catalogue>, <schema>, <table>, <column>, <srid>
+-----------------------------------------------------------------------
+--
+-- Change SRID of all features in a spatially-enabled table
+--
+-----------------------------------------------------------------------
+CREATEFUNCTION UpdateGeometrySRID(varchar,varchar,varchar,varchar,integer)
+ RETURNS text
+ AS
+'
+DECLARE
+ catalog_name alias for $1;
+ schema_name alias for $2;
+ table_name alias for $3;
+ column_name alias for $4;
+ new_srid alias for $5;
+ myrec RECORD;
+ okay boolean;
+ cname varchar;
+ real_schema name;
+
+BEGIN
+
+
+#if POSTGIS_PGSQL_VERSION >= 73
+ -- Find, check or fix schema_name
+ IF ( schema_name != '''' ) THEN
+ okay = ''f'';
+
+ FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
+ okay := ''t'';
+ END LOOP;
+
+ IF ( okay <> ''t'' ) THEN
+ RAISE EXCEPTION ''Invalid schema name'';
+ ELSE
+ real_schema = schema_name;
+ END IF;
+ ELSE
+ SELECT INTO real_schema current_schema()::text;
+ END IF;
+#endif
+
+ -- Find out if the column is in the geometry_columns table
+ okay = ''f'';
+ FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
+ okay := ''t'';
+ END LOOP;
+ IF (okay <> ''t'') THEN
+ RAISE EXCEPTION ''column not found in geometry_columns table'';
+ RETURN ''f'';
+ END IF;
+
+ -- Update ref from geometry_columns table
+ EXECUTE ''UPDATE geometry_columns SET SRID = '' || new_srid::text ||
+ '' where f_table_schema = '' ||
+ quote_literal(real_schema) || '' and f_table_name = '' ||
+ quote_literal(table_name) || '' and f_geometry_column = '' ||
+ quote_literal(column_name);
+
+ -- Make up constraint name
+ cname = ''enforce_srid_'' || column_name;
+
+ -- Drop enforce_srid constraint
+#if POSTGIS_PGSQL_VERSION < 73
+ EXECUTE ''ALTER TABLE '' || quote_ident(table_name) ||
+#else
+ EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) ||
+ ''.'' || quote_ident(table_name) ||
+#endif
+ '' DROP constraint '' || quote_ident(cname);
+
+ -- Update geometries SRID
+#if POSTGIS_PGSQL_VERSION < 73
+ EXECUTE ''UPDATE '' || quote_ident(table_name) ||
+#else
+ EXECUTE ''UPDATE '' || quote_ident(real_schema) ||
+ ''.'' || quote_ident(table_name) ||
+#endif
+ '' SET '' || quote_ident(column_name) ||
+ '' = setSRID('' || quote_ident(column_name) ||
+ '', '' || new_srid::text || '')'';
+
+ -- Reset enforce_srid constraint
+#if POSTGIS_PGSQL_VERSION < 73
+ EXECUTE ''ALTER TABLE '' || quote_ident(table_name) ||
+#else
+ EXECUTE ''ALTER TABLE '' || quote_ident(real_schema) ||
+ ''.'' || quote_ident(table_name) ||
+#endif
+ '' ADD constraint '' || quote_ident(cname) ||
+ '' CHECK (srid('' || quote_ident(column_name) ||
+ '') = '' || new_srid::text || '')'';
+
+ RETURN real_schema || ''.'' || table_name || ''.'' || column_name ||'' SRID changed to '' || new_srid::text;
+
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- UPDATEGEOMETRYSRID
+-- <schema>, <table>, <column>, <srid>
+-----------------------------------------------------------------------
+CREATEFUNCTION UpdateGeometrySRID(varchar,varchar,varchar,integer)
+ RETURNS text
+ AS '
+DECLARE
+ ret text;
+BEGIN
+ SELECT UpdateGeometrySRID('''',$1,$2,$3,$4) into ret;
+ RETURN ret;
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- UPDATEGEOMETRYSRID
+-- <table>, <column>, <srid>
+-----------------------------------------------------------------------
+CREATEFUNCTION UpdateGeometrySRID(varchar,varchar,integer)
+ RETURNS text
+ AS '
+DECLARE
+ ret text;
+BEGIN
+ SELECT UpdateGeometrySRID('''','''',$1,$2,$3) into ret;
+ RETURN ret;
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT; -- WITH (isstrict);
+
+-----------------------------------------------------------------------
+-- UPDATE_GEOMETRY_STATS()
+-----------------------------------------------------------------------
+--
+-- Only meaningful for PG<75.
+-- Gather statisticts about geometry columns for use
+-- with cost estimator.
+--
+-- It is defined also for PG>=75 for back-compatibility
+--
+-----------------------------------------------------------------------
+#if POSTGIS_PGSQL_VERSION >= 80
+CREATEFUNCTION update_geometry_stats() RETURNS text
+AS ' SELECT ''update_geometry_stats() has been obsoleted. Statistics are automatically built running the ANALYZE command''::text' LANGUAGE 'sql';
+#else
+CREATEFUNCTION update_geometry_stats()
+RETURNS text
+AS
+'
+DECLARE
+ result text;
+ stated integer;
+BEGIN
+
+ UPDATE geometry_columns SET
+#if POSTGIS_PGSQL_VERSION >= 73
+ stats = (build_histogram2d(create_histogram2d(
+ find_extent(f_table_schema, f_table_name, f_geometry_column), 40), f_table_schema, f_table_name, f_geometry_column))
+ FROM pg_class c, pg_attribute a, pg_namespace n
+ WHERE n.nspname = f_table_schema::name
+ AND c.relname = f_table_name::name
+ AND c.relnamespace = n.oid
+#else
+ stats = (build_histogram2d(create_histogram2d(
+ find_extent(f_table_name, f_geometry_column),
+ 40), f_table_name, f_geometry_column))
+ FROM pg_class c, pg_attribute a
+ WHERE c.relname = f_table_name::name
+#endif
+ AND a.attname = f_geometry_column::name
+ AND a.attrelid = c.oid
+ AND geometry_columns.attrelid is not null;
+
+ GET DIAGNOSTICS stated = ROW_COUNT;
+
+ result = ''stats:'' || stated::text;
+
+ return result;
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT;
+#endif
+
+-----------------------------------------------------------------------
+-- UPDATE_GEOMETRY_STATS( <table>, <column> )
+-----------------------------------------------------------------------
+--
+-- Only meaningful for PG<75.
+-- Gather statisticts about a geometry column for use
+-- with cost estimator.
+--
+-- It is defined also for PG>=75 for back-compatibility
+--
+-----------------------------------------------------------------------
+#if POSTGIS_PGSQL_VERSION >= 80
+CREATEFUNCTION update_geometry_stats(varchar,varchar) RETURNS text
+AS 'SELECT update_geometry_stats();' LANGUAGE 'sql' ;
+#else
+CREATEFUNCTION update_geometry_stats(varchar,varchar) RETURNS text
+AS
+'
+DECLARE
+ tablename aliAS for $1;
+ columnname aliAS for $2;
+ stated integer;
+ result text;
+BEGIN
+
+ EXECUTE ''UPDATE geometry_columns SET
+#if POSTGIS_PGSQL_VERSION >= 73
+ stats = (build_histogram2d(create_histogram2d(
+ find_extent(f_table_schema,
+ f_table_name,
+ f_geometry_column), 40),
+ f_table_schema, f_table_name,
+ f_geometry_column))
+ FROM pg_class c, pg_attribute a, pg_namespace n
+ WHERE n.nspname = f_table_schema::name
+ AND c.relname = f_table_name::name
+ AND a.attname = f_geometry_column::name
+ AND c.relnamespace = n.oid
+ AND a.attrelid = c.oid
+#else
+ stats = (build_histogram2d(create_histogram2d(
+ find_extent(f_table_name, f_geometry_column),
+ 40), f_table_name, f_geometry_column))
+ FROM pg_class c, pg_attribute a
+ WHERE c.relname = f_table_name::name
+ AND a.attname = f_geometry_column::name
+ AND a.attrelid = c.oid
+#endif
+ AND f_table_name = '' || quote_literal(tablename) || ''
+ AND f_geometry_column = '' || quote_literal(columnname)
+ || '' AND geometry_columns.attrelid is not null'';
+
+ GET DIAGNOSTICS stated = ROW_COUNT;
+
+ result = ''stats:'' || stated::text;
+
+ return result;
+END;
+'
+LANGUAGE 'plpgsql' _VOLATILE_STRICT;
+
+#endif
+
+-----------------------------------------------------------------------
+-- FIND_SRID( <schema>, <table>, <geom col> )
+-----------------------------------------------------------------------
+CREATEFUNCTION find_srid(varchar,varchar,varchar) RETURNS int4 AS
+'DECLARE
+ schem text;
+ tabl text;
+ sr int4;
+BEGIN
+ IF $1 IS NULL THEN
+ RAISE EXCEPTION ''find_srid() - schema is NULL!'';
+ END IF;
+ IF $2 IS NULL THEN
+ RAISE EXCEPTION ''find_srid() - table name is NULL!'';
+ END IF;
+ IF $3 IS NULL THEN
+ RAISE EXCEPTION ''find_srid() - column name is NULL!'';
+ END IF;
+ schem = $1;
+ tabl = $2;
+-- if the table contains a . and the schema is empty
+-- split the table into a schema and a table
+-- otherwise drop through to default behavior
+ IF ( schem = '''' and tabl LIKE ''%.%'' ) THEN
+ schem = substr(tabl,1,strpos(tabl,''.'')-1);
+ tabl = substr(tabl,length(schem)+2);
+ ELSE
+ schem = schem || ''%'';
+ END IF;
+
+ select SRID into sr from geometry_columns where f_table_schema like schem and f_table_name = tabl and f_geometry_column = $3;
+ IF NOT FOUND THEN
+ RAISE EXCEPTION ''find_srid() - couldnt find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase missmatch?'';
+ END IF;
+ return sr;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (iscachable);
+
+
+---------------------------------------------------------------
+-- PROJ support
+---------------------------------------------------------------
+
+CREATEFUNCTION get_proj4_from_srid(integer) RETURNS text AS
+'
+BEGIN
+ RETURN proj4text::text FROM spatial_ref_sys WHERE srid= $1;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
+
+
+
+CREATEFUNCTION transform_geometry(geometry,text,text,int)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','transform_geom'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+CREATEFUNCTION transform(geometry,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','transform'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: transform(geometry,integer)
+CREATEFUNCTION ST_Transform(geometry,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','transform'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+
+-----------------------------------------------------------------------
+-- POSTGIS_VERSION()
+-----------------------------------------------------------------------
+
+CREATEFUNCTION postgis_version() RETURNS text
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE;
+
+CREATEFUNCTION postgis_proj_version() RETURNS text
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE;
+
+--
+-- IMPORTANT:
+-- Starting at 1.1.0 this function is used by postgis_proc_upgrade.pl
+-- to extract version of postgis being installed.
+-- Do not modify this w/out also changing postgis_proc_upgrade.pl
+--
+CREATEFUNCTION postgis_scripts_installed() RETURNS text
+ AS _POSTGIS_SQL_SELECT_POSTGIS_VERSION
+ LANGUAGE 'sql' _IMMUTABLE;
+
+CREATEFUNCTION postgis_lib_version() RETURNS text
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE; -- a new lib will require a new session
+
+-- NOTE: starting at 1.1.0 this is the same of postgis_lib_version()
+CREATEFUNCTION postgis_scripts_released() RETURNS text
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE;
+
+CREATEFUNCTION postgis_uses_stats() RETURNS bool
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE;
+
+CREATEFUNCTION postgis_geos_version() RETURNS text
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE;
+
+CREATEFUNCTION postgis_jts_version() RETURNS text
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE;
+
+CREATEFUNCTION postgis_scripts_build_date() RETURNS text
+ AS _POSTGIS_SQL_SELECT_POSTGIS_BUILD_DATE
+ LANGUAGE 'sql' _IMMUTABLE;
+
+CREATEFUNCTION postgis_lib_build_date() RETURNS text
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE;
+
+
+
+CREATEFUNCTION postgis_full_version() RETURNS text
+AS '
+DECLARE
+ libver text;
+ projver text;
+ geosver text;
+ jtsver text;
+ usestats bool;
+ dbproc text;
+ relproc text;
+ fullver text;
+BEGIN
+ SELECT postgis_lib_version() INTO libver;
+ SELECT postgis_proj_version() INTO projver;
+ SELECT postgis_geos_version() INTO geosver;
+ SELECT postgis_jts_version() INTO jtsver;
+ SELECT postgis_uses_stats() INTO usestats;
+ SELECT postgis_scripts_installed() INTO dbproc;
+ SELECT postgis_scripts_released() INTO relproc;
+
+ fullver = ''POSTGIS="'' || libver || ''"'';
+
+ IF geosver IS NOT NULL THEN
+ fullver = fullver || '' GEOS="'' || geosver || ''"'';
+ END IF;
+
+ IF jtsver IS NOT NULL THEN
+ fullver = fullver || '' JTS="'' || jtsver || ''"'';
+ END IF;
+
+ IF projver IS NOT NULL THEN
+ fullver = fullver || '' PROJ="'' || projver || ''"'';
+ END IF;
+
+ IF usestats THEN
+ fullver = fullver || '' USE_STATS'';
+ END IF;
+
+ -- fullver = fullver || '' DBPROC="'' || dbproc || ''"'';
+ -- fullver = fullver || '' RELPROC="'' || relproc || ''"'';
+
+ IF dbproc != relproc THEN
+ fullver = fullver || '' (procs from '' || dbproc || '' need upgrade)'';
+ END IF;
+
+ RETURN fullver;
+END
+'
+LANGUAGE 'plpgsql' _IMMUTABLE;
+
+---------------------------------------------------------------
+-- CASTS
+---------------------------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d(geometry)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DFLOAT4'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d(geometry)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DFLOAT4'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box3d(geometry)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME','LWGEOM_to_BOX3D'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box3d(geometry)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME','LWGEOM_to_BOX3D'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box(geometry)
+ RETURNS box
+ AS 'MODULE_PATHNAME','LWGEOM_to_BOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box(geometry)
+ RETURNS box
+ AS 'MODULE_PATHNAME','LWGEOM_to_BOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box2d(box3d)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME','BOX3D_to_BOX2DFLOAT4'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box2d(box3d)
+ RETURNS box2d
+ AS 'MODULE_PATHNAME','BOX3D_to_BOX2DFLOAT4'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box3d(box2d)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_BOX3D'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box3d(box2d)
+ RETURNS box3d
+ AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_BOX3D'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION box(box3d)
+ RETURNS box
+ AS 'MODULE_PATHNAME','BOX3D_to_BOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_box(box3d)
+ RETURNS box
+ AS 'MODULE_PATHNAME','BOX3D_to_BOX'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION text(geometry)
+ RETURNS text
+ AS 'MODULE_PATHNAME','LWGEOM_to_text'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_text(geometry)
+ RETURNS text
+ AS 'MODULE_PATHNAME','LWGEOM_to_text'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- this is kept for backward-compatibility
+-- Deprecation in 1.2.3
+CREATEFUNCTION box3dtobox(box3d)
+ RETURNS box
+ AS 'SELECT box($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry(box2d)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_LWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry(box2d)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','BOX2DFLOAT4_to_LWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry(box3d)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','BOX3D_to_LWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry(box3d)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','BOX3D_to_LWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry(text)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry(text)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry(chip)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','CHIP_to_LWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry(chip)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','CHIP_to_LWGEOM'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION geometry(bytea)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_from_bytea'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_geometry(bytea)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_from_bytea'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION bytea(geometry)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','LWGEOM_to_bytea'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_bytea(geometry)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','LWGEOM_to_bytea'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION text(bool)
+ RETURNS text
+ AS 'MODULE_PATHNAME','BOOL_to_text'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_text(bool)
+ RETURNS text
+ AS 'MODULE_PATHNAME','BOOL_to_text'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- 7.3+ explicit casting definitions
+#if POSTGIS_PGSQL_VERSION >= 73
+CREATE CAST (geometry AS box2d) WITH FUNCTION ST_box2d(geometry) AS IMPLICIT;
+CREATE CAST (geometry AS box3d) WITH FUNCTION ST_box3d(geometry) AS IMPLICIT;
+CREATE CAST (geometry AS box) WITH FUNCTION ST_box(geometry) AS IMPLICIT;
+CREATE CAST (box3d AS box2d) WITH FUNCTION ST_box2d(box3d) AS IMPLICIT;
+CREATE CAST (box2d AS box3d) WITH FUNCTION ST_box3d(box2d) AS IMPLICIT;
+CREATE CAST (box2d AS geometry) WITH FUNCTION ST_geometry(box2d) AS IMPLICIT;
+CREATE CAST (box3d AS box) WITH FUNCTION ST_box(box3d) AS IMPLICIT;
+CREATE CAST (box3d AS geometry) WITH FUNCTION ST_geometry(box3d) AS IMPLICIT;
+CREATE CAST (text AS geometry) WITH FUNCTION ST_geometry(text) AS IMPLICIT;
+CREATE CAST (geometry AS text) WITH FUNCTION ST_text(geometry) AS IMPLICIT;
+CREATE CAST (chip AS geometry) WITH FUNCTION ST_geometry(chip) AS IMPLICIT;
+CREATE CAST (bytea AS geometry) WITH FUNCTION ST_geometry(bytea) AS IMPLICIT;
+CREATE CAST (geometry AS bytea) WITH FUNCTION ST_bytea(geometry) AS IMPLICIT;
+-- CREATE CAST (bool AS text) WITH FUNCTION ST_text(bool) AS IMPLICIT;
+#endif
+
+---------------------------------------------------------------
+-- Algorithms
+---------------------------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION Simplify(geometry, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_simplify2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Simplify(geometry, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_simplify2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- SnapToGrid(input, xoff, yoff, xsize, ysize)
+-- Deprecation in 1.2.3
+CREATEFUNCTION SnapToGrid(geometry, float8, float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_SnapToGrid(geometry, float8, float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- SnapToGrid(input, xsize, ysize) # offsets=0
+-- Deprecation in 1.2.3
+CREATEFUNCTION SnapToGrid(geometry, float8, float8)
+ RETURNS geometry
+ AS 'SELECT SnapToGrid($1, 0, 0, $2, $3)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_SnapToGrid(geometry, float8, float8)
+ RETURNS geometry
+ AS 'SELECT SnapToGrid($1, 0, 0, $2, $3)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- SnapToGrid(input, size) # xsize=ysize=size, offsets=0
+-- Deprecation in 1.2.3
+CREATEFUNCTION SnapToGrid(geometry, float8)
+ RETURNS geometry
+ AS 'SELECT SnapToGrid($1, 0, 0, $2, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_SnapToGrid(geometry, float8)
+ RETURNS geometry
+ AS 'SELECT SnapToGrid($1, 0, 0, $2, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- SnapToGrid(input, point_offsets, xsize, ysize, zsize, msize)
+-- Deprecation in 1.2.3
+CREATEFUNCTION SnapToGrid(geometry, geometry, float8, float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid_pointoff'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_SnapToGrid(geometry, geometry, float8, float8, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid_pointoff'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION Segmentize(geometry, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_segmentize2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Segmentize(geometry, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_segmentize2d'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+---------------------------------------------------------------
+-- LRS
+---------------------------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION line_interpolate_point(geometry, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_line_interpolate_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_line_interpolate_point(geometry, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_line_interpolate_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION line_substring(geometry, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_line_substring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_line_substring(geometry, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_line_substring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION line_locate_point(geometry, geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_line_locate_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_line_locate_point(geometry, geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME', 'LWGEOM_line_locate_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION locate_between_measures(geometry, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_locate_between_m'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_locate_between_measures(geometry, float8, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_locate_between_m'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION locate_along_measure(geometry, float8)
+ RETURNS geometry
+ AS 'SELECT locate_between_measures($1, $2, $2)'
+ LANGUAGE 'sql' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_locate_along_measure(geometry, float8)
+ RETURNS geometry
+ AS 'SELECT locate_between_measures($1, $2, $2)'
+ LANGUAGE 'sql' _IMMUTABLE_STRICT;
+
+---------------------------------------------------------------
+-- GEOS
+---------------------------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION intersection(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','intersection'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: intersection(geometry,geometry)
+CREATEFUNCTION ST_Intersection(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','intersection'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION buffer(geometry,float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','buffer'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: buffer(geometry,float8)
+CREATEFUNCTION ST_Buffer(geometry,float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','buffer'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION buffer(geometry,float8,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','buffer'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_buffer(geometry,float8,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','buffer'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION convexhull(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','convexhull'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: convexhull(geometry)
+CREATEFUNCTION ST_ConvexHull(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','convexhull'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+#if POSTGIS_GEOS_VERSION >= 30
+-- Requires GEOS >= 3.0.0
+-- Availability: 1.3.3
+CREATEFUNCTION ST_SimplifyPreserveTopology(geometry, float8)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','topologypreservesimplify'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+#endif
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION difference(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','difference'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: difference(geometry,geometry)
+CREATEFUNCTION ST_Difference(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','difference'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION boundary(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','boundary'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: boundary(geometry)
+CREATEFUNCTION ST_Boundary(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','boundary'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION symdifference(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','symdifference'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: symdifference(geometry,geometry)
+CREATEFUNCTION ST_SymDifference(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','symdifference'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION symmetricdifference(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','symdifference'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_symmetricdifference(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','symdifference'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomUnion(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','geomunion'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: GeomUnion(geometry,geometry)
+CREATEFUNCTION ST_Union(geometry,geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','geomunion'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATE AGGREGATE MemGeomUnion (
+ basetype = geometry,
+ sfunc = geomunion,
+ stype = geometry
+ );
+
+-- Availability: 1.2.2
+CREATE AGGREGATE ST_MemUnion (
+ basetype = geometry,
+ sfunc = ST_union,
+ stype = geometry
+ );
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION unite_garray (geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_unite_garray (geometry[])
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','unite_garray'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATE AGGREGATE GeomUnion (
+ sfunc = geom_accum,
+ basetype = geometry,
+ stype = geometry[],
+ finalfunc = ST_unite_garray
+ );
+
+-- Availability: 1.2.2
+CREATE AGGREGATE ST_Union (
+ sfunc = ST_geom_accum,
+ basetype = geometry,
+ stype = geometry[],
+ finalfunc = ST_unite_garray
+ );
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION relate(geometry,geometry)
+ RETURNS text
+ AS 'MODULE_PATHNAME','relate_full'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_relate(geometry,geometry)
+ RETURNS text
+ AS 'MODULE_PATHNAME','relate_full'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION relate(geometry,geometry,text)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','relate_pattern'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: relate(geometry,geometry,text)
+CREATEFUNCTION ST_Relate(geometry,geometry,text)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','relate_pattern'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION disjoint(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: disjoint(geometry,geometry)
+CREATEFUNCTION ST_Disjoint(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','disjoint'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION touches(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: touches(geometry,geometry)
+CREATEFUNCTION _ST_Touches(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','touches'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+-- Inlines index magic
+CREATEFUNCTION ST_Touches(geometry,geometry)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_Touches($1,$2)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_DWithin(geometry, geometry, float8)
+ RETURNS boolean
+ AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND ST_Distance($1, $2) < $3'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION intersects(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: intersects(geometry,geometry)
+CREATEFUNCTION _ST_Intersects(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','intersects'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+-- Inlines index magic
+CREATEFUNCTION ST_Intersects(geometry,geometry)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_Intersects($1,$2)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+-- Deprecation in 1.2.3
+CREATEFUNCTION crosses(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: crosses(geometry,geometry)
+CREATEFUNCTION _ST_Crosses(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','crosses'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+-- Inlines index magic
+CREATEFUNCTION ST_Crosses(geometry,geometry)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_Crosses($1,$2)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION within(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: within(geometry,geometry)
+CREATEFUNCTION _ST_Within(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','within'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+-- Inlines index magic
+CREATEFUNCTION ST_Within(geometry,geometry)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_Within($1,$2)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION Contains(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: contains(geometry,geometry)
+CREATEFUNCTION _ST_Contains(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','contains'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+-- Inlines index magic
+CREATEFUNCTION ST_Contains(geometry,geometry)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_Contains($1,$2)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+#if POSTGIS_GEOS_VERSION >= 30
+-- Availability: 1.2.2
+CREATEFUNCTION _ST_CoveredBy(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'coveredby'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_CoveredBy(geometry,geometry)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_CoveredBy($1,$2)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH(iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION _ST_Covers(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'covers'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+-- Inlines index magic
+CREATEFUNCTION ST_Covers(geometry,geometry)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_Covers($1,$2)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+#endif
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION overlaps(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: overlaps(geometry,geometry)
+CREATEFUNCTION _ST_Overlaps(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','overlaps'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+-- Inlines index magic
+CREATEFUNCTION ST_Overlaps(geometry,geometry)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_Overlaps($1,$2)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION IsValid(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'isvalid'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: IsValid(geometry)
+-- TODO: change null returns to true
+CREATEFUNCTION ST_IsValid(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'isvalid'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GEOSnoop(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'GEOSnoop'
+ LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION JTSnoop(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'JTSnoop'
+ LANGUAGE 'C' _VOLATILE_STRICT; -- WITH (isstrict,iscachable);
+
+-- This is also available w/out GEOS
+CREATEFUNCTION Centroid(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: Centroid(geometry)
+CREATEFUNCTION ST_Centroid(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'centroid'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION IsRing(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: IsRing(geometry)
+CREATEFUNCTION ST_IsRing(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'isring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PointOnSurface(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: PointOnSurface(geometry)
+CREATEFUNCTION ST_PointOnSurface(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'pointonsurface'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION IsSimple(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'issimple'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: IsSimple(geometry)
+CREATEFUNCTION ST_IsSimple(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'issimple'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION Equals(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','geomequals'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: Equals(geometry,geometry)
+CREATEFUNCTION ST_Equals(geometry,geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','geomequals'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-----------------------------------------------------------------------
+-- Prepared Geometry Predicates
+-- requires GEOS 3.1.0-CAPI-1.5.0 or better
+-----------------------------------------------------------------------
+
+#if POSTGIS_GEOS_VERSION >= 31
+
+-- Availability: 1.4.0
+CREATEFUNCTION _ST_ContainsPrepared(geometry,geometry,integer)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','containsPrepared'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.4.0
+-- Inlines index magic
+CREATEFUNCTION ST_Contains(geometry,geometry,integer)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_ContainsPrepared($1,$2,$3)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+-- Availability: 1.4.0
+CREATEFUNCTION _ST_ContainsProperlyPrepared(geometry,geometry,integer)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','containsProperlyPrepared'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.4.0
+-- Inlines index magic
+CREATEFUNCTION ST_ContainsProperly(geometry,geometry,integer)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_ContainsProperlyPrepared($1,$2,$3)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+-- Availability: 1.4.0
+-- Added for completeness, and to make testing ST_ContainsProperlyPrepared easier
+CREATE OR REPLACE FUNCTION ST_ContainsProperly(geometry,geometry)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND ST_relate($1,$2,''T**FF*FF*'')'
+ LANGUAGE 'SQL' IMMUTABLE;
+
+-- Availability: 1.4.0
+CREATEFUNCTION _ST_CoversPrepared(geometry,geometry,integer)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','coversPrepared'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.4.0
+-- Inlines index magic
+CREATEFUNCTION ST_Covers(geometry,geometry,integer)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_CoversPrepared($1,$2,$3)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+-- Availability: 1.4.0
+CREATEFUNCTION _ST_IntersectsPrepared(geometry,geometry,integer)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME','intersectsPrepared'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.4.0
+-- Inlines index magic
+CREATEFUNCTION ST_Intersects(geometry,geometry,integer)
+ RETURNS boolean
+ AS 'SELECT $1 && $2 AND _ST_IntersectsPrepared($1,$2,$3)'
+ LANGUAGE 'SQL' _IMMUTABLE; -- WITH (iscachable);
+
+#endif
+
+-----------------------------------------------------------------------
+-- SVG OUTPUT
+-----------------------------------------------------------------------
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsSVG(geometry,int4,int4)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','assvg_geometry'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsSVG(geometry,int4,int4)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','assvg_geometry'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsSVG(geometry,int4)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','assvg_geometry'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsSVG(geometry,int4)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','assvg_geometry'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsSVG(geometry)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','assvg_geometry'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsSVG(geometry)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','assvg_geometry'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-----------------------------------------------------------------------
+-- GML OUTPUT
+-----------------------------------------------------------------------
+-- _ST_AsGML(version, geom, precision)
+CREATEFUNCTION _ST_AsGML(int4, geometry, int4)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asGML'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- AsGML(geom, precision) / version=2
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsGML(geometry, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGML(2, $1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsGML(geometry, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGML(2, $1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- AsGML(geom) / precision=15 version=2
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsGML(geometry)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGML(2, $1, 15)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availabiltiy: 1.2.2
+CREATEFUNCTION ST_AsGML(geometry)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGML(2, $1, 15)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsGML(version, geom) / precision=15 version=2
+-- Availabiltiy: 1.3.2
+CREATEFUNCTION ST_AsGML(int4, geometry)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGML($1, $2, 15)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsGML(version, geom, precision)
+-- Availabiltiy: 1.3.2
+CREATEFUNCTION ST_AsGML(int4, geometry, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGML($1, $2, $3)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-----------------------------------------------------------------------
+-- KML OUTPUT
+-----------------------------------------------------------------------
+-- _ST_AsKML(version, geom, precision)
+CREATEFUNCTION _ST_AsKML(int4, geometry, int4)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asKML'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- AsKML(geom, precision) / version=2
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsKML(geometry, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsKML(2, transform($1,4326), $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsKML(geometry, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsKML(2, transform($1,4326), $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- AsKML(geom) / precision=15 version=2
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsKML(geometry)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsKML(2, transform($1,4326), 15)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- AsKML(version, geom, precision)
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsKML(int4, geometry, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsKML($1, transform($2,4326), $3)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availabiltiy: 1.2.2
+CREATEFUNCTION ST_AsKML(geometry)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsKML(2, transform($1,4326), 15)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsKML(version, geom) / precision=15 version=2
+-- Availabiltiy: 1.3.2
+CREATEFUNCTION ST_AsKML(int4, geometry)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsKML($1, transform($2,4326), 15)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsKML(version, geom, precision)
+-- Availabiltiy: 1.3.2
+CREATEFUNCTION ST_AsKML(int4, geometry, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsKML($1, transform($2,4326), $3)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-----------------------------------------------------------------------
+-- GEOJSON OUTPUT
+-- Availabiltiy: 1.3.4
+-----------------------------------------------------------------------
+-- _ST_AsGeoJson(version, geom, precision, options)
+CREATEFUNCTION _ST_AsGeoJson(int4, geometry, int4, int4)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asGeoJson'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsGeoJson(geom, precision) / version=1 options=0
+CREATEFUNCTION ST_AsGeoJson(geometry, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGeoJson(1, $1, $2, 0)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsGeoJson(geom) / precision=15 version=1 options=0
+CREATEFUNCTION ST_AsGeoJson(geometry)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGeoJson(1, $1, 15, 0)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsGeoJson(version, geom) / precision=15 options=0
+CREATEFUNCTION ST_AsGeoJson(int4, geometry)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGeoJson($1, $2, 15, 0)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsGeoJson(version, geom, precision) / options=0
+CREATEFUNCTION ST_AsGeoJson(int4, geometry, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGeoJson($1, $2, $3, 0)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsGeoJson(geom, precision, options) / version=1
+CREATEFUNCTION ST_AsGeoJson(geometry, int4, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGeoJson(1, $1, $2, $3)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- ST_AsGeoJson(version, geom, precision,options)
+CREATEFUNCTION ST_AsGeoJson(int4, geometry, int4, int4)
+ RETURNS TEXT
+ AS 'SELECT _ST_AsGeoJson($1, $2, $3, $4)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+
+------------------------------------------------------------------------
+-- OGC defined
+------------------------------------------------------------------------
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION NumPoints(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_numpoints_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: NumPoints(geometry)
+CREATEFUNCTION ST_NumPoints(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_numpoints_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION NumGeometries(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_numgeometries_collection'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: NumGeometries(geometry)
+CREATEFUNCTION ST_NumGeometries(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_numgeometries_collection'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeometryN(geometry,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_geometryn_collection'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: GeometryN(geometry)
+CREATEFUNCTION ST_GeometryN(geometry,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_geometryn_collection'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION Dimension(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_dimension'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: Dimension(geometry)
+CREATEFUNCTION ST_Dimension(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME', 'LWGEOM_dimension'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION ExteriorRing(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_exteriorring_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: ExteriorRing(geometry)
+CREATEFUNCTION ST_ExteriorRing(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_exteriorring_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION NumInteriorRings(geometry)
+ RETURNS integer
+ AS 'MODULE_PATHNAME','LWGEOM_numinteriorrings_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: NumInteriorRings(geometry)
+CREATEFUNCTION ST_NumInteriorRings(geometry)
+ RETURNS integer
+ AS 'MODULE_PATHNAME','LWGEOM_numinteriorrings_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION NumInteriorRing(geometry)
+ RETURNS integer
+ AS 'MODULE_PATHNAME','LWGEOM_numinteriorrings_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_NumInteriorRing(geometry)
+ RETURNS integer
+ AS 'MODULE_PATHNAME','LWGEOM_numinteriorrings_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION InteriorRingN(geometry,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_interiorringn_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: InteriorRingN(geometry)
+CREATEFUNCTION ST_InteriorRingN(geometry,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_interiorringn_polygon'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeometryType(geometry)
+ RETURNS text
+ AS 'MODULE_PATHNAME', 'LWGEOM_getTYPE'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Not quite equivalent to GeometryType
+CREATEFUNCTION ST_GeometryType(geometry)
+ RETURNS text
+ AS '
+ DECLARE
+ gtype text := geometrytype($1);
+ BEGIN
+ IF (gtype IN (''POINT'', ''POINTM'')) THEN
+ gtype := ''Point'';
+ ELSIF (gtype IN (''LINESTRING'', ''LINESTRINGM'')) THEN
+ gtype := ''LineString'';
+ ELSIF (gtype IN (''POLYGON'', ''POLYGONM'')) THEN
+ gtype := ''Polygon'';
+ ELSIF (gtype IN (''MULTIPOINT'', ''MULTIPOINTM'')) THEN
+ gtype := ''MultiPoint'';
+ ELSIF (gtype IN (''MULTILINESTRING'', ''MULTILINESTRINGM'')) THEN
+ gtype := ''MultiLineString'';
+ ELSIF (gtype IN (''MULTIPOLYGON'', ''MULTIPOLYGONM'')) THEN
+ gtype := ''MultiPolygon'';
+ ELSE
+ gtype := ''Geometry'';
+ END IF;
+ RETURN ''ST_'' || gtype;
+ END
+ '
+ LANGUAGE 'plpgsql' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PointN(geometry,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_pointn_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: PointN(geometry,integer)
+CREATEFUNCTION ST_PointN(geometry,integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_pointn_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION X(geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','LWGEOM_x_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: X(geometry)
+CREATEFUNCTION ST_X(geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','LWGEOM_x_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION Y(geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','LWGEOM_y_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: Y(geometry)
+CREATEFUNCTION ST_Y(geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','LWGEOM_y_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION Z(geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','LWGEOM_z_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: Z(geometry)
+CREATEFUNCTION SE_Z(geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','LWGEOM_z_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_Z(geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','LWGEOM_z_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION M(geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','LWGEOM_m_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_M(geometry)
+ RETURNS float8
+ AS 'MODULE_PATHNAME','LWGEOM_m_point'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION StartPoint(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_startpoint_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: StartPoint(geometry))
+CREATEFUNCTION ST_StartPoint(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_startpoint_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION EndPoint(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_endpoint_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: EndPoint(geometry))
+CREATEFUNCTION ST_EndPoint(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_endpoint_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION IsClosed(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'LWGEOM_isclosed_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: IsClosed(geometry)
+CREATEFUNCTION ST_IsClosed(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'LWGEOM_isclosed_linestring'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION IsEmpty(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'LWGEOM_isempty'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- PostGIS equivalent function: IsEmpty(geometry)
+CREATEFUNCTION ST_IsEmpty(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'LWGEOM_isempty'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION SRID(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','LWGEOM_getSRID'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: getSRID(geometry)
+CREATEFUNCTION ST_SRID(geometry)
+ RETURNS int4
+ AS 'MODULE_PATHNAME','LWGEOM_getSRID'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION SetSRID(geometry,int4)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_setSRID'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_SetSRID(geometry,int4)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_setSRID'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsBinary(geometry)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','LWGEOM_asBinary'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: AsBinary(geometry)
+CREATEFUNCTION ST_AsBinary(geometry)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','LWGEOM_asBinary'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsBinary(geometry,text)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','LWGEOM_asBinary'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_AsBinary(geometry,text)
+ RETURNS bytea
+ AS 'MODULE_PATHNAME','LWGEOM_asBinary'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION AsText(geometry)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asText'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: AsText(geometry)
+CREATEFUNCTION ST_AsText(geometry)
+ RETURNS TEXT
+ AS 'MODULE_PATHNAME','LWGEOM_asText'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeometryFromText(text)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_from_text'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeometryFromText(text)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_from_text'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeometryFromText(text, int4)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_from_text'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeometryFromText(text, int4)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_from_text'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomFromText(text)
+ RETURNS geometry AS 'SELECT geometryfromtext($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeomFromText(text)
+ RETURNS geometry AS 'SELECT geometryfromtext($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomFromText(text, int4)
+ RETURNS geometry AS 'SELECT geometryfromtext($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: GeometryFromText(text, int4)
+CREATEFUNCTION ST_GeomFromText(text, int4)
+ RETURNS geometry AS 'SELECT geometryfromtext($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PointFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POINT''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_PointFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POINT''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PointFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POINT''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: PointFromText(text, int4)
+-- TODO: improve this ... by not duplicating constructor time.
+CREATEFUNCTION ST_PointFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POINT''
+ THEN GeomFromText($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LineFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''LINESTRING''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_LineFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''LINESTRING''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LineFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''LINESTRING''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: LineFromText(text, int4)
+CREATEFUNCTION ST_LineFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''LINESTRING''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LineStringFromText(text)
+ RETURNS geometry
+ AS 'SELECT LineFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LineStringFromText(text, int4)
+ RETURNS geometry
+ AS 'SELECT LineFromText($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PolyFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POLYGON''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_PolyFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''POLYGON''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PolyFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POLYGON''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: PolyFromText(text, int4)
+CREATEFUNCTION ST_PolyFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''POLYGON''
+ THEN GeomFromText($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PolygonFromText(text, int4)
+ RETURNS geometry
+ AS 'SELECT PolyFromText($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_PolygonFromText(text, int4)
+ RETURNS geometry
+ AS 'SELECT PolyFromText($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PolygonFromText(text)
+ RETURNS geometry
+ AS 'SELECT PolyFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_PolygonFromText(text)
+ RETURNS geometry
+ AS 'SELECT PolyFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MLineFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1, $2)) = ''MULTILINESTRING''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: MLineFromText(text, int4)
+CREATEFUNCTION ST_MLineFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1, $2)) = ''MULTILINESTRING''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MLineFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTILINESTRING''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MLineFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTILINESTRING''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiLineStringFromText(text)
+ RETURNS geometry
+ AS 'SELECT MLineFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiLineStringFromText(text)
+ RETURNS geometry
+ AS 'SELECT MLineFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiLineStringFromText(text, int4)
+ RETURNS geometry
+ AS 'SELECT MLineFromText($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiLineStringFromText(text, int4)
+ RETURNS geometry
+ AS 'SELECT MLineFromText($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MPointFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1,$2)) = ''MULTIPOINT''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: MPointFromText(text, int4)
+CREATEFUNCTION ST_MPointFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOINT''
+ THEN GeomFromText($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MPointFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOINT''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MPointFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOINT''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiPointFromText(text, int4)
+ RETURNS geometry
+ AS 'SELECT MPointFromText($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiPointFromText(text)
+ RETURNS geometry
+ AS 'SELECT MPointFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiPointFromText(text)
+ RETURNS geometry
+ AS 'SELECT MPointFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiPointFromText(text)
+ RETURNS geometry
+ AS 'SELECT MPointFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiPointFromText(text)
+ RETURNS geometry
+ AS 'SELECT MPointFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MPolyFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOLYGON''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: MPolyFromText(text, int4)
+CREATEFUNCTION ST_MPolyFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = ''MULTIPOLYGON''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MPolyFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOLYGON''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+--Availability: 1.2.2
+CREATEFUNCTION ST_MPolyFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = ''MULTIPOLYGON''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiPolygonFromText(text, int4)
+ RETURNS geometry
+ AS 'SELECT MPolyFromText($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiPolygonFromText(text, int4)
+ RETURNS geometry
+ AS 'SELECT MPolyFromText($1, $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiPolygonFromText(text)
+ RETURNS geometry
+ AS 'SELECT MPolyFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiPolygonFromText(text)
+ RETURNS geometry
+ AS 'SELECT MPolyFromText($1)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomCollFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeomCollFromText(text, int4)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomCollFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1)) = ''GEOMETRYCOLLECTION''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeomCollFromText(text)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1)) = ''GEOMETRYCOLLECTION''
+ THEN GeomFromText($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomFromWKB(bytea)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_from_WKB'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeomFromWKB(bytea)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME','LWGEOM_from_WKB'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomFromWKB(bytea, int)
+ RETURNS geometry
+ AS 'SELECT setSRID(GeomFromWKB($1), $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: GeomFromWKB(bytea, int)
+CREATEFUNCTION ST_GeomFromWKB(bytea, int)
+ RETURNS geometry
+ AS 'SELECT setSRID(GeomFromWKB($1), $2)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PointFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POINT''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: PointFromWKB(bytea, int)
+CREATEFUNCTION ST_PointFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POINT''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PointFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POINT''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_PointFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POINT''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LineFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: LineFromWKB(text, int)
+CREATEFUNCTION ST_LineFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LineFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_LineFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LinestringFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_LinestringFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''LINESTRING''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION LinestringFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_LinestringFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''LINESTRING''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PolyFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POLYGON''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: PolyFromWKB(text, int)
+CREATEFUNCTION ST_PolyFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''POLYGON''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PolyFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_PolyFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PolygonFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''POLYGON''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_PolygonFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''POLYGON''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION PolygonFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_PolygonFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''POLYGON''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MPointFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: MPointFromWKB(text, int)
+CREATEFUNCTION ST_MPointFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOINT''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MPointFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MPointFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiPointFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiPointFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = ''MULTIPOINT''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiPointFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiPointFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOINT''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiLineFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION MultiLineFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiLineFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiLineFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MLineFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: MLineFromWKB(text, int)
+CREATEFUNCTION ST_MLineFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTILINESTRING''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MLineFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MLineFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTILINESTRING''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MPolyFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- PostGIS equivalent function: MPolyFromWKB(text, int)
+CREATEFUNCTION ST_MPolyFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MPolyFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MPolyFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiPolyFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiPolyFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION MultiPolyFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_MultiPolyFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = ''MULTIPOLYGON''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomCollFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeomCollFromWKB(bytea, int)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Deprecation in 1.2.3
+CREATEFUNCTION GeomCollFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_GeomCollFromWKB(bytea)
+ RETURNS geometry
+ AS '
+ SELECT CASE
+ WHEN geometrytype(GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ '
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+--
+-- SFSQL 1.1
+--
+-- BdPolyFromText(multiLineStringTaggedText String, SRID Integer): Polygon
+--
+-- Construct a Polygon given an arbitrary
+-- collection of closed linestrings as a
+-- MultiLineString text representation.
+--
+-- This is a PLPGSQL function rather then an SQL function
+-- To avoid double call of BuildArea (one to get GeometryType
+-- and another to actual return, in a CASE WHEN construct).
+-- Also, we profit from plpgsql to RAISE exceptions.
+--
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION BdPolyFromText(text, integer)
+RETURNS geometry
+AS '
+DECLARE
+ geomtext alias for $1;
+ srid alias for $2;
+ mline geometry;
+ geom geometry;
+BEGIN
+ mline := MultiLineStringFromText(geomtext, srid);
+
+ IF mline IS NULL
+ THEN
+ RAISE EXCEPTION ''Input is not a MultiLinestring'';
+ END IF;
+
+ geom := BuildArea(mline);
+
+ IF GeometryType(geom) != ''POLYGON''
+ THEN
+ RAISE EXCEPTION ''Input returns more then a single polygon, try using BdMPolyFromText instead'';
+ END IF;
+
+ RETURN geom;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_BdPolyFromText(text, integer)
+RETURNS geometry
+AS '
+DECLARE
+ geomtext alias for $1;
+ srid alias for $2;
+ mline geometry;
+ geom geometry;
+BEGIN
+ mline := MultiLineStringFromText(geomtext, srid);
+
+ IF mline IS NULL
+ THEN
+ RAISE EXCEPTION ''Input is not a MultiLinestring'';
+ END IF;
+
+ geom := BuildArea(mline);
+
+ IF GeometryType(geom) != ''POLYGON''
+ THEN
+ RAISE EXCEPTION ''Input returns more then a single polygon, try using BdMPolyFromText instead'';
+ END IF;
+
+ RETURN geom;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT;
+
+--
+-- SFSQL 1.1
+--
+-- BdMPolyFromText(multiLineStringTaggedText String, SRID Integer): MultiPolygon
+--
+-- Construct a MultiPolygon given an arbitrary
+-- collection of closed linestrings as a
+-- MultiLineString text representation.
+--
+-- This is a PLPGSQL function rather then an SQL function
+-- To raise an exception in case of invalid input.
+--
+-- Deprecation in 1.2.3
+CREATEFUNCTION BdMPolyFromText(text, integer)
+RETURNS geometry
+AS '
+DECLARE
+ geomtext alias for $1;
+ srid alias for $2;
+ mline geometry;
+ geom geometry;
+BEGIN
+ mline := MultiLineStringFromText(geomtext, srid);
+
+ IF mline IS NULL
+ THEN
+ RAISE EXCEPTION ''Input is not a MultiLinestring'';
+ END IF;
+
+ geom := multi(BuildArea(mline));
+
+ RETURN geom;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT;
+
+-- Availability: 1.2.2
+CREATEFUNCTION ST_BdMPolyFromText(text, integer)
+RETURNS geometry
+AS '
+DECLARE
+ geomtext alias for $1;
+ srid alias for $2;
+ mline geometry;
+ geom geometry;
+BEGIN
+ mline := MultiLineStringFromText(geomtext, srid);
+
+ IF mline IS NULL
+ THEN
+ RAISE EXCEPTION ''Input is not a MultiLinestring'';
+ END IF;
+
+ geom := multi(BuildArea(mline));
+
+ RETURN geom;
+END;
+'
+LANGUAGE 'plpgsql' _IMMUTABLE_STRICT;
+
+#include "long_xact.sql.in"
+#include "sqlmm.sql.in"
+
+---------------------------------------------------------------
+-- SQL-MM
+---------------------------------------------------------------
+
+--
+-- SQL-MM
+--
+-- ST_CurveToLine(Geometry geometry, SegmentsPerQuarter integer)
+--
+-- Converts a given geometry to a linear geometry. Each curveed
+-- geometry or segment is converted into a linear approximation using
+-- the given number of segments per quarter circle.
+CREATEFUNCTION ST_CurveToLine(geometry, integer)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_curve_segmentize'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+--
+-- SQL-MM
+--
+-- ST_CurveToLine(Geometry geometry, SegmentsPerQuarter integer)
+--
+-- Converts a given geometry to a linear geometry. Each curveed
+-- geometry or segment is converted into a linear approximation using
+-- the default value of 32 segments per quarter circle
+CREATEFUNCTION ST_CurveToLine(geometry)
+ RETURNS geometry AS 'SELECT ST_CurveToLine($1, 32)'
+ LANGUAGE 'SQL' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
+
+CREATEFUNCTION ST_HasArc(geometry)
+ RETURNS boolean
+ AS 'MODULE_PATHNAME', 'LWGEOM_has_arc'
+ LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
+
+CREATEFUNCTION ST_LineToCurve(geometry)
+ RETURNS geometry
+ AS 'MODULE_PATHNAME', 'LWGEOM_line_desegmentize'
+ LANGUAGE 'C' _IMMUTABLE_STRICT;
+---------------------------------------------------------------
+-- END
+---------------------------------------------------------------
+
+COMMIT;
+
Modified: trunk/lwgeom/pgsql_compat.h
===================================================================
--- trunk/lwgeom/pgsql_compat.h 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/pgsql_compat.h 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,11 +1,11 @@
#ifndef _PGSQL_COMPAT_H
-#if USE_VERSION < 73
+#if POSTGIS_PGSQL_VERSION < 73
#define WARNING NOTICE
#endif
/* PostgreSQL < 8.3 uses VARATT_SIZEP rather than SET_VARSIZE for varlena types */
-#if USE_VERSION < 83
+#if POSTGIS_PGSQL_VERSION < 83
#define SET_VARSIZE(var, size) VARATT_SIZEP(var) = size
#endif
Modified: trunk/lwgeom/sqldefines.h
===================================================================
--- trunk/lwgeom/sqldefines.h 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/sqldefines.h 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,9 +1,25 @@
#ifndef _LWPGIS_DEFINES
#define _LWPGIS_DEFINES
+/*
+ * Define just the version numbers; otherwise we get some strange substitutions in lwpostgis.sql.in
+ */
+#define POSTGIS_PGSQL_VERSION 83
+#define POSTGIS_GEOS_VERSION 30
+#define POSTGIS_PROJ_VERSION 46
+
+/*
+ * Define the build date and the version number
+ * (these substitiutions are done with extra quotes sinces CPP
+ * won't substitute within apostrophes)
+ */
+#define _POSTGIS_SQL_SELECT_POSTGIS_VERSION 'SELECT ''1.4 USE_GEOS=1 USE_PROJ=1 USE_STATS=1''::text AS version'
+#define _POSTGIS_SQL_SELECT_POSTGIS_BUILD_DATE 'SELECT ''2008-05-14 08:59:43''::text AS version'
+
+
#define CREATEFUNCTION CREATE OR REPLACE FUNCTION
-#if USE_VERSION > 72
+#if POSTGIS_PGSQL_VERSION > 72
# define _IMMUTABLE_STRICT IMMUTABLE STRICT
# define _IMMUTABLE IMMUTABLE
# define _STABLE_STRICT STABLE STRICT
@@ -23,7 +39,7 @@
# define _SECURITY_DEFINER
#endif
-#if USE_VERSION >= 73
+#if POSTGIS_PGSQL_VERSION >= 73
# define HAS_SCHEMAS 1
#endif
Added: trunk/lwgeom/sqldefines.h.in
===================================================================
--- trunk/lwgeom/sqldefines.h.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/sqldefines.h.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -0,0 +1,46 @@
+#ifndef _LWPGIS_DEFINES
+#define _LWPGIS_DEFINES
+
+/*
+ * Define just the version numbers; otherwise we get some strange substitutions in lwpostgis.sql.in
+ */
+#define POSTGIS_PGSQL_VERSION @POSTGIS_PGSQL_VERSION@
+#define POSTGIS_GEOS_VERSION @POSTGIS_GEOS_VERSION@
+#define POSTGIS_PROJ_VERSION @POSTGIS_PROJ_VERSION@
+
+/*
+ * Define the build date and the version number
+ * (these substitiutions are done with extra quotes sinces CPP
+ * won't substitute within apostrophes)
+ */
+#define _POSTGIS_SQL_SELECT_POSTGIS_VERSION 'SELECT ''@POSTGIS_VERSION@''::text AS version'
+#define _POSTGIS_SQL_SELECT_POSTGIS_BUILD_DATE 'SELECT ''@POSTGIS_BUILD_DATE@''::text AS version'
+
+
+#define CREATEFUNCTION CREATE OR REPLACE FUNCTION
+
+#if POSTGIS_PGSQL_VERSION > 72
+# define _IMMUTABLE_STRICT IMMUTABLE STRICT
+# define _IMMUTABLE IMMUTABLE
+# define _STABLE_STRICT STABLE STRICT
+# define _STABLE STABLE
+# define _VOLATILE_STRICT VOLATILE STRICT
+# define _VOLATILE VOLATILE
+# define _STRICT STRICT
+# define _SECURITY_DEFINER SECURITY DEFINER
+#else
+# define _IMMUTABLE_STRICT with(iscachable,isstrict)
+# define _IMMUTABLE with(iscachable)
+# define _STABLE_STRICT with(isstrict)
+# define _STABLE
+# define _VOLATILE_STRICT with(isstrict)
+# define _VOLATILE
+# define _STRICT with(isstrict)
+# define _SECURITY_DEFINER
+#endif
+
+#if POSTGIS_PGSQL_VERSION >= 73
+# define HAS_SCHEMAS 1
+#endif
+
+#endif /* _LWPGIS_DEFINES */
Modified: trunk/lwgeom/sqlmm.sql.in
===================================================================
--- trunk/lwgeom/sqlmm.sql.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/lwgeom/sqlmm.sql.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -118,7 +118,7 @@
-- TODO: SE_AsShape(geometry)
--CREATEFUNCTION SE_AsShape(geometry)
-- RETURNS bytea
--- AS '@MODULE_FILENAME@','LWGEOM_AsShape'
+-- AS 'MODULE_PATHNAME','LWGEOM_AsShape'
-- LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict,iscachable);
-------------------------------------------------------------------------------
@@ -128,7 +128,7 @@
-- PostGIS equivalent function: ndims(geometry)
CREATEFUNCTION ST_CoordDim(geometry)
RETURNS smallint
- AS '@MODULE_FILENAME@', 'LWGEOM_ndims'
+ AS 'MODULE_PATHNAME', 'LWGEOM_ndims'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-- ST_Dimension(geometry) - already defined.
@@ -193,19 +193,19 @@
-- PostGIS equivalent function: makePoint(float8,float8)
CREATEFUNCTION ST_Point(float8, float8)
RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_makepoint'
+ AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (iscachable,isstrict);
-- PostGIS equivalent function: Z(geometry)
CREATEFUNCTION SE_Z(geometry)
RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_z_point'
+ AS 'MODULE_PATHNAME','LWGEOM_z_point'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-- PostGIS equivalent function: M(geometry)
CREATEFUNCTION SE_M(geometry)
RETURNS float8
- AS '@MODULE_FILENAME@','LWGEOM_m_point'
+ AS 'MODULE_PATHNAME','LWGEOM_m_point'
LANGUAGE 'C' _IMMUTABLE_STRICT; -- WITH (isstrict);
-------------------------------------------------------------------------------
@@ -321,7 +321,7 @@
-- PostGIS equivalent function: locate_between_measures(geometry, float8, float8)
CREATEFUNCTION SE_LocateBetween(geometry, float8, float8)
RETURNS geometry
- AS '@MODULE_FILENAME@', 'LWGEOM_locate_between_m'
+ AS 'MODULE_PATHNAME', 'LWGEOM_locate_between_m'
LANGUAGE 'C' _IMMUTABLE_STRICT;
Added: trunk/macros/ac_proj4_version.m4
===================================================================
--- trunk/macros/ac_proj4_version.m4 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/macros/ac_proj4_version.m4 2008-05-14 17:10:19 UTC (rev 2774)
@@ -0,0 +1,32 @@
+dnl
+dnl Return the PROJ.4 version number
+dnl
+dnl Written by Mark Cave-Ayland
+dnl
+
+AC_DEFUN([AC_PROJ_VERSION], [
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([
+ #ifdef HAVE_STDINT_H
+ #include <stdio.h>
+ #endif
+ #include "proj_api.h"
+ ],
+ [
+ FILE *fp;
+
+ fp = fopen("conftest.out", "w");
+ fprintf(fp, "%d\n", PJ_VERSION);
+ fclose(fp)])
+ ],
+ [
+ dnl The program ran successfully, so return the version number in the form MAJORMINOR
+ $1=`cat conftest.out | sed 's/\([[0-9]]\)\([[0-9]]\)\([[0-9]]\)/\1\2/'`
+ ],
+ [
+ dnl The program failed so return an empty variable
+ $1=""
+ ]
+ )
+])
+
Added: trunk/postgis_config.h.in
===================================================================
--- trunk/postgis_config.h.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/postgis_config.h.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -0,0 +1,67 @@
+/* postgis_config.h.in. Generated from configure.in by autoheader. */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `geos_c' library (-lgeos_c). */
+#undef HAVE_LIBGEOS_C
+
+/* Define to 1 if you have the `pq' library (-lpq). */
+#undef HAVE_LIBPQ
+
+/* Define to 1 if you have the `proj' library (-lproj). */
+#undef HAVE_LIBPROJ
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Enable caching of bounding box within geometries */
+#undef POSTGIS_AUTOCACHE_BBOX
+
+/* PostGIS build date */
+#undef POSTGIS_BUILD_DATE
+
+/* GEOS library version */
+#undef POSTGIS_GEOS_VERSION
+
+/* PostGIS library version */
+#undef POSTGIS_LIB_VERSION
+
+/* PostgreSQL server version */
+#undef POSTGIS_PGSQL_VERSION
+
+/* PROJ library version */
+#undef POSTGIS_PROJ_VERSION
+
+/* PostGIS scripts version */
+#undef POSTGIS_SCRIPTS_VERSION
+
+/* Enable use of ANALYZE statistics */
+#undef POSTGIS_USE_STATS
+
+/* PostGIS version */
+#undef POSTGIS_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
Deleted: trunk/regress/Makefile
===================================================================
--- trunk/regress/Makefile 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/regress/Makefile 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,94 +0,0 @@
-TMPDIR?=/tmp
-
-include ../Makefile.config
-
-TESTS = \
- loader/Point \
- loader/PointM \
- loader/PointZ \
- loader/MultiPoint \
- loader/MultiPointM \
- loader/MultiPointZ \
- loader/Arc \
- loader/ArcM \
- loader/ArcZ \
- loader/Polygon \
- loader/PolygonM \
- loader/PolygonZ \
- regress \
- regress_index \
- regress_index_nulls \
- lwgeom_regress \
- regress_lrs \
- removepoint \
- setpoint \
- simplify \
- snaptogrid \
- affine \
- wkt \
- measures \
- long_xact \
- ctors \
- sql-mm-serialize \
- sql-mm-circularstring \
- sql-mm-compoundcurve \
- sql-mm-curvepoly \
- sql-mm-general \
- sql-mm-multicurve \
- sql-mm-multisurface \
- geojson
-
-PREPROC = \
- sql-mm-circularstring_expected \
- sql-mm-compoundcurve_expected \
- sql-mm-curvepoly_expected \
- sql-mm-multicurve_expected \
- sql-mm-multisurface_expected
-
-
-# GEOS tests only if GEOS is available
-ifeq ($(USE_GEOS),1)
- TESTS += regress_ogc regress_bdpoly
-
-# Covers/CoveredBy only if GEOS >= 3.0
-ifeq ($(shell expr $(GEOS_VERNUM) ">=" 30),1)
- TESTS += regress_ogc_cover
-
-# PreparedGeometry only if GEOS >= 3.1
-ifeq ($(shell expr $(GEOS_VERNUM) ">=" 31),1)
- TESTS += regress_ogc_prep
-
-endif
-endif
-endif
-
-ifeq ($(USE_PROJ),1)
- TESTS += regress_proj kml
-endif
-
-all: test
-
-test check: lwpostgis.sql ../lwgeom/liblwgeom.so ../loader/pgsql2shp ../loader/shp2pgsql $(PREPROC)
- @USE_VERSION="$(USE_VERSION)" ./run_test $(TESTS)
-
-lwpostgis.sql: ../lwgeom/lwpostgis.sql.in
- $(MAKE) -C ../lwgeom ../regress/lwpostgis.sql
-
-../lwgeom/liblwgeom.so:
- $(MAKE) -C ../lwgeom all-shared-lib
-
-../loader/pgsql2shp:
- $(MAKE) -C ../loader pgsql2shp
-
-../loader/shp2pgsql:
- $(MAKE) -C ../loader shp2pgsql
-
-$(PREPROC):
- cpp -P -traditional-cpp $@.in | grep -v "^$$" > $@
-
-cleanup:
- @sleep 1
- @dropdb postgis_reg > /dev/null
-
-clean:
- rm -f lwpostgis.sql $(PREPROC)
Added: trunk/regress/Makefile.in
===================================================================
--- trunk/regress/Makefile.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/regress/Makefile.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -0,0 +1,88 @@
+TMPDIR?=/tmp
+
+POSTGIS_PGSQL_VERSION=@POSTGIS_PGSQL_VERSION@
+POSTGIS_GEOS_VERSION=@POSTGIS_GEOS_VERSION@
+POSTGIS_PROJ_VERSION=@POSTGIS_PROJ_VERSION@
+
+TESTS = \
+ loader/Point \
+ loader/PointM \
+ loader/PointZ \
+ loader/MultiPoint \
+ loader/MultiPointM \
+ loader/MultiPointZ \
+ loader/Arc \
+ loader/ArcM \
+ loader/ArcZ \
+ loader/Polygon \
+ loader/PolygonM \
+ loader/PolygonZ \
+ regress \
+ regress_index \
+ regress_index_nulls \
+ lwgeom_regress \
+ regress_lrs \
+ removepoint \
+ setpoint \
+ simplify \
+ snaptogrid \
+ affine \
+ wkt \
+ measures \
+ long_xact \
+ ctors \
+ sql-mm-serialize \
+ sql-mm-circularstring \
+ sql-mm-compoundcurve \
+ sql-mm-curvepoly \
+ sql-mm-general \
+ sql-mm-multicurve \
+ sql-mm-multisurface \
+ geojson \
+ regress_ogc \
+ regress_bdpoly \
+ regress_proj \
+ kml
+
+
+PREPROC = \
+ sql-mm-circularstring_expected \
+ sql-mm-compoundcurve_expected \
+ sql-mm-curvepoly_expected \
+ sql-mm-multicurve_expected \
+ sql-mm-multisurface_expected
+
+
+# Covers/CoveredBy only if GEOS >= 3.0
+ifeq ($(shell expr $(POSTGIS_GEOS_VERSION) ">=" 30),1)
+ TESTS += regress_ogc_cover
+
+# PreparedGeometry only if GEOS >= 3.1
+ifeq ($(shell expr $(POSTGIS_GEOS_VERSION) ">=" 31),1)
+ TESTS += regress_ogc_prep
+
+endif
+endif
+
+
+all: test
+
+test check: ../lwgeom/liblwgeom.so ../loader/pgsql2shp ../loader/shp2pgsql $(PREPROC)
+ cp ../lwgeom/lwpostgis.sql .
+ @USE_VERSION="$(POSTGIS_PGSQL_VERSION)" ./run_test $(TESTS)
+
+../lwgeom/liblwgeom.so:
+ $(MAKE) -C ../lwgeom
+
+../loader/pgsql2shp ../loader/shp2pgsql:
+ $(MAKE) -C ../loader
+
+$(PREPROC):
+ cpp -P -traditional-cpp $@.in | grep -v "^$$" > $@
+
+cleanup:
+ @sleep 1
+ @dropdb postgis_reg > /dev/null
+
+clean:
+ rm -f lwpostgis.sql $(PREPROC)
Modified: trunk/regress/run_test
===================================================================
--- trunk/regress/run_test 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/regress/run_test 2008-05-14 17:10:19 UTC (rev 2774)
@@ -130,7 +130,7 @@
> "${OUTFILE}"
rm ${TMPFILE}
- if diff "${_expected}" "${OUTFILE}" > ${DIFFILE}; then
+ if diff -c "${_expected}" "${OUTFILE}" > ${DIFFILE}; then
#SUCCESS=`expr $SUCCESS + 1`
rm "${OUTFILE}" "${DIFFILE}" # we don't need these anymore
return 0
Modified: trunk/regress/sql-mm-circularstring_expected.in
===================================================================
--- trunk/regress/sql-mm-circularstring_expected.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/regress/sql-mm-circularstring_expected.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,4 +1,4 @@
-#include "../config.h"
+#include "../postgis_config.h"
ndims01|4
geometrytype01|CIRCULARSTRING
ndims02|3
Modified: trunk/regress/sql-mm-compoundcurve_expected.in
===================================================================
--- trunk/regress/sql-mm-compoundcurve_expected.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/regress/sql-mm-compoundcurve_expected.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,4 +1,4 @@
-#include "../config.h"
+#include "../postgis_config.h"
ndims01|4
geometrytype01|COMPOUNDCURVE
ndims02|3
Modified: trunk/regress/sql-mm-curvepoly_expected.in
===================================================================
--- trunk/regress/sql-mm-curvepoly_expected.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/regress/sql-mm-curvepoly_expected.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,4 +1,4 @@
-#include "../config.h"
+#include "../postgis_config.h"
ndims01|4
geometrytype01|CURVEPOLYGON
ndims02|3
Modified: trunk/regress/sql-mm-multicurve_expected.in
===================================================================
--- trunk/regress/sql-mm-multicurve_expected.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/regress/sql-mm-multicurve_expected.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,4 +1,4 @@
-#include "../config.h"
+#include "../postgis_config.h"
ndims01|4
geometrytype01|MULTICURVE
ndims02|3
Modified: trunk/regress/sql-mm-multisurface_expected.in
===================================================================
--- trunk/regress/sql-mm-multisurface_expected.in 2008-05-14 16:43:12 UTC (rev 2773)
+++ trunk/regress/sql-mm-multisurface_expected.in 2008-05-14 17:10:19 UTC (rev 2774)
@@ -1,4 +1,4 @@
-#include "../config.h"
+#include "../postgis_config.h"
ndims01|4
geometrytype01|MULTISURFACE
ndims02|3
More information about the postgis-commits
mailing list