Work around cross-version-upgrade issues created by commit 9e38c2bb5.
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
This commit is contained in:
parent
72d172743e
commit
97f73a978f
@ -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) (
|
|||||||
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;
|
|||||||
|
|
||||||
-- 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) (
|
|||||||
|
|
||||||
-- 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) (
|
|||||||
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
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user