{"record":{"id":"da642a4a7c779c33","repo":"apache/iceberg","slug":"not-a-supported-type-s","errorCode":null,"errorMessage":"Not a supported type: %s","messagePattern":"Not a supported type: (.+?)","errorType":"validation","errorClass":"ValidationException","httpStatus":null,"severity":"error","filePath":"delta-lake/src/main/java/org/apache/iceberg/delta/DeltaLakeTypeToType.java","lineNumber":155,"sourceCode":"      return Types.DoubleType.get();\n\n    } else if (atomic instanceof StringType) {\n      return Types.StringType.get();\n\n    } else if (atomic instanceof DateType) {\n      return Types.DateType.get();\n\n    } else if (atomic instanceof TimestampType) {\n      return Types.TimestampType.withZone();\n\n    } else if (atomic instanceof DecimalType) {\n      return Types.DecimalType.of(\n          ((DecimalType) atomic).getPrecision(), ((DecimalType) atomic).getScale());\n    } else if (atomic instanceof BinaryType) {\n      return Types.BinaryType.get();\n    }\n\n    throw new ValidationException(\"Not a supported type: %s\", atomic.getCatalogString());\n  }\n}\n","sourceCodeStart":137,"sourceCodeEnd":158,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/delta-lake/src/main/java/org/apache/iceberg/delta/DeltaLakeTypeToType.java#L137-L158","documentation":"DeltaLakeTypeToType.atomic converts Delta primitive types to Iceberg types; if the Delta type is none of the supported primitives (e.g. an unhandled Variant or new Delta type) it throws this ValidationException naming the type's catalog string.","triggerScenarios":"Snapshotting/migrating a Delta table whose schema contains a primitive type not covered by the mapping — typically newer Delta types (Variant) or exotic types from a newer delta-standalone version.","commonSituations":"Delta tables written by a newer Delta Lake protocol that introduced new column types; attempting migration before Iceberg added support for that type.","solutions":["Check the offending type in the message against Iceberg's supported Delta type mapping for your iceberg-delta-lake version.","Upgrade iceberg-delta-lake (and delta-standalone) to a release that supports the type (e.g. Variant support), then re-run.","Alter the Delta table to use a supported type (e.g. cast Variant columns to STRING/BINARY) before migration.","If no support exists upstream, patch DeltaLakeTypeToType.atomic to map the type to an appropriate Iceberg Type."],"exampleFix":"// before\nthrow new ValidationException(\"Not a supported type: %s\", atomic.getCatalogString());\n// after (after upgrading Iceberg, or as a stopgap)\nif (atomic instanceof VariantType) {\n  return Types.StringType.get(); // stopgap: variant encoded as string JSON\n}","handlingStrategy":"validation","validationCode":"Schema deltaSchema = deltaSnapshot.getMetadata().getSchema();\n// verify no unsupported primitive types before migration\nfor (StructField f : deltaSchema.getFields()) {\n  if (f.getDataType() instanceof VariantType) throw new IllegalStateException(\"Unsupported type: Variant\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  snapshotTable.execute();\n} catch (ValidationException e) {\n  // read unsupported type from message; alter Delta schema or upgrade Iceberg\n}","preventionTips":["Check the Delta table schema against the supported-type list for your iceberg-delta-lake version before migrating.","Upgrade delta-standalone + iceberg-delta-lake when the Delta protocol introduces new types.","Cast unsupported columns to supported types upstream."],"tags":["delta-lake","schema","type-mapping"],"backgroundTag":"incompatible-source-type","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}