[postgis-users] ST_Maxdistance schema hardcoding error
Philip M. Hurvitz
phurvitz at uw.edu
Mon Jul 15 13:39:48 PDT 2019
Thank you, Regina. I was on 2.4.7. I did the yo-yo
ALTER EXTENSION postgis UPDATE TO "2.4.7next";
ALTER EXTENSION postgis UPDATE;
and the functions now work as expected.
________________________________
Philip M. Hurvitz
Research Assistant Professor, Urban Design and Planning
Research Scientist, Civil Engineering (TRAC)
http://gis.washington.edu/phurvitz/contact
________________________________
On 7/13/19 12:00 PM, postgis-users-request at lists.osgeo.org<mailto:postgis-users-request at lists.osgeo.org> wrote:
Send postgis-users mailing list submissions to
postgis-users at lists.osgeo.org<mailto:postgis-users at lists.osgeo.org>
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.osgeo.org/mailman/listinfo/postgis-users
or, via email, send a message with subject or body 'help' to
postgis-users-request at lists.osgeo.org<mailto:postgis-users-request at lists.osgeo.org>
You can reach the person managing the list at
postgis-users-owner at lists.osgeo.org<mailto:postgis-users-owner at lists.osgeo.org>
When replying, please edit your Subject line so it is more specific
than "Re: Contents of postgis-users digest..."
Today's Topics:
1. ST_Maxdistance schema hardcoding error (Philip M. Hurvitz)
2. Re: ST_Maxdistance schema hardcoding error (Regina Obe)
----------------------------------------------------------------------
Message: 1
Date: Fri, 12 Jul 2019 18:52:46 +0000
From: "Philip M. Hurvitz" <phurvitz at uw.edu><mailto:phurvitz at uw.edu>
To: "postgis-users at lists.osgeo.org"<mailto:postgis-users at lists.osgeo.org> <postgis-users at lists.osgeo.org><mailto:postgis-users at lists.osgeo.org>,
"postgis-devel at lists.osgeo.org"<mailto:postgis-devel at lists.osgeo.org> <postgis-devel at lists.osgeo.org><mailto:postgis-devel at lists.osgeo.org>
Subject: [postgis-users] ST_Maxdistance schema hardcoding error
Message-ID: <41b115ea-ef9e-0129-918f-83f49571ab2b at uw.edu><mailto:41b115ea-ef9e-0129-918f-83f49571ab2b at uw.edu>
Content-Type: text/plain; charset="utf-8"
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/6b6f0e12/attachment-0001.html><http://lists.osgeo.org/pipermail/postgis-users/attachments/20190712/6b6f0e12/attachment-0001.html>
------------------------------
Message: 2
Date: Fri, 12 Jul 2019 19:05:35 -0400
From: "Regina Obe" <lr at pcorp.us><mailto:lr at pcorp.us>
To: "'PostGIS Users Discussion'" <postgis-users at lists.osgeo.org><mailto:postgis-users at lists.osgeo.org>,
<postgis-devel at lists.osgeo.org><mailto:postgis-devel at lists.osgeo.org>
Subject: Re: [postgis-users] ST_Maxdistance schema hardcoding error
Message-ID: <000801d53906$5526a280$ff73e780$@pcorp.us><mailto:000801d53906$5526a280$ff73e780$@pcorp.us>
Content-Type: text/plain; charset="utf-8"
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<mailto:postgis-users at lists.osgeo.org>; postgis-devel at lists.osgeo.org<mailto: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!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20190715/c7b3975d/attachment.html>
More information about the postgis-users
mailing list