Обсуждение: BUG #5466: Asia/Novosibirsk timezone problem

Поиск
Список
Период
Сортировка

BUG #5466: Asia/Novosibirsk timezone problem

От
"Dmitry Funk"
Дата:
The following bug has been logged online:

Bug reference:      5466
Logged by:          Dmitry Funk
Email address:      diffor@gmail.com
PostgreSQL version: 8.4.4
Operating system:   Windows 2003 R2
Description:        Asia/Novosibirsk timezone problem
Details:

Current system timezone: Asia/Novosibisk

PostgreSQL on query "show timezone" show answer "Asia/Almaty"

Asia/Novosibisk has daylight saving time
Asia/Almaty NOT has daylight saving time
and result of now() is wrong

Workaround: "timezone = 'Asia/Novosibirsk'" in postgresql.conf

Affected only Windows, not Linux.

Sorry for my english...

Re: BUG #5466: Asia/Novosibirsk timezone problem

От
Alvaro Herrera
Дата:
Excerpts from Dmitry Funk's message of mié may 19 13:44:35 -0400 2010:

> Description:        Asia/Novosibirsk timezone problem
> Details:
>
> Current system timezone: Asia/Novosibisk
>
> PostgreSQL on query "show timezone" show answer "Asia/Almaty"
>
> Asia/Novosibisk has daylight saving time
> Asia/Almaty NOT has daylight saving time
> and result of now() is wrong
>
> Workaround: "timezone = 'Asia/Novosibirsk'" in postgresql.conf
>
> Affected only Windows, not Linux.

We have this in pgtz.c:

    {
        "N. Central Asia Standard Time", "N. Central Asia Daylight Time",
        "Asia/Almaty"
    },                          /* (GMT+06:00) Almaty, Novosibirsk */

Which is probably wrong.
--

Re: BUG #5466: Asia/Novosibirsk timezone problem

От
Magnus Hagander
Дата:
On Wed, May 19, 2010 at 3:00 PM, Alvaro Herrera <alvherre@alvh.no-ip.org> w=
rote:
> Excerpts from Dmitry Funk's message of mi=E9 may 19 13:44:35 -0400 2010:
>
>> Description: =A0 =A0 =A0 =A0Asia/Novosibirsk timezone problem
>> Details:
>>
>> Current system timezone: Asia/Novosibisk
>>
>> PostgreSQL on query "show timezone" show answer "Asia/Almaty"
>>
>> Asia/Novosibisk has daylight saving time
>> Asia/Almaty NOT has daylight saving time
>> and result of now() is wrong
>>
>> Workaround: "timezone =3D 'Asia/Novosibirsk'" in postgresql.conf
>>
>> Affected only Windows, not Linux.
>
> We have this in pgtz.c:
>
> =A0 =A0{
> =A0 =A0 =A0 =A0"N. Central Asia Standard Time", "N. Central Asia Daylight=
 Time",
> =A0 =A0 =A0 =A0"Asia/Almaty"
> =A0 =A0}, =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* (GMT+06:0=
0) Almaty, Novosibirsk */
>
> Which is probably wrong.

Why? :-)

Windows makes no difference between Almaty and Novosibirsk in it's
listing. If we pick the Novosibirsk one by default, that will just
break Almaty. There's no real easy way for us to find the difference
between those, since we're just matching on those two strings.

--=20
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

Re: BUG #5466: Asia/Novosibirsk timezone problem

От
Alvaro Herrera
Дата:
Excerpts from Magnus Hagander's message of mié may 19 15:03:25 -0400 2010:
> On Wed, May 19, 2010 at 3:00 PM, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
> > Excerpts from Dmitry Funk's message of mié may 19 13:44:35 -0400 2010:

> >> Current system timezone: Asia/Novosibisk
> >>
> >> PostgreSQL on query "show timezone" show answer "Asia/Almaty"
> >>
> >> Asia/Novosibisk has daylight saving time
> >> Asia/Almaty NOT has daylight saving time
> >> and result of now() is wrong
> >>
> >> Workaround: "timezone = 'Asia/Novosibirsk'" in postgresql.conf
> >>
> >> Affected only Windows, not Linux.
> >
> > We have this in pgtz.c:
> >
> >    {
> >        "N. Central Asia Standard Time", "N. Central Asia Daylight Time",
> >        "Asia/Almaty"
> >    },                          /* (GMT+06:00) Almaty, Novosibirsk */
> >
> > Which is probably wrong.
>
> Why? :-)
>
> Windows makes no difference between Almaty and Novosibirsk in it's
> listing. If we pick the Novosibirsk one by default, that will just
> break Almaty. There's no real easy way for us to find the difference
> between those, since we're just matching on those two strings.

Well, ISTM it does make a difference, which is that there *is* DST info
in the N. Central Asia Standard Time zone, no?  According the Dmitry,
Almaty doesn't have DST, so it's wrong to report that zone.

I happened to notice this page:
http://www.chronos-st.org/Windows-to-Olson.html
which also maps "N. Central Asia" to Novosibirsk.
--

Re: BUG #5466: Asia/Novosibirsk timezone problem

От
Magnus Hagander
Дата:
On Wed, May 19, 2010 at 3:12 PM, Alvaro Herrera <alvherre@alvh.no-ip.org> w=
rote:
> Excerpts from Magnus Hagander's message of mi=E9 may 19 15:03:25 -0400 20=
10:
>> On Wed, May 19, 2010 at 3:00 PM, Alvaro Herrera <alvherre@alvh.no-ip.org=
> wrote:
>> > Excerpts from Dmitry Funk's message of mi=E9 may 19 13:44:35 -0400 201=
0:
>
>> >> Current system timezone: Asia/Novosibisk
>> >>
>> >> PostgreSQL on query "show timezone" show answer "Asia/Almaty"
>> >>
>> >> Asia/Novosibisk has daylight saving time
>> >> Asia/Almaty NOT has daylight saving time
>> >> and result of now() is wrong
>> >>
>> >> Workaround: "timezone =3D 'Asia/Novosibirsk'" in postgresql.conf
>> >>
>> >> Affected only Windows, not Linux.
>> >
>> > We have this in pgtz.c:
>> >
>> > =A0 =A0{
>> > =A0 =A0 =A0 =A0"N. Central Asia Standard Time", "N. Central Asia Dayli=
ght Time",
>> > =A0 =A0 =A0 =A0"Asia/Almaty"
>> > =A0 =A0}, =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* (GMT+0=
6:00) Almaty, Novosibirsk */
>> >
>> > Which is probably wrong.
>>
>> Why? :-)
>>
>> Windows makes no difference between Almaty and Novosibirsk in it's
>> listing. If we pick the Novosibirsk one by default, that will just
>> break Almaty. There's no real easy way for us to find the difference
>> between those, since we're just matching on those two strings.
>
> Well, ISTM it does make a difference, which is that there *is* DST info
> in the N. Central Asia Standard Time zone, no? =A0According the Dmitry,
> Almaty doesn't have DST, so it's wrong to report that zone.

Well, if we report it as Novosibirsk, it will have DST. Which users in
Almaty aren't supposed to have, so it'll be wrong for them. So it's
going to be wrong for one of them whichever way we go, won't it?


--=20
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

Re: BUG #5466: Asia/Novosibirsk timezone problem

От
Alvaro Herrera
Дата:
Excerpts from Magnus Hagander's message of mié may 19 15:17:50 -0400 2010:
>
> > Well, ISTM it does make a difference, which is that there *is* DST info
> > in the N. Central Asia Standard Time zone, no?  According the Dmitry,
> > Almaty doesn't have DST, so it's wrong to report that zone.
>
> Well, if we report it as Novosibirsk, it will have DST. Which users in
> Almaty aren't supposed to have, so it'll be wrong for them. So it's
> going to be wrong for one of them whichever way we go, won't it?

I meant that the Windows timezone does have DST, so users in Almaty are
already screwed, but by Microsoft, not us.
--

Re: BUG #5466: Asia/Novosibirsk timezone problem

От
Tom Lane
Дата:
Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> Excerpts from Magnus Hagander's message of mié may 19 15:17:50 -0400 2010:
>> Well, if we report it as Novosibirsk, it will have DST. Which users in
>> Almaty aren't supposed to have, so it'll be wrong for them. So it's
>> going to be wrong for one of them whichever way we go, won't it?

> I meant that the Windows timezone does have DST, so users in Almaty are
> already screwed, but by Microsoft, not us.

According to the zic entry, Almaty has observed DST for most of the
zone's history.  It might well choose to do so again someday.  So we
should not imagine that "no DST" is an essential aspect of that zone.

AFAICS we don't really have any way to choose what to do here other
than making the default work for whichever zone is more populous.
Anyone know?

            regards, tom lane

Re: BUG #5466: Asia/Novosibirsk timezone problem

От
Diffor
Дата:
December 2009 cumulative time zone update for Microsoft Windows operating
systems:
http://support.microsoft.com/?kbid=3D976098

pgtz.c is outdated:
>N. Central Asia Standard Time:
>Removes =93Almaty=94 from the =93(GMT+06:00) Almaty, Novosibirsk=94 time z=
one.

Re: BUG #5466: Asia/Novosibirsk timezone problem

От
Magnus Hagander
Дата:
Ah, good reference - thanks for digging that up. Interstingly enough
they seem to have just removed Almaty - and not put it anywhere else
:-)

But as someone said, they're being screwed, but only by MS, not us.

I've applied the change to pgtz.c. It will be in the next releases.

//Magnus

On Thu, May 20, 2010 at 3:54 AM, Diffor <diffor@gmail.com> wrote:
> December 2009 cumulative time zone update for Microsoft Windows operating=
 systems:
> http://support.microsoft.com/?kbid=3D976098
>
> pgtz.c is outdated:
>>N. Central Asia Standard Time:
>>Removes =93Almaty=94 from the =93(GMT+06:00) Almaty, Novosibirsk=94 time =
zone.
>



--=20
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

Re: BUG #5466: Asia/Novosibirsk timezone problem

От
Diffor
Дата:
2010/5/20 Diffor <diffor@gmail.com>

> December 2009 cumulative time zone update for Microsoft Windows operating
> systems:
> http://support.microsoft.com/?kbid=3D976098
>
> pgtz.c is outdated:
> >N. Central Asia Standard Time:
> >Removes =93Almaty=94 from the =93(GMT+06:00) Almaty, Novosibirsk=94 time=
 zone.
>

I contact people from Astana. Windows users from Almaty use "(GMT+06:00)
Astana" time zone (Central Asia Standard Time). This city have no DST and in
same country (KZ).

IMHO need patch src/timezone/pgtz.c :
892c892
<               "Asia/Almaty"
---
>               "Asia/Novosibirsk"