From 1bf98f41716b664b669b4e8cd9a2a2642d9bb15d Mon Sep 17 00:00:00 2001 From: Denny Crane Date: Fri, 12 Aug 2022 18:50:49 -0300 Subject: [PATCH] test for Decimal aggregateFunction normalization #39420 --- ...366_decimal_agg_state_conversion.reference | 3 + .../02366_decimal_agg_state_conversion.sql | 62 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 tests/queries/0_stateless/02366_decimal_agg_state_conversion.reference create mode 100644 tests/queries/0_stateless/02366_decimal_agg_state_conversion.sql diff --git a/tests/queries/0_stateless/02366_decimal_agg_state_conversion.reference b/tests/queries/0_stateless/02366_decimal_agg_state_conversion.reference new file mode 100644 index 000000000000..88822fec8d00 --- /dev/null +++ b/tests/queries/0_stateless/02366_decimal_agg_state_conversion.reference @@ -0,0 +1,3 @@ +1.100001 +0.000001 +19 0.1 diff --git a/tests/queries/0_stateless/02366_decimal_agg_state_conversion.sql b/tests/queries/0_stateless/02366_decimal_agg_state_conversion.sql new file mode 100644 index 000000000000..edcab325d919 --- /dev/null +++ b/tests/queries/0_stateless/02366_decimal_agg_state_conversion.sql @@ -0,0 +1,62 @@ +select sumMerge(y) from +( + select cast(x, 'AggregateFunction(sum, Decimal(50, 10))') y from + ( + select arrayReduce('sumState', [toDecimal256('0.000001', 10), toDecimal256('1.1', 10)]) x + ) +); + +select minMerge(y) from +( + select cast(x, 'AggregateFunction(min, Decimal(18, 10))') y from + ( + select arrayReduce('minState', [toDecimal64('0.000001', 10), toDecimal64('1.1', 10)]) x + ) +); + + +drop table if exists consumer_02366; +drop table if exists producer_02366; +drop table if exists mv_02366; + +CREATE TABLE consumer_02366 +( + `id` UInt16, + `dec` AggregateFunction(argMin, Decimal(24, 10), UInt16) +) +ENGINE = AggregatingMergeTree +PRIMARY KEY id +ORDER BY id; + +CREATE TABLE producer_02366 +( + `id` UInt16, + `dec` String +) +ENGINE = MergeTree +PRIMARY KEY id +ORDER BY id; + +CREATE MATERIALIZED VIEW mv_02366 TO consumer_02366 AS +SELECT + id, + argMinState(dec, id) AS dec +FROM +( + SELECT + id, + toDecimal128(dec, 10) AS dec + FROM producer_02366 +) +GROUP BY id; + +INSERT INTO producer_02366 (*) VALUES (19, '.1'); + +SELECT + id, + finalizeAggregation(dec) +FROM consumer_02366; + +drop table consumer_02366; +drop table producer_02366; +drop table mv_02366;