Follow-up from the RFC-105 Trino plugin PR #18837 (review thread on HudiTrinoReaderContext.getRecordMerger).
HudiTrinoReaderContext.getRecordMerger now dispatches on RecordMergeMode, mirroring HoodieAvroReaderContext:
EVENT_TIME_ORDERING -> HoodieAvroRecordMerger
COMMIT_TIME_ORDERING -> OverwriteWithLatestMerger
CUSTOM -> HoodieRecordUtils.createValidRecordMerger(...)
The existing MoR snapshot / _rt tests all use the default payload, where event-time merge results are identical regardless of which merger is selected. So they do not exercise the paths where the merger choice actually matters:
- Delete markers (
_hoodie_is_deleted / delete records in log files) on MoR snapshot reads - combineAndGetUpdateValue propagates deletes, preCombine does not.
- Custom record payloads (e.g.
PartialUpdateAvroPayload, OverwriteNonDefaultsWithLatestAvroPayload, AWSDmsAvroPayload) where combineAndGetUpdateValue differs from preCombine.
- COMMIT_TIME_ORDERING MoR tables - verify
OverwriteWithLatestMerger semantics (latest write wins).
Add functional tests (preferably Trino smoke-test level against registered MoR tables) covering these so the merge-mode dispatch is verified end-to-end.
Tracked inline via a TODO in HudiTrinoReaderContext.getRecordMerger.
Follow-up from the RFC-105 Trino plugin PR #18837 (review thread on
HudiTrinoReaderContext.getRecordMerger).HudiTrinoReaderContext.getRecordMergernow dispatches onRecordMergeMode, mirroringHoodieAvroReaderContext:EVENT_TIME_ORDERING->HoodieAvroRecordMergerCOMMIT_TIME_ORDERING->OverwriteWithLatestMergerCUSTOM->HoodieRecordUtils.createValidRecordMerger(...)The existing MoR snapshot /
_rttests all use the default payload, where event-time merge results are identical regardless of which merger is selected. So they do not exercise the paths where the merger choice actually matters:_hoodie_is_deleted/ delete records in log files) on MoR snapshot reads -combineAndGetUpdateValuepropagates deletes,preCombinedoes not.PartialUpdateAvroPayload,OverwriteNonDefaultsWithLatestAvroPayload,AWSDmsAvroPayload) wherecombineAndGetUpdateValuediffers frompreCombine.OverwriteWithLatestMergersemantics (latest write wins).Add functional tests (preferably Trino smoke-test level against registered MoR tables) covering these so the merge-mode dispatch is verified end-to-end.
Tracked inline via a TODO in
HudiTrinoReaderContext.getRecordMerger.