[postgis-users] ST_Maxdistance schema hardcoding error

Regina Obe lr at pcorp.us
Fri Jul 12 16:05:35 PDT 2019


How did you move the extension?

 

And which version are you running.  Since 2.3, PostGIS functions are schema qualified.

 

The easiest way is to force a reinstall.

ALTER EXTENSION  postgis UPDATE;

 

Should work if you are not running the latest version (one listed in your postgis.control).

 

If it gives you an error something like

 

NOTICE: version "2.5.2" of extension "postgis" is already installed

 

Then you can do what I call the yo-yo hack

 

ALTER EXTENSION postgis UPDATE TO "2.5.2next";;

 

Followed by 

ALTER EXTENSION postgis UPDATE TO "2.5.2";

 

From: postgis-users [mailto:postgis-users-bounces at lists.osgeo.org] On Behalf Of Philip M. Hurvitz
Sent: Friday, July 12, 2019 2:53 PM
To: postgis-users at lists.osgeo.org; postgis-devel at lists.osgeo.org
Subject: [postgis-users] ST_Maxdistance schema hardcoding error

 

Hi all, I found that ST_MaxDistance() was failing for a database that had the PostGIS extension installed in the schema 'postgis'.

SELECT ST_MaxDistance('POINT(0 0)'::geometry, 'LINESTRING ( 2 0, 0 2 )'::geometry);
ERROR:  function public.st_convexhull(geometry) does not exist
LINE 1: SELECT public._ST_MaxDistance(public.ST_ConvexHull($1), publ...
                                      ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
QUERY:  SELECT public._ST_MaxDistance(public.ST_ConvexHull($1), public.ST_ConvexHull($2))
CONTEXT:  SQL function "st_maxdistance" during startup
Time: 147.448 ms

It seems that the function is expecting to find the ST_ConvexHull function in the public schema.

As a workaround I edited the code for the _ST_MaxDistance and ST_ConvexHull to create identical functions in the public schema and now things work as expected:

SELECT ST_MaxDistance('POINT(0 0)'::geometry, 'LINESTRING ( 2 0, 0 2 )'::geometry);
 st_maxdistance 
----------------
              2

I had originally installed PostGIS in the public schema but then relocated the extension to the postgis schema -- could this be the reason? Other functions are acting strangely, e.g., postgis_version works OK

select postgis_version();
            postgis_version            
---------------------------------------
 2.4 USE_GEOS=1 USE_PROJ=1 USE_STATS=1

but postgis_full_version fails

select postgis_full_version();
ERROR:  function public.postgis_lib_version() does not exist
LINE 1: SELECT public.postgis_lib_version()
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
QUERY:  SELECT public.postgis_lib_version()
CONTEXT:  PL/pgSQL function postgis_full_version() line 25 at SQL statement

Does anyone know if there is a fix for rewriting the functions that are looking in public for functions that are located in the postgis schema?

 

Thanks for any info!

-- 

  _____  

Philip M. Hurvitz
Research Assistant Professor, Urban Design and Planning
Research Scientist, Civil Engineering (TRAC)
http://gis.washington.edu/phurvitz/contact 

  _____  

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20190712/451fe872/attachment.html>


More information about the postgis-users mailing list