zhengxiang378928908-code commented on issue #12814: URL: https://github.com/apache/seatunnel/issues/12814#issuecomment-6228405643
@DanielLeens Thanks. I've updated the issue description with an "Agreed design" section that writes down the exact boundaries before any code: - Carrier only when every container on the path is a `ROW`; any `ARRAY` / `MAP` on the path fails at preflight. - The preflight check runs per source table before `MultiTableManager.mergeSchema` (the merge renames columns to `column0..N`), so the error can name the real table and column path (`.element` / `.key` / `.value`). - The workarounds are source-side only (leave the column out with e.g. `doris.read.field`, cast it in the source query, or run on Zeta/Flink). A `Sql` transform `CAST` cannot help on Spark, because the source schema is built and fails before any transform runs. - Carrier text rules for both `InternalRowConverter` and `SeaTunnelRowConverter` (the transform path uses `GenericRow` with `java.lang.String`): plain text only, `null` stays null, lossless `setScale` on write, exact scale/precision check on read, and malformed values are rejected with the column path. - Tests: unit round trips plus Spark 2.4 / 3.3 end-to-end runs with the signed 128-bit extrema, 0, NULL, and `DECIMAL(50, 10)`; Doris Spark containers stay enabled; EN/ZH docs and the incompatible-changes entries are listed. - The MySQL clamp stays out of scope; I'll open a separate issue for it. Please let me know if any boundary should change. I'll start the code once this section is accepted. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
