On 5-6-2018 11:43, Lester Caine wrote:
On 05/06/18 09:39, Mark Rotteveel wrote:
On 5-6-2018 10:16, Lester Caine wrote:
On 05/06/18 08:50, Mark Rotteveel wrote:
That naming doesn't make much sense to me, and I actually found the RULE_START and RULE_END naming pretty clear and self-explanatory.

Except that it's not the rule itself, but the transitions within the rule ... I'd still like to know why there is a need for the 'end' anyway as the next transition already contains that.

Because that is easier when doing queries... select * from ... where current_timestamp between rule_start and rule_end.

But you have to use 'current_timestamp' to find the 'rule_start' and 'rule_end' and for many timezones 'rule_end' will simply be the current generic end date returned by the tz database. It requires a little bit more processing than simply pulling out two numbers for a single transition. You normally need the data from the next transition in any case. Your example would be much better as select * from ... where date between tzoffset(tz, date, current_start) and tzoffset(tz, date, next_start) And we can also have tzoffset(tz, date, current) and tzoffset(tz, date, next )

That is still no argument to leave the end of the range out of the provided information. Including it will have little to no cost, and provides full information in one record, which makes it self-contained and easy to understand.

And I've still not had anybody explain why the removal of seconds from the offsets is seen as a good idea?

Why is it a bad idea?

Because the first transition of every rule set is from LMT to a standard time of some sort. All normalizations to UTC time prior to various times in the last 200 years involve a seconds based correction. SO if one is doing any historic work, one has to ditch many current methods ... because they only work from 1970 ... and do things a different way. At the very least, the documentation has to SAY when the built in procedures can be relied on, and when one has to ditch them. At the same time adding the fact the dates are all Gregorian would be useful. Knowing that historic changes TO Gregorian dates need special treatment would be useful ... I only learnt that Russia was still on the Julian calendar until the early 1900's this week ...

Is there any reason why post-1970 time zones need second resolution for zone offsets? Or is there any other strong argument why second precision is needed?

To be honest, I don't see why we should cater to an extremely uncommon minor use-case which will likely be of no interests to the majority of Firebird users, and that will be fraught with so many complications that you'll probably need your own solution anyway if you need full precision offsets pre-1970s. The TZ database does not guarantee correctness nor completeness of its information before 1970, so using second precision there will probably only lead to a false sense of precision.

Be aware that I'm not asking and arguing this because I hate the idea of using seconds, but changing this has more impact than just the information reported here.

Given the choice in the current implementation to encode both time zone identifiers or offset information in 2 bytes, it doesn't have any room for an offset in seconds. So supporting an offset in seconds will have profound impact on not just the information reported here, but on the actual API implementation, storage, etc. And if we don't change it there, then there is also no need to report a precision in seconds anyway, because it wouldn't match with the precision of the API.

Maybe it is just me, but it seems we are now having discussions that should have been had and resolved before implementation.

And I repeat again, that I think that this feature should not land in Firebird 4, and needs to be delayed to Firebird 5.

Mark
--
Mark Rotteveel

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to