← Back to team overview

maria-developers team mailing list archive

MDEV-11829 RFC3339 Support

 

Hello,

This is in response to the comments on the initial pull request I made for
adding RFC3339 support [1].

The proposal is to add support for parsing RFC3339 and then use the given
timezone offset to shift the datetime.  I think most users would expect the
behavior to be converted to the timezone of the mariadb server / session as
defined in THD. Most timezone operations are depended on the session
specified timezone, whether that is set or inherited from global timezone,
or system timezone.

In order to convert from RFC3339 timezone to session timezone, we will need
to return the timezone from the str_to_datetime function. As mentioned
there is no timezone member of the MY_TIME struct. I believe a change to
the MY_TIME struct would be the most beneficial and cleanest approach. This
would allow for handling RFC3339 and future additions, such as a datetime
with time zone field, similar to the ansi timestamp with time zone. The
struct is used in a several ways, including packing into longlong, all of
those cases would need to be handled. This would be a much larger and more
involved patchset.

An alternative approach, that is less involved, would be use the
MYSQL_TIME_STATUS struct to indicate that a timezone offset exists. An
offset field and indicator could be added right to the status struct, or a
new warning can be used to indicate it exists in the raw string. Then the
caller of str_to_datetime can handle the timezone conversion.

A third approach, would be to change the function signature of
str_to_datetime and provide a variable to store the offset in, if exists.
I'm sure what the general stance is on altering entire function calls,
especially one that is older and quite important.

With any approach, the timezone could then be handled outside of my_time.c,
where we have THD and the timezone class, which can easily handle the
conversion.

I will start working on this once I receive some feedback on the general
direction that would result in an acceptable patchset.

[1] https://github.com/MariaDB/server/pull/290


Thank you,

Seth Shelnutt

Follow ups