A rails application is configured to run with postgis. Database.yml is configured as follows:
development: adapter: postgis database: app_development username: simpleton schema_search_path: public, postgis
for the schema search path, the attempt is to ensure that postgis is not installed twice by enacting as follows
DROP EXTENSION PostGIS; CREATE SCHEMA postgis; CREATE EXTENSION PostGIS WITH SCHEMA postgis; GRANT ALL ON postgis.geometry_columns TO PUBLIC; GRANT ALL ON postgis.spatial_ref_sys TO PUBLIC;
which generates the error
ERROR: function postgis_full_version() does not exist LINE 1: SELECT PostGIS_full_version(); ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Oddly, if the configuration is without a schema, i.e.
schema_search_path: public, postgis CREATE EXTENSION PostGIS;
the SELECT command runs and the database migration can occur.
Why is this behaviour apparently selective?