fix: EXPOSED-718 Fix timestamp column not storing values in UTC time zone #2386
+149
−21
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.
Description
Summary of the change: Fixed timestamp column not storing values in UTC time zone
Detailed description:
Instant is in UTC time zone, and the expected behaviour is that the timestamp column should store values in UTC time zone since it is without a user-specified time zone. Using the session or system time zone leads to unexpected behaviour like this.
Created new formatters that use the UTC timezone and used these formatters for timestamp column type.
In
JavaInstantColumnType
andKotlinInstantColumnType
, I modified thenotNullValueToDB
function to return the formatted String for MySQL (excluding MariaDB) because there was an issue with MySQL 5 where it implicitly converted the value to the session time zone when storing it and lead to an unexpected behaviour when the value is retrieved.Type of Change
Please mark the relevant options with an "X":
Updates/remove existing public API methods:
Affected databases:
Checklist
Related Issues