gitedmond opened a new pull request, #18375: URL: https://github.com/apache/iceberg/pull/18375
Pre-epoch timestamps at `.999999` (or `.999999999` for nanoseconds) in the first second of a temporal unit can transform into the preceding unit, breaking ordering and allowing inclusive partition projection to exclude matching rows. Compute seconds and fractional seconds from the same adjusted timestamp to preserve calendar boundaries for year, month, day, and hour transforms. Previously persisted incorrect partition values are not rewritten or recovered by this change; recovery needs separate consideration. Fixes #18371. Test plan: - Check second rollover and exact boundaries before, at, and after the epoch for all four transforms, both precisions, and both timezone variants. - Verify a matching timestamp remains eligible under inclusive day-partition projection. All 20 regression cases fail on unchanged main and pass with the fix. - `./gradlew spotlessApply` passed. `./gradlew :iceberg-api:build :iceberg-api:checkstyleMain :iceberg-api:checkstyleTest :iceberg-api:revapi` passed with Java 17: 1,309 tests passed, one skipped. A temporary init script preloaded the existing Byte Buddy agent because container self-attachment is unavailable; no repository configuration changed. - An independent calendar check across 829,472 transform results found 43,820 mismatches before and zero after. --- **AI Disclosure** - Model: GPT-6 - Platform/Tool: Codex in ChatGPT Work - Human Oversight: unreviewed - Prompt Summary: Reproduce #18371, investigate the root cause, implement and validate a fix, and open a PR. The conversion changes and regression tests were generated by the agent. -- 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]
