fix: InstantPatternLegacyFormatter precision for legacy n patterns#4220
Open
SebTardif wants to merge 1 commit into
Open
fix: InstantPatternLegacyFormatter precision for legacy n patterns#4220SebTardif wants to merge 1 commit into
SebTardif wants to merge 1 commit into
Conversation
…terns Legacy FixedDateFormat patterns use n for variable-length fractional seconds. DateTimeFormatter treats n as always nano-of-second, so precision detection via InstantPatternDynamicFormatter classified microsecond patterns as NANOS and broke cache invalidation. Map legacy n to S before precision detection (same approach as ppkarwasz on main). Red-green: yyyy-MM-dd HH:mm:ss,nnnnnn is MICROS with the fix, NANOS without. Fixes apache#3816 Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Problem This Solves
InstantPatternLegacyFormattercomputed precision by constructingInstantPatternDynamicFormatterwith the legacy pattern string. Legacy FixedDateFormat patterns usenfor variable-length fractional seconds. DateTimeFormatter treatsnas always nano-of-second, so patterns such asyyyy-MM-dd HH:mm:ss,nnnnnnwere classified asNANOSinstead ofMICROS, breaking cache invalidation for legacy formatters.Evidence
Issue #3816. Approach matches ppkarwasz's fix on main (
n→Sbefore precision detection), which was not present on2.x.Red-green
Without the fix:
With the fix:
InstantPatternLegacyFormatterPrecisionTest: 2 passedNamedInstantPatternTest: 21 passed (also asserts legacy/modern precision parity)Summary
ntoSonly for precision detectionInstantPatternLegacyFormattercomputes precision incorrectly #3816