Add expected files for regression tests.
Due to compatibility break by the recent PostgreSQL core code changes we need to split expected files into each minor releases rather than each major releases. Now the mapping between PostgreSQL version and expected file is complicated as follows. * version 10 * >= 10.3 : repack_3.out, tablespace_2.out * < 10.3 : repack_2.out, tablespace.out * version 9.6 * >= 9.6.8 : repack_4.out, tablespace_2.out * < 9.6.8 : repack.out, tablespace.out * version 9.5 * >= 9.5.12 : repack_4.out, tablespace_2.out * < 9.5.12 : repack.out, tablespace_1.out * version 9.4 * >= 9.4.17 : repack_5.out, tablespace_2.out * < 9.4.17 : repack_1.out, tablespace_1.out * version 9.3 * >= 9.3.22 : repack_6.out, tablespace_3.out * < 9.3.22 : repack_1.out, tablespace_1.out * version 9.2 : repack_1.out, tablespace_1.out * version 9.1 : repack_1.out, tablespace_1.out
This commit is contained in:
@ -1,13 +1,68 @@
|
||||
-- Setup function to get version number.
|
||||
-- This function returns a value same as PG_VERSION_NUM.
|
||||
CREATE OR REPLACE FUNCTION version_num() RETURNS int AS
|
||||
$$
|
||||
DECLARE
|
||||
version_int int[];
|
||||
version_str text;
|
||||
BEGIN
|
||||
SELECT string_to_array(split_part(version(), ' ', 2), '.')::int[] INTO version_int;
|
||||
IF array_length(version_int, 1) = 2 THEN -- version 10 or higher
|
||||
SELECT to_char(version_int[1], 'FM00') || '00' || to_char(version_int[2], 'FM00') INTO version_str;
|
||||
ELSIF array_length(version_int, 1) = 3 THEN --version 9.6 or lower
|
||||
SELECT to_char(version_int[1], 'FM00') || to_char(version_int[2], 'FM00') || to_char(version_int[3], 'FM00') INTO version_str;
|
||||
ELSE
|
||||
RAISE 'invalid version';
|
||||
END IF;
|
||||
RETURN version_str::int;
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql IMMUTABLE STRICT;
|
||||
|
||||
-- Test output file identifier.
|
||||
SELECT CASE
|
||||
WHEN split_part(version(), ' ', 2) ~ '^(10)'
|
||||
THEN 'repack_2.out'
|
||||
WHEN split_part(version(), ' ', 2) ~ '^(9\.6|9\.5)'
|
||||
THEN 'repack.out'
|
||||
WHEN split_part(version(), ' ', 2) ~ '^(9\.4|9\.3|9\.2|9\.1)'
|
||||
THEN 'repack_1.out'
|
||||
ELSE version()
|
||||
END AS testfile;
|
||||
SELECT
|
||||
CASE
|
||||
WHEN version_num >= 100000 THEN -- PostgreSQL 10
|
||||
CASE
|
||||
WHEN version_num >= 100003 THEN
|
||||
'repack_3.out'
|
||||
ELSE
|
||||
'repack_2.out'
|
||||
END
|
||||
WHEN version_num >= 90600 THEN -- PostgrSQL 9.6
|
||||
CASE
|
||||
WHEN version_num >= 90608 THEN
|
||||
'repack_4.out'
|
||||
ELSE
|
||||
'repack.out'
|
||||
END
|
||||
WHEN version_num >= 90500 THEN -- PostgreSQL 9.5
|
||||
CASE
|
||||
WHEN version_num >= 90512 THEN
|
||||
'repack_4.out'
|
||||
ELSE
|
||||
'repack.out'
|
||||
END
|
||||
WHEN version_num >= 90400 THEN -- PostgreSQL 9.4
|
||||
CASE
|
||||
WHEN version_num >= 90417 THEN
|
||||
'repack_5.out'
|
||||
ELSE
|
||||
'repack_1.out'
|
||||
END
|
||||
WHEN version_num >= 90300 THEN -- PostgreSQL 9.3
|
||||
CASE
|
||||
WHEN version_num >= 90322 THEN
|
||||
'repack_5.out'
|
||||
ELSE
|
||||
'repack_6.out'
|
||||
END
|
||||
WHEN version_num >= 90200 THEN -- PostgreSQL 9.2
|
||||
'repack_1.out'
|
||||
WHEN version_num >= 90100 THEN -- PostgreSQL 9.1
|
||||
'repack_1.out'
|
||||
END
|
||||
FROM version_num() as version_num;
|
||||
|
||||
SET client_min_messages = warning;
|
||||
--
|
||||
|
Reference in New Issue
Block a user