</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>postgis_scripts_installed()</term>
+ <listitem>
+ <para>Returns the version number of the postgis.sql script installed in this database.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>postgis_scripts_released()</term>
+ <listitem>
+ <para>Returns the version number of the postgis.sql script released with the installed postgis lib.
+ </para>
+ </listitem>
+ </varlistentry>
<varlistentry>
<term>postgis_geos_version()</term>
<listitem>
-----------------------------------------------------------------------
-- POSTGIS_VERSION()
-----------------------------------------------------------------------
-CREATEFUNCTION postgis_lib_version() RETURNS cstring
+
+CREATEFUNCTION postgis_version() RETURNS text
+AS 'SELECT \'@POSTGIS_VERSION@\'::text AS version'
+LANGUAGE 'sql';
+
+CREATEFUNCTION postgis_lib_version() RETURNS text
AS '@MODULE_FILENAME@'
LANGUAGE 'C';
-CREATEFUNCTION postgis_geos_version() RETURNS cstring
+CREATEFUNCTION postgis_geos_version() RETURNS text
AS '@MODULE_FILENAME@'
LANGUAGE 'C';
-CREATEFUNCTION postgis_proj_version() RETURNS cstring
+CREATEFUNCTION postgis_proj_version() RETURNS text
AS '@MODULE_FILENAME@'
LANGUAGE 'C';
-CREATEFUNCTION postgis_version() RETURNS text
-AS 'SELECT \'@POSTGIS_VERSION@\'::text AS version'
-LANGUAGE 'sql';
-
-CREATEFUNCTION postgis_scripts_version() RETURNS text
+CREATEFUNCTION postgis_scripts_installed() RETURNS text
AS 'SELECT \'@POSTGIS_SCRIPTS_VERSION@\'::text AS version'
LANGUAGE 'sql';
+CREATEFUNCTION postgis_scripts_released() RETURNS text
+ AS '@MODULE_FILENAME@'
+ LANGUAGE 'C';
+
+CREATEFUNCTION postgis_uses_stats() RETURNS bool
+ AS '@MODULE_FILENAME@'
+ LANGUAGE 'C';
+
+CREATEFUNCTION postgis_full_version() RETURNS text
+AS '
+DECLARE
+ libver text;
+ projver text;
+ geosver 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_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 projver IS NOT NULL THEN
+ fullver = fullver || \' PROJ="\' || geosver || \'"\';
+ 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 || \' (needs proc upgrade)\';
+ END IF;
+
+ RETURN fullver;
+END
+' LANGUAGE 'plpgsql';
+
-----------------------------------------------------------------------
-- FIND_SRID( <schema>, <table>, <geom col> )
-----------------------------------------------------------------------
*
**********************************************************************
* $Log$
+ * Revision 1.39 2004/07/28 16:10:59 strk
+ * Changed all version functions to return text.
+ * Renamed postgis_scripts_version() to postgis_scripts_installed()
+ * Added postgis_scripts_released().
+ * Added postgis_full_version().
+ *
* Revision 1.38 2004/07/28 13:37:43 strk
* Added postgis_uses_stats and postgis_scripts_version.
* Experimented with PIP short-circuit in within/contains functions.
PG_FUNCTION_INFO_V1(postgis_lib_version);
Datum postgis_lib_version(PG_FUNCTION_ARGS)
{
- char *result = pstrdup(POSTGIS_LIB_VERSION);
- PG_RETURN_CSTRING(result);
+ char *ver = POSTGIS_LIB_VERSION;
+ text *result;
+ result = (text *) palloc(VARHDRSZ + strlen(ver));
+ VARATT_SIZEP(result) = VARHDRSZ + strlen(ver) ;
+ memcpy(VARDATA(result), ver, strlen(ver));
+ PG_RETURN_POINTER(result);
+}
+
+PG_FUNCTION_INFO_V1(postgis_scripts_released);
+Datum postgis_scripts_released(PG_FUNCTION_ARGS)
+{
+ char *ver = POSTGIS_SCRIPTS_VERSION;
+ text *result;
+ result = (text *) palloc(VARHDRSZ + strlen(ver));
+ VARATT_SIZEP(result) = VARHDRSZ + strlen(ver) ;
+ memcpy(VARDATA(result), ver, strlen(ver));
+ PG_RETURN_POINTER(result);
}
PG_FUNCTION_INFO_V1(postgis_uses_stats);
*
**********************************************************************
* $Log$
+ * Revision 1.38 2004/07/28 16:10:59 strk
+ * Changed all version functions to return text.
+ * Renamed postgis_scripts_version() to postgis_scripts_installed()
+ * Added postgis_scripts_released().
+ * Added postgis_full_version().
+ *
* Revision 1.37 2004/07/28 13:37:43 strk
* Added postgis_uses_stats and postgis_scripts_version.
* Experimented with PIP short-circuit in within/contains functions.
Datum postgis_geos_version(PG_FUNCTION_ARGS)
{
char *ver = GEOSversion();
- char *result = pstrdup(ver);
+ text *result;
+ result = (text *) palloc(VARHDRSZ + strlen(ver));
+ VARATT_SIZEP(result) = VARHDRSZ + strlen(ver) ;
+ memcpy(VARDATA(result), ver, strlen(ver));
free(ver);
- PG_RETURN_CSTRING(result);
+ PG_RETURN_POINTER(result);
}
//----------------------------------------------------------------------------
*
**********************************************************************
* $Log$
+ * Revision 1.19 2004/07/28 16:10:59 strk
+ * Changed all version functions to return text.
+ * Renamed postgis_scripts_version() to postgis_scripts_installed()
+ * Added postgis_scripts_released().
+ * Added postgis_full_version().
+ *
* Revision 1.18 2004/07/23 21:24:33 strk
* Added postgis_proj_version()
*
PG_FUNCTION_INFO_V1(postgis_proj_version);
Datum postgis_proj_version(PG_FUNCTION_ARGS)
{
- char *result = pstrdup(pj_get_release());
- PG_RETURN_CSTRING(result);
+ const char *ver = pj_get_release();
+ text *result;
+ result = (text *) palloc(VARHDRSZ + strlen(ver));
+ VARATT_SIZEP(result) = VARHDRSZ + strlen(ver) ;
+ memcpy(VARDATA(result), ver, strlen(ver));
+ PG_RETURN_POINTER(result);
}