@@ -1348,7 +1348,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
1348
1348
-- Ensure that we never choose to provide presorted input to an Aggref with
1349
1349
-- a volatile function in the ORDER BY / DISTINCT clause. We want to ensure
1350
1350
-- these sorts are performed individually rather than at the query level.
1351
- @@ -1527,34 +1306,76 @@
1351
+ @@ -1527,34 +1306,78 @@
1352
1352
sum(unique1 order by two, random(), random() + 1)
1353
1353
from tenk1
1354
1354
group by ten;
@@ -1418,6 +1418,8 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
1418
1418
+array_agg(jsonb[]) -> jsonb[][]
1419
1419
+array_agg(varbit) -> varbit[]
1420
1420
+array_agg(varbit[]) -> varbit[][]
1421
+ +array_agg(ltree) -> ltree[]
1422
+ +array_agg(ltree[]) -> ltree[][]
1421
1423
+array_agg(anyenum) -> anyenum[]
1422
1424
+array_agg(anyenum[]) -> anyenum[][]
1423
1425
+array_agg(tuple) -> tuple[]
@@ -1444,7 +1446,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
1444
1446
--
1445
1447
-- Test combinations of DISTINCT and/or ORDER BY
1446
1448
--
1447
- @@ -1595,246 +1416 ,186 @@
1449
+ @@ -1595,246 +1418 ,186 @@
1448
1450
1449
1451
select array_agg(distinct a order by a)
1450
1452
from (values (1),(2),(1),(3),(null),(2)) v(a);
@@ -1788,7 +1790,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
1788
1790
-- string_agg tests
1789
1791
select string_agg(a,',') from (values('aaaa'),('bbbb'),('cccc')) g(a);
1790
1792
string_agg
1791
- @@ -1862,25 +1623 ,29 @@
1793
+ @@ -1862,25 +1625 ,29 @@
1792
1794
1793
1795
-- check some implicit casting cases, as per bug #5564
1794
1796
select string_agg(distinct f1, ',' order by f1) from varchar_tbl; -- ok
@@ -1834,7 +1836,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
1834
1836
-- string_agg bytea tests
1835
1837
create table bytea_test_table(v bytea);
1836
1838
select string_agg(v, '') from bytea_test_table;
1837
- @@ -1922,11 +1687 ,60 @@
1839
+ @@ -1922,11 +1689 ,60 @@
1838
1840
select (case x % 4 when 1 then null else x end), x % 10
1839
1841
from generate_series(1,5000) x;
1840
1842
set parallel_setup_cost TO 0;
@@ -1895,7 +1897,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
1895
1897
-- create a view as we otherwise have to repeat this query a few times.
1896
1898
create view v_pagg_test AS
1897
1899
select
1898
- @@ -1954,66 +1768 ,92 @@
1900
+ @@ -1954,66 +1770 ,92 @@
1899
1901
) a1
1900
1902
) a2
1901
1903
group by y;
@@ -2033,7 +2035,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2033
2035
drop table pagg_test;
2034
2036
-- FILTER tests
2035
2037
select min(unique1) filter (where unique1 > 100) from tenk1;
2036
- @@ -2023,13 +1863 ,9 @@
2038
+ @@ -2023,13 +1865 ,9 @@
2037
2039
(1 row)
2038
2040
2039
2041
select sum(1/ten) filter (where ten > 0) from tenk1;
@@ -2049,7 +2051,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2049
2051
ten | sum
2050
2052
-----+-----
2051
2053
0 |
2052
- @@ -2045,17 +1881 ,14 @@
2054
+ @@ -2045,17 +1883 ,14 @@
2053
2055
(10 rows)
2054
2056
2055
2057
select ten, sum(distinct four) filter (where four > 10) from onek a
@@ -2074,7 +2076,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2074
2076
select max(foo COLLATE "C") filter (where (bar collate "POSIX") > '0')
2075
2077
from (values ('a', 'b')) AS v(foo,bar);
2076
2078
max
2077
- @@ -2064,11 +1897 ,7 @@
2079
+ @@ -2064,11 +1899 ,7 @@
2078
2080
(1 row)
2079
2081
2080
2082
select any_value(v) filter (where v > 2) from (values (1), (2), (3)) as v (v);
@@ -2087,7 +2089,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2087
2089
-- outer reference in FILTER (PostgreSQL extension)
2088
2090
select (select count(*)
2089
2091
from (values (1)) t0(inner_c))
2090
- @@ -2117,11 +1946 ,10 @@
2092
+ @@ -2117,11 +1948 ,10 @@
2091
2093
select aggfns(distinct a,b,c order by a,c using ~<~,b) filter (where a > 1)
2092
2094
from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c),
2093
2095
generate_series(1,2) i;
@@ -2103,7 +2105,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2103
2105
-- check handling of bare boolean Var in FILTER
2104
2106
select max(0) filter (where b1) from bool_test;
2105
2107
max
2106
- @@ -2137,78 +1965 ,49 @@
2108
+ @@ -2137,78 +1967 ,49 @@
2107
2109
2108
2110
-- check for correct detection of nested-aggregate errors in FILTER
2109
2111
select max(unique1) filter (where sum(ten) > 0) from tenk1;
@@ -2198,7 +2200,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2198
2200
select percentile_disc(0.5) within group (order by thousand) from tenk1;
2199
2201
percentile_disc
2200
2202
-----------------
2201
- @@ -2217,161 +2016 ,97 @@
2203
+ @@ -2217,161 +2018 ,97 @@
2202
2204
2203
2205
select rank(3) within group (order by x)
2204
2206
from (values (1),(1),(2),(2),(3),(3),(4)) v(x);
@@ -2404,7 +2406,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2404
2406
-- deparse and multiple features:
2405
2407
create view aggordview1 as
2406
2408
select ten,
2407
- @@ -2380,73 +2115 ,83 @@
2409
+ @@ -2380,73 +2117 ,83 @@
2408
2410
rank(5,'AZZZZ',50) within group (order by hundred, string4 desc, hundred)
2409
2411
from tenk1
2410
2412
group by ten order by ten;
@@ -2540,7 +2542,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2540
2542
create type avg_state as (total bigint, count bigint);
2541
2543
create or replace function avg_transfn(state avg_state, n int) returns avg_state as
2542
2544
$$
2543
- @@ -2469,6 +2214 ,10 @@
2545
+ @@ -2469,6 +2216 ,10 @@
2544
2546
return null;
2545
2547
end
2546
2548
$$ language plpgsql;
@@ -2551,7 +2553,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2551
2553
create function avg_finalfn(state avg_state) returns int4 as
2552
2554
$$
2553
2555
begin
2554
- @@ -2479,6 +2228 ,10 @@
2556
+ @@ -2479,6 +2230 ,10 @@
2555
2557
end if;
2556
2558
end
2557
2559
$$ language plpgsql;
@@ -2562,7 +2564,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2562
2564
create function sum_finalfn(state avg_state) returns int4 as
2563
2565
$$
2564
2566
begin
2565
- @@ -2489,106 +2242 ,70 @@
2567
+ @@ -2489,106 +2244 ,70 @@
2566
2568
end if;
2567
2569
end
2568
2570
$$ language plpgsql;
@@ -2695,7 +2697,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2695
2697
-- test that aggs with the same sfunc and initcond share the same agg state
2696
2698
create aggregate my_sum_init(int4)
2697
2699
(
2698
- @@ -2597,6 +2314 ,12 @@
2700
+ @@ -2597,6 +2316 ,12 @@
2699
2701
finalfunc = sum_finalfn,
2700
2702
initcond = '(10,0)'
2701
2703
);
@@ -2708,7 +2710,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2708
2710
create aggregate my_avg_init(int4)
2709
2711
(
2710
2712
stype = avg_state,
2711
- @@ -2604,6 +2327 ,12 @@
2713
+ @@ -2604,6 +2329 ,12 @@
2712
2714
finalfunc = avg_finalfn,
2713
2715
initcond = '(10,0)'
2714
2716
);
@@ -2721,7 +2723,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2721
2723
create aggregate my_avg_init2(int4)
2722
2724
(
2723
2725
stype = avg_state,
2724
- @@ -2611,30 +2340 ,28 @@
2726
+ @@ -2611,30 +2342 ,28 @@
2725
2727
finalfunc = avg_finalfn,
2726
2728
initcond = '(4,0)'
2727
2729
);
@@ -2766,7 +2768,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2766
2768
create or replace function sum_transfn(state int4, n int4) returns int4 as
2767
2769
$$
2768
2770
declare new_state int4;
2769
- @@ -2664,29 +2391 ,35 @@
2771
+ @@ -2664,29 +2393 ,35 @@
2770
2772
end if;
2771
2773
end
2772
2774
$$ language plpgsql;
@@ -2811,7 +2813,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2811
2813
-- test that the aggregate transition logic correctly handles
2812
2814
-- transition / combine functions returning NULL
2813
2815
-- First test the case of a normal transition function returning NULL
2814
- @@ -2701,6 +2434 ,8 @@
2816
+ @@ -2701,6 +2436 ,8 @@
2815
2817
END IF;
2816
2818
RETURN NULL;
2817
2819
END$$;
@@ -2820,7 +2822,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2820
2822
CREATE AGGREGATE balk(int4)
2821
2823
(
2822
2824
SFUNC = balkifnull(int8, int4),
2823
- @@ -2708,13 +2443 ,16 @@
2825
+ @@ -2708,13 +2445 ,16 @@
2824
2826
PARALLEL = SAFE,
2825
2827
INITCOND = '0'
2826
2828
);
@@ -2842,7 +2844,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2842
2844
-- Secondly test the case of a parallel aggregate combiner function
2843
2845
-- returning NULL. For that use normal transition function, but a
2844
2846
-- combiner function returning NULL.
2845
- @@ -2730,6 +2468 ,23 @@
2847
+ @@ -2730,6 +2470 ,23 @@
2846
2848
END IF;
2847
2849
RETURN NULL;
2848
2850
END$$;
@@ -2866,7 +2868,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2866
2868
CREATE AGGREGATE balk(int4)
2867
2869
(
2868
2870
SFUNC = int4_sum(int8, int4),
2869
- @@ -2738,26 +2493 ,27 @@
2871
+ @@ -2738,26 +2495 ,27 @@
2870
2872
PARALLEL = SAFE,
2871
2873
INITCOND = '0'
2872
2874
);
@@ -2908,7 +2910,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2908
2910
ROLLBACK;
2909
2911
-- test multiple usage of an aggregate whose finalfn returns a R/W datum
2910
2912
BEGIN;
2911
- @@ -2767,6 +2523 ,8 @@
2913
+ @@ -2767,6 +2525 ,8 @@
2912
2914
RETURN array_fill(y[1], ARRAY[4]);
2913
2915
END;
2914
2916
$$;
@@ -2917,7 +2919,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2917
2919
CREATE FUNCTION rwagg_finalfunc(x anyarray) RETURNS anyarray
2918
2920
LANGUAGE plpgsql STRICT IMMUTABLE AS $$
2919
2921
DECLARE
2920
- @@ -2777,11 +2535 ,25 @@
2922
+ @@ -2777,11 +2537 ,25 @@
2921
2923
RETURN res;
2922
2924
END;
2923
2925
$$;
@@ -2943,7 +2945,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2943
2945
CREATE FUNCTION eatarray(x real[]) RETURNS real[]
2944
2946
LANGUAGE plpgsql STRICT IMMUTABLE AS $$
2945
2947
BEGIN
2946
- @@ -2789,21 +2561 ,44 @@
2948
+ @@ -2789,21 +2563 ,44 @@
2947
2949
RETURN x;
2948
2950
END;
2949
2951
$$;
@@ -2993,7 +2995,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
2993
2995
-- variance(int4) covers numeric_poly_combine
2994
2996
-- sum(int8) covers int8_avg_combine
2995
2997
-- regr_count(float8, float8) covers int8inc_float8_float8 and aggregates with > 1 arg
2996
- @@ -2813,36 +2608 ,17 @@
2998
+ @@ -2813,36 +2610 ,17 @@
2997
2999
UNION ALL SELECT * FROM tenk1
2998
3000
UNION ALL SELECT * FROM tenk1
2999
3001
UNION ALL SELECT * FROM tenk1) u;
@@ -3036,7 +3038,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
3036
3038
-- variance(int8) covers numeric_combine
3037
3039
-- avg(numeric) covers numeric_avg_combine
3038
3040
EXPLAIN (COSTS OFF, VERBOSE)
3039
- @@ -2851,46 +2627 ,22 @@
3041
+ @@ -2851,46 +2629 ,22 @@
3040
3042
UNION ALL SELECT * FROM tenk1
3041
3043
UNION ALL SELECT * FROM tenk1
3042
3044
UNION ALL SELECT * FROM tenk1) u;
@@ -3091,7 +3093,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
3091
3093
-- Ensure that the STRICT checks for aggregates does not take NULLness
3092
3094
-- of ORDER BY columns into account. See bug report around
3093
3095
3094
- @@ -2929,27 +2681 ,46 @@
3096
+ @@ -2929,27 +2683 ,46 @@
3095
3097
-- does not lead to array overflow due to unexpected duplicate hash keys
3096
3098
-- see CAFeeJoKKu0u+A_A9R9316djW-YW3-+Gtgvy3ju655qRHR3jtdA@mail.gmail.com
3097
3099
set enable_memoize to off;
@@ -3150,7 +3152,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
3150
3152
select unique1, count(*), sum(twothousand) from tenk1
3151
3153
group by unique1
3152
3154
having sum(fivethous) > 4975
3153
- @@ -3007,36 +2778 ,84 @@
3155
+ @@ -3007,36 +2780 ,84 @@
3154
3156
(48 rows)
3155
3157
3156
3158
set work_mem to default;
@@ -3244,7 +3246,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
3244
3246
create table agg_group_2 as
3245
3247
select * from
3246
3248
(values (100), (300), (500)) as r(a),
3247
- @@ -3047,30 +2866 ,58 @@
3249
+ @@ -3047,30 +2868 ,58 @@
3248
3250
from agg_data_2k
3249
3251
where g < r.a
3250
3252
group by g/2) as s;
@@ -3310,7 +3312,7 @@ diff -U3 --label=/mnt/data1/postgres/src/test/regress/expected/aggregates.out --
3310
3312
create table agg_hash_2 as
3311
3313
select * from
3312
3314
(values (100), (300), (500)) as r(a),
3313
- @@ -3081,15 +2928 ,43 @@
3315
+ @@ -3081,15 +2930 ,43 @@
3314
3316
from agg_data_2k
3315
3317
where g < r.a
3316
3318
group by g/2) as s;
0 commit comments