-- partitioned table: two partitions, each containing a t-digest with vastly -- different compression values CREATE TABLE combine_crash_test(k int, d tdigest) PARTITION BY LIST (k); CREATE TABLE combine_crash_test_1 PARTITION OF combine_crash_test FOR VALUES IN (1); CREATE TABLE combine_crash_test_2 PARTITION OF combine_crash_test FOR VALUES IN (2); -- comp=10: BUFFER_SIZE=100 slots INSERT INTO combine_crash_test SELECT 1, tdigest(v::float8, 10) FROM generate_series(1,100) v; -- comp=10000: BUFFER_SIZE=10000 slots INSERT INTO combine_crash_test SELECT 2, tdigest(v::float8, 10000) FROM generate_series(1,10000) v; -- enough data to reliably trigger partitionwise aggregate INSERT INTO combine_crash_test SELECT * FROM combine_crash_test; INSERT INTO combine_crash_test SELECT * FROM combine_crash_test; INSERT INTO combine_crash_test SELECT * FROM combine_crash_test; ANALYZE combine_crash_test; -- force partitionwise parallel aggregate SET enable_partitionwise_aggregate = on; SET max_parallel_workers_per_gather = 2; SET parallel_leader_participation = off; SET parallel_setup_cost = 0; SET parallel_tuple_cost = 0; SET min_parallel_table_scan_size = 0; -- tdigest_combine(small, huge) EXPLAIN (COSTS OFF) SELECT tdigest(d) FROM combine_crash_test; QUERY PLAN ------------------------------------------------------------------------------- Finalize Aggregate -> Gather Workers Planned: 2 -> Parallel Append -> Partial Aggregate -> Seq Scan on combine_crash_test_1 combine_crash_test -> Partial Aggregate -> Seq Scan on combine_crash_test_2 combine_crash_test_1 (8 rows) -- stabilize the output (some randomness due to parallelism) SET extra_float_digits = 0; SELECT tdigest(d) FROM combine_crash_test; tdigest -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- flags 1 count 80800 compression 10 centroids 15 (1, 1) (1, 1) (1, 8) (7.51428571428572, 70) (73.1499999999999, 560) (553.977563383441, 4457) (2361.85970535021, 19345) (5389.71486469791, 40465) (7942.99078997343, 10532) (9201.27863855728, 3937) (9702.28774928776, 1053) (9928.82692307693, 312) (9990.64705882353, 51) (9999.28571428571, 7) (10000, 1) (1 row) DROP TABLE combine_crash_test;