pgsql: Throw a useful error message if an extension script file is fed

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Throw a useful error message if an extension script file is fed
Date: 2011-10-12 19:46:58
Message-ID: E1RE4lW-0003tG-RW@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Bruce Momjian 2011-10-12 19:51:32 pgsql: Modify pgindent to use a renamed pg_bsd_indent binary. New feat
Previous Message Bruce Momjian 2011-10-12 18:06:20 Re: pgsql: Add Up/Home link to the top of the HTML doc output.