Обсуждение: Re: [GENERAL] date_part bug?
Hello! On Thu, 17 Dec 1998, Tim Williams wrote: > When I run the following set of statements in postgres v6.4 (built on > Debian Linux): > > create table tmp (v1 date, v2 datetime); > insert into tmp values ('06-01-1999', '06-01-1999'); > select date_part('month', v1) as m1, date_part('month', v2) as m2 from > tmp; > > I see the following results: > > m1|m2 > --+-- > 5| 6 > (1 row) > > Why is date_part giving different results for date and date_time? Why > is it wrong for 'date'? Anybody seen this before? I tried this and it works pretty good for me on Solaris. It looks like an error in postgres on glibc2-based linux platform. It is discussing now on pgsql-hackers list. The solution is not ready yet. I am working on this with a good deal of help from other people... Oleg. ---- Oleg Broytmann http://members.tripod.com/~phd2/ phd2@earthling.net Programmers don't die, they just GOSUB without RETURN.
Oleg Broytmann wrote: >> create table tmp (v1 date, v2 datetime); >> insert into tmp values ('06-01-1999', '06-01-1999'); >> select date_part('month', v1) as m1, date_part('month', v2) as m2 from >> tmp; >> >> I see the following results: >> >> m1|m2 >> --+-- >> 5| 6 >> (1 row) ... > I tried this and it works pretty good for me on Solaris. > It looks like an error in postgres on glibc2-based linux platform. It is >discussing now on pgsql-hackers list. The solution is not ready yet. I am >working on this with a good deal of help from other people... Not all glibc2: I run glibc2 Debian Linux and do not see this problem. I was wondering if it was libc5 that was giving trouble... -- Oliver Elphick Oliver.Elphick@lfix.co.uk Isle of Wight http://www.lfix.co.uk/oliver PGP key from public servers; key ID 32B8FAA1 ======================================== "In the beginning was the Word, and the Word was with God, and the Word was God. The same was in the beginning with God. All things were made by him; and without him was not any thing made that was made." John 1:1-3
> Not all glibc2: I run glibc2 Debian Linux and do not see this problem. > I was wondering if it was libc5 that was giving trouble... Not on my libc5-only machine (where I developed the code). We'll need to get a reproducible case to be able to track it down. I'm guessing that we are seeing float->int rounding problems, though I don't know why this test query should show different results for the two columns. What glibc2, compiler, and optimization level are you using? If you are using anything above -O2 try backing down to that; if you are already there then try -O0 and tell us what changes. - Tom postgres=> create table tmp (v1 date, v2 datetime); CREATE postgres=> insert into tmp values ('06-01-1999', '06-01-1999'); INSERT 901482 1 postgres=> select date_part('month', v1) as m1, date_part('month', v2) as m2 from tmp; m1|m2 --+-- 6| 6 (1 row)