{"record":{"id":"fb4eb0a0734d2f1e","repo":"apache/beam","slug":"unsupported-type-type","errorCode":null,"errorMessage":"Unsupported type: <type>","messagePattern":"Unsupported type: <type>","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/io/delta/src/main/java/org/apache/beam/sdk/io/delta/SerializableRow.java","lineNumber":240,"sourceCode":"      return row.getString(index);\n    } else if (type instanceof BinaryType) {\n      return row.getBinary(index);\n    } else if (type instanceof DecimalType) {\n      return row.getDecimal(index);\n    } else if (type instanceof StructType) {\n      return new SerializableRow(row.getStruct(index));\n    } else if (type instanceof DateType) {\n      return row.getInt(index);\n    } else if (type instanceof TimestampType) {\n      return row.getLong(index);\n    } else if (type instanceof ArrayType) {\n      ArrayValue arr = row.getArray(index);\n      return convertArray(arr, (ArrayType) type);\n    } else if (type instanceof MapType) {\n      MapValue map = row.getMap(index);\n      return convertMap(map, (MapType) type);\n    }\n    throw new IllegalArgumentException(\"Unsupported type: \" + type);\n  }\n\n  private static @Nullable Object getVectorValue(ColumnVector vector, int index, DataType type) {\n    if (vector.isNullAt(index)) {\n      return null;\n    }\n    if (type instanceof BooleanType) {\n      return vector.getBoolean(index);\n    } else if (type instanceof ByteType) {\n      return vector.getByte(index);\n    } else if (type instanceof ShortType) {\n      return vector.getShort(index);\n    } else if (type instanceof IntegerType) {\n      return vector.getInt(index);\n    } else if (type instanceof LongType) {\n      return vector.getLong(index);\n    } else if (type instanceof FloatType) {\n      return vector.getFloat(index);","sourceCodeStart":222,"sourceCodeEnd":258,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/io/delta/src/main/java/org/apache/beam/sdk/io/delta/SerializableRow.java#L222-L258","documentation":"SerializableRow.getValue() serializes Delta kernel Row values into Java objects, handling primitive types plus ArrayType and MapType. Any other DataType falls through to an IllegalArgumentException 'Unsupported type: <type>'. This indicates a Delta DataType without a serialization mapping reached the converter.","triggerScenarios":"A table column whose top-level Delta DataType (as serialized into the row) is neither a supported primitive nor Array/Map when SerializableRow wraps the row for the Beam source.","commonSituations":"Newer Delta protocol types (e.g. variant) read with an older connector; schema evolution introducing types the serializer predates; reading a table written by a different Delta runtime.","solutions":["Upgrade the Beam Delta IO connector and delta kernel to a version with mappings for the column's type","Find the offending column via the table schema and cast it to a supported type in an upstream rewrite","Avoid selecting the unsupported column if projection is available","Confirm writer/reader protocol compatibility between the table and the connector's delta version"],"exampleFix":"// before\n// table contains a column with unmapped Delta type\nPCollection<Row> rows = input.apply(DeltaIO.read().withTable(path).withStartVersion(0L));\n// after\n-- rewrite table casting the column to a supported type (Spark/Scala example)\ndf = spark.read.format(\"delta\").load(path).withColumn(\"weird_col\", col(\"weird_col\").cast(\"string\"))\ndf.write.format(\"delta\").mode(\"overwrite\").save(path)","handlingStrategy":"validation","validationCode":"// Verify every top-level column type is serializable by the connector before reading\nfor (StructField f : deltaSchema.fields()) {\n  DataType t = f.getDataType();\n  if (!(t instanceof ArrayType) && !(t instanceof MapType) && !isPrimitiveSupported(t)) {\n    throw new IllegalStateException(\"Column \" + f.getName() + \" of type \" + t + \" is not serializable\");\n  }\n}","typeGuard":null,"tryCatchPattern":"try {\n  rows = input.apply(deltaIO);\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().startsWith(\"Unsupported type:\")) {\n    // cast/rewrite the offending column, or upgrade the connector\n  } else { throw e; }\n}","preventionTips":["Scan table schemas for unsupported Delta types before pipeline deployment","Pin connector/kernel versions that match the tables' writer protocol","Normalize schemas upstream so only primitives, arrays, maps, and structs reach Beam"],"tags":["java","apache-beam","delta-lake","unsupported-type","serialization"],"backgroundTag":"unsupported-operation","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}