Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
2.4.2
-
None
-
All
Description
org.mariadb.jdbc.internal.com.send.parameters.OffsetTimeParameter seems to be broken. It contains the following code:
ZoneId zoneId = options.useLegacyDatetimeCode ? ZoneOffset.systemDefault() :
|
serverZoneId;
|
if (zoneId instanceof ZoneOffset) { |
throw new SQLException("cannot set OffsetTime, since server time zone is set to '" |
+ serverZoneId.toString() + "' (check server variables time_zone and system_time_zone)"); |
}
|
this.time = offsetTime.withOffsetSameInstant((ZoneOffset) zoneId); |
I am not sure how it is supposed to work but atm it does not seem to be possible to pass in any zoneId that would be accepted. First a validation makes sure that the zoneId is not ZoneOffset and granted that validation is passed, it is then immediately cast to ZoneOffset which fails. So - neither ZoneRegion nor ZoneOffset work here.
org.mariadb.jdbc.internal.com.send.parameters.ZonedDateTimeParameter does not seem to have the validation block, so maybe this is unnecessary also here?
When I implemented my own ParameterHolder and set it on the Statement using setParameter, it was possible to save Java 8 Time types to the DB