![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
|
./configure --prefix=/opt/postgresql-800beta1 --enable-thread-safety make make check |
#2
| |||
| |||
|
|
make check gives me two errors, see attached diffs file. |
#3
| |||
| |||
|
|
It's even a little more bizarre: When I start a fresh psql session, SELECT 'infinity'::float4 just works. Then I \i sql/float4.sql, and after that template1=# \set VERBOSITY verbose template1=# SELECT 'infinity'::float4; ERROR: 22P02: invalid input syntax for type real: "infinity" LOCATION: float4in, float.c:330 |
#4
| |||
| |||
|
|
My best guess about it is that strtod() is actively broken on your platform, and is recognizing the "infinity" input but returning an incorrect endptr. I seem to recall that we've heard of such bugs before. Can you check for any updates from Sun that might affect strtod()? |
#5
| |||
| |||
|
|
I've replied on this topic a couple of times in the "SOLARIS 9 ULTRASPARC BUILD" thread, but perhaps my messages aren't getting through. On Solaris, when strtod() parses "infinity" or its equivalent, it sets endptr one character beyond where it should. This is apparently a longstanding bug that's allegedly been fixed in Solaris 10: http://groups.google.com/groups?thre...ensional. com |
#6
| |||
| |||
|
|
=?ISO-8859-15?Q?Martin_M=FCnstermann?= <mmuenstermann (AT) betrusted (DOT) com> writes: It's even a little more bizarre: When I start a fresh psql session, SELECT 'infinity'::float4 just works. Then I \i sql/float4.sql, and after that template1=# \set VERBOSITY verbose template1=# SELECT 'infinity'::float4; ERROR: 22P02: invalid input syntax for type real: "infinity" LOCATION: float4in, float.c:330 Wow. Well, that confirms my suspicion that endptr is bad --- the line number shows that the complaint is coming from the junk-at-end-of-the-string test. But why is it history-dependent? I wonder if endptr might not be getting set at all in this case. |
#7
| |||
| |||
|
|
Michael Fuhr <mike (AT) fuhr (DOT) org> writes: I've replied on this topic a couple of times in the "SOLARIS 9 ULTRASPARC BUILD" thread, but perhaps my messages aren't getting through. On Solaris, when strtod() parses "infinity" or its equivalent, it sets endptr one character beyond where it should. This is apparently a longstanding bug that's allegedly been fixed in Solaris 10: http://groups.google.com/groups?thre...ensional. com Ah, thanks for the link. I had just found out about that bug myself, but this is more authoritative documentation. |
#8
| |||
| |||
|
|
Yeah, with this patch the tests just pass on solaris8. |
#9
| |||
| |||
|
#10
| |||
| |||
|
|
I've applied the attached patch to try to fix this problem with minimal run-time cost. Since I don't have a Solaris machine I can't positively confirm it works --- would one of you please test? |
![]() |
| Thread Tools | |
| Display Modes | |
| |