{"record":{"id":"197e9b82a66f7573","repo":"apache/seatunnel","slug":"unsupported-data-type-197e9b","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"Unsupported data type ${fieldType}","messagePattern":"Unsupported data type (.+?)","errorType":"error_code","errorClass":"DruidConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-druid/src/main/java/org/apache/seatunnel/connectors/druid/sink/DruidWriter.java","lineNumber":210,"sourceCode":"                case TIMESTAMP:\n                case STRING:\n                    dimensionSchemas.add(new StringDimensionSchema(columnName));\n                    break;\n                case FLOAT:\n                    dimensionSchemas.add(new FloatDimensionSchema(columnName));\n                    break;\n                case DECIMAL:\n                case DOUBLE:\n                    dimensionSchemas.add(new DoubleDimensionSchema(columnName));\n                    break;\n                case TINYINT:\n                case SMALLINT:\n                case INT:\n                case BIGINT:\n                    dimensionSchemas.add(new LongDimensionSchema(columnName));\n                    break;\n                default:\n                    throw new DruidConnectorException(\n                            CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,\n                            \"Unsupported data type \" + seaTunnelRowType.getFieldType(i));\n            }\n        }\n        return dimensionSchemas;\n    }\n\n    ParallelIndexIOConfig provideDruidIOConfig(final StringBuffer data) {\n        List<String> formatList =\n                Arrays.stream(seaTunnelRowType.getFieldNames()).collect(Collectors.toList());\n        formatList.add(TIMESTAMP_SPEC_COLUMN_NAME);\n        return new ParallelIndexIOConfig(\n                null,\n                new InlineInputSource(data.toString()),\n                new CsvInputFormat(formatList, DEFAULT_LINE_DELIMITER, null, false, 0),\n                false,\n                null);\n    }","sourceCodeStart":192,"sourceCodeEnd":228,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-druid/src/main/java/org/apache/seatunnel/connectors/druid/sink/DruidWriter.java#L192-L228","documentation":"DruidWriter.transformToDimensionSchema only maps SMALLINT/INT/BIGINT to LongDimensionSchema and a set of numeric/string types to their respective schemas; any other SeaTunnel data type reaching the switch has no Druid dimension mapping and throws DruidConnectorException with UNSUPPORTED_DATA_TYPE.","triggerScenarios":"A sink table column whose SeaTunnel type (e.g. MAP, ARRAY, BYTES, DECIMAL, DATE/TIME beyond supported cases) is passed to dimensionSchemas while building the Druid ingestion spec.","commonSituations":"Sourcing from databases with DECIMAL or timestamp columns and writing to Druid without casting; complex types (arrays/maps) in the upstream schema; forgetting to apply a transform to cast unsupported types.","solutions":["Cast unsupported columns to supported types (INT/BIGINT/VARCHAR) via a SeaTunnel transform before the Druid sink.","Exclude the unsupported column from the sink schema.","Check DruidWriter's switch to confirm the list of supported types and map your schema accordingly.","If the type should be supported, extend transformToDimensionSchema with a mapping (e.g. DoubleDimensionSchema for FLOAT/DOUBLE) in the connector."],"exampleFix":"// before\n// source column: DECIMAL amount -> Unsupported data type DECIMAL\n// after (transform in config)\nTransforms = [{\n  factory = Sql\n  sql = \"SELECT CAST(amount AS DOUBLE) AS amount FROM source\"\n}]","handlingStrategy":"validation","validationCode":"for (int i = 0; i < rowType.getTotalFields(); i++) {\n    SeaTunnelDataType<?> t = rowType.getFieldType(i);\n    if (!(SqlType.INT.equals(t.getSqlType()) || SqlType.BIGINT.equals(t.getSqlType())\n        || SqlType.STRING.equals(t.getSqlType()) || SqlType.DOUBLE.equals(t.getSqlType()))) {\n        throw new IllegalArgumentException(\"Druid sink unsupported type on column \"\n            + rowType.getFieldName(i) + \": \" + t);\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    sink.write(seaTunnelRow);\n} catch (DruidConnectorException e) {\n    if (CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE.equals(e.getErrorCode())) {\n        // add a CAST transform upstream or drop the column\n    } else throw e;\n}","preventionTips":["Cast DECIMAL/DATE/complex types to primitives before the Druid sink","Check the connector's supported type list when designing schemas","Use Sql transform to normalize types for Druid"],"tags":["druid","unsupported-type","data-type"],"backgroundTag":"unsupported-dtype","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}