mirror of
https://github.com/postgres/postgres.git
synced 2025-05-18 17:41:14 +03:00
The query used to disable WITH OIDS in all the relations making use of it was checking for materialized views, but this is not a supported operation. On the contrary, this needs to be done on foreign tables. While on it, use quote_ident() in the ALTER TABLE strings built on the relation name. Author: Anton A. Melnikov, Michael Paquier Discussion: https://postgr.es/m/49f389ba-95ce-8a9b-09ae-f60650c0e7c7@inbox.ru Backpatch-through: 12
81 lines
2.4 KiB
SQL
81 lines
2.4 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
|
|
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', 'f')
|
|
ORDER BY 1
|
|
LOOP
|
|
EXECUTE 'ALTER TABLE ' || quote_ident(rec) || ' SET WITHOUT OIDS';
|
|
END LOOP;
|
|
END; $stmt$;
|
|
\endif
|