Commit 97f73a97 authored by Tom Lane's avatar Tom Lane

Work around cross-version-upgrade issues created by commit 9e38c2bb.

Summarily changing the STYPE of regression-test aggregates that
depend on array_append or array_cat is an issue for the buildfarm's
cross-version-upgrade tests, because those aggregates (as defined
in the back branches) now won't load into HEAD.  Although this seems
like only a minimal risk for genuine user-defined aggregates, we
need to do something for the buildfarm.  Hence, adjust the aggregate
definitions, in both HEAD and the back branches.

Discussion: https://postgr.es/m/1401824.1604537031@sss.pgh.pa.us
Discussion: https://postgr.es/m/E1kaQ2c-0005lx-Eg@gemulon.postgresql.org
parent 72d17274
...@@ -729,24 +729,24 @@ select q2, sql_if(q2 > 0, q2, q2 + 1) from int8_tbl; ...@@ -729,24 +729,24 @@ select q2, sql_if(q2 > 0, q2, q2 + 1) from int8_tbl;
(5 rows) (5 rows)
-- another sort of polymorphic aggregate -- another sort of polymorphic aggregate
CREATE AGGREGATE array_cat_accum (anycompatiblearray) CREATE AGGREGATE array_larger_accum (anyarray)
( (
sfunc = array_cat, sfunc = array_larger,
stype = anycompatiblearray, stype = anyarray,
initcond = '{}' initcond = '{}'
); );
SELECT array_cat_accum(i) SELECT array_larger_accum(i)
FROM (VALUES (ARRAY[1,2]), (ARRAY[3,4])) as t(i); FROM (VALUES (ARRAY[1,2]), (ARRAY[3,4])) as t(i);
array_cat_accum array_larger_accum
----------------- --------------------
{1,2,3,4} {3,4}
(1 row) (1 row)
SELECT array_cat_accum(i) SELECT array_larger_accum(i)
FROM (VALUES (ARRAY[row(1,2),row(3,4)]), (ARRAY[row(5,6),row(7,8)])) as t(i); FROM (VALUES (ARRAY[row(1,2),row(3,4)]), (ARRAY[row(5,6),row(7,8)])) as t(i);
array_cat_accum array_larger_accum
----------------------------------- --------------------
{"(1,2)","(3,4)","(5,6)","(7,8)"} {"(5,6)","(7,8)"}
(1 row) (1 row)
-- another kind of polymorphic aggregate -- another kind of polymorphic aggregate
...@@ -786,16 +786,18 @@ create aggregate build_group(int8, integer) ( ...@@ -786,16 +786,18 @@ create aggregate build_group(int8, integer) (
STYPE = int8[] STYPE = int8[]
); );
-- check proper resolution of data types for polymorphic transfn/finalfn -- check proper resolution of data types for polymorphic transfn/finalfn
create function first_el(anycompatiblearray) returns anycompatible as create function first_el_transfn(anyarray, anyelement) returns anyarray as
'select $1 || $2' language sql immutable;
create function first_el(anyarray) returns anyelement as
'select $1[1]' language sql strict immutable; 'select $1[1]' language sql strict immutable;
create aggregate first_el_agg_f8(float8) ( create aggregate first_el_agg_f8(float8) (
SFUNC = array_append, SFUNC = array_append,
STYPE = float8[], STYPE = float8[],
FINALFUNC = first_el FINALFUNC = first_el
); );
create aggregate first_el_agg_any(anycompatible) ( create aggregate first_el_agg_any(anyelement) (
SFUNC = array_append, SFUNC = first_el_transfn,
STYPE = anycompatiblearray, STYPE = anyarray,
FINALFUNC = first_el FINALFUNC = first_el
); );
select first_el_agg_f8(x::float8) from generate_series(1,10) x; select first_el_agg_f8(x::float8) from generate_series(1,10) x;
......
...@@ -498,17 +498,17 @@ select q2, sql_if(q2 > 0, q2, q2 + 1) from int8_tbl; ...@@ -498,17 +498,17 @@ select q2, sql_if(q2 > 0, q2, q2 + 1) from int8_tbl;
-- another sort of polymorphic aggregate -- another sort of polymorphic aggregate
CREATE AGGREGATE array_cat_accum (anycompatiblearray) CREATE AGGREGATE array_larger_accum (anyarray)
( (
sfunc = array_cat, sfunc = array_larger,
stype = anycompatiblearray, stype = anyarray,
initcond = '{}' initcond = '{}'
); );
SELECT array_cat_accum(i) SELECT array_larger_accum(i)
FROM (VALUES (ARRAY[1,2]), (ARRAY[3,4])) as t(i); FROM (VALUES (ARRAY[1,2]), (ARRAY[3,4])) as t(i);
SELECT array_cat_accum(i) SELECT array_larger_accum(i)
FROM (VALUES (ARRAY[row(1,2),row(3,4)]), (ARRAY[row(5,6),row(7,8)])) as t(i); FROM (VALUES (ARRAY[row(1,2),row(3,4)]), (ARRAY[row(5,6),row(7,8)])) as t(i);
-- another kind of polymorphic aggregate -- another kind of polymorphic aggregate
...@@ -549,7 +549,10 @@ create aggregate build_group(int8, integer) ( ...@@ -549,7 +549,10 @@ create aggregate build_group(int8, integer) (
-- check proper resolution of data types for polymorphic transfn/finalfn -- check proper resolution of data types for polymorphic transfn/finalfn
create function first_el(anycompatiblearray) returns anycompatible as create function first_el_transfn(anyarray, anyelement) returns anyarray as
'select $1 || $2' language sql immutable;
create function first_el(anyarray) returns anyelement as
'select $1[1]' language sql strict immutable; 'select $1[1]' language sql strict immutable;
create aggregate first_el_agg_f8(float8) ( create aggregate first_el_agg_f8(float8) (
...@@ -558,9 +561,9 @@ create aggregate first_el_agg_f8(float8) ( ...@@ -558,9 +561,9 @@ create aggregate first_el_agg_f8(float8) (
FINALFUNC = first_el FINALFUNC = first_el
); );
create aggregate first_el_agg_any(anycompatible) ( create aggregate first_el_agg_any(anyelement) (
SFUNC = array_append, SFUNC = first_el_transfn,
STYPE = anycompatiblearray, STYPE = anyarray,
FINALFUNC = first_el FINALFUNC = first_el
); );
......
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