Commit 70a77320 authored by Tom Lane's avatar Tom Lane

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
parent 2f9c46a3
......@@ -7,7 +7,7 @@ OBJS = \
EXTENSION = btree_gin
DATA = btree_gin--1.0.sql btree_gin--1.0--1.1.sql btree_gin--1.1--1.2.sql \
btree_gin--1.2--1.3.sql btree_gin--unpackaged--1.0.sql
btree_gin--1.2--1.3.sql
PGFILEDESC = "btree_gin - B-tree equivalent GIN operator classes"
REGRESS = install_btree_gin int2 int4 int8 float4 float8 money oid \
......
This diff is collapsed.
......@@ -29,7 +29,7 @@ OBJS = \
btree_uuid.o
EXTENSION = btree_gist
DATA = btree_gist--unpackaged--1.0.sql btree_gist--1.0--1.1.sql \
DATA = btree_gist--1.0--1.1.sql \
btree_gist--1.1--1.2.sql btree_gist--1.2.sql btree_gist--1.2--1.3.sql \
btree_gist--1.3--1.4.sql btree_gist--1.4--1.5.sql
PGFILEDESC = "btree_gist - B-tree equivalent GiST operator classes"
......
This diff is collapsed.
......@@ -8,7 +8,7 @@ DATA = citext--1.4.sql \
citext--1.4--1.5.sql \
citext--1.3--1.4.sql \
citext--1.2--1.3.sql citext--1.1--1.2.sql \
citext--1.0--1.1.sql citext--unpackaged--1.0.sql
citext--1.0--1.1.sql
PGFILEDESC = "citext - case-insensitive character string data type"
REGRESS = citext
......
/* contrib/citext/citext--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION citext FROM unpackaged" to load this file. \quit
ALTER EXTENSION citext ADD type citext;
ALTER EXTENSION citext ADD function citextin(cstring);
ALTER EXTENSION citext ADD function citextout(citext);
ALTER EXTENSION citext ADD function citextrecv(internal);
ALTER EXTENSION citext ADD function citextsend(citext);
ALTER EXTENSION citext ADD function citext(character);
ALTER EXTENSION citext ADD function citext(boolean);
ALTER EXTENSION citext ADD function citext(inet);
ALTER EXTENSION citext ADD cast (citext as text);
ALTER EXTENSION citext ADD cast (citext as character varying);
ALTER EXTENSION citext ADD cast (citext as character);
ALTER EXTENSION citext ADD cast (text as citext);
ALTER EXTENSION citext ADD cast (character varying as citext);
ALTER EXTENSION citext ADD cast (character as citext);
ALTER EXTENSION citext ADD cast (boolean as citext);
ALTER EXTENSION citext ADD cast (inet as citext);
ALTER EXTENSION citext ADD function citext_eq(citext,citext);
ALTER EXTENSION citext ADD function citext_ne(citext,citext);
ALTER EXTENSION citext ADD function citext_lt(citext,citext);
ALTER EXTENSION citext ADD function citext_le(citext,citext);
ALTER EXTENSION citext ADD function citext_gt(citext,citext);
ALTER EXTENSION citext ADD function citext_ge(citext,citext);
ALTER EXTENSION citext ADD operator <>(citext,citext);
ALTER EXTENSION citext ADD operator =(citext,citext);
ALTER EXTENSION citext ADD operator >(citext,citext);
ALTER EXTENSION citext ADD operator >=(citext,citext);
ALTER EXTENSION citext ADD operator <(citext,citext);
ALTER EXTENSION citext ADD operator <=(citext,citext);
ALTER EXTENSION citext ADD function citext_cmp(citext,citext);
ALTER EXTENSION citext ADD function citext_hash(citext);
ALTER EXTENSION citext ADD operator family citext_ops using btree;
ALTER EXTENSION citext ADD operator class citext_ops using btree;
ALTER EXTENSION citext ADD operator family citext_ops using hash;
ALTER EXTENSION citext ADD operator class citext_ops using hash;
ALTER EXTENSION citext ADD function citext_smaller(citext,citext);
ALTER EXTENSION citext ADD function citext_larger(citext,citext);
ALTER EXTENSION citext ADD function min(citext);
ALTER EXTENSION citext ADD function max(citext);
ALTER EXTENSION citext ADD function texticlike(citext,citext);
ALTER EXTENSION citext ADD function texticnlike(citext,citext);
ALTER EXTENSION citext ADD function texticregexeq(citext,citext);
ALTER EXTENSION citext ADD function texticregexne(citext,citext);
ALTER EXTENSION citext ADD operator !~(citext,citext);
ALTER EXTENSION citext ADD operator ~(citext,citext);
ALTER EXTENSION citext ADD operator !~*(citext,citext);
ALTER EXTENSION citext ADD operator ~*(citext,citext);
ALTER EXTENSION citext ADD operator !~~(citext,citext);
ALTER EXTENSION citext ADD operator ~~(citext,citext);
ALTER EXTENSION citext ADD operator !~~*(citext,citext);
ALTER EXTENSION citext ADD operator ~~*(citext,citext);
ALTER EXTENSION citext ADD function texticlike(citext,text);
ALTER EXTENSION citext ADD function texticnlike(citext,text);
ALTER EXTENSION citext ADD function texticregexeq(citext,text);
ALTER EXTENSION citext ADD function texticregexne(citext,text);
ALTER EXTENSION citext ADD operator !~(citext,text);
ALTER EXTENSION citext ADD operator ~(citext,text);
ALTER EXTENSION citext ADD operator !~*(citext,text);
ALTER EXTENSION citext ADD operator ~*(citext,text);
ALTER EXTENSION citext ADD operator !~~(citext,text);
ALTER EXTENSION citext ADD operator ~~(citext,text);
ALTER EXTENSION citext ADD operator !~~*(citext,text);
ALTER EXTENSION citext ADD operator ~~*(citext,text);
ALTER EXTENSION citext ADD function regexp_matches(citext,citext);
ALTER EXTENSION citext ADD function regexp_matches(citext,citext,text);
ALTER EXTENSION citext ADD function regexp_replace(citext,citext,text);
ALTER EXTENSION citext ADD function regexp_replace(citext,citext,text,text);
ALTER EXTENSION citext ADD function regexp_split_to_array(citext,citext);
ALTER EXTENSION citext ADD function regexp_split_to_array(citext,citext,text);
ALTER EXTENSION citext ADD function regexp_split_to_table(citext,citext);
ALTER EXTENSION citext ADD function regexp_split_to_table(citext,citext,text);
ALTER EXTENSION citext ADD function strpos(citext,citext);
ALTER EXTENSION citext ADD function replace(citext,citext,citext);
ALTER EXTENSION citext ADD function split_part(citext,citext,integer);
ALTER EXTENSION citext ADD function translate(citext,citext,text);
--
-- As of 9.1, type citext should be marked collatable. There is no ALTER TYPE
-- command for this, so we have to do it by poking the pg_type entry directly.
-- We have to poke any derived copies in pg_attribute or pg_index as well,
-- as well as those for arrays/domains based directly or indirectly on citext.
-- Notes: 100 is the OID of the "pg_catalog.default" collation --- it seems
-- easier and more reliable to hard-wire that here than to pull it out of
-- pg_collation. Also, we don't need to make pg_depend entries since the
-- default collation is pinned.
--
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
UPDATE pg_catalog.pg_type SET typcollation = 100
FROM typeoids
WHERE oid = typeoids.typoid;
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
UPDATE pg_catalog.pg_attribute SET attcollation = 100
FROM typeoids
WHERE atttypid = typeoids.typoid;
-- Updating the index indcollations is particularly tedious, but since we
-- don't currently allow SQL assignment to individual elements of oidvectors,
-- there's little choice.
UPDATE pg_catalog.pg_index SET indcollation =
pg_catalog.regexp_replace(indcollation::pg_catalog.text, '^0', '100')::pg_catalog.oidvector
WHERE indclass[0] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
SELECT oid FROM pg_catalog.pg_opclass, typeoids
WHERE opcintype = typeoids.typoid
);
UPDATE pg_catalog.pg_index SET indcollation =
pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[1] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
SELECT oid FROM pg_catalog.pg_opclass, typeoids
WHERE opcintype = typeoids.typoid
);
UPDATE pg_catalog.pg_index SET indcollation =
pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[2] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
SELECT oid FROM pg_catalog.pg_opclass, typeoids
WHERE opcintype = typeoids.typoid
);
UPDATE pg_catalog.pg_index SET indcollation =
pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[3] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
SELECT oid FROM pg_catalog.pg_opclass, typeoids
WHERE opcintype = typeoids.typoid
);
UPDATE pg_catalog.pg_index SET indcollation =
pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[4] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
SELECT oid FROM pg_catalog.pg_opclass, typeoids
WHERE opcintype = typeoids.typoid
);
UPDATE pg_catalog.pg_index SET indcollation =
pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[5] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
SELECT oid FROM pg_catalog.pg_opclass, typeoids
WHERE opcintype = typeoids.typoid
);
UPDATE pg_catalog.pg_index SET indcollation =
pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+ \\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[6] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
SELECT oid FROM pg_catalog.pg_opclass, typeoids
WHERE opcintype = typeoids.typoid
);
UPDATE pg_catalog.pg_index SET indcollation =
pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+ \\d+ \\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[7] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
SELECT oid FROM pg_catalog.pg_type, typeoids
WHERE typelem = typoid OR typbasetype = typoid )
SELECT oid FROM pg_catalog.pg_opclass, typeoids
WHERE opcintype = typeoids.typoid
);
-- somewhat arbitrarily, we assume no citext indexes have more than 8 columns
......@@ -8,8 +8,7 @@ OBJS = \
EXTENSION = cube
DATA = cube--1.2.sql cube--1.2--1.3.sql cube--1.3--1.4.sql \
cube--1.1--1.2.sql cube--1.0--1.1.sql \
cube--unpackaged--1.0.sql
cube--1.1--1.2.sql cube--1.0--1.1.sql
PGFILEDESC = "cube - multidimensional cube data type"
HEADERS = cubedata.h
......
/* contrib/cube/cube--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION cube FROM unpackaged" to load this file. \quit
ALTER EXTENSION cube ADD type cube;
ALTER EXTENSION cube ADD function cube_in(cstring);
ALTER EXTENSION cube ADD function cube(double precision[],double precision[]);
ALTER EXTENSION cube ADD function cube(double precision[]);
ALTER EXTENSION cube ADD function cube_out(cube);
ALTER EXTENSION cube ADD function cube_eq(cube,cube);
ALTER EXTENSION cube ADD function cube_ne(cube,cube);
ALTER EXTENSION cube ADD function cube_lt(cube,cube);
ALTER EXTENSION cube ADD function cube_gt(cube,cube);
ALTER EXTENSION cube ADD function cube_le(cube,cube);
ALTER EXTENSION cube ADD function cube_ge(cube,cube);
ALTER EXTENSION cube ADD function cube_cmp(cube,cube);
ALTER EXTENSION cube ADD function cube_contains(cube,cube);
ALTER EXTENSION cube ADD function cube_contained(cube,cube);
ALTER EXTENSION cube ADD function cube_overlap(cube,cube);
ALTER EXTENSION cube ADD function cube_union(cube,cube);
ALTER EXTENSION cube ADD function cube_inter(cube,cube);
ALTER EXTENSION cube ADD function cube_size(cube);
ALTER EXTENSION cube ADD function cube_subset(cube,integer[]);
ALTER EXTENSION cube ADD function cube_distance(cube,cube);
ALTER EXTENSION cube ADD function cube_dim(cube);
ALTER EXTENSION cube ADD function cube_ll_coord(cube,integer);
ALTER EXTENSION cube ADD function cube_ur_coord(cube,integer);
ALTER EXTENSION cube ADD function cube(double precision);
ALTER EXTENSION cube ADD function cube(double precision,double precision);
ALTER EXTENSION cube ADD function cube(cube,double precision);
ALTER EXTENSION cube ADD function cube(cube,double precision,double precision);
ALTER EXTENSION cube ADD function cube_is_point(cube);
ALTER EXTENSION cube ADD function cube_enlarge(cube,double precision,integer);
ALTER EXTENSION cube ADD operator >(cube,cube);
ALTER EXTENSION cube ADD operator >=(cube,cube);
ALTER EXTENSION cube ADD operator <(cube,cube);
ALTER EXTENSION cube ADD operator <=(cube,cube);
ALTER EXTENSION cube ADD operator &&(cube,cube);
ALTER EXTENSION cube ADD operator <>(cube,cube);
ALTER EXTENSION cube ADD operator =(cube,cube);
ALTER EXTENSION cube ADD operator <@(cube,cube);
ALTER EXTENSION cube ADD operator @>(cube,cube);
ALTER EXTENSION cube ADD operator ~(cube,cube);
ALTER EXTENSION cube ADD operator @(cube,cube);
ALTER EXTENSION cube ADD function g_cube_consistent(internal,cube,integer,oid,internal);
ALTER EXTENSION cube ADD function g_cube_compress(internal);
ALTER EXTENSION cube ADD function g_cube_decompress(internal);
ALTER EXTENSION cube ADD function g_cube_penalty(internal,internal,internal);
ALTER EXTENSION cube ADD function g_cube_picksplit(internal,internal);
ALTER EXTENSION cube ADD function g_cube_union(internal,internal);
ALTER EXTENSION cube ADD function g_cube_same(cube,cube,internal);
ALTER EXTENSION cube ADD operator family cube_ops using btree;
ALTER EXTENSION cube ADD operator class cube_ops using btree;
ALTER EXTENSION cube ADD operator family gist_cube_ops using gist;
ALTER EXTENSION cube ADD operator class gist_cube_ops using gist;
......@@ -8,8 +8,7 @@ PG_CPPFLAGS = -I$(libpq_srcdir)
SHLIB_LINK_INTERNAL = $(libpq)
EXTENSION = dblink
DATA = dblink--1.2.sql dblink--1.1--1.2.sql dblink--1.0--1.1.sql \
dblink--unpackaged--1.0.sql
DATA = dblink--1.2.sql dblink--1.1--1.2.sql dblink--1.0--1.1.sql
PGFILEDESC = "dblink - connect to other PostgreSQL databases"
REGRESS = paths dblink
......
/* contrib/dblink/dblink--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION dblink FROM unpackaged" to load this file. \quit
ALTER EXTENSION dblink ADD function dblink_connect(text);
ALTER EXTENSION dblink ADD function dblink_connect(text,text);
ALTER EXTENSION dblink ADD function dblink_connect_u(text);
ALTER EXTENSION dblink ADD function dblink_connect_u(text,text);
ALTER EXTENSION dblink ADD function dblink_disconnect();
ALTER EXTENSION dblink ADD function dblink_disconnect(text);
ALTER EXTENSION dblink ADD function dblink_open(text,text);
ALTER EXTENSION dblink ADD function dblink_open(text,text,boolean);
ALTER EXTENSION dblink ADD function dblink_open(text,text,text);
ALTER EXTENSION dblink ADD function dblink_open(text,text,text,boolean);
ALTER EXTENSION dblink ADD function dblink_fetch(text,integer);
ALTER EXTENSION dblink ADD function dblink_fetch(text,integer,boolean);
ALTER EXTENSION dblink ADD function dblink_fetch(text,text,integer);
ALTER EXTENSION dblink ADD function dblink_fetch(text,text,integer,boolean);
ALTER EXTENSION dblink ADD function dblink_close(text);
ALTER EXTENSION dblink ADD function dblink_close(text,boolean);
ALTER EXTENSION dblink ADD function dblink_close(text,text);
ALTER EXTENSION dblink ADD function dblink_close(text,text,boolean);
ALTER EXTENSION dblink ADD function dblink(text,text);
ALTER EXTENSION dblink ADD function dblink(text,text,boolean);
ALTER EXTENSION dblink ADD function dblink(text);
ALTER EXTENSION dblink ADD function dblink(text,boolean);
ALTER EXTENSION dblink ADD function dblink_exec(text,text);
ALTER EXTENSION dblink ADD function dblink_exec(text,text,boolean);
ALTER EXTENSION dblink ADD function dblink_exec(text);
ALTER EXTENSION dblink ADD function dblink_exec(text,boolean);
ALTER EXTENSION dblink ADD type dblink_pkey_results;
ALTER EXTENSION dblink ADD function dblink_get_pkey(text);
ALTER EXTENSION dblink ADD function dblink_build_sql_insert(text,int2vector,integer,text[],text[]);
ALTER EXTENSION dblink ADD function dblink_build_sql_delete(text,int2vector,integer,text[]);
ALTER EXTENSION dblink ADD function dblink_build_sql_update(text,int2vector,integer,text[],text[]);
ALTER EXTENSION dblink ADD function dblink_current_query();
ALTER EXTENSION dblink ADD function dblink_send_query(text,text);
ALTER EXTENSION dblink ADD function dblink_is_busy(text);
ALTER EXTENSION dblink ADD function dblink_get_result(text);
ALTER EXTENSION dblink ADD function dblink_get_result(text,boolean);
ALTER EXTENSION dblink ADD function dblink_get_connections();
ALTER EXTENSION dblink ADD function dblink_cancel_query(text);
ALTER EXTENSION dblink ADD function dblink_error_message(text);
ALTER EXTENSION dblink ADD function dblink_get_notify();
ALTER EXTENSION dblink ADD function dblink_get_notify(text);
......@@ -6,7 +6,7 @@ OBJS = \
dict_int.o
EXTENSION = dict_int
DATA = dict_int--1.0.sql dict_int--unpackaged--1.0.sql
DATA = dict_int--1.0.sql
PGFILEDESC = "dict_int - add-on dictionary template for full-text search"
REGRESS = dict_int
......
/* contrib/dict_int/dict_int--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION dict_int FROM unpackaged" to load this file. \quit
ALTER EXTENSION dict_int ADD function dintdict_init(internal);
ALTER EXTENSION dict_int ADD function dintdict_lexize(internal,internal,internal,internal);
ALTER EXTENSION dict_int ADD text search template intdict_template;
ALTER EXTENSION dict_int ADD text search dictionary intdict;
......@@ -6,7 +6,7 @@ OBJS = \
dict_xsyn.o
EXTENSION = dict_xsyn
DATA = dict_xsyn--1.0.sql dict_xsyn--unpackaged--1.0.sql
DATA = dict_xsyn--1.0.sql
DATA_TSEARCH = xsyn_sample.rules
PGFILEDESC = "dict_xsyn - add-on dictionary template for full-text search"
......
/* contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION dict_xsyn FROM unpackaged" to load this file. \quit
ALTER EXTENSION dict_xsyn ADD function dxsyn_init(internal);
ALTER EXTENSION dict_xsyn ADD function dxsyn_lexize(internal,internal,internal,internal);
ALTER EXTENSION dict_xsyn ADD text search template xsyn_template;
ALTER EXTENSION dict_xsyn ADD text search dictionary xsyn;
......@@ -3,8 +3,7 @@
MODULES = earthdistance
EXTENSION = earthdistance
DATA = earthdistance--1.1.sql earthdistance--1.0--1.1.sql \
earthdistance--unpackaged--1.0.sql
DATA = earthdistance--1.1.sql earthdistance--1.0--1.1.sql
PGFILEDESC = "earthdistance - calculate distances on the surface of the Earth"
REGRESS = earthdistance
......
/* contrib/earthdistance/earthdistance--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION earthdistance FROM unpackaged" to load this file. \quit
ALTER EXTENSION earthdistance ADD function earth();
ALTER EXTENSION earthdistance ADD type earth;
ALTER EXTENSION earthdistance ADD function sec_to_gc(double precision);
ALTER EXTENSION earthdistance ADD function gc_to_sec(double precision);
ALTER EXTENSION earthdistance ADD function ll_to_earth(double precision,double precision);
ALTER EXTENSION earthdistance ADD function latitude(earth);
ALTER EXTENSION earthdistance ADD function longitude(earth);
ALTER EXTENSION earthdistance ADD function earth_distance(earth,earth);
ALTER EXTENSION earthdistance ADD function earth_box(earth,double precision);
ALTER EXTENSION earthdistance ADD function geo_distance(point,point);
ALTER EXTENSION earthdistance ADD operator <@>(point,point);
......@@ -7,8 +7,7 @@ OBJS = \
fuzzystrmatch.o
EXTENSION = fuzzystrmatch
DATA = fuzzystrmatch--1.1.sql fuzzystrmatch--1.0--1.1.sql \
fuzzystrmatch--unpackaged--1.0.sql
DATA = fuzzystrmatch--1.1.sql fuzzystrmatch--1.0--1.1.sql
PGFILEDESC = "fuzzystrmatch - similarities and distance between strings"
REGRESS = fuzzystrmatch
......
/* contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION fuzzystrmatch FROM unpackaged" to load this file. \quit
ALTER EXTENSION fuzzystrmatch ADD function levenshtein(text,text);
ALTER EXTENSION fuzzystrmatch ADD function levenshtein(text,text,integer,integer,integer);
ALTER EXTENSION fuzzystrmatch ADD function metaphone(text,integer);
ALTER EXTENSION fuzzystrmatch ADD function soundex(text);
ALTER EXTENSION fuzzystrmatch ADD function text_soundex(text);
ALTER EXTENSION fuzzystrmatch ADD function difference(text,text);
ALTER EXTENSION fuzzystrmatch ADD function dmetaphone(text);
ALTER EXTENSION fuzzystrmatch ADD function dmetaphone_alt(text);
-- these functions were not in 9.0
CREATE FUNCTION levenshtein_less_equal (text,text,int) RETURNS int
AS 'MODULE_PATHNAME','levenshtein_less_equal'
LANGUAGE C IMMUTABLE STRICT;
CREATE FUNCTION levenshtein_less_equal (text,text,int,int,int,int) RETURNS int
AS 'MODULE_PATHNAME','levenshtein_less_equal_with_costs'
LANGUAGE C IMMUTABLE STRICT;
......@@ -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
......
/* 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;
# contrib/intagg/Makefile
EXTENSION = intagg
DATA = intagg--1.1.sql intagg--1.0--1.1.sql intagg--unpackaged--1.0.sql
DATA = intagg--1.1.sql intagg--1.0--1.1.sql
ifdef USE_PGXS
PG_CONFIG = pg_config
......
/* contrib/intagg/intagg--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION intagg FROM unpackaged" to load this file. \quit
ALTER EXTENSION intagg ADD function int_agg_state(internal,integer);
ALTER EXTENSION intagg ADD function int_agg_final_array(internal);
ALTER EXTENSION intagg ADD function int_array_aggregate(integer);
ALTER EXTENSION intagg ADD function int_array_enum(integer[]);
......@@ -12,8 +12,7 @@ OBJS = \
_intbig_gist.o
EXTENSION = intarray
DATA = intarray--1.2.sql intarray--1.1--1.2.sql intarray--1.0--1.1.sql \
intarray--unpackaged--1.0.sql
DATA = intarray--1.2.sql intarray--1.1--1.2.sql intarray--1.0--1.1.sql
PGFILEDESC = "intarray - functions and operators for arrays of integers"
REGRESS = _int
......
/* contrib/intarray/intarray--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION intarray FROM unpackaged" to load this file. \quit
ALTER EXTENSION intarray ADD type query_int;
ALTER EXTENSION intarray ADD function bqarr_in(cstring);
ALTER EXTENSION intarray ADD function bqarr_out(query_int);
ALTER EXTENSION intarray ADD function querytree(query_int);
ALTER EXTENSION intarray ADD function boolop(integer[],query_int);
ALTER EXTENSION intarray ADD function rboolop(query_int,integer[]);
ALTER EXTENSION intarray ADD operator ~~(query_int,integer[]);
ALTER EXTENSION intarray ADD operator @@(integer[],query_int);
ALTER EXTENSION intarray ADD function _int_contains(integer[],integer[]);
ALTER EXTENSION intarray ADD function _int_contained(integer[],integer[]);
ALTER EXTENSION intarray ADD function _int_overlap(integer[],integer[]);
ALTER EXTENSION intarray ADD function _int_same(integer[],integer[]);
ALTER EXTENSION intarray ADD function _int_different(integer[],integer[]);
ALTER EXTENSION intarray ADD function _int_union(integer[],integer[]);
ALTER EXTENSION intarray ADD function _int_inter(integer[],integer[]);
ALTER EXTENSION intarray ADD operator &&(integer[],integer[]);
ALTER EXTENSION intarray ADD operator <@(integer[],integer[]);
ALTER EXTENSION intarray ADD operator @>(integer[],integer[]);
ALTER EXTENSION intarray ADD operator ~(integer[],integer[]);
ALTER EXTENSION intarray ADD operator @(integer[],integer[]);
ALTER EXTENSION intarray ADD function intset(integer);
ALTER EXTENSION intarray ADD function icount(integer[]);
ALTER EXTENSION intarray ADD operator #(NONE,integer[]);
ALTER EXTENSION intarray ADD function sort(integer[],text);
ALTER EXTENSION intarray ADD function sort(integer[]);
ALTER EXTENSION intarray ADD function sort_asc(integer[]);
ALTER EXTENSION intarray ADD function sort_desc(integer[]);
ALTER EXTENSION intarray ADD function uniq(integer[]);
ALTER EXTENSION intarray ADD function idx(integer[],integer);
ALTER EXTENSION intarray ADD operator #(integer[],integer);
ALTER EXTENSION intarray ADD function subarray(integer[],integer,integer);
ALTER EXTENSION intarray ADD function subarray(integer[],integer);
ALTER EXTENSION intarray ADD function intarray_push_elem(integer[],integer);
ALTER EXTENSION intarray ADD operator +(integer[],integer);
ALTER EXTENSION intarray ADD function intarray_push_array(integer[],integer[]);
ALTER EXTENSION intarray ADD operator +(integer[],integer[]);
ALTER EXTENSION intarray ADD function intarray_del_elem(integer[],integer);
ALTER EXTENSION intarray ADD operator -(integer[],integer);
ALTER EXTENSION intarray ADD function intset_union_elem(integer[],integer);
ALTER EXTENSION intarray ADD operator |(integer[],integer);
ALTER EXTENSION intarray ADD operator |(integer[],integer[]);
ALTER EXTENSION intarray ADD function intset_subtract(integer[],integer[]);
ALTER EXTENSION intarray ADD operator -(integer[],integer[]);
ALTER EXTENSION intarray ADD operator &(integer[],integer[]);
ALTER EXTENSION intarray ADD function g_int_consistent(internal,integer[],integer,oid,internal);
ALTER EXTENSION intarray ADD function g_int_compress(internal);
ALTER EXTENSION intarray ADD function g_int_decompress(internal);
ALTER EXTENSION intarray ADD function g_int_penalty(internal,internal,internal);
ALTER EXTENSION intarray ADD function g_int_picksplit(internal,internal);
ALTER EXTENSION intarray ADD function g_int_union(internal,internal);
ALTER EXTENSION intarray ADD function g_int_same(integer[],integer[],internal);
ALTER EXTENSION intarray ADD operator family gist__int_ops using gist;
ALTER EXTENSION intarray ADD operator class gist__int_ops using gist;
ALTER EXTENSION intarray ADD type intbig_gkey;
ALTER EXTENSION intarray ADD function _intbig_in(cstring);
ALTER EXTENSION intarray ADD function _intbig_out(intbig_gkey);
ALTER EXTENSION intarray ADD function g_intbig_consistent(internal,internal,integer,oid,internal);
ALTER EXTENSION intarray ADD function g_intbig_compress(internal);
ALTER EXTENSION intarray ADD function g_intbig_decompress(internal);
ALTER EXTENSION intarray ADD function g_intbig_penalty(internal,internal,internal);
ALTER EXTENSION intarray ADD function g_intbig_picksplit(internal,internal);
ALTER EXTENSION intarray ADD function g_intbig_union(internal,internal);
ALTER EXTENSION intarray ADD function g_intbig_same(internal,internal,internal);
ALTER EXTENSION intarray ADD operator family gist__intbig_ops using gist;
ALTER EXTENSION intarray ADD operator class gist__intbig_ops using gist;
ALTER EXTENSION intarray ADD operator family gin__int_ops using gin;
ALTER EXTENSION intarray ADD operator class gin__int_ops using gin;
-- These functions had different signatures in 9.0. We can't just
-- drop and recreate them because they are linked into the GIN opclass,
-- so we need some ugly hacks.
-- First, absorb them into the extension under their old identities.
ALTER EXTENSION intarray ADD function ginint4_queryextract(internal,internal,smallint,internal,internal);
ALTER EXTENSION intarray ADD function ginint4_consistent(internal,smallint,internal,integer,internal,internal);
-- Next, fix the parameter lists by means of direct UPDATE on the pg_proc
-- entries. This is ugly as can be, but there's no other way to do it
-- while preserving the identities (OIDs) of the functions.
UPDATE pg_catalog.pg_proc
SET pronargs = 7, proargtypes = '2281 2281 21 2281 2281 2281 2281'
WHERE oid = 'ginint4_queryextract(internal,internal,smallint,internal,internal)'::pg_catalog.regprocedure;
UPDATE pg_catalog.pg_proc
SET pronargs = 8, proargtypes = '2281 21 2281 23 2281 2281 2281 2281'
WHERE oid = 'ginint4_consistent(internal,smallint,internal,integer,internal,internal)'::pg_catalog.regprocedure;
-- intarray also relies on the core function ginarrayextract, which changed
-- signature in 9.1. To support upgrading, pg_catalog contains entries
-- for ginarrayextract with both 2 and 3 args, and the former is what would
-- have been added to our opclass during initial restore of a 9.0 dump script.
-- Avert your eyes while we hack the pg_amproc entry to make it link to the
-- 3-arg form ...
UPDATE pg_catalog.pg_amproc
SET amproc = 'pg_catalog.ginarrayextract(anyarray,internal,internal)'::pg_catalog.regprocedure
WHERE amprocfamily =
(SELECT oid FROM pg_catalog.pg_opfamily WHERE opfname = 'gin__int_ops' AND
opfnamespace = (SELECT oid FROM pg_catalog.pg_namespace
WHERE nspname = pg_catalog.current_schema()))
AND amproclefttype = 'integer[]'::pg_catalog.regtype
AND amprocrighttype = 'integer[]'::pg_catalog.regtype
AND amprocnum = 2
AND amproc = 'pg_catalog.ginarrayextract(anyarray,internal)'::pg_catalog.regprocedure;
......@@ -4,7 +4,7 @@ MODULES = isn
EXTENSION = isn
DATA = isn--1.1.sql isn--1.1--1.2.sql \
isn--1.0--1.1.sql isn--unpackaged--1.0.sql
isn--1.0--1.1.sql
PGFILEDESC = "isn - data types for international product numbering standards"
# the other .h files are data tables, we don't install those
......
This diff is collapsed.
......@@ -3,7 +3,7 @@
MODULES = lo
EXTENSION = lo
DATA = lo--1.1.sql lo--1.0--1.1.sql lo--unpackaged--1.0.sql
DATA = lo--1.1.sql lo--1.0--1.1.sql
PGFILEDESC = "lo - management for large objects"
REGRESS = lo
......
/* contrib/lo/lo--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION lo FROM unpackaged" to load this file. \quit
ALTER EXTENSION lo ADD domain lo;
ALTER EXTENSION lo ADD function lo_oid(lo);
ALTER EXTENSION lo ADD function lo_manage();
......@@ -15,7 +15,7 @@ OBJS = \
PG_CPPFLAGS = -DLOWER_NODE
EXTENSION = ltree
DATA = ltree--1.1.sql ltree--1.0--1.1.sql ltree--unpackaged--1.0.sql
DATA = ltree--1.1.sql ltree--1.0--1.1.sql
PGFILEDESC = "ltree - hierarchical label data type"
HEADERS = ltree.h
......
/* contrib/ltree/ltree--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION ltree FROM unpackaged" to load this file. \quit
ALTER EXTENSION ltree ADD type ltree;
ALTER EXTENSION ltree ADD function ltree_in(cstring);
ALTER EXTENSION ltree ADD function ltree_out(ltree);
ALTER EXTENSION ltree ADD function ltree_cmp(ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_lt(ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_le(ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_eq(ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_ge(ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_gt(ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_ne(ltree,ltree);
ALTER EXTENSION ltree ADD operator >(ltree,ltree);
ALTER EXTENSION ltree ADD operator >=(ltree,ltree);
ALTER EXTENSION ltree ADD operator <(ltree,ltree);
ALTER EXTENSION ltree ADD operator <=(ltree,ltree);
ALTER EXTENSION ltree ADD operator <>(ltree,ltree);
ALTER EXTENSION ltree ADD operator =(ltree,ltree);
ALTER EXTENSION ltree ADD function subltree(ltree,integer,integer);
ALTER EXTENSION ltree ADD function subpath(ltree,integer,integer);
ALTER EXTENSION ltree ADD function subpath(ltree,integer);
ALTER EXTENSION ltree ADD function index(ltree,ltree);
ALTER EXTENSION ltree ADD function index(ltree,ltree,integer);
ALTER EXTENSION ltree ADD function nlevel(ltree);
ALTER EXTENSION ltree ADD function ltree2text(ltree);
ALTER EXTENSION ltree ADD function text2ltree(text);
ALTER EXTENSION ltree ADD function lca(ltree[]);
ALTER EXTENSION ltree ADD function lca(ltree,ltree);
ALTER EXTENSION ltree ADD function lca(ltree,ltree,ltree);
ALTER EXTENSION ltree ADD function lca(ltree,ltree,ltree,ltree);
ALTER EXTENSION ltree ADD function lca(ltree,ltree,ltree,ltree,ltree);
ALTER EXTENSION ltree ADD function lca(ltree,ltree,ltree,ltree,ltree,ltree);
ALTER EXTENSION ltree ADD function lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree);
ALTER EXTENSION ltree ADD function lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_isparent(ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_risparent(ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_addltree(ltree,ltree);
ALTER EXTENSION ltree ADD function ltree_addtext(ltree,text);
ALTER EXTENSION ltree ADD function ltree_textadd(text,ltree);
ALTER EXTENSION ltree ADD function ltreeparentsel(internal,oid,internal,integer);
ALTER EXTENSION ltree ADD operator <@(ltree,ltree);
ALTER EXTENSION ltree ADD operator @>(ltree,ltree);
ALTER EXTENSION ltree ADD operator ^<@(ltree,ltree);
ALTER EXTENSION ltree ADD operator ^@>(ltree,ltree);
ALTER EXTENSION ltree ADD operator ||(ltree,ltree);
ALTER EXTENSION ltree ADD operator ||(ltree,text);
ALTER EXTENSION ltree ADD operator ||(text,ltree);
ALTER EXTENSION ltree ADD operator family ltree_ops using btree;
ALTER EXTENSION ltree ADD operator class ltree_ops using btree;
ALTER EXTENSION ltree ADD type lquery;
ALTER EXTENSION ltree ADD function lquery_in(cstring);
ALTER EXTENSION ltree ADD function lquery_out(lquery);
ALTER EXTENSION ltree ADD function ltq_regex(ltree,lquery);
ALTER EXTENSION ltree ADD function ltq_rregex(lquery,ltree);
ALTER EXTENSION ltree ADD operator ~(lquery,ltree);
ALTER EXTENSION ltree ADD operator ~(ltree,lquery);
ALTER EXTENSION ltree ADD operator ^~(lquery,ltree);
ALTER EXTENSION ltree ADD operator ^~(ltree,lquery);
ALTER EXTENSION ltree ADD function lt_q_regex(ltree,lquery[]);
ALTER EXTENSION ltree ADD function lt_q_rregex(lquery[],ltree);
ALTER EXTENSION ltree ADD operator ?(lquery[],ltree);
ALTER EXTENSION ltree ADD operator ?(ltree,lquery[]);
ALTER EXTENSION ltree ADD operator ^?(lquery[],ltree);
ALTER EXTENSION ltree ADD operator ^?(ltree,lquery[]);
ALTER EXTENSION ltree ADD type ltxtquery;
ALTER EXTENSION ltree ADD function ltxtq_in(cstring);
ALTER EXTENSION ltree ADD function ltxtq_out(ltxtquery);
ALTER EXTENSION ltree ADD function ltxtq_exec(ltree,ltxtquery);
ALTER EXTENSION ltree ADD function ltxtq_rexec(ltxtquery,ltree);
ALTER EXTENSION ltree ADD operator @(ltxtquery,ltree);
ALTER EXTENSION ltree ADD operator @(ltree,ltxtquery);
ALTER EXTENSION ltree ADD operator ^@(ltxtquery,ltree);
ALTER EXTENSION ltree ADD operator ^@(ltree,ltxtquery);
ALTER EXTENSION ltree ADD type ltree_gist;
ALTER EXTENSION ltree ADD function ltree_gist_in(cstring);
ALTER EXTENSION ltree ADD function ltree_gist_out(ltree_gist);
ALTER EXTENSION ltree ADD function ltree_consistent(internal,internal,smallint,oid,internal);
ALTER EXTENSION ltree ADD function ltree_compress(internal);
ALTER EXTENSION ltree ADD function ltree_decompress(internal);
ALTER EXTENSION ltree ADD function ltree_penalty(internal,internal,internal);
ALTER EXTENSION ltree ADD function ltree_picksplit(internal,internal);
ALTER EXTENSION ltree ADD function ltree_union(internal,internal);
ALTER EXTENSION ltree ADD function ltree_same(internal,internal,internal);
ALTER EXTENSION ltree ADD operator family gist_ltree_ops using gist;
ALTER EXTENSION ltree ADD operator class gist_ltree_ops using gist;
ALTER EXTENSION ltree ADD function _ltree_isparent(ltree[],ltree);
ALTER EXTENSION ltree ADD function _ltree_r_isparent(ltree,ltree[]);
ALTER EXTENSION ltree ADD function _ltree_risparent(ltree[],ltree);
ALTER EXTENSION ltree ADD function _ltree_r_risparent(ltree,ltree[]);
ALTER EXTENSION ltree ADD function _ltq_regex(ltree[],lquery);
ALTER EXTENSION ltree ADD function _ltq_rregex(lquery,ltree[]);
ALTER EXTENSION ltree ADD function _lt_q_regex(ltree[],lquery[]);
ALTER EXTENSION ltree ADD function _lt_q_rregex(lquery[],ltree[]);
ALTER EXTENSION ltree ADD function _ltxtq_exec(ltree[],ltxtquery);
ALTER EXTENSION ltree ADD function _ltxtq_rexec(ltxtquery,ltree[]);
ALTER EXTENSION ltree ADD operator <@(ltree,ltree[]);
ALTER EXTENSION ltree ADD operator @>(ltree[],ltree);
ALTER EXTENSION ltree ADD operator @>(ltree,ltree[]);
ALTER EXTENSION ltree ADD operator <@(ltree[],ltree);
ALTER EXTENSION ltree ADD operator ~(lquery,ltree[]);
ALTER EXTENSION ltree ADD operator ~(ltree[],lquery);
ALTER EXTENSION ltree ADD operator ?(lquery[],ltree[]);
ALTER EXTENSION ltree ADD operator ?(ltree[],lquery[]);
ALTER EXTENSION ltree ADD operator @(ltxtquery,ltree[]);
ALTER EXTENSION ltree ADD operator @(ltree[],ltxtquery);
ALTER EXTENSION ltree ADD operator ^<@(ltree,ltree[]);
ALTER EXTENSION ltree ADD operator ^@>(ltree[],ltree);
ALTER EXTENSION ltree ADD operator ^@>(ltree,ltree[]);
ALTER EXTENSION ltree ADD operator ^<@(ltree[],ltree);
ALTER EXTENSION ltree ADD operator ^~(lquery,ltree[]);
ALTER EXTENSION ltree ADD operator ^~(ltree[],lquery);
ALTER EXTENSION ltree ADD operator ^?(lquery[],ltree[]);
ALTER EXTENSION ltree ADD operator ^?(ltree[],lquery[]);
ALTER EXTENSION ltree ADD operator ^@(ltxtquery,ltree[]);
ALTER EXTENSION ltree ADD operator ^@(ltree[],ltxtquery);
ALTER EXTENSION ltree ADD function _ltree_extract_isparent(ltree[],ltree);
ALTER EXTENSION ltree ADD operator ?@>(ltree[],ltree);
ALTER EXTENSION ltree ADD function _ltree_extract_risparent(ltree[],ltree);
ALTER EXTENSION ltree ADD operator ?<@(ltree[],ltree);
ALTER EXTENSION ltree ADD function _ltq_extract_regex(ltree[],lquery);
ALTER EXTENSION ltree ADD operator ?~(ltree[],lquery);
ALTER EXTENSION ltree ADD function _ltxtq_extract_exec(ltree[],ltxtquery);
ALTER EXTENSION ltree ADD operator ?@(ltree[],ltxtquery);
ALTER EXTENSION ltree ADD function _ltree_consistent(internal,internal,smallint,oid,internal);
ALTER EXTENSION ltree ADD function _ltree_compress(internal);
ALTER EXTENSION ltree ADD function _ltree_penalty(internal,internal,internal);
ALTER EXTENSION ltree ADD function _ltree_picksplit(internal,internal);
ALTER EXTENSION ltree ADD function _ltree_union(internal,internal);
ALTER EXTENSION ltree ADD function _ltree_same(internal,internal,internal);
ALTER EXTENSION ltree ADD operator family gist__ltree_ops using gist;
ALTER EXTENSION ltree ADD operator class gist__ltree_ops using gist;
......@@ -16,7 +16,7 @@ DATA = pageinspect--1.7--1.8.sql pageinspect--1.6--1.7.sql \
pageinspect--1.5.sql pageinspect--1.5--1.6.sql \
pageinspect--1.4--1.5.sql pageinspect--1.3--1.4.sql \
pageinspect--1.2--1.3.sql pageinspect--1.1--1.2.sql \
pageinspect--1.0--1.1.sql pageinspect--unpackaged--1.0.sql
pageinspect--1.0--1.1.sql
PGFILEDESC = "pageinspect - functions to inspect contents of database pages"
REGRESS = page btree brin gin hash
......
/* contrib/pageinspect/pageinspect--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pageinspect FROM unpackaged" to load this file. \quit
DROP FUNCTION heap_page_items(bytea);
CREATE FUNCTION heap_page_items(IN page bytea,
OUT lp smallint,
OUT lp_off smallint,
OUT lp_flags smallint,
OUT lp_len smallint,
OUT t_xmin xid,
OUT t_xmax xid,
OUT t_field3 int4,
OUT t_ctid tid,
OUT t_infomask2 integer,
OUT t_infomask integer,
OUT t_hoff smallint,
OUT t_bits text,
OUT t_oid oid)
RETURNS SETOF record
AS 'MODULE_PATHNAME', 'heap_page_items'
LANGUAGE C STRICT;
ALTER EXTENSION pageinspect ADD function get_raw_page(text,integer);
ALTER EXTENSION pageinspect ADD function get_raw_page(text,text,integer);
ALTER EXTENSION pageinspect ADD function page_header(bytea);
ALTER EXTENSION pageinspect ADD function bt_metap(text);
ALTER EXTENSION pageinspect ADD function bt_page_stats(text,integer);
ALTER EXTENSION pageinspect ADD function bt_page_items(text,integer);
ALTER EXTENSION pageinspect ADD function fsm_page_contents(bytea);
......@@ -7,8 +7,7 @@ OBJS = \
EXTENSION = pg_buffercache
DATA = pg_buffercache--1.2.sql pg_buffercache--1.2--1.3.sql \
pg_buffercache--1.1--1.2.sql pg_buffercache--1.0--1.1.sql \
pg_buffercache--unpackaged--1.0.sql
pg_buffercache--1.1--1.2.sql pg_buffercache--1.0--1.1.sql
PGFILEDESC = "pg_buffercache - monitoring of shared buffer cache in real-time"
ifdef USE_PGXS
......
/* contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pg_buffercache FROM unpackaged" to load this file. \quit
ALTER EXTENSION pg_buffercache ADD function pg_buffercache_pages();
ALTER EXTENSION pg_buffercache ADD view pg_buffercache;
......@@ -7,7 +7,7 @@ OBJS = \
EXTENSION = pg_freespacemap
DATA = pg_freespacemap--1.1.sql pg_freespacemap--1.1--1.2.sql \
pg_freespacemap--1.0--1.1.sql pg_freespacemap--unpackaged--1.0.sql
pg_freespacemap--1.0--1.1.sql
PGFILEDESC = "pg_freespacemap - monitoring of free space map"
ifdef USE_PGXS
......
/* contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pg_freespacemap FROM unpackaged" to load this file. \quit
ALTER EXTENSION pg_freespacemap ADD function pg_freespace(regclass,bigint);
ALTER EXTENSION pg_freespacemap ADD function pg_freespace(regclass);
......@@ -9,8 +9,7 @@ EXTENSION = pg_stat_statements
DATA = pg_stat_statements--1.4.sql pg_stat_statements--1.6--1.7.sql \
pg_stat_statements--1.5--1.6.sql pg_stat_statements--1.4--1.5.sql \
pg_stat_statements--1.3--1.4.sql pg_stat_statements--1.2--1.3.sql \
pg_stat_statements--1.1--1.2.sql pg_stat_statements--1.0--1.1.sql \
pg_stat_statements--unpackaged--1.0.sql
pg_stat_statements--1.1--1.2.sql pg_stat_statements--1.0--1.1.sql
PGFILEDESC = "pg_stat_statements - execution statistics of SQL statements"
LDFLAGS_SL += $(filter -lm, $(LIBS))
......
/* contrib/pg_stat_statements/pg_stat_statements--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pg_stat_statements FROM unpackaged" to load this file. \quit
ALTER EXTENSION pg_stat_statements ADD function pg_stat_statements_reset();
ALTER EXTENSION pg_stat_statements ADD function pg_stat_statements();
ALTER EXTENSION pg_stat_statements ADD view pg_stat_statements;
......@@ -11,7 +11,7 @@ OBJS = \
EXTENSION = pg_trgm
DATA = pg_trgm--1.3--1.4.sql \
pg_trgm--1.3.sql pg_trgm--1.2--1.3.sql pg_trgm--1.1--1.2.sql \
pg_trgm--1.0--1.1.sql pg_trgm--unpackaged--1.0.sql
pg_trgm--1.0--1.1.sql
PGFILEDESC = "pg_trgm - trigram matching"
REGRESS = pg_trgm pg_word_trgm pg_strict_word_trgm
......
......@@ -182,8 +182,8 @@ AS
-- Add operators and support functions that are new in 9.1. We do it like
-- this, leaving them "loose" in the operator family rather than bound into
-- the gist_trgm_ops opclass, because that's the only state that can be
-- reproduced during an upgrade from 9.0 (see pg_trgm--unpackaged--1.0.sql).
-- the gist_trgm_ops opclass, because that's the only state that could be
-- reproduced during an upgrade from 9.0.
ALTER OPERATOR FAMILY gist_trgm_ops USING gist ADD
OPERATOR 2 <-> (text, text) FOR ORDER BY pg_catalog.float_ops,
......
/* contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pg_trgm FROM unpackaged" to load this file. \quit
ALTER EXTENSION pg_trgm ADD function set_limit(real);
ALTER EXTENSION pg_trgm ADD function show_limit();
ALTER EXTENSION pg_trgm ADD function show_trgm(text);
ALTER EXTENSION pg_trgm ADD function similarity(text,text);
ALTER EXTENSION pg_trgm ADD function similarity_op(text,text);
ALTER EXTENSION pg_trgm ADD operator %(text,text);
ALTER EXTENSION pg_trgm ADD type gtrgm;
ALTER EXTENSION pg_trgm ADD function gtrgm_in(cstring);
ALTER EXTENSION pg_trgm ADD function gtrgm_out(gtrgm);
ALTER EXTENSION pg_trgm ADD function gtrgm_consistent(internal,text,integer,oid,internal);
ALTER EXTENSION pg_trgm ADD function gtrgm_compress(internal);
ALTER EXTENSION pg_trgm ADD function gtrgm_decompress(internal);
ALTER EXTENSION pg_trgm ADD function gtrgm_penalty(internal,internal,internal);
ALTER EXTENSION pg_trgm ADD function gtrgm_picksplit(internal,internal);
ALTER EXTENSION pg_trgm ADD function gtrgm_union(bytea,internal);
ALTER EXTENSION pg_trgm ADD function gtrgm_same(gtrgm,gtrgm,internal);
ALTER EXTENSION pg_trgm ADD operator family gist_trgm_ops using gist;
ALTER EXTENSION pg_trgm ADD operator class gist_trgm_ops using gist;
ALTER EXTENSION pg_trgm ADD operator family gin_trgm_ops using gin;
ALTER EXTENSION pg_trgm ADD operator class gin_trgm_ops using gin;
-- These functions had different names/signatures in 9.0. We can't just
-- drop and recreate them because they are linked into the GIN opclass,
-- so we need some ugly hacks.
-- First, absorb them into the extension under their old names.
ALTER EXTENSION pg_trgm ADD function gin_extract_trgm(text, internal);
ALTER EXTENSION pg_trgm ADD function gin_extract_trgm(text, internal, int2, internal, internal);
ALTER EXTENSION pg_trgm ADD function gin_trgm_consistent(internal,smallint,text,integer,internal,internal);
-- Fix the names, and then do CREATE OR REPLACE to adjust the function
-- bodies to be correct (ie, reference the correct C symbol).
ALTER FUNCTION gin_extract_trgm(text, internal)
RENAME TO gin_extract_value_trgm;
CREATE OR REPLACE FUNCTION gin_extract_value_trgm(text, internal)
RETURNS internal
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE STRICT;
ALTER FUNCTION gin_extract_trgm(text, internal, int2, internal, internal)
RENAME TO gin_extract_query_trgm;
CREATE OR REPLACE FUNCTION gin_extract_query_trgm(text, internal, int2, internal, internal)
RETURNS internal
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE STRICT;
-- gin_trgm_consistent didn't change name.
-- Last, fix the parameter lists by means of direct UPDATE on the pg_proc
-- entries. This is ugly as can be, but there's no other way to do it
-- while preserving the identities (OIDs) of the functions.
UPDATE pg_catalog.pg_proc
SET pronargs = 7, proargtypes = '25 2281 21 2281 2281 2281 2281'
WHERE oid = 'gin_extract_query_trgm(text,internal,int2,internal,internal)'::pg_catalog.regprocedure;
UPDATE pg_catalog.pg_proc
SET pronargs = 8, proargtypes = '2281 21 25 23 2281 2281 2281 2281'
WHERE oid = 'gin_trgm_consistent(internal,smallint,text,integer,internal,internal)'::pg_catalog.regprocedure;
-- These were not in 9.0:
CREATE FUNCTION similarity_dist(text,text)
RETURNS float4
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE OPERATOR <-> (
LEFTARG = text,
RIGHTARG = text,
PROCEDURE = similarity_dist,
COMMUTATOR = '<->'
);
CREATE FUNCTION gtrgm_distance(internal,text,int,oid)
RETURNS float8
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE STRICT;
-- Add new stuff to the operator classes. See comment in pg_trgm--1.0.sql.
ALTER OPERATOR FAMILY gist_trgm_ops USING gist ADD
OPERATOR 2 <-> (text, text) FOR ORDER BY pg_catalog.float_ops,
OPERATOR 3 pg_catalog.~~ (text, text),
OPERATOR 4 pg_catalog.~~* (text, text),
FUNCTION 8 (text, text) gtrgm_distance (internal, text, int, oid);
ALTER OPERATOR FAMILY gin_trgm_ops USING gin ADD
OPERATOR 3 pg_catalog.~~ (text, text),
OPERATOR 4 pg_catalog.~~* (text, text);
......@@ -46,7 +46,7 @@ OBJS = \
EXTENSION = pgcrypto
DATA = pgcrypto--1.3.sql pgcrypto--1.2--1.3.sql pgcrypto--1.1--1.2.sql \
pgcrypto--1.0--1.1.sql pgcrypto--unpackaged--1.0.sql
pgcrypto--1.0--1.1.sql
PGFILEDESC = "pgcrypto - cryptographic functions"
REGRESS = init md5 sha1 hmac-md5 hmac-sha1 blowfish rijndael \
......
/* contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pgcrypto FROM unpackaged" to load this file. \quit
ALTER EXTENSION pgcrypto ADD function digest(text,text);
ALTER EXTENSION pgcrypto ADD function digest(bytea,text);
ALTER EXTENSION pgcrypto ADD function hmac(text,text,text);
ALTER EXTENSION pgcrypto ADD function hmac(bytea,bytea,text);
ALTER EXTENSION pgcrypto ADD function crypt(text,text);
ALTER EXTENSION pgcrypto ADD function gen_salt(text);
ALTER EXTENSION pgcrypto ADD function gen_salt(text,integer);
ALTER EXTENSION pgcrypto ADD function encrypt(bytea,bytea,text);
ALTER EXTENSION pgcrypto ADD function decrypt(bytea,bytea,text);
ALTER EXTENSION pgcrypto ADD function encrypt_iv(bytea,bytea,bytea,text);
ALTER EXTENSION pgcrypto ADD function decrypt_iv(bytea,bytea,bytea,text);
ALTER EXTENSION pgcrypto ADD function gen_random_bytes(integer);
ALTER EXTENSION pgcrypto ADD function pgp_sym_encrypt(text,text);
ALTER EXTENSION pgcrypto ADD function pgp_sym_encrypt_bytea(bytea,text);
ALTER EXTENSION pgcrypto ADD function pgp_sym_encrypt(text,text,text);
ALTER EXTENSION pgcrypto ADD function pgp_sym_encrypt_bytea(bytea,text,text);
ALTER EXTENSION pgcrypto ADD function pgp_sym_decrypt(bytea,text);
ALTER EXTENSION pgcrypto ADD function pgp_sym_decrypt_bytea(bytea,text);
ALTER EXTENSION pgcrypto ADD function pgp_sym_decrypt(bytea,text,text);
ALTER EXTENSION pgcrypto ADD function pgp_sym_decrypt_bytea(bytea,text,text);
ALTER EXTENSION pgcrypto ADD function pgp_pub_encrypt(text,bytea);
ALTER EXTENSION pgcrypto ADD function pgp_pub_encrypt_bytea(bytea,bytea);
ALTER EXTENSION pgcrypto ADD function pgp_pub_encrypt(text,bytea,text);
ALTER EXTENSION pgcrypto ADD function pgp_pub_encrypt_bytea(bytea,bytea,text);
ALTER EXTENSION pgcrypto ADD function pgp_pub_decrypt(bytea,bytea);
ALTER EXTENSION pgcrypto ADD function pgp_pub_decrypt_bytea(bytea,bytea);
ALTER EXTENSION pgcrypto ADD function pgp_pub_decrypt(bytea,bytea,text);
ALTER EXTENSION pgcrypto ADD function pgp_pub_decrypt_bytea(bytea,bytea,text);
ALTER EXTENSION pgcrypto ADD function pgp_pub_decrypt(bytea,bytea,text,text);
ALTER EXTENSION pgcrypto ADD function pgp_pub_decrypt_bytea(bytea,bytea,text,text);
ALTER EXTENSION pgcrypto ADD function pgp_key_id(bytea);
ALTER EXTENSION pgcrypto ADD function armor(bytea);
ALTER EXTENSION pgcrypto ADD function dearmor(text);
......@@ -6,8 +6,7 @@ OBJS = \
pgrowlocks.o
EXTENSION = pgrowlocks
DATA = pgrowlocks--1.2.sql pgrowlocks--1.1--1.2.sql pgrowlocks--1.0--1.1.sql \
pgrowlocks--unpackaged--1.0.sql
DATA = pgrowlocks--1.2.sql pgrowlocks--1.1--1.2.sql pgrowlocks--1.0--1.1.sql
PGFILEDESC = "pgrowlocks - display row locking information"
ifdef USE_PGXS
......
/* contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pgrowlocks FROM unpackaged" to load this file. \quit
ALTER EXTENSION pgrowlocks ADD function pgrowlocks(text);
......@@ -10,8 +10,7 @@ OBJS = \
EXTENSION = pgstattuple
DATA = pgstattuple--1.4.sql pgstattuple--1.4--1.5.sql \
pgstattuple--1.3--1.4.sql pgstattuple--1.2--1.3.sql \
pgstattuple--1.1--1.2.sql pgstattuple--1.0--1.1.sql \
pgstattuple--unpackaged--1.0.sql
pgstattuple--1.1--1.2.sql pgstattuple--1.0--1.1.sql
PGFILEDESC = "pgstattuple - tuple-level statistics"
REGRESS = pgstattuple
......
/* contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pgstattuple FROM unpackaged" to load this file. \quit
ALTER EXTENSION pgstattuple ADD function pgstattuple(text);
ALTER EXTENSION pgstattuple ADD function pgstattuple(oid);
ALTER EXTENSION pgstattuple ADD function pgstatindex(text);
ALTER EXTENSION pgstattuple ADD function pg_relpages(text);
......@@ -8,7 +8,7 @@ OBJS = \
EXTENSION = seg
DATA = seg--1.1.sql seg--1.1--1.2.sql seg--1.2--1.3.sql \
seg--1.0--1.1.sql seg--unpackaged--1.0.sql
seg--1.0--1.1.sql
PGFILEDESC = "seg - line segment data type"
HEADERS = segdata.h
......
/* contrib/seg/seg--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION seg FROM unpackaged" to load this file. \quit
ALTER EXTENSION seg ADD type seg;
ALTER EXTENSION seg ADD function seg_in(cstring);
ALTER EXTENSION seg ADD function seg_out(seg);
ALTER EXTENSION seg ADD function seg_over_left(seg,seg);
ALTER EXTENSION seg ADD function seg_over_right(seg,seg);
ALTER EXTENSION seg ADD function seg_left(seg,seg);
ALTER EXTENSION seg ADD function seg_right(seg,seg);
ALTER EXTENSION seg ADD function seg_lt(seg,seg);
ALTER EXTENSION seg ADD function seg_le(seg,seg);
ALTER EXTENSION seg ADD function seg_gt(seg,seg);
ALTER EXTENSION seg ADD function seg_ge(seg,seg);
ALTER EXTENSION seg ADD function seg_contains(seg,seg);
ALTER EXTENSION seg ADD function seg_contained(seg,seg);
ALTER EXTENSION seg ADD function seg_overlap(seg,seg);
ALTER EXTENSION seg ADD function seg_same(seg,seg);
ALTER EXTENSION seg ADD function seg_different(seg,seg);
ALTER EXTENSION seg ADD function seg_cmp(seg,seg);
ALTER EXTENSION seg ADD function seg_union(seg,seg);
ALTER EXTENSION seg ADD function seg_inter(seg,seg);
ALTER EXTENSION seg ADD function seg_size(seg);
ALTER EXTENSION seg ADD function seg_center(seg);
ALTER EXTENSION seg ADD function seg_upper(seg);
ALTER EXTENSION seg ADD function seg_lower(seg);
ALTER EXTENSION seg ADD operator >(seg,seg);
ALTER EXTENSION seg ADD operator >=(seg,seg);
ALTER EXTENSION seg ADD operator <(seg,seg);
ALTER EXTENSION seg ADD operator <=(seg,seg);
ALTER EXTENSION seg ADD operator >>(seg,seg);
ALTER EXTENSION seg ADD operator <<(seg,seg);
ALTER EXTENSION seg ADD operator &<(seg,seg);
ALTER EXTENSION seg ADD operator &&(seg,seg);
ALTER EXTENSION seg ADD operator &>(seg,seg);
ALTER EXTENSION seg ADD operator <>(seg,seg);
ALTER EXTENSION seg ADD operator =(seg,seg);
ALTER EXTENSION seg ADD operator <@(seg,seg);
ALTER EXTENSION seg ADD operator @>(seg,seg);
ALTER EXTENSION seg ADD operator ~(seg,seg);
ALTER EXTENSION seg ADD operator @(seg,seg);
ALTER EXTENSION seg ADD function gseg_consistent(internal,seg,integer,oid,internal);
ALTER EXTENSION seg ADD function gseg_compress(internal);
ALTER EXTENSION seg ADD function gseg_decompress(internal);
ALTER EXTENSION seg ADD function gseg_penalty(internal,internal,internal);
ALTER EXTENSION seg ADD function gseg_picksplit(internal,internal);
ALTER EXTENSION seg ADD function gseg_union(internal,internal);
ALTER EXTENSION seg ADD function gseg_same(seg,seg,internal);
ALTER EXTENSION seg ADD operator family seg_ops using btree;
ALTER EXTENSION seg ADD operator class seg_ops using btree;
ALTER EXTENSION seg ADD operator family gist_seg_ops using gist;
ALTER EXTENSION seg ADD operator class gist_seg_ops using gist;
......@@ -4,10 +4,10 @@ MODULES = autoinc insert_username moddatetime refint
EXTENSION = autoinc insert_username moddatetime refint
DATA = autoinc--1.0.sql autoinc--unpackaged--1.0.sql \
insert_username--1.0.sql insert_username--unpackaged--1.0.sql \
moddatetime--1.0.sql moddatetime--unpackaged--1.0.sql \
refint--1.0.sql refint--unpackaged--1.0.sql
DATA = autoinc--1.0.sql \
insert_username--1.0.sql \
moddatetime--1.0.sql \
refint--1.0.sql
PGFILEDESC = "spi - examples of using SPI and triggers"
DOCS = $(addsuffix .example, $(MODULES))
......
/* contrib/spi/autoinc--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION autoinc FROM unpackaged" to load this file. \quit
ALTER EXTENSION autoinc ADD function autoinc();
/* contrib/spi/insert_username--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION insert_username FROM unpackaged" to load this file. \quit
ALTER EXTENSION insert_username ADD function insert_username();
/* contrib/spi/moddatetime--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION moddatetime FROM unpackaged" to load this file. \quit
ALTER EXTENSION moddatetime ADD function moddatetime();
/* contrib/spi/refint--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION refint FROM unpackaged" to load this file. \quit
ALTER EXTENSION refint ADD function check_primary_key();
ALTER EXTENSION refint ADD function check_foreign_key();
......@@ -6,8 +6,7 @@ OBJS = \
sslinfo.o
EXTENSION = sslinfo
DATA = sslinfo--1.2.sql sslinfo--1.1--1.2.sql sslinfo--1.0--1.1.sql \
sslinfo--unpackaged--1.0.sql
DATA = sslinfo--1.2.sql sslinfo--1.1--1.2.sql sslinfo--1.0--1.1.sql
PGFILEDESC = "sslinfo - information about client SSL certificate"
ifdef USE_PGXS
......
/* contrib/sslinfo/sslinfo--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION sslinfo FROM unpackaged" to load this file. \quit
ALTER EXTENSION sslinfo ADD function ssl_client_serial();
ALTER EXTENSION sslinfo ADD function ssl_is_used();
ALTER EXTENSION sslinfo ADD function ssl_client_cert_present();
ALTER EXTENSION sslinfo ADD function ssl_client_dn_field(text);
ALTER EXTENSION sslinfo ADD function ssl_issuer_field(text);
ALTER EXTENSION sslinfo ADD function ssl_client_dn();
ALTER EXTENSION sslinfo ADD function ssl_issuer_dn();
-- These functions were not in 9.0:
CREATE FUNCTION ssl_version() RETURNS text
AS 'MODULE_PATHNAME', 'ssl_version'
LANGUAGE C STRICT;
CREATE FUNCTION ssl_cipher() RETURNS text
AS 'MODULE_PATHNAME', 'ssl_cipher'
LANGUAGE C STRICT;
......@@ -3,7 +3,7 @@
MODULES = tablefunc
EXTENSION = tablefunc
DATA = tablefunc--1.0.sql tablefunc--unpackaged--1.0.sql
DATA = tablefunc--1.0.sql
PGFILEDESC = "tablefunc - various functions that return tables"
REGRESS = tablefunc
......
/* contrib/tablefunc/tablefunc--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION tablefunc FROM unpackaged" to load this file. \quit
ALTER EXTENSION tablefunc ADD function normal_rand(integer,double precision,double precision);
ALTER EXTENSION tablefunc ADD function crosstab(text);
ALTER EXTENSION tablefunc ADD type tablefunc_crosstab_2;
ALTER EXTENSION tablefunc ADD type tablefunc_crosstab_3;
ALTER EXTENSION tablefunc ADD type tablefunc_crosstab_4;
ALTER EXTENSION tablefunc ADD function crosstab2(text);
ALTER EXTENSION tablefunc ADD function crosstab3(text);
ALTER EXTENSION tablefunc ADD function crosstab4(text);
ALTER EXTENSION tablefunc ADD function crosstab(text,integer);
ALTER EXTENSION tablefunc ADD function crosstab(text,text);
ALTER EXTENSION tablefunc ADD function connectby(text,text,text,text,integer,text);
ALTER EXTENSION tablefunc ADD function connectby(text,text,text,text,integer);
ALTER EXTENSION tablefunc ADD function connectby(text,text,text,text,text,integer,text);
ALTER EXTENSION tablefunc ADD function connectby(text,text,text,text,text,integer);
......@@ -6,7 +6,7 @@ OBJS = \
unaccent.o
EXTENSION = unaccent
DATA = unaccent--1.1.sql unaccent--1.0--1.1.sql unaccent--unpackaged--1.0.sql
DATA = unaccent--1.1.sql unaccent--1.0--1.1.sql
DATA_TSEARCH = unaccent.rules
PGFILEDESC = "unaccent - text search dictionary that removes accents"
......
/* contrib/unaccent/unaccent--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION unaccent FROM unpackaged" to load this file. \quit
ALTER EXTENSION unaccent ADD function unaccent(regdictionary,text);
ALTER EXTENSION unaccent ADD function unaccent(text);
ALTER EXTENSION unaccent ADD function unaccent_init(internal);
ALTER EXTENSION unaccent ADD function unaccent_lexize(internal,internal,internal,internal);
ALTER EXTENSION unaccent ADD text search template unaccent;
ALTER EXTENSION unaccent ADD text search dictionary unaccent;
-- These functions are marked as stable in 9.1, were not before:
ALTER FUNCTION unaccent(regdictionary, text) STABLE;
ALTER FUNCTION unaccent(text) STABLE;
......@@ -7,7 +7,7 @@ OBJS = \
uuid-ossp.o
EXTENSION = uuid-ossp
DATA = uuid-ossp--1.1.sql uuid-ossp--1.0--1.1.sql uuid-ossp--unpackaged--1.0.sql
DATA = uuid-ossp--1.1.sql uuid-ossp--1.0--1.1.sql
PGFILEDESC = "uuid-ossp - UUID generation"
REGRESS = uuid_ossp
......
/* contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use '''CREATE EXTENSION "uuid-ossp" FROM unpackaged''' to load this file. \quit
ALTER EXTENSION "uuid-ossp" ADD function uuid_nil();
ALTER EXTENSION "uuid-ossp" ADD function uuid_ns_dns();
ALTER EXTENSION "uuid-ossp" ADD function uuid_ns_url();
ALTER EXTENSION "uuid-ossp" ADD function uuid_ns_oid();
ALTER EXTENSION "uuid-ossp" ADD function uuid_ns_x500();
ALTER EXTENSION "uuid-ossp" ADD function uuid_generate_v1();
ALTER EXTENSION "uuid-ossp" ADD function uuid_generate_v1mc();
ALTER EXTENSION "uuid-ossp" ADD function uuid_generate_v3(namespace uuid, name text);
ALTER EXTENSION "uuid-ossp" ADD function uuid_generate_v4();
ALTER EXTENSION "uuid-ossp" ADD function uuid_generate_v5(namespace uuid, name text);
......@@ -7,7 +7,7 @@ OBJS = \
xslt_proc.o
EXTENSION = xml2
DATA = xml2--1.1.sql xml2--1.0--1.1.sql xml2--unpackaged--1.0.sql
DATA = xml2--1.1.sql xml2--1.0--1.1.sql
PGFILEDESC = "xml2 - XPath querying and XSLT"
REGRESS = xml2
......
/* contrib/xml2/xml2--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION xml2 FROM unpackaged" to load this file. \quit
ALTER EXTENSION xml2 ADD function xslt_process(text,text);
ALTER EXTENSION xml2 ADD function xslt_process(text,text,text);
ALTER EXTENSION xml2 ADD function xpath_table(text,text,text,text,text);
ALTER EXTENSION xml2 ADD function xpath_nodeset(text,text,text);
ALTER EXTENSION xml2 ADD function xpath_nodeset(text,text);
ALTER EXTENSION xml2 ADD function xpath_list(text,text);
ALTER EXTENSION xml2 ADD function xpath_list(text,text,text);
ALTER EXTENSION xml2 ADD function xpath_bool(text,text);
ALTER EXTENSION xml2 ADD function xpath_number(text,text);
ALTER EXTENSION xml2 ADD function xpath_nodeset(text,text,text,text);
ALTER EXTENSION xml2 ADD function xpath_string(text,text);
ALTER EXTENSION xml2 ADD function xml_encode_special_chars(text);
ALTER EXTENSION xml2 ADD function xml_valid(text);
-- xml_valid is now an alias for core xml_is_well_formed()
CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool
AS 'xml_is_well_formed'
LANGUAGE INTERNAL STRICT STABLE;
-- xml_is_well_formed is now in core, not needed in extension.
-- be careful to drop extension's copy not core's.
DROP FUNCTION @extschema@.xml_is_well_formed(text);
......@@ -2,5 +2,5 @@
comment = 'XPath querying and XSLT'
default_version = '1.1'
module_pathname = '$libdir/pgxml'
# non-relocatable because xml2--unpackaged--1.0.sql needs to use @extschema@
# XXX do we still need this to be non-relocatable?
relocatable = false
......@@ -87,22 +87,6 @@ CREATE EXTENSION <replaceable>module_name</replaceable>;
target schema, which in turn defaults to <literal>public</literal>.
</para>
<para>
If your database was brought forward by dump and reload from a pre-9.1
version of <productname>PostgreSQL</productname>, and you had been using the pre-9.1
version of the module in it, you should instead do
<programlisting>
CREATE EXTENSION <replaceable>module_name</replaceable> FROM unpackaged;
</programlisting>
This will update the pre-9.1 objects of the module into a proper
<firstterm>extension</firstterm> object. Future updates to the module will be
managed by <xref linkend="sql-alterextension"/>.
For more information about extension updates, see
<xref linkend="extend-extensions"/>.
</para>
<para>
Note, however, that some of these modules are not <quote>extensions</quote>
in this sense, but are loaded into the server in some other way, for instance
......
......@@ -916,33 +916,6 @@ SELECT pg_catalog.pg_extension_config_dump('my_config', 'WHERE NOT standard_entr
target (new) version.
</para>
<para>
The update mechanism can be used to solve an important special case:
converting a <quote>loose</quote> collection of objects into an extension.
Before the extension mechanism was added to
<productname>PostgreSQL</productname> (in 9.1), many people wrote
extension modules that simply created assorted unpackaged objects.
Given an existing database containing such objects, how can we convert
the objects into a properly packaged extension? Dropping them and then
doing a plain <command>CREATE EXTENSION</command> is one way, but it's not
desirable if the objects have dependencies (for example, if there are
table columns of a data type created by the extension). The way to fix
this situation is to create an empty extension, then use <command>ALTER
EXTENSION ADD</command> to attach each pre-existing object to the extension,
then finally create any new objects that are in the current extension
version but were not in the unpackaged release. <command>CREATE
EXTENSION</command> supports this case with its <literal>FROM</literal> <replaceable
class="parameter">old_version</replaceable> option, which causes it to not run the
normal installation script for the target version, but instead the update
script named
<literal><replaceable>extension</replaceable>--<replaceable>old_version</replaceable>--<replaceable>target_version</replaceable>.sql</literal>.
The choice of the dummy version name to use as <replaceable
class="parameter">old_version</replaceable> is up to the extension author, though
<literal>unpackaged</literal> is a common convention. If you have multiple
prior versions you need to be able to update into extension style, use
multiple dummy version names to identify them.
</para>
<para>
<command>ALTER EXTENSION</command> is able to execute sequences of update
script files to achieve a requested update. For example, if only
......
......@@ -24,7 +24,6 @@ PostgreSQL documentation
CREATE EXTENSION [ IF NOT EXISTS ] <replaceable class="parameter">extension_name</replaceable>
[ WITH ] [ SCHEMA <replaceable class="parameter">schema_name</replaceable> ]
[ VERSION <replaceable class="parameter">version</replaceable> ]
[ FROM <replaceable class="parameter">old_version</replaceable> ]
[ CASCADE ]
</synopsis>
</refsynopsisdiv>
......@@ -48,8 +47,9 @@ CREATE EXTENSION [ IF NOT EXISTS ] <replaceable class="parameter">extension_name
<para>
The user who runs <command>CREATE EXTENSION</command> becomes the
owner of the extension for purposes of later privilege checks, as well
as the owner of any objects created by the extension's script.
owner of the extension for purposes of later privilege checks, and
normally also becomes the owner of any objects created by the
extension's script.
</para>
<para>
......@@ -141,33 +141,6 @@ CREATE EXTENSION [ IF NOT EXISTS ] <replaceable class="parameter">extension_name
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="parameter">old_version</replaceable></term>
<listitem>
<para>
<literal>FROM</literal> <replaceable class="parameter">old_version</replaceable>
must be specified when, and only when, you are attempting to install
an extension that replaces an <quote>old style</quote> module that is just
a collection of objects not packaged into an extension. This option
causes <command>CREATE EXTENSION</command> to run an alternative installation
script that absorbs the existing objects into the extension, instead
of creating new objects. Be careful that <literal>SCHEMA</literal> specifies
the schema containing these pre-existing objects.
</para>
<para>
The value to use for <replaceable
class="parameter">old_version</replaceable> is determined by the
extension's author, and might vary if there is more than one version
of the old-style module that can be upgraded into an extension.
For the standard additional modules supplied with pre-9.1
<productname>PostgreSQL</productname>, use <literal>unpackaged</literal>
for <replaceable class="parameter">old_version</replaceable> when
updating a module to extension style.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>CASCADE</literal></term>
<listitem>
......@@ -220,16 +193,6 @@ CREATE EXTENSION [ IF NOT EXISTS ] <replaceable class="parameter">extension_name
CREATE EXTENSION hstore;
</programlisting>
</para>
<para>
Update a pre-9.1 installation of <literal>hstore</literal> into
extension style:
<programlisting>
CREATE EXTENSION hstore SCHEMA public FROM unpackaged;
</programlisting>
Be careful to specify the schema in which you installed the existing
<literal>hstore</literal> objects.
</para>
</refsect1>
<refsect1>
......
......@@ -1357,7 +1357,6 @@ static ObjectAddress
CreateExtensionInternal(char *extensionName,
char *schemaName,
const char *versionName,
const char *oldVersionName,
bool cascade,
List *parents,
bool is_create)
......@@ -1367,6 +1366,8 @@ CreateExtensionInternal(char *extensionName,
Oid extowner = GetUserId();
ExtensionControlFile *pcontrol;
ExtensionControlFile *control;
char *filename;
struct stat fst;
List *updateVersions;
List *requiredExtensions;
List *requiredSchemas;
......@@ -1401,56 +1402,6 @@ CreateExtensionInternal(char *extensionName,
* does what is needed, we try to find a sequence of update scripts that
* will get us there.
*/
if (oldVersionName)
{
/*
* "FROM old_version" was specified, indicating that we're trying to
* update from some unpackaged version of the extension. Locate a
* series of update scripts that will do it.
*/
check_valid_version_name(oldVersionName);
if (strcmp(oldVersionName, versionName) == 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("FROM version must be different from installation target version \"%s\"",
versionName)));
updateVersions = identify_update_path(pcontrol,
oldVersionName,
versionName);
if (list_length(updateVersions) == 1)
{
/*
* Simple case where there's just one update script to run. We
* will not need any follow-on update steps.
*/
Assert(strcmp((char *) linitial(updateVersions), versionName) == 0);
updateVersions = NIL;
}
else
{
/*
* Multi-step sequence. We treat this as installing the version
* that is the target of the first script, followed by successive
* updates to the later versions.
*/
versionName = (char *) linitial(updateVersions);
updateVersions = list_delete_first(updateVersions);
}
}
else
{
/*
* No FROM, so we're installing from scratch. If there is an install
* script for the desired version, we only need to run that one.
*/
char *filename;
struct stat fst;
oldVersionName = NULL;
filename = get_extension_script_filename(pcontrol, NULL, versionName);
if (stat(filename, &fst) == 0)
{
......@@ -1484,7 +1435,6 @@ CreateExtensionInternal(char *extensionName,
/* Otherwise, install best starting point and then upgrade */
versionName = evi_start->name;
}
}
/*
* Fetch control parameters for installation target version
......@@ -1624,7 +1574,7 @@ CreateExtensionInternal(char *extensionName,
* Execute the installation script file
*/
execute_extension_script(extensionOid, control,
oldVersionName, versionName,
NULL, versionName,
requiredSchemas,
schemaName, schemaOid);
......@@ -1691,7 +1641,6 @@ get_required_extension(char *reqExtensionName,
addr = CreateExtensionInternal(reqExtensionName,
origSchemaName,
NULL,
NULL,
cascade,
cascade_parents,
is_create);
......@@ -1719,11 +1668,9 @@ CreateExtension(ParseState *pstate, CreateExtensionStmt *stmt)
{
DefElem *d_schema = NULL;
DefElem *d_new_version = NULL;
DefElem *d_old_version = NULL;
DefElem *d_cascade = NULL;
char *schemaName = NULL;
char *versionName = NULL;
char *oldVersionName = NULL;
bool cascade = false;
ListCell *lc;
......@@ -1787,16 +1734,6 @@ CreateExtension(ParseState *pstate, CreateExtensionStmt *stmt)
d_new_version = defel;
versionName = defGetString(d_new_version);
}
else if (strcmp(defel->defname, "old_version") == 0)
{
if (d_old_version)
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg("conflicting or redundant options"),
parser_errposition(pstate, defel->location)));
d_old_version = defel;
oldVersionName = defGetString(d_old_version);
}
else if (strcmp(defel->defname, "cascade") == 0)
{
if (d_cascade)
......@@ -1815,7 +1752,6 @@ CreateExtension(ParseState *pstate, CreateExtensionStmt *stmt)
return CreateExtensionInternal(stmt->extname,
schemaName,
versionName,
oldVersionName,
cascade,
NIL,
true);
......
......@@ -4460,7 +4460,7 @@ DropTableSpaceStmt: DROP TABLESPACE name
*
* QUERY:
* CREATE EXTENSION extension
* [ WITH ] [ SCHEMA schema ] [ VERSION version ] [ FROM oldversion ]
* [ WITH ] [ SCHEMA schema ] [ VERSION version ]
*
*****************************************************************************/
......@@ -4500,7 +4500,10 @@ create_extension_opt_item:
}
| FROM NonReservedWord_or_Sconst
{
$$ = makeDefElem("old_version", (Node *)makeString($2), @1);
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("CREATE EXTENSION ... FROM is no longer supported"),
parser_errposition(@1)));
}
| CASCADE
{
......
......@@ -27,8 +27,8 @@ NAME = plperl
OBJS = plperl.o SPI.o Util.o $(WIN32RES)
DATA = plperl.control plperl--1.0.sql plperl--unpackaged--1.0.sql \
plperlu.control plperlu--1.0.sql plperlu--unpackaged--1.0.sql
DATA = plperl.control plperl--1.0.sql \
plperlu.control plperlu--1.0.sql
PERLCHUNKS = plc_perlboot.pl plc_trusted.pl
......
/* src/pl/plperl/plperl--unpackaged--1.0.sql */
ALTER EXTENSION plperl ADD LANGUAGE plperl;
-- ALTER ADD LANGUAGE doesn't pick up the support functions, so we have to.
ALTER EXTENSION plperl ADD FUNCTION plperl_call_handler();
ALTER EXTENSION plperl ADD FUNCTION plperl_inline_handler(internal);
ALTER EXTENSION plperl ADD FUNCTION plperl_validator(oid);
/* src/pl/plperl/plperlu--unpackaged--1.0.sql */
ALTER EXTENSION plperlu ADD LANGUAGE plperlu;
-- ALTER ADD LANGUAGE doesn't pick up the support functions, so we have to.
ALTER EXTENSION plperlu ADD FUNCTION plperlu_call_handler();
ALTER EXTENSION plperlu ADD FUNCTION plperlu_inline_handler(internal);
ALTER EXTENSION plperlu ADD FUNCTION plperlu_validator(oid);
......@@ -28,7 +28,7 @@ OBJS = \
pl_handler.o \
pl_scanner.o
DATA = plpgsql.control plpgsql--1.0.sql plpgsql--unpackaged--1.0.sql
DATA = plpgsql.control plpgsql--1.0.sql
REGRESS_OPTS = --dbname=$(PL_TESTDB)
......
/* src/pl/plpgsql/src/plpgsql--unpackaged--1.0.sql */
ALTER EXTENSION plpgsql ADD LANGUAGE plpgsql;
-- ALTER ADD LANGUAGE doesn't pick up the support functions, so we have to.
ALTER EXTENSION plpgsql ADD FUNCTION plpgsql_call_handler();
ALTER EXTENSION plpgsql ADD FUNCTION plpgsql_inline_handler(internal);
ALTER EXTENSION plpgsql ADD FUNCTION plpgsql_validator(oid);
......@@ -34,9 +34,9 @@ OBJS = \
plpy_typeio.o \
plpy_util.o
DATA = $(NAME)u.control $(NAME)u--1.0.sql $(NAME)u--unpackaged--1.0.sql
DATA = $(NAME)u.control $(NAME)u--1.0.sql
ifeq ($(python_majorversion),2)
DATA += plpythonu.control plpythonu--1.0.sql plpythonu--unpackaged--1.0.sql
DATA += plpythonu.control plpythonu--1.0.sql
endif
# header files to install - it's not clear which of these might be needed
......
/* src/pl/plpython/plpython2u--unpackaged--1.0.sql */
ALTER EXTENSION plpython2u ADD LANGUAGE plpython2u;
-- ALTER ADD LANGUAGE doesn't pick up the support functions, so we have to.
ALTER EXTENSION plpython2u ADD FUNCTION plpython2_call_handler();
ALTER EXTENSION plpython2u ADD FUNCTION plpython2_inline_handler(internal);
ALTER EXTENSION plpython2u ADD FUNCTION plpython2_validator(oid);
/* src/pl/plpython/plpython3u--unpackaged--1.0.sql */
ALTER EXTENSION plpython3u ADD LANGUAGE plpython3u;
-- ALTER ADD LANGUAGE doesn't pick up the support functions, so we have to.
ALTER EXTENSION plpython3u ADD FUNCTION plpython3_call_handler();
ALTER EXTENSION plpython3u ADD FUNCTION plpython3_inline_handler(internal);
ALTER EXTENSION plpython3u ADD FUNCTION plpython3_validator(oid);
/* src/pl/plpython/plpythonu--unpackaged--1.0.sql */
ALTER EXTENSION plpythonu ADD LANGUAGE plpythonu;
-- ALTER ADD LANGUAGE doesn't pick up the support functions, so we have to.
ALTER EXTENSION plpythonu ADD FUNCTION plpython_call_handler();
ALTER EXTENSION plpythonu ADD FUNCTION plpython_inline_handler(internal);
ALTER EXTENSION plpythonu ADD FUNCTION plpython_validator(oid);
......@@ -26,8 +26,8 @@ OBJS = \
$(WIN32RES) \
pltcl.o
DATA = pltcl.control pltcl--1.0.sql pltcl--unpackaged--1.0.sql \
pltclu.control pltclu--1.0.sql pltclu--unpackaged--1.0.sql
DATA = pltcl.control pltcl--1.0.sql \
pltclu.control pltclu--1.0.sql
REGRESS_OPTS = --dbname=$(PL_TESTDB) --load-extension=pltcl
REGRESS = pltcl_setup pltcl_queries pltcl_trigger pltcl_call pltcl_start_proc pltcl_subxact pltcl_unicode pltcl_transaction
......
/* src/pl/tcl/pltcl--unpackaged--1.0.sql */
ALTER EXTENSION pltcl ADD LANGUAGE pltcl;
-- ALTER ADD LANGUAGE doesn't pick up the support functions, so we have to.
ALTER EXTENSION pltcl ADD FUNCTION pltcl_call_handler();
/* src/pl/tcl/pltclu--unpackaged--1.0.sql */
ALTER EXTENSION pltclu ADD LANGUAGE pltclu;
-- ALTER ADD LANGUAGE doesn't pick up the support functions, so we have to.
ALTER EXTENSION pltclu ADD FUNCTION pltclu_call_handler();
......@@ -7,7 +7,7 @@ OBJS = \
PGFILEDESC = "test_parser - example of a custom parser for full-text search"
EXTENSION = test_parser
DATA = test_parser--1.0.sql test_parser--unpackaged--1.0.sql
DATA = test_parser--1.0.sql
REGRESS = test_parser
......
/* src/test/modules/test_parser/test_parser--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION test_parser FROM unpackaged" to load this file. \quit
ALTER EXTENSION test_parser ADD function testprs_start(internal,integer);
ALTER EXTENSION test_parser ADD function testprs_getlexeme(internal,internal,internal);
ALTER EXTENSION test_parser ADD function testprs_end(internal);
ALTER EXTENSION test_parser ADD function testprs_lextype(internal);
ALTER EXTENSION test_parser ADD text search parser testparser;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment