From 46d51e9db8286e48973496f76ec604c5e5369a45 Mon Sep 17 00:00:00 2001 From: Alexey Pavlenko Date: Tue, 7 May 2024 18:16:12 +0300 Subject: [PATCH] Enable certain aggregation functions for ClickHouse connector --- .../io/trino/plugin/clickhouse/ClickHouseClient.java | 8 ++++++++ .../plugin/clickhouse/TestClickHouseConnectorTest.java | 10 +++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/plugin/trino-clickhouse/src/main/java/io/trino/plugin/clickhouse/ClickHouseClient.java b/plugin/trino-clickhouse/src/main/java/io/trino/plugin/clickhouse/ClickHouseClient.java index b3c3871587f18..3c043ff976f21 100644 --- a/plugin/trino-clickhouse/src/main/java/io/trino/plugin/clickhouse/ClickHouseClient.java +++ b/plugin/trino-clickhouse/src/main/java/io/trino/plugin/clickhouse/ClickHouseClient.java @@ -46,8 +46,12 @@ import io.trino.plugin.jdbc.SliceWriteFunction; import io.trino.plugin.jdbc.WriteMapping; import io.trino.plugin.jdbc.aggregation.ImplementAvgFloatingPoint; +import io.trino.plugin.jdbc.aggregation.ImplementCorr; import io.trino.plugin.jdbc.aggregation.ImplementCount; import io.trino.plugin.jdbc.aggregation.ImplementCountAll; +import io.trino.plugin.jdbc.aggregation.ImplementCountDistinct; +import io.trino.plugin.jdbc.aggregation.ImplementCovariancePop; +import io.trino.plugin.jdbc.aggregation.ImplementCovarianceSamp; import io.trino.plugin.jdbc.aggregation.ImplementMinMax; import io.trino.plugin.jdbc.aggregation.ImplementSum; import io.trino.plugin.jdbc.expression.JdbcConnectorExpressionRewriterBuilder; @@ -242,10 +246,14 @@ public ClickHouseClient( ImmutableSet.>builder() .add(new ImplementCountAll(bigintTypeHandle)) .add(new ImplementCount(bigintTypeHandle)) + .add(new ImplementCountDistinct(bigintTypeHandle, false)) .add(new ImplementMinMax(false)) // TODO: Revisit once https://github.com/trinodb/trino/issues/7100 is resolved .add(new ImplementSum(ClickHouseClient::toTypeHandle)) .add(new ImplementAvgFloatingPoint()) .add(new ImplementAvgBigint()) + .add(new ImplementCorr()) + .add(new ImplementCovarianceSamp()) + .add(new ImplementCovariancePop()) .build()); } diff --git a/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/TestClickHouseConnectorTest.java b/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/TestClickHouseConnectorTest.java index 824029baeb47c..82de56e0ad907 100644 --- a/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/TestClickHouseConnectorTest.java +++ b/plugin/trino-clickhouse/src/test/java/io/trino/plugin/clickhouse/TestClickHouseConnectorTest.java @@ -66,12 +66,12 @@ public class TestClickHouseConnectorTest protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior) { return switch (connectorBehavior) { - case SUPPORTS_PREDICATE_PUSHDOWN_WITH_VARCHAR_EQUALITY, - SUPPORTS_TRUNCATE -> true; - case SUPPORTS_AGGREGATION_PUSHDOWN_CORRELATION, + case SUPPORTS_AGGREGATION_PUSHDOWN_COVARIANCE, SUPPORTS_AGGREGATION_PUSHDOWN_COUNT_DISTINCT, - SUPPORTS_AGGREGATION_PUSHDOWN_COVARIANCE, - SUPPORTS_AGGREGATION_PUSHDOWN_REGRESSION, + SUPPORTS_AGGREGATION_PUSHDOWN_CORRELATION, + SUPPORTS_PREDICATE_PUSHDOWN_WITH_VARCHAR_EQUALITY, + SUPPORTS_TRUNCATE -> true; + case SUPPORTS_AGGREGATION_PUSHDOWN_REGRESSION, SUPPORTS_AGGREGATION_PUSHDOWN_STDDEV, SUPPORTS_AGGREGATION_PUSHDOWN_VARIANCE, SUPPORTS_ARRAY,