openinx opened a new pull request, #18548: URL: https://github.com/apache/iceberg/pull/18548
Backport of #18497 to Flink 1.20. When a dynamic-record generator reuses a binary buffer, the forward ORC writer can persist the last value for multiple rows even with object reuse disabled. `DynamicRecordInternalSerializer#copy` now deep copies the row data so buffered writes keep each emitted value. The change applied cleanly from `flink/v2.3` with no modifications. Test plan: the tests from #18497. `TestDynamicRecordInternalSerializer` checks that both `copy` overloads keep top-level values, nested binary values, and `RowKind` after the source row is mutated. `TestDynamicIcebergSink#forwardOrcWritePreservesReusedBinaryBuffer` writes two rows from one reused buffer through the forward ORC path and checks that both values are persisted. These tests fail on Flink 1.20 without the fix. `spotlessCheck`, `checkstyleMain`, `checkstyleTest`, and the `org.apache.iceberg.flink.sink.dynamic.*` tests pass locally (292 tests, 0 failures). --- **AI Disclosure** - Model: Claude Opus 5.5 - Platform/Tool: Cursor - Human Oversight: fully reviewed - Prompt Summary: Backport #18497 to Flink 1.20, one PR per Flink version. The code is the #18497 change applied unchanged to `flink/v1.20`; the port and this description are generated. -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
