apache/druid · error · UnsupportedColumnTypeException
Cannot handle column
Error message
Cannot handle column [%s] with type [%s]
What it means
UnsupportedColumnTypeFrameColumnReader is the fallback reader for column types the frame columnar format cannot decode. readRACColumn unconditionally throws UnsupportedColumnTypeException naming the column and its (unsupported) type. Hitting it means a frame containing a column with a type outside the supported set was read.
Solutions
- Upgrade Druid so all nodes support the column type, or remove the unsupported column from the query/output
- Cast the column to a supported type in SQL (e.g. CAST to VARCHAR/LONG) before it reaches frame processing
- Inspect the error's columnName/columnType and check FrameColumnReaders.create to confirm support
- If a legitimate new type is missing, report/patch the reader for that ColumnType
Example fix
// before
String v = row.get(rowSignature.indexOf("weirdCol")); // throws for unsupported type
// after
String v = row.get(rowSignature.indexOf("CAST(weirdCol AS VARCHAR)")); // or drop the column Defensive patterns
Strategy: type-guard
Validate before calling
ColumnType t = signature.getColumnType(idx).orElse(null); if (t == null || !SUPPORTED_RAC_TYPES.contains(t)) { throw new UnsupportedColumnTypeException(name, t); } Type guard
boolean isSupportedColumnType(ColumnType t) { return t != null && EnumSet.of(ColumnType.LONG, ColumnType.FLOAT, ColumnType.DOUBLE, ColumnType.STRING).contains(t); } Try / catch
try { column.readRACColumn(frame); } catch (UnsupportedColumnTypeException e) { log.warn("Skipping unsupported column {} of type {}", e.getColumnName(), e.getColumnType()); } Prevention
- Check type support before selecting columns into frame output
- Keep writer/reader Druid versions aligned
- Cast exotic types to VARCHAR in SQL
When it happens
Trigger: Calling FrameReader/columnar reader machinery on a frame whose row-alias (RAC) column has an unsupported ColumnType (e.g. newly introduced types not yet handled by the frame reader, or COMPLEX variants without support).
Common situations: Druid version skew: frames written by a newer cluster node with a new type read by an older node; array-of-array or exotic complex types flowing through MSQ/frame pipelines; queries selecting columns with types unsupported by frame exchange.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Cannot handle column
- Cannot handle column
- Cannot create comparator for array type
- Cannot handle column
- Cannot handle column
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/cc6b7c5bb8a210e1.
Report an issue: GitHub.
Appendix: source
Thrown at processing/src/main/java/org/apache/druid/frame/read/columnar/UnsupportedColumnTypeFrameColumnReader.java:49
* frame reader
*/
public class UnsupportedColumnTypeFrameColumnReader implements FrameColumnReader
{
private final String columnName;
@Nullable
private final ColumnType columnType;
UnsupportedColumnTypeFrameColumnReader(String columnName, @Nullable ColumnType columnType)
{
this.columnName = columnName;
this.columnType = columnType;
}
@Override
public Column readRACColumn(Frame frame)
{
throw new UnsupportedColumnTypeException(columnName, columnType);
}
@Override
public ColumnPlus readColumn(Frame frame)
{
throw new UnsupportedColumnTypeException(columnName, columnType);
}
}
View on GitHub (pinned to 9b90983fd2)