From 070d52070043194beb23c88ccb874840447c5f39 Mon Sep 17 00:00:00 2001 From: Abhishek Agarwal <1477457+abhishekagarwal87@users.noreply.github.com> Date: Mon, 5 Dec 2022 22:40:17 +0530 Subject: [PATCH 1/2] Better error message when theta_sketch_intersect is used on scalar expressions --- .../theta/sql/ThetaSketchSetBaseOperatorConversion.java | 2 ++ .../theta/sql/ThetaSketchSqlAggregatorTest.java | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSetBaseOperatorConversion.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSetBaseOperatorConversion.java index 0afad6cbe6b1..651fb9165198 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSetBaseOperatorConversion.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSetBaseOperatorConversion.java @@ -63,6 +63,8 @@ public DruidExpression toDruidExpression( RexNode rexNode ) { + plannerContext.setPlanningError("%s can only be used on aggregates. " + + "It cannot be used directly on a column or or on a scalar expression.", getFunctionName()); return null; } diff --git a/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSqlAggregatorTest.java b/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSqlAggregatorTest.java index ac7ae090558f..a1a1e4fe3084 100644 --- a/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSqlAggregatorTest.java +++ b/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSqlAggregatorTest.java @@ -1014,4 +1014,12 @@ public void testGroupByAggregatorDefaultValuesFinalizeOuterSketches() ImmutableList.of(new Object[]{"a", 0L, 0L, "0.0", "0.0"}) ); } + + @Test + public void testThetaSketchIntersectOnScalarExpression() + { + assertQueryIsUnplannable("SELECT THETA_SKETCH_INTERSECT(NULL, NULL) FROM foo", + "Possible error: THETA_SKETCH_INTERSECT can only be used on aggregates. " + + "It cannot be used directly on a column or or on a scalar expression."); + } } From 8e08bdb3a0306825b1815a88fe92f5401e29579e Mon Sep 17 00:00:00 2001 From: Abhishek Agarwal <1477457+abhishekagarwal87@users.noreply.github.com> Date: Tue, 6 Dec 2022 19:17:12 +0530 Subject: [PATCH 2/2] Fix typo --- .../theta/sql/ThetaSketchSetBaseOperatorConversion.java | 2 +- .../datasketches/theta/sql/ThetaSketchSqlAggregatorTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSetBaseOperatorConversion.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSetBaseOperatorConversion.java index 651fb9165198..62c686cd2b2a 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSetBaseOperatorConversion.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSetBaseOperatorConversion.java @@ -64,7 +64,7 @@ public DruidExpression toDruidExpression( ) { plannerContext.setPlanningError("%s can only be used on aggregates. " + - "It cannot be used directly on a column or or on a scalar expression.", getFunctionName()); + "It cannot be used directly on a column or on a scalar expression.", getFunctionName()); return null; } diff --git a/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSqlAggregatorTest.java b/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSqlAggregatorTest.java index a1a1e4fe3084..f5a23178dd02 100644 --- a/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSqlAggregatorTest.java +++ b/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/sql/ThetaSketchSqlAggregatorTest.java @@ -1020,6 +1020,6 @@ public void testThetaSketchIntersectOnScalarExpression() { assertQueryIsUnplannable("SELECT THETA_SKETCH_INTERSECT(NULL, NULL) FROM foo", "Possible error: THETA_SKETCH_INTERSECT can only be used on aggregates. " + - "It cannot be used directly on a column or or on a scalar expression."); + "It cannot be used directly on a column or on a scalar expression."); } }