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, [email protected]<mailto:[email protected]> wrote: Send postgis-users mailing list submissions to [email protected]<mailto:[email protected]> 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 [email protected]<mailto:[email protected]> You can reach the person managing the list at [email protected]<mailto:[email protected]> 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" <[email protected]><mailto:[email protected]> To: "[email protected]"<mailto:[email protected]> <[email protected]><mailto:[email protected]>, "[email protected]"<mailto:[email protected]> <[email protected]><mailto:[email protected]> Subject: [postgis-users] ST_Maxdistance schema hardcoding error Message-ID: <[email protected]><mailto:[email protected]> 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" <[email protected]><mailto:[email protected]> To: "'PostGIS Users Discussion'" <[email protected]><mailto:[email protected]>, <[email protected]><mailto:[email protected]> Subject: Re: [postgis-users] ST_Maxdistance schema hardcoding error Message-ID: <[email protected]><mailto:[email protected]> 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:[email protected]] On Behalf Of Philip M. Hurvitz Sent: Friday, July 12, 2019 2:53 PM To: [email protected]<mailto:[email protected]>; [email protected]<mailto:[email protected]> 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!
_______________________________________________ postgis-users mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/postgis-users
