tchivs commented on PR #4530: URL: https://github.com/apache/flink-cdc/pull/4530#issuecomment-5903854509
Following the review comments, TIME now uses a single memory layout at every precision, so the public API change is gone. - `writeTime` stores the same eight-byte value for all precisions, mirroring `writeTimestamp`; the `precision` argument no longer selects the layout. Same for the array writer's null setter and `calculateFixLengthPartSize`. - The `getTime(int, int)` additions to `RecordData` and `ArrayData` are removed. `RecordData` is back to upstream apart from the layout table in its javadoc; `ArrayData` gains one precision-free `getTime(int)`. - `TimeDataSerializer` has a single encoding path; the snapshot still reads the previous four-byte millisecond payload. Pre-upgrade data is decoded on the reader side rather than through the migration channel: a row slot is decoded by its tag bit, an array by its payload length (exact for N >= 2, and for N == 1 the tag bit decides). This corrects my earlier note: with one layout, `TIME(p <= 3)` is no longer byte-identical either, so old TIME state is read through the same legacy path at every precision. Also added the requested transform and routing coverage: `TIME(0)` / `TIME(3)` / `TIME(6)` / `TIME(9)` columns are projected, reordered and routed, and asserted per precision. Verified on the JDK 11 baseline with `clean`: `flink-cdc-common`, `flink-cdc-runtime` and `flink-cdc-composer` are green, including the new transform and routing cases. -- 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]
