LakshSingla commented on code in PR #16682:
URL: https://github.com/apache/druid/pull/16682#discussion_r1671620773


##########
extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchAggregatorFactory.java:
##########
@@ -104,20 +99,40 @@ public AggregatorAndSize 
factorizeWithSize(ColumnSelectorFactory metricFactory)
   @Override
   public BufferAggregator factorizeBuffered(ColumnSelectorFactory 
metricFactory)
   {
-    ColumnCapabilities capabilities = 
metricFactory.getColumnCapabilities(fieldName);
-    if (capabilities != null && capabilities.isArray()) {
-      throw InvalidInput.exception("ARRAY types are not supported for theta 
sketch");
-    }
+    validateInputs(metricFactory.getColumnCapabilities(fieldName));
     BaseObjectColumnValueSelector selector = 
metricFactory.makeColumnValueSelector(fieldName);
     return new SketchBufferAggregator(selector, size, 
getMaxIntermediateSizeWithNulls());
   }
 
   @Override
   public VectorAggregator factorizeVector(VectorColumnSelectorFactory 
selectorFactory)
   {
+    validateInputs(selectorFactory.getColumnCapabilities(fieldName));
     return new SketchVectorAggregator(selectorFactory, fieldName, size, 
getMaxIntermediateSizeWithNulls());
   }
 
+  /**
+   * Validates whether the aggregator supports the input column type.
+   * @param capabilities
+   */
+  private void validateInputs(@Nullable ColumnCapabilities capabilities)
+  {
+    if (capabilities != null) {
+      if (capabilities.isArray() || (capabilities.is(ValueType.COMPLEX) && !(

Review Comment:
   nit: Let's break out the second half of the conditional into a variable, and 
have the condition like:
   `capabilities.isArray() || !supportedComplexTypes) { throw.. }`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to