pgsql: Throw a useful error message if an extension script file is fed - Mailing list pgsql-committers
From | Tom Lane |
---|---|
Subject | pgsql: Throw a useful error message if an extension script file is fed |
Date | |
Msg-id | E1RE4lW-0003tG-RW@gemulon.postgresql.org Whole thread Raw |
List | pgsql-committers |
Throw a useful error message if an extension script file is fed to psql. We have seen one too many reports of people trying to use 9.1 extension files in the old-fashioned way of sourcing them in psql. Not only does that usually not work (due to failure to substitute for MODULE_PATHNAME and/or @extschema@), but if it did work they'd get a collection of loose objects not an extension. To prevent this, insert an \echo ... \quit line that prints a suitable error message into each extension script file, and teach commands/extension.c to ignore lines starting with \echo. That should not only prevent any adverse consequences of loading a script file the wrong way, but make it crystal clear to users that they need to do it differently now. Tom Lane, following an idea of Andrew Dunstan's. Back-patch into 9.1 ... there is not going to be much value in this if we wait till 9.2. Branch ------ REL9_1_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/dbd35a972fabba2ed723ac9ab4c4236ab2bd271d Modified Files -------------- contrib/adminpack/adminpack--1.0.sql | 3 + contrib/btree_gin/btree_gin--1.0.sql | 3 + contrib/btree_gin/btree_gin--unpackaged--1.0.sql | 3 + contrib/btree_gist/btree_gist--1.0.sql | 3 + contrib/btree_gist/btree_gist--unpackaged--1.0.sql | 3 + contrib/chkpass/chkpass--1.0.sql | 3 + contrib/chkpass/chkpass--unpackaged--1.0.sql | 3 + contrib/citext/citext--1.0.sql | 3 + contrib/citext/citext--unpackaged--1.0.sql | 3 + contrib/cube/cube--1.0.sql | 3 + contrib/cube/cube--unpackaged--1.0.sql | 3 + contrib/dblink/dblink--1.0.sql | 3 + contrib/dblink/dblink--unpackaged--1.0.sql | 3 + contrib/dict_int/dict_int--1.0.sql | 3 + contrib/dict_int/dict_int--unpackaged--1.0.sql | 3 + contrib/dict_xsyn/dict_xsyn--1.0.sql | 3 + contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql | 3 + contrib/earthdistance/earthdistance--1.0.sql | 3 + .../earthdistance--unpackaged--1.0.sql | 3 + contrib/file_fdw/file_fdw--1.0.sql | 3 + contrib/fuzzystrmatch/fuzzystrmatch--1.0.sql | 3 + .../fuzzystrmatch--unpackaged--1.0.sql | 3 + contrib/hstore/hstore--1.0.sql | 3 + contrib/hstore/hstore--unpackaged--1.0.sql | 3 + contrib/intagg/intagg--1.0.sql | 3 + contrib/intagg/intagg--unpackaged--1.0.sql | 3 + contrib/intarray/intarray--1.0.sql | 3 + contrib/intarray/intarray--unpackaged--1.0.sql | 3 + contrib/isn/isn--1.0.sql | 3 + contrib/isn/isn--unpackaged--1.0.sql | 3 + contrib/lo/lo--1.0.sql | 3 + contrib/lo/lo--unpackaged--1.0.sql | 3 + contrib/ltree/ltree--1.0.sql | 3 + contrib/ltree/ltree--unpackaged--1.0.sql | 3 + contrib/pageinspect/pageinspect--1.0.sql | 3 + .../pageinspect/pageinspect--unpackaged--1.0.sql | 3 + contrib/pg_buffercache/pg_buffercache--1.0.sql | 3 + .../pg_buffercache--unpackaged--1.0.sql | 3 + contrib/pg_freespacemap/pg_freespacemap--1.0.sql | 3 + .../pg_freespacemap--unpackaged--1.0.sql | 3 + .../pg_stat_statements/pg_stat_statements--1.0.sql | 3 + .../pg_stat_statements--unpackaged--1.0.sql | 3 + contrib/pg_trgm/pg_trgm--1.0.sql | 3 + contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql | 3 + contrib/pgcrypto/pgcrypto--1.0.sql | 3 + contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql | 3 + contrib/pgrowlocks/pgrowlocks--1.0.sql | 3 + contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql | 3 + contrib/pgstattuple/pgstattuple--1.0.sql | 3 + .../pgstattuple/pgstattuple--unpackaged--1.0.sql | 3 + contrib/seg/seg--1.0.sql | 3 + contrib/seg/seg--unpackaged--1.0.sql | 3 + contrib/spi/autoinc--1.0.sql | 3 + contrib/spi/autoinc--unpackaged--1.0.sql | 3 + contrib/spi/insert_username--1.0.sql | 3 + contrib/spi/insert_username--unpackaged--1.0.sql | 3 + contrib/spi/moddatetime--1.0.sql | 3 + contrib/spi/moddatetime--unpackaged--1.0.sql | 3 + contrib/spi/refint--1.0.sql | 3 + contrib/spi/refint--unpackaged--1.0.sql | 3 + contrib/spi/timetravel--1.0.sql | 3 + contrib/spi/timetravel--unpackaged--1.0.sql | 3 + contrib/sslinfo/sslinfo--1.0.sql | 3 + contrib/sslinfo/sslinfo--unpackaged--1.0.sql | 3 + contrib/tablefunc/tablefunc--1.0.sql | 3 + contrib/tablefunc/tablefunc--unpackaged--1.0.sql | 3 + contrib/test_parser/test_parser--1.0.sql | 3 + .../test_parser/test_parser--unpackaged--1.0.sql | 3 + contrib/tsearch2/tsearch2--1.0.sql | 3 + contrib/tsearch2/tsearch2--unpackaged--1.0.sql | 3 + contrib/unaccent/unaccent--1.0.sql | 3 + contrib/unaccent/unaccent--unpackaged--1.0.sql | 3 + contrib/uuid-ossp/uuid-ossp--1.0.sql | 3 + contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql | 3 + contrib/xml2/xml2--1.0.sql | 3 + contrib/xml2/xml2--unpackaged--1.0.sql | 3 + doc/src/sgml/extend.sgml | 14 ++++++ src/backend/commands/extension.c | 49 +++++++++++++------- 78 files changed, 274 insertions(+), 17 deletions(-)
pgsql-committers by date: