{"record":{"id":"cc6b7c5bb8a210e1","repo":"apache/druid","slug":"cannot-handle-column-s-with-type-s-cc6b7c","errorCode":null,"errorMessage":"Cannot handle column [%s] with type [%s]","messagePattern":"Cannot handle column \\[(.+?)\\] with type \\[(.+?)\\]","errorType":"exception","errorClass":"UnsupportedColumnTypeException","httpStatus":null,"severity":"error","filePath":"processing/src/main/java/org/apache/druid/frame/read/columnar/UnsupportedColumnTypeFrameColumnReader.java","lineNumber":49,"sourceCode":" * frame reader\n */\npublic class UnsupportedColumnTypeFrameColumnReader implements FrameColumnReader\n{\n\n  private final String columnName;\n  @Nullable\n  private final ColumnType columnType;\n\n  UnsupportedColumnTypeFrameColumnReader(String columnName, @Nullable ColumnType columnType)\n  {\n    this.columnName = columnName;\n    this.columnType = columnType;\n  }\n\n  @Override\n  public Column readRACColumn(Frame frame)\n  {\n    throw new UnsupportedColumnTypeException(columnName, columnType);\n  }\n\n  @Override\n  public ColumnPlus readColumn(Frame frame)\n  {\n    throw new UnsupportedColumnTypeException(columnName, columnType);\n  }\n}\n","sourceCodeStart":31,"sourceCodeEnd":58,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/processing/src/main/java/org/apache/druid/frame/read/columnar/UnsupportedColumnTypeFrameColumnReader.java#L31-L58","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","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"],"exampleFix":"// before\nString v = row.get(rowSignature.indexOf(\"weirdCol\")); // throws for unsupported type\n// after\nString v = row.get(rowSignature.indexOf(\"CAST(weirdCol AS VARCHAR)\")); // or drop the column","handlingStrategy":"type-guard","validationCode":"ColumnType t = signature.getColumnType(idx).orElse(null); if (t == null || !SUPPORTED_RAC_TYPES.contains(t)) { throw new UnsupportedColumnTypeException(name, t); }","typeGuard":"boolean isSupportedColumnType(ColumnType t) { return t != null && EnumSet.of(ColumnType.LONG, ColumnType.FLOAT, ColumnType.DOUBLE, ColumnType.STRING).contains(t); }","tryCatchPattern":"try { column.readRACColumn(frame); } catch (UnsupportedColumnTypeException e) { log.warn(\"Skipping unsupported column {} of type {}\", e.getColumnName(), e.getColumnType()); }","preventionTips":["Check type support before selecting columns into frame output","Keep writer/reader Druid versions aligned","Cast exotic types to VARCHAR in SQL"],"tags":["unsupported-type","column-reader","frame"],"backgroundTag":"unsupported-operation","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}