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..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 @@ -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 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..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 @@ -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 on a scalar expression."); + } }