Message-ID: From: "vlsi (@vlsi)" To: "pgjdbc/pgjdbc" Date: Thu, 05 Feb 2026 16:01:23 +0000 Subject: Re: [pgjdbc/pgjdbc] issue #3930: Revert semantic calendar changes introduced with #3837 In-Reply-To: References: List-Id: X-GitHub-Author-Login: vlsi X-GitHub-Comment-Id: 3854580552 X-GitHub-Comment-Type: issue_comment X-GitHub-Issue: 3930 X-GitHub-Repo: pgjdbc/pgjdbc X-GitHub-Type: comment X-GitHub-Url: https://github.com/pgjdbc/pgjdbc/issues/3930#issuecomment-3854580552 Content-Type: text/plain; charset=utf-8 Looks like we should indeed better keep backward compatibility rather than introduce incompatible chainges in patch releases. ``` The Current Issue The fix introduced a semantic breaking change that causes apparent "data corruption" for historical dates (pre-1582): ┌────────────────────────────────────────────────┬──────────────────┐ │ Scenario │ Result │ ├────────────────────────────────────────────────┼──────────────────┤ │ Write 1000-01-02 with 42.7.9, read with 42.7.8 │ Shows 1000-01-07 │ ├────────────────────────────────────────────────┼──────────────────┤ │ Write 1000-01-02 with 42.7.8, read with 42.7.9 │ Shows 999-12-28 │ └────────────────────────────────────────────────┴──────────────────┘ Possible Resolutions ┌──────────────────────────┬───────────────────────────────────────┬──────────────────────────────────────────┐ │ Option │ Pros │ Cons │ ├──────────────────────────┼───────────────────────────────────────┼──────────────────────────────────────────┤ │ Full revert │ Restores backward compatibility │ Keeps the technically incorrect behavior │ ├──────────────────────────┼───────────────────────────────────────┼──────────────────────────────────────────┤ │ Major version (43.0.0) │ Proper semver for breaking change │ Requires re-release │ ├──────────────────────────┼───────────────────────────────────────┼──────────────────────────────────────────┤ │ Connection property │ User choice, both behaviors available │ Added complexity, not clear default │ ├──────────────────────────┼───────────────────────────────────────┼──────────────────────────────────────────┤ │ Default old + opt-in new │ Backward compatible with path forward │ Technical correctness not default │ └──────────────────────────┴───────────────────────────────────────┴──────────────────────────────────────────┘ ``` I do not see win-win case here :-/ Frankly, I am leaning towards "revert behavior, and add an option that could match driver's behavior with database behavior".