{"record":{"id":"398e3c2b56f7423e","repo":"apache/druid","slug":"cardinality-aggregator-does-not-support-s-inputs","errorCode":null,"errorMessage":"Cardinality aggregator does not support[%s] inputs","messagePattern":"Cardinality aggregator does not support\\[(.+?)\\] inputs","errorType":"exception","errorClass":"org.apache.druid.java.util.common.UOE","httpStatus":null,"severity":"error","filePath":"processing/src/main/java/org/apache/druid/query/aggregation/cardinality/vector/CardinalityVectorProcessorFactory.java","lineNumber":73,"sourceCode":"    return new FloatCardinalityVectorProcessor(selector);\n  }\n\n  @Override\n  public CardinalityVectorProcessor makeDoubleProcessor(ColumnCapabilities capabilities, VectorValueSelector selector)\n  {\n    return new DoubleCardinalityVectorProcessor(selector);\n  }\n\n  @Override\n  public CardinalityVectorProcessor makeLongProcessor(ColumnCapabilities capabilities, VectorValueSelector selector)\n  {\n    return new LongCardinalityVectorProcessor(selector);\n  }\n\n  @Override\n  public CardinalityVectorProcessor makeArrayProcessor(ColumnCapabilities capabilities, VectorObjectSelector selector)\n  {\n    throw new UOE(\n        \"Cardinality aggregator does not support[%s] inputs\",\n        capabilities.toColumnType()\n    );\n  }\n\n  @Override\n  public CardinalityVectorProcessor makeObjectProcessor(ColumnCapabilities capabilities, VectorObjectSelector selector)\n  {\n    // Handles string-as-object and complex types.\n    return new StringObjectCardinalityVectorProcessor(selector);\n  }\n}\n","sourceCodeStart":55,"sourceCodeEnd":86,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/vector/CardinalityVectorProcessorFactory.java#L55-L86","documentation":"CardinalityVectorProcessorFactory does not implement a vectorized processor for array-typed columns. makeArrayProcessor unconditionally throws this UnsupportedOperationException, so a vectorized cardinality aggregation over an ARRAY column cannot proceed. Only long/float/double (and string via other make*Processor methods) inputs are supported.","triggerScenarios":"Executing a cardinality aggregation in vectorized mode where the input column's capabilities indicate an ARRAY type, causing the engine to call makeArrayProcessor.","commonSituations":"Querying an ARRAY-typed dimension (e.g. ingested JSON arrays, auto-detect arrays) with a cardinality aggregator while vectorization is enabled; recent ingestion changes turned a string dimension into an array column.","solutions":["Change the query to aggregate over a non-array column, or use a SQL expression like ARRAY_TO_STRING/UNNEST before distinct counting.","Disable vectorization for the affected query/engine (e.g. set query vectorization off) to fall back to the non-vectorized path.","Re-ingest the column as a scalar type if arrays were produced unintentionally.","Check Druid version for added array support in cardinality; upgrade if a newer release supports it."],"exampleFix":"// before\nSELECT APPROX_COUNT_DISTINCT_DS_HLL(array_col) FROM t\n// after\nSELECT APPROX_COUNT_DISTINCT_DS_HLL(ARRAY_TO_STRING(array_col, ',')) FROM t","handlingStrategy":"validation","validationCode":"if (capabilities.getType() == ValueType.ARRAY) {\n  throw new IllegalArgumentException(\"cardinality does not vectorize ARRAY column: \" + capabilities.toColumnType());\n}","typeGuard":"boolean isArrayColumn(ColumnCapabilities c) {\n  return c != null && c.getType() == ValueType.ARRAY;\n}","tryCatchPattern":"try {\n  processor = factory.makeVectorProcessor(capabilities, factory.makeArrayProcessor(capabilities, selector));\n} catch (UnsupportedOperationException e) {\n  // fall back to non-vectorized aggregation for array columns\n  runNonVectorizedPlan();\n}","preventionTips":["Check column capabilities (hasMultipleValues / array semantics) before relying on vectorized cardinality.","Disable vectorization for queries touching ARRAY columns.","Keep ingestion schemas scalar where distinct counts will be computed."],"tags":["druid","vectorization","aggregation","array"],"backgroundTag":"unsupported-operation","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}