-
Notifications
You must be signed in to change notification settings - Fork 860
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixing LocalTime rounding (losing precision) #1570
Conversation
❌ Build pgjdbc 1.0.449 failed (commit fb32c1c4fc by @franetw) |
✅ Build pgjdbc 1.0.450 completed (commit c108576bc8 by @franetw) |
❌ Build pgjdbc 1.0.451 failed (commit aded3817c2 by @franetw) |
Codecov Report
@@ Coverage Diff @@
## master #1570 +/- ##
============================================
- Coverage 68.9% 68.89% -0.01%
+ Complexity 3972 3969 -3
============================================
Files 179 179
Lines 16565 16557 -8
Branches 2695 2694 -1
============================================
- Hits 11414 11407 -7
+ Misses 3899 3897 -2
- Partials 1252 1253 +1 |
pgjdbc/src/test/java/org/postgresql/jdbc/TimestampUtilsTest.java
Outdated
Show resolved
Hide resolved
I assume the failing build is due to these tests running on JRE7 when |
❌ Build pgjdbc 1.0.452 failed (commit e665359ca8 by @franetw) |
search for it is used in before TimestampUtilsTest.toLocalTimeBin() |
❌ Build pgjdbc 1.0.457 failed (commit dd1960fbe7 by @franetw) |
❌ Build pgjdbc 1.0.458 failed (commit f3bf18cb50 by @franetw) |
* origin/master: (427 commits) refactor: make PSQLState enum consts for integrity constraint violations (pgjdbc#1699) [maven-release-plugin] prepare for next development iteration [maven-release-plugin] prepare release REL42.2.10 pass gpg key through arguments add passphrase to release mvn task chore: update signing key Metadata queries improvment (pgjdbc#1694) WIP release notes for 42.2.10 (pgjdbc#1688) chore(deps): bump checkstyle from 8.28 to 8.29 in /pgjdbc (pgjdbc#1691) Cleanup PGProperty, sort values, and add some missing to docs (pgjdbc#1686) fix: Fixes issue pgjdbc#1592 where one thread is reading the copy and another thread closes the connection (pgjdbc#1594) Fixing LocalTime rounding (losing precision) (pgjdbc#1570) sync error message value with tested value (pgjdbc#1664) add DatabaseMetaDataCacheTest to test suite to run it (pgjdbc#1685) Fix Network Performance of PgDatabaseMetaData.getTypeInfo() method (pgjdbc#1668) fix: Issue pgjdbc#1680 updating a boolean field requires special handling to set it to t or f instead of true or false (pgjdbc#1682) fix testSetNetworkTimeoutEnforcement test failure (pgjdbc#1681) minor: fix checkstyle violation of unused import (pgjdbc#1683) fix: pgjdbc#1677 NumberFormatException when fetching PGInterval with small value (pgjdbc#1678) fix: actually use milliseconds instead of microseconds for timeouts (pgjdbc#1653) ...
When converting the Java
LocalTime
to PostgreSQLtime
value we have to consider the following:LocalTime
has nano andtime
has micro precisiontime
max value is24:00:00
whileLocalTime
is23:59:59.999999999
Conversion logic:
23:59:59.999999500
to24:00:00
The current code intends to do this but it has a bug where it rounds too much. This PR fixes it.
I've added test for
toLocalTime()
which demostrates that these two methods are asymmetrical, you can lose/change information if you store and retrieve the time.Example:
I'm open to suggestions on how can this be consolidated and if there's anything hidden to consider with this kind of change.
All Submissions:
New Feature Submissions:
Changes to Existing Features: