* Bug Fixes and Enhancements
- #3713, Support encodings that happen to output a '\' character
+ - #3822, Have postgis_full_version() also show and check version of
+ PostgreSQL the scripts were built against (Sandro Santilli)
- #3965, ST_ClusterKMeans used to lose some clusters on initialization
(Darafei Praliaskouski)
- #3956, Brin opclass object does not upgrade properly (Sandro Santilli)
AS 'MODULE_PATHNAME'
LANGUAGE 'c' IMMUTABLE;
+CREATE OR REPLACE FUNCTION _postgis_scripts_pgsql_version() RETURNS text
+ AS _POSTGIS_SQL_SELECT_POSTGIS_PGSQL_VERSION
+ LANGUAGE 'sql' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _postgis_pgsql_version() RETURNS text
+AS $$
+ SELECT CASE WHEN split_part(s,'.',1)::integer > 9 THEN split_part(s,'.',1) || '0' ELSE split_part(s,'.', 1) || split_part(s,'.', 2) END AS v
+ FROM substring(version(), 'PostgreSQL ([0-9\.]+)') AS s;
+$$ LANGUAGE 'sql' STABLE;
+
CREATE OR REPLACE FUNCTION postgis_full_version() RETURNS text
AS $$
DECLARE
json_lib_ver text;
sfcgal_lib_ver text;
sfcgal_scr_ver text;
+ pgsql_scr_ver text;
+ pgsql_ver text;
BEGIN
SELECT postgis_lib_version() INTO libver;
SELECT postgis_proj_version() INTO projver;
SELECT postgis_geos_version() INTO geosver;
SELECT postgis_libjson_version() INTO json_lib_ver;
+ SELECT _postgis_scripts_pgsql_version() INTO pgsql_scr_ver;
+ SELECT _postgis_pgsql_version() INTO pgsql_ver;
BEGIN
SELECT postgis_gdal_version() INTO gdalver;
EXCEPTION
fullver = fullver || ' (liblwgeom version mismatch: "' || liblwgeomver || '")';
END IF;
+ fullver = fullver || ' PGSQL="' || pgsql_scr_ver || '"';
+ IF pgsql_scr_ver != pgsql_ver THEN
+ fullver = fullver || ' (procs need upgrade for use with "' || pgsql_ver || '")';
+ END IF;
IF geosver IS NOT NULL THEN
fullver = fullver || ' GEOS="' || geosver || '"';
fullver = fullver || ' (core procs from "' || dbproc || '" need upgrade)';
END IF;
+ IF pgsql_scr_ver != pgsql_ver THEN
+ fullver = fullver || ' (procs built against PostgreSQL "' || pgsql_scr_ver || '" need upgrade)';
+ END IF;
+
IF topo_scr_ver IS NOT NULL THEN
fullver = fullver || ' TOPOLOGY';
IF topo_scr_ver != relproc THEN