A more compact way to verify the identity of the test files
This commit is contained in:
parent
64c22ffc5f
commit
2fd0eb050a
@ -16,6 +16,30 @@ CREATE FUNCTION repack.version_sql() RETURNS text AS
|
|||||||
$$SELECT 'pg_repack REPACK_VERSION'::text$$
|
$$SELECT 'pg_repack REPACK_VERSION'::text$$
|
||||||
LANGUAGE SQL IMMUTABLE STRICT;
|
LANGUAGE SQL IMMUTABLE STRICT;
|
||||||
|
|
||||||
|
CREATE FUNCTION repack.pg_version(version_str text DEFAULT NULL) RETURNS integer
|
||||||
|
AS $$
|
||||||
|
-- Return the server version number in a format similar to PG_VERSION_NUM.
|
||||||
|
-- Call with no argument for the server version, pass an argument for testing
|
||||||
|
select (case
|
||||||
|
when array_length(tokens, 1) = 2 then
|
||||||
|
to_char(tokens[1], 'FM00') ||
|
||||||
|
'00' || to_char(tokens[2], 'FM00')
|
||||||
|
when array_length(tokens, 1) = 3 then
|
||||||
|
to_char(tokens[1], 'FM00') ||
|
||||||
|
to_char(tokens[2], 'FM00') ||
|
||||||
|
to_char(tokens[3], 'FM00')
|
||||||
|
else
|
||||||
|
-- This will raise an error which we can read
|
||||||
|
'unexpected version string: ' || coalesce($1, version())
|
||||||
|
end)::int
|
||||||
|
from (
|
||||||
|
select string_to_array(substring(
|
||||||
|
split_part(coalesce($1, version()), ' ', 2)
|
||||||
|
from '\d+\.\d+(?:\.\d+)?'), '.')::int[]
|
||||||
|
) as x (tokens);
|
||||||
|
$$
|
||||||
|
LANGUAGE SQL IMMUTABLE;
|
||||||
|
|
||||||
CREATE AGGREGATE repack.array_accum (
|
CREATE AGGREGATE repack.array_accum (
|
||||||
sfunc = array_append,
|
sfunc = array_append,
|
||||||
basetype = anyelement,
|
basetype = anyelement,
|
||||||
|
@ -1,68 +1,19 @@
|
|||||||
-- 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.
|
-- Test output file identifier.
|
||||||
SELECT
|
select filename from (values
|
||||||
CASE
|
( 90100, 90300, 'repack_1.out'),
|
||||||
WHEN version_num >= 100000 THEN -- PostgreSQL 10
|
( 90300, 90322, 'repack_6.out'),
|
||||||
CASE
|
( 90322, 90400, 'repack_5.out'),
|
||||||
WHEN version_num >= 100003 THEN
|
( 90400, 90417, 'repack_1.out'),
|
||||||
'repack_3.out'
|
( 90417, 90500, 'repack_5.out'),
|
||||||
ELSE
|
( 90500, 90512, 'repack.out'),
|
||||||
'repack_2.out'
|
( 90512, 90600, 'repack_4.out'),
|
||||||
END
|
( 90600, 90608, 'repack.out'),
|
||||||
WHEN version_num >= 90600 THEN -- PostgrSQL 9.6
|
( 90608, 100000, 'repack_4.out'),
|
||||||
CASE
|
(100000, 100003, 'repack_2.out'),
|
||||||
WHEN version_num >= 90608 THEN
|
(100003, 110000, 'repack_3.out')
|
||||||
'repack_4.out'
|
) as x (min, max, filename)
|
||||||
ELSE
|
where min <= repack.pg_version() and repack.pg_version() < max;
|
||||||
'repack.out'
|
filename
|
||||||
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;
|
|
||||||
case
|
|
||||||
------------
|
------------
|
||||||
repack.out
|
repack.out
|
||||||
(1 row)
|
(1 row)
|
||||||
|
@ -1,68 +1,19 @@
|
|||||||
-- 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.
|
-- Test output file identifier.
|
||||||
SELECT
|
select filename from (values
|
||||||
CASE
|
( 90100, 90300, 'repack_1.out'),
|
||||||
WHEN version_num >= 100000 THEN -- PostgreSQL 10
|
( 90300, 90322, 'repack_6.out'),
|
||||||
CASE
|
( 90322, 90400, 'repack_5.out'),
|
||||||
WHEN version_num >= 100003 THEN
|
( 90400, 90417, 'repack_1.out'),
|
||||||
'repack_3.out'
|
( 90417, 90500, 'repack_5.out'),
|
||||||
ELSE
|
( 90500, 90512, 'repack.out'),
|
||||||
'repack_2.out'
|
( 90512, 90600, 'repack_4.out'),
|
||||||
END
|
( 90600, 90608, 'repack.out'),
|
||||||
WHEN version_num >= 90600 THEN -- PostgrSQL 9.6
|
( 90608, 100000, 'repack_4.out'),
|
||||||
CASE
|
(100000, 100003, 'repack_2.out'),
|
||||||
WHEN version_num >= 90608 THEN
|
(100003, 110000, 'repack_3.out')
|
||||||
'repack_4.out'
|
) as x (min, max, filename)
|
||||||
ELSE
|
where min <= repack.pg_version() and repack.pg_version() < max;
|
||||||
'repack.out'
|
filename
|
||||||
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;
|
|
||||||
case
|
|
||||||
--------------
|
--------------
|
||||||
repack_1.out
|
repack_1.out
|
||||||
(1 row)
|
(1 row)
|
||||||
|
@ -1,68 +1,19 @@
|
|||||||
-- 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.
|
-- Test output file identifier.
|
||||||
SELECT
|
select filename from (values
|
||||||
CASE
|
( 90100, 90300, 'repack_1.out'),
|
||||||
WHEN version_num >= 100000 THEN -- PostgreSQL 10
|
( 90300, 90322, 'repack_6.out'),
|
||||||
CASE
|
( 90322, 90400, 'repack_5.out'),
|
||||||
WHEN version_num >= 100003 THEN
|
( 90400, 90417, 'repack_1.out'),
|
||||||
'repack_3.out'
|
( 90417, 90500, 'repack_5.out'),
|
||||||
ELSE
|
( 90500, 90512, 'repack.out'),
|
||||||
'repack_2.out'
|
( 90512, 90600, 'repack_4.out'),
|
||||||
END
|
( 90600, 90608, 'repack.out'),
|
||||||
WHEN version_num >= 90600 THEN -- PostgrSQL 9.6
|
( 90608, 100000, 'repack_4.out'),
|
||||||
CASE
|
(100000, 100003, 'repack_2.out'),
|
||||||
WHEN version_num >= 90608 THEN
|
(100003, 110000, 'repack_3.out')
|
||||||
'repack_4.out'
|
) as x (min, max, filename)
|
||||||
ELSE
|
where min <= repack.pg_version() and repack.pg_version() < max;
|
||||||
'repack.out'
|
filename
|
||||||
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;
|
|
||||||
case
|
|
||||||
--------------
|
--------------
|
||||||
repack_2.out
|
repack_2.out
|
||||||
(1 row)
|
(1 row)
|
||||||
|
@ -1,68 +1,19 @@
|
|||||||
-- 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.
|
-- Test output file identifier.
|
||||||
SELECT
|
select filename from (values
|
||||||
CASE
|
( 90100, 90300, 'repack_1.out'),
|
||||||
WHEN version_num >= 100000 THEN -- PostgreSQL 10
|
( 90300, 90322, 'repack_6.out'),
|
||||||
CASE
|
( 90322, 90400, 'repack_5.out'),
|
||||||
WHEN version_num >= 100003 THEN
|
( 90400, 90417, 'repack_1.out'),
|
||||||
'repack_3.out'
|
( 90417, 90500, 'repack_5.out'),
|
||||||
ELSE
|
( 90500, 90512, 'repack.out'),
|
||||||
'repack_2.out'
|
( 90512, 90600, 'repack_4.out'),
|
||||||
END
|
( 90600, 90608, 'repack.out'),
|
||||||
WHEN version_num >= 90600 THEN -- PostgrSQL 9.6
|
( 90608, 100000, 'repack_4.out'),
|
||||||
CASE
|
(100000, 100003, 'repack_2.out'),
|
||||||
WHEN version_num >= 90608 THEN
|
(100003, 110000, 'repack_3.out')
|
||||||
'repack_4.out'
|
) as x (min, max, filename)
|
||||||
ELSE
|
where min <= repack.pg_version() and repack.pg_version() < max;
|
||||||
'repack.out'
|
filename
|
||||||
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;
|
|
||||||
case
|
|
||||||
--------------
|
--------------
|
||||||
repack_3.out
|
repack_3.out
|
||||||
(1 row)
|
(1 row)
|
||||||
|
@ -1,68 +1,19 @@
|
|||||||
-- 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.
|
-- Test output file identifier.
|
||||||
SELECT
|
select filename from (values
|
||||||
CASE
|
( 90100, 90300, 'repack_1.out'),
|
||||||
WHEN version_num >= 100000 THEN -- PostgreSQL 10
|
( 90300, 90322, 'repack_6.out'),
|
||||||
CASE
|
( 90322, 90400, 'repack_5.out'),
|
||||||
WHEN version_num >= 100003 THEN
|
( 90400, 90417, 'repack_1.out'),
|
||||||
'repack_3.out'
|
( 90417, 90500, 'repack_5.out'),
|
||||||
ELSE
|
( 90500, 90512, 'repack.out'),
|
||||||
'repack_2.out'
|
( 90512, 90600, 'repack_4.out'),
|
||||||
END
|
( 90600, 90608, 'repack.out'),
|
||||||
WHEN version_num >= 90600 THEN -- PostgrSQL 9.6
|
( 90608, 100000, 'repack_4.out'),
|
||||||
CASE
|
(100000, 100003, 'repack_2.out'),
|
||||||
WHEN version_num >= 90608 THEN
|
(100003, 110000, 'repack_3.out')
|
||||||
'repack_4.out'
|
) as x (min, max, filename)
|
||||||
ELSE
|
where min <= repack.pg_version() and repack.pg_version() < max;
|
||||||
'repack.out'
|
filename
|
||||||
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;
|
|
||||||
case
|
|
||||||
--------------
|
--------------
|
||||||
repack_4.out
|
repack_4.out
|
||||||
(1 row)
|
(1 row)
|
||||||
|
@ -1,68 +1,19 @@
|
|||||||
-- 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.
|
-- Test output file identifier.
|
||||||
SELECT
|
select filename from (values
|
||||||
CASE
|
( 90100, 90300, 'repack_1.out'),
|
||||||
WHEN version_num >= 100000 THEN -- PostgreSQL 10
|
( 90300, 90322, 'repack_6.out'),
|
||||||
CASE
|
( 90322, 90400, 'repack_5.out'),
|
||||||
WHEN version_num >= 100003 THEN
|
( 90400, 90417, 'repack_1.out'),
|
||||||
'repack_3.out'
|
( 90417, 90500, 'repack_5.out'),
|
||||||
ELSE
|
( 90500, 90512, 'repack.out'),
|
||||||
'repack_2.out'
|
( 90512, 90600, 'repack_4.out'),
|
||||||
END
|
( 90600, 90608, 'repack.out'),
|
||||||
WHEN version_num >= 90600 THEN -- PostgrSQL 9.6
|
( 90608, 100000, 'repack_4.out'),
|
||||||
CASE
|
(100000, 100003, 'repack_2.out'),
|
||||||
WHEN version_num >= 90608 THEN
|
(100003, 110000, 'repack_3.out')
|
||||||
'repack_4.out'
|
) as x (min, max, filename)
|
||||||
ELSE
|
where min <= repack.pg_version() and repack.pg_version() < max;
|
||||||
'repack.out'
|
filename
|
||||||
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;
|
|
||||||
case
|
|
||||||
--------------
|
--------------
|
||||||
repack_5.out
|
repack_5.out
|
||||||
(1 row)
|
(1 row)
|
||||||
|
@ -1,68 +1,19 @@
|
|||||||
-- 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.
|
-- Test output file identifier.
|
||||||
SELECT
|
select filename from (values
|
||||||
CASE
|
( 90100, 90300, 'repack_1.out'),
|
||||||
WHEN version_num >= 100000 THEN -- PostgreSQL 10
|
( 90300, 90322, 'repack_6.out'),
|
||||||
CASE
|
( 90322, 90400, 'repack_5.out'),
|
||||||
WHEN version_num >= 100003 THEN
|
( 90400, 90417, 'repack_1.out'),
|
||||||
'repack_3.out'
|
( 90417, 90500, 'repack_5.out'),
|
||||||
ELSE
|
( 90500, 90512, 'repack.out'),
|
||||||
'repack_2.out'
|
( 90512, 90600, 'repack_4.out'),
|
||||||
END
|
( 90600, 90608, 'repack.out'),
|
||||||
WHEN version_num >= 90600 THEN -- PostgrSQL 9.6
|
( 90608, 100000, 'repack_4.out'),
|
||||||
CASE
|
(100000, 100003, 'repack_2.out'),
|
||||||
WHEN version_num >= 90608 THEN
|
(100003, 110000, 'repack_3.out')
|
||||||
'repack_4.out'
|
) as x (min, max, filename)
|
||||||
ELSE
|
where min <= repack.pg_version() and repack.pg_version() < max;
|
||||||
'repack.out'
|
filename
|
||||||
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;
|
|
||||||
case
|
|
||||||
--------------
|
--------------
|
||||||
repack_6.out
|
repack_6.out
|
||||||
(1 row)
|
(1 row)
|
||||||
|
@ -1,68 +1,18 @@
|
|||||||
-- 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.
|
-- Test output file identifier.
|
||||||
SELECT
|
select filename from (values
|
||||||
CASE
|
( 90100, 90300, 'repack_1.out'),
|
||||||
WHEN version_num >= 100000 THEN -- PostgreSQL 10
|
( 90300, 90322, 'repack_6.out'),
|
||||||
CASE
|
( 90322, 90400, 'repack_5.out'),
|
||||||
WHEN version_num >= 100003 THEN
|
( 90400, 90417, 'repack_1.out'),
|
||||||
'repack_3.out'
|
( 90417, 90500, 'repack_5.out'),
|
||||||
ELSE
|
( 90500, 90512, 'repack.out'),
|
||||||
'repack_2.out'
|
( 90512, 90600, 'repack_4.out'),
|
||||||
END
|
( 90600, 90608, 'repack.out'),
|
||||||
WHEN version_num >= 90600 THEN -- PostgrSQL 9.6
|
( 90608, 100000, 'repack_4.out'),
|
||||||
CASE
|
(100000, 100003, 'repack_2.out'),
|
||||||
WHEN version_num >= 90608 THEN
|
(100003, 110000, 'repack_3.out')
|
||||||
'repack_4.out'
|
) as x (min, max, filename)
|
||||||
ELSE
|
where min <= repack.pg_version() and repack.pg_version() < max;
|
||||||
'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;
|
SET client_min_messages = warning;
|
||||||
--
|
--
|
||||||
|
Loading…
x
Reference in New Issue
Block a user