li3zhi4 commented on PR #11746: URL: https://github.com/apache/seatunnel/pull/11746#issuecomment-6214401412
@SEZ9 — current-head evidence, part 1/2 (F1–F4), pinned to `e7586c06a83ae174775bd3fdd8aa46a05039672f`. These fixes already exist on this head; the last commit only adds `alwaysPull()` to the two SplitITs, rather than implementing F1–F8 anew. This is a request for your confirmation, not a claim of reviewer approval. - **F1 — SQLite NULL components:** boundary probes exclude NULL components; the first split includes them, while middle/last splits explicitly exclude them. See [boundary filter](https://github.com/apache/seatunnel/blob/e7586c06a83ae174775bd3fdd8aa46a05039672f/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/source/DynamicChunkSplitter.java#L300-L302) and [read predicates](https://github.com/apache/seatunnel/blob/e7586c06a83ae174775bd3fdd8aa46a05039672f/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/source/DynamicChunkSplitter.java#L1411-L1448). The official [SQLite regression](https://github.com/apache/seatunnel/blob/e7586c06a83ae174775bd3fdd8aa46a05039672f/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSqliteSplitIT.java#L260-L352) puts NULL-secondary-key rows strictly ins ide a middle range, checks fixture validity, all 93 rows/93 distinct keys, and all three NULL-key rows exactly once in the first split. - **F2 — Oracle 11g:** [runtime major-version gate](https://github.com/apache/seatunnel/blob/e7586c06a83ae174775bd3fdd8aa46a05039672f/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleDialect.java#L352-L375) returns false with WARN below 12 or on metadata SQLException, retaining the single-column fallback. [version regression](https://github.com/apache/seatunnel/blob/e7586c06a83ae174775bd3fdd8aa46a05039672f/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/source/CompositeKeyChunkSplitterTest.java#L477-L491) explicitly checks 11=false, 12/23=true. This is a runtime gate, not merely a documented prerequisite. - **F3/F4 — STRING/collation:** [findSplitKey guard](https://github.com/apache/seatunnel/blob/e7586c06a83ae174775bd3fdd8aa46a05039672f/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/source/ChunkSplitter.java#L445-L474) requires every composite PK component to be splittable and non-STRING; otherwise it uses the prior single-column path, including for binary collations. The official [MySQL regression](https://github.com/apache/seatunnel/blob/e7586c06a83ae174775bd3fdd8aa46a05039672f/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlSplitIT.java#L925-L1017) uses `utf8mb4_general_ci`, mixed case, accents/non-ASCII and comma-containing values; it proves DB/Java ordering divergence (`Z` vs `a`), asserts single-column `order_id` boundaries and exact reconstruction of all 300 keys without duplicates. Also [unit fallback regression] (https://github.com/apache/seatunnel/blob/e7586c06a83ae174775bd3fdd8aa46a05039672f/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/source/CompositeKeyChunkSplitterTest.java#L207-L228). F5–F8 and the precise Oracle ordered-run evidence follow separately to keep the response readable. -- 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]
