92 lines
2.8 KiB
SQL
92 lines
2.8 KiB
SQL
--
|
|
-- SQL queries for upgrade tests across different major versions.
|
|
--
|
|
-- This file includes a set of SQL queries to make a cluster to-be-upgraded
|
|
-- compatible with the version this file is based on. Note that this
|
|
-- requires psql, as per-version queries are controlled with a set of \if
|
|
-- clauses.
|
|
|
|
-- This script is backward-compatible, so it is able to work with any version
|
|
-- newer than 9.2 we are upgrading from, up to the branch this script is stored
|
|
-- on (even if this would not run if running pg_upgrade with the same version
|
|
-- for the origin and the target).
|
|
|
|
-- \if accepts a simple boolean value, so all the version checks are
|
|
-- saved based on this assumption.
|
|
SELECT
|
|
ver <= 902 AS oldpgversion_le92,
|
|
ver <= 904 AS oldpgversion_le94,
|
|
ver <= 906 AS oldpgversion_le96,
|
|
ver <= 1000 AS oldpgversion_le10,
|
|
ver <= 1100 AS oldpgversion_le11,
|
|
ver <= 1300 AS oldpgversion_le13
|
|
FROM (SELECT current_setting('server_version_num')::int / 100 AS ver) AS v;
|
|
\gset
|
|
|
|
-- Objects last appearing in 9.2.
|
|
\if :oldpgversion_le92
|
|
-- Note that those tables are removed from the regression tests in 9.3
|
|
-- and newer versions.
|
|
DROP TABLE abstime_tbl;
|
|
DROP TABLE reltime_tbl;
|
|
DROP TABLE tinterval_tbl;
|
|
\endif
|
|
|
|
-- Objects last appearing in 9.4.
|
|
\if :oldpgversion_le94
|
|
-- This aggregate has been fixed in 9.5 and later versions, so drop
|
|
-- and re-create it.
|
|
DROP AGGREGATE array_cat_accum(anyarray);
|
|
CREATE AGGREGATE array_larger_accum (anyarray) (
|
|
sfunc = array_larger,
|
|
stype = anyarray,
|
|
initcond = $${}$$);
|
|
-- This operator has been fixed in 9.5 and later versions, so drop and
|
|
-- re-create it.
|
|
DROP OPERATOR @#@ (NONE, bigint);
|
|
CREATE OPERATOR @#@ (PROCEDURE = factorial,
|
|
RIGHTARG = bigint);
|
|
\endif
|
|
|
|
-- Objects last appearing in 9.6.
|
|
\if :oldpgversion_le96
|
|
DROP FUNCTION public.oldstyle_length(integer, text);
|
|
\endif
|
|
|
|
-- Objects last appearing in 10.
|
|
\if :oldpgversion_le10
|
|
DROP FUNCTION IF EXISTS boxarea(box);
|
|
DROP FUNCTION IF EXISTS funny_dup17();
|
|
\endif
|
|
|
|
-- Objects last appearing in 11.
|
|
\if :oldpgversion_le11
|
|
-- WITH OIDS is supported until v11, so remove its support for any
|
|
-- relations marked as such.
|
|
DO $stmt$
|
|
DECLARE
|
|
rec text;
|
|
BEGIN
|
|
FOR rec in
|
|
SELECT oid::regclass::text
|
|
FROM pg_class
|
|
WHERE relname !~ '^pg_'
|
|
AND relhasoids
|
|
AND relkind in ('r','m')
|
|
ORDER BY 1
|
|
LOOP
|
|
execute 'ALTER TABLE ' || rec || ' SET WITHOUT OIDS';
|
|
END LOOP;
|
|
END; $stmt$;
|
|
\endif
|
|
|
|
-- Objects last appearing in 13.
|
|
\if :oldpgversion_le13
|
|
-- Until v10, operators could only be dropped one at a time, so be careful
|
|
-- to stick with one command for each drop here.
|
|
DROP OPERATOR public.#@# (pg_catalog.int8, NONE);
|
|
DROP OPERATOR public.#%# (pg_catalog.int8, NONE);
|
|
DROP OPERATOR public.!=- (pg_catalog.int8, NONE);
|
|
DROP OPERATOR public.#@%# (pg_catalog.int8, NONE);
|
|
\endif
|