1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-30 11:03:19 +03:00

Remove support for upgrading extensions from "unpackaged" state.

Andres Freund pointed out that allowing non-superusers to run
"CREATE EXTENSION ... FROM unpackaged" has security risks, since
the unpackaged-to-1.0 scripts don't try to verify that the existing
objects they're modifying are what they expect.  Just attaching such
objects to an extension doesn't seem too dangerous, but some of them
do more than that.

We could have resolved this, perhaps, by still requiring superuser
privilege to use the FROM option.  However, it's fair to ask just what
we're accomplishing by continuing to lug the unpackaged-to-1.0 scripts
forward.  None of them have received any real testing since 9.1 days,
so they may not even work anymore (even assuming that one could still
load the previous "loose" object definitions into a v13 database).
And an installation that's trying to go from pre-9.1 to v13 or later
in one jump is going to have worse compatibility problems than whether
there's a trivial way to convert their contrib modules into extension
style.

Hence, let's just drop both those scripts and the core-code support
for "CREATE EXTENSION ... FROM".

Discussion: https://postgr.es/m/20200213233015.r6rnubcvl4egdh5r@alap3.anarazel.de
This commit is contained in:
Tom Lane
2020-02-19 16:59:14 -05:00
parent 2f9c46a32b
commit 70a7732007
84 changed files with 55 additions and 2428 deletions

View File

@ -14,8 +14,7 @@ DATA = hstore--1.4.sql \
hstore--1.5--1.6.sql \
hstore--1.4--1.5.sql \
hstore--1.3--1.4.sql hstore--1.2--1.3.sql \
hstore--1.1--1.2.sql hstore--1.0--1.1.sql \
hstore--unpackaged--1.0.sql
hstore--1.1--1.2.sql hstore--1.0--1.1.sql
PGFILEDESC = "hstore - key/value pair data type"
HEADERS = hstore.h

View File

@ -1,92 +0,0 @@
/* contrib/hstore/hstore--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION hstore FROM unpackaged" to load this file. \quit
ALTER EXTENSION hstore ADD type hstore;
ALTER EXTENSION hstore ADD function hstore_in(cstring);
ALTER EXTENSION hstore ADD function hstore_out(hstore);
ALTER EXTENSION hstore ADD function hstore_recv(internal);
ALTER EXTENSION hstore ADD function hstore_send(hstore);
ALTER EXTENSION hstore ADD function hstore_version_diag(hstore);
ALTER EXTENSION hstore ADD function fetchval(hstore,text);
ALTER EXTENSION hstore ADD operator ->(hstore,text);
ALTER EXTENSION hstore ADD function slice_array(hstore,text[]);
ALTER EXTENSION hstore ADD operator ->(hstore,text[]);
ALTER EXTENSION hstore ADD function slice(hstore,text[]);
ALTER EXTENSION hstore ADD function isexists(hstore,text);
ALTER EXTENSION hstore ADD function exist(hstore,text);
ALTER EXTENSION hstore ADD operator ?(hstore,text);
ALTER EXTENSION hstore ADD function exists_any(hstore,text[]);
ALTER EXTENSION hstore ADD operator ?|(hstore,text[]);
ALTER EXTENSION hstore ADD function exists_all(hstore,text[]);
ALTER EXTENSION hstore ADD operator ?&(hstore,text[]);
ALTER EXTENSION hstore ADD function isdefined(hstore,text);
ALTER EXTENSION hstore ADD function defined(hstore,text);
ALTER EXTENSION hstore ADD function delete(hstore,text);
ALTER EXTENSION hstore ADD function delete(hstore,text[]);
ALTER EXTENSION hstore ADD function delete(hstore,hstore);
ALTER EXTENSION hstore ADD operator -(hstore,text);
ALTER EXTENSION hstore ADD operator -(hstore,text[]);
ALTER EXTENSION hstore ADD operator -(hstore,hstore);
ALTER EXTENSION hstore ADD function hs_concat(hstore,hstore);
ALTER EXTENSION hstore ADD operator ||(hstore,hstore);
ALTER EXTENSION hstore ADD function hs_contains(hstore,hstore);
ALTER EXTENSION hstore ADD function hs_contained(hstore,hstore);
ALTER EXTENSION hstore ADD operator <@(hstore,hstore);
ALTER EXTENSION hstore ADD operator @>(hstore,hstore);
ALTER EXTENSION hstore ADD operator ~(hstore,hstore);
ALTER EXTENSION hstore ADD operator @(hstore,hstore);
ALTER EXTENSION hstore ADD function tconvert(text,text);
ALTER EXTENSION hstore ADD function hstore(text,text);
ALTER EXTENSION hstore ADD operator =>(text,text);
ALTER EXTENSION hstore ADD function hstore(text[],text[]);
ALTER EXTENSION hstore ADD function hstore(text[]);
ALTER EXTENSION hstore ADD cast (text[] as hstore);
ALTER EXTENSION hstore ADD function hstore(record);
ALTER EXTENSION hstore ADD function hstore_to_array(hstore);
ALTER EXTENSION hstore ADD operator %%(NONE,hstore);
ALTER EXTENSION hstore ADD function hstore_to_matrix(hstore);
ALTER EXTENSION hstore ADD operator %#(NONE,hstore);
ALTER EXTENSION hstore ADD function akeys(hstore);
ALTER EXTENSION hstore ADD function avals(hstore);
ALTER EXTENSION hstore ADD function skeys(hstore);
ALTER EXTENSION hstore ADD function svals(hstore);
ALTER EXTENSION hstore ADD function each(hstore);
ALTER EXTENSION hstore ADD function populate_record(anyelement,hstore);
ALTER EXTENSION hstore ADD operator #=(anyelement,hstore);
ALTER EXTENSION hstore ADD function hstore_eq(hstore,hstore);
ALTER EXTENSION hstore ADD function hstore_ne(hstore,hstore);
ALTER EXTENSION hstore ADD function hstore_gt(hstore,hstore);
ALTER EXTENSION hstore ADD function hstore_ge(hstore,hstore);
ALTER EXTENSION hstore ADD function hstore_lt(hstore,hstore);
ALTER EXTENSION hstore ADD function hstore_le(hstore,hstore);
ALTER EXTENSION hstore ADD function hstore_cmp(hstore,hstore);
ALTER EXTENSION hstore ADD operator <>(hstore,hstore);
ALTER EXTENSION hstore ADD operator =(hstore,hstore);
ALTER EXTENSION hstore ADD operator #>#(hstore,hstore);
ALTER EXTENSION hstore ADD operator #>=#(hstore,hstore);
ALTER EXTENSION hstore ADD operator #<#(hstore,hstore);
ALTER EXTENSION hstore ADD operator #<=#(hstore,hstore);
ALTER EXTENSION hstore ADD operator family btree_hstore_ops using btree;
ALTER EXTENSION hstore ADD operator class btree_hstore_ops using btree;
ALTER EXTENSION hstore ADD function hstore_hash(hstore);
ALTER EXTENSION hstore ADD operator family hash_hstore_ops using hash;
ALTER EXTENSION hstore ADD operator class hash_hstore_ops using hash;
ALTER EXTENSION hstore ADD type ghstore;
ALTER EXTENSION hstore ADD function ghstore_in(cstring);
ALTER EXTENSION hstore ADD function ghstore_out(ghstore);
ALTER EXTENSION hstore ADD function ghstore_compress(internal);
ALTER EXTENSION hstore ADD function ghstore_decompress(internal);
ALTER EXTENSION hstore ADD function ghstore_penalty(internal,internal,internal);
ALTER EXTENSION hstore ADD function ghstore_picksplit(internal,internal);
ALTER EXTENSION hstore ADD function ghstore_union(internal,internal);
ALTER EXTENSION hstore ADD function ghstore_same(internal,internal,internal);
ALTER EXTENSION hstore ADD function ghstore_consistent(internal,internal,integer,oid,internal);
ALTER EXTENSION hstore ADD operator family gist_hstore_ops using gist;
ALTER EXTENSION hstore ADD operator class gist_hstore_ops using gist;
ALTER EXTENSION hstore ADD function gin_extract_hstore(internal,internal);
ALTER EXTENSION hstore ADD function gin_extract_hstore_query(internal,internal,smallint,internal,internal);
ALTER EXTENSION hstore ADD function gin_consistent_hstore(internal,smallint,internal,integer,internal,internal);
ALTER EXTENSION hstore ADD operator family gin_hstore_ops using gin;
ALTER EXTENSION hstore ADD operator class gin_hstore_ops using gin;