{"record":{"id":"be8f33e8e7638984","repo":"apache/beam","slug":"unsupported-type-fieldtype-schemautils","errorCode":null,"errorMessage":"Unsupported type: {fieldType}","messagePattern":"Unsupported type: (.+?)","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"sdks/java/extensions/sql/datacatalog/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/datacatalog/SchemaUtils.java","lineNumber":187,"sourceCode":"        Schema.LogicalType<?, ?> logical = fieldType.getLogicalType();\n        if (SqlTypes.TIME.getIdentifier().equals(logical.getIdentifier())) {\n          return \"TIME\";\n        } else if (SqlTypes.DATE.getIdentifier().equals(logical.getIdentifier())) {\n          return \"DATE\";\n        } else if (SqlTypes.DATETIME.getIdentifier().equals(logical.getIdentifier())) {\n          return \"DATETIME\";\n        } else {\n          throw new UnsupportedOperationException(\"Unsupported logical type: \" + logical);\n        }\n      case ROW:\n        return \"STRUCT\";\n      case MAP:\n        return String.format(\n            \"MAP<%s,%s>\",\n            getDataCatalogType(fieldType.getMapKeyType()),\n            getDataCatalogType(fieldType.getMapValueType()));\n      default:\n        throw new UnsupportedOperationException(\"Unsupported type: \" + fieldType);\n    }\n  }\n}\n","sourceCodeStart":169,"sourceCodeEnd":191,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/extensions/sql/datacatalog/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/datacatalog/SchemaUtils.java#L169-L191","documentation":"SchemaUtils.getDataCatalogType converts Beam SQL (Calcite) column types into Data Catalog standard SQL types. When a field's type falls outside the handled cases (e.g. MAP and other exotic types are supported but anything hitting the default branch is not), the method throws UnsupportedOperationException. It signals that a column type in your schema cannot be represented in Data Catalog's type model.","triggerScenarios":"Calling getDataCatalogType (directly or via colBuilder during schema conversion) with a FieldType that has no mapping in the switch statement, e.g. unsupported nested or logical types.","commonSituations":"Creating a Data Catalog table from a Beam schema containing types newly added to Beam that SchemaUtils has not been updated to map; using MAP/complex types in an older Beam version where only some cases were implemented.","solutions":["Inspect the FieldType being passed and simplify the schema to use supported SQL types (e.g. primitive types, ARRAY, MAP if supported).","Upgrade the Beam SDK version, as newer releases add more type mappings to SchemaUtils.","If the type is genuinely unmappable, drop or coerce that column before registering the table with Data Catalog."],"exampleFix":"// before\nField field = schema.getField(\"config\"); // FieldType of unsupported logical type\n// after\nSchema simplified = Schema.builder().addStringField(\"config\").build(); // use a supported type","handlingStrategy":"validation","validationCode":"// before registering with Data Catalog\nschema.getFields().forEach(f -> {\n  if (!SUPPORTED_TYPES.contains(f.getType().getTypeName())) {\n    throw new IllegalArgumentException(\"Field \" + f.getName() + \" uses unsupported type \" + f.getType());\n  }\n});","typeGuard":"boolean isSupportedType(FieldType t) {\n  switch (t.getTypeName()) {\n    case BOOLEAN: case INTEGER: case BIGINT: case DOUBLE: case STRING: case DATE: case TIMESTAMP: case ARRAY: case MAP: return true;\n    default: return false;\n  }\n}","tryCatchPattern":"try {\n  DataCatalogSchemaUtils.toStandardSqlType(schema);\n} catch (UnsupportedOperationException e) {\n  // inspect e.getMessage() for the offending type, simplify schema or skip field\n}","preventionTips":["Prefer primitive types and well-supported composites in Beam schemas destined for Data Catalog.","Keep the Beam SDK version current so newly added FieldTypes have mappings.","Unit-test schema conversion with your production schema before deployment."],"tags":["java","beam-sql","type-conversion","schema"],"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"}