{"record":{"id":"bf60c6cc46de581c","repo":"apache/seatunnel","slug":"common-17-bf60c6","errorCode":"COMMON-17","errorMessage":"'<identifier>' unsupported convert type '<dataType>' of '<field>' to SeaTunnel data type.","messagePattern":"'<identifier>' unsupported convert type '<dataType>' of '<field>' to SeaTunnel data type\\.","errorType":"error_code","errorClass":"SeaTunnelRuntimeException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-amazondynamodb/src/main/java/org/apache/seatunnel/connectors/seatunnel/amazondynamodb/serialize/DefaultSeaTunnelRowDeserializer.java","lineNumber":151,"sourceCode":"                } else if (attributeValue.hasSs()) {\n                    List<String> datas = attributeValue.ss();\n                    for (int index = 0; index < datas.size(); index++) {\n                        Array.set(array, index, AttributeValue.fromS(datas.get(index)));\n                    }\n                } else if (attributeValue.hasNs()) {\n                    List<String> datas = attributeValue.ns();\n                    for (int index = 0; index < datas.size(); index++) {\n                        Array.set(array, index, AttributeValue.fromS(datas.get(index)));\n                    }\n                } else if (attributeValue.hasBs()) {\n                    List<SdkBytes> datas = attributeValue.bs();\n                    for (int index = 0; index < datas.size(); index++) {\n                        Array.set(array, index, AttributeValue.fromB(datas.get(index)));\n                    }\n                }\n                return array;\n            default:\n                throw CommonError.convertToSeaTunnelTypeError(\n                        \"AmazonDynamodb\", seaTunnelDataType.getSqlType().toString(), field);\n        }\n    }\n}\n","sourceCodeStart":133,"sourceCodeEnd":156,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-amazondynamodb/src/main/java/org/apache/seatunnel/connectors/seatunnel/amazondynamodb/serialize/DefaultSeaTunnelRowDeserializer.java#L133-L156","documentation":"DefaultSeaTunnelRowDeserializer converts DynamoDB AttributeValues into Java values according to the declared SeaTunnel column type. This error is thrown in convert's default branch when the field's SeaTunnel SQL type is one the deserializer does not handle (e.g. ROW/struct or other types outside BOOLEAN/INT/STRING/BYTES/MAP/ARRAY/etc.), so the DynamoDB connector cannot map the value.","triggerScenarios":"Reading from Amazon DynamoDB with a table schema that declares a column whose SeaTunnel SqlType falls through the switch (e.g. ROW, NULL, or another unmapped type), during convertRow/convert at deserialization time.","commonSituations":"Schema defined with nested row types or types unsupported by the DynamoDB deserializer; a catalog-to-seaTunnel type mapping producing an unexpected SqlType; version changes adding SqlTypes not covered by the switch.","solutions":["Identify the failing field and its SqlType from the error message, then change the schema to a supported type (TINYINT/SMALLINT/INT/BIGINT/DOUBLE/DECIMAL/BOOLEAN/STRING/TIME/DATE/TIMESTAMP/BYTES/MAP/ARRAY).","Flatten nested struct (ROW) columns into supported types before reading from DynamoDB.","Cast complex columns to STRING and parse them downstream if needed.","If a type should be supported, extend DefaultSeaTunnelRowDeserializer.convert with a case for it and file an upstream issue."],"exampleFix":"// before: unsupported ROW column in schema\nSeaTunnelRowType row = ...  \"nested\" -> ROW_TYPE\n// after: declare as string and parse downstream\n\"nested\" -> BasicType.STRING_TYPE","handlingStrategy":"validation","validationCode":"// Check the SeaTunnel schema types before running the DynamoDB source\nfor (CatalogColumn col : catalogTable.getTableSchema().getColumns()) {\n    SqlType t = col.getDataType().getSqlType();\n    Set<SqlType> supported = Set.of(SqlType.TINYINT, SqlType.SMALLINT, SqlType.INT, SqlType.BIGINT,\n            SqlType.DOUBLE, SqlType.DECIMAL, SqlType.BOOLEAN, SqlType.STRING, SqlType.TIME,\n            SqlType.DATE, SqlType.TIMESTAMP, SqlType.BYTES, SqlType.MAP, SqlType.ARRAY);\n    if (!supported.contains(t)) {\n        throw new IllegalArgumentException(\"DynamoDB deserializer does not support column '\" + col.getName() + \"' of type \" + t);\n    }\n}","typeGuard":"boolean isDynamoDbSupportedType(SeaTunnelDataType<?> t) {\n    return java.util.Set.of(SqlType.TINYINT, SqlType.SMALLINT, SqlType.INT, SqlType.BIGINT,\n        SqlType.DOUBLE, SqlType.DECIMAL, SqlType.BOOLEAN, SqlType.STRING, SqlType.TIME,\n        SqlType.DATE, SqlType.TIMESTAMP, SqlType.BYTES, SqlType.MAP, SqlType.ARRAY)\n        .contains(t.getSqlType());\n}","tryCatchPattern":"try {\n    reader.read();\n} catch (Exception e) {\n    // message contains 'AmazonDynamodb' and the unsupported SqlType\n    throw new RuntimeException(\"Adjust DynamoDB source schema: \" + e.getMessage(), e);\n}","preventionTips":["Restrict DynamoDB source schemas to the deserializer's supported SqlTypes.","Flatten ROW/struct columns to scalars or strings before reading DynamoDB.","Re-check schemas after SeaTunnel upgrades in case new SqlTypes appear.","Test deserialization on sample items before full table scans."],"tags":["java","dynamodb","deserialization","unsupported-type"],"backgroundTag":"unsupported-operation","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}