snapshot and FreeBSD-2.2.7 not building
The blizzard hitting the Chicago area makes today ideal for hacking -
as long as the power stays on! A thousand pardons if this is a known
problem - I'm just getting started with the current CVS set.
I grabbed postgresql.snapshot.tar.gz for 8 am, Jan 2 and am trying to
build it on my FreeBSD-2.2.7 system in order to test some things for
the web site. This seems to be the only source kit available from
hub's anonymous FTP archive, BTW.
Here's what happens:
...
gmake[2]: Entering directory `/pgsql-src/pgsql/src/backend/utils'
for i in adt cache error fmgr hash init misc mmgr sort time; do gmake -C $i SUBSYS.o; done
gmake[3]: Entering directory `/pgsql-src/pgsql/src/backend/utils/adt'
gcc -I../../../include -I../../../backend -O2 -m486 -pipe -Wall -Wmissing-prototypes -I../.. -c numeric.c -o numeric.o
numeric.c: In function `numeric_float8':
numeric.c:1729: incompatible types in assignment
numeric.c: In function `numeric_float4':
numeric.c:1783: incompatible types in assignment
gmake[3]: *** [numeric.o] Error 1
gmake[3]: Leaving directory `/pgsql-src/pgsql/src/backend/utils/adt'
...
gmake[2]: *** No rule to make target `adt/SUBSYS.o', needed by `SUBSYS.o'. Stop.
gmake[2]: Leaving directory `/pgsql-src/pgsql/src/backend/utils'
gmake[1]: *** [utils.dir] Error 2
gmake[1]: Leaving directory `/pgsql-src/pgsql/src/backend'
gmake: *** [all] Error 2
I think the compiler is right in claiming incompatible types. In rev
1.3 of backend/utils/adt/numeric.c, line 1783 says
*result = num;
but "result" is a float32 (=*float), while "num" is Numeric (pointer
to a custom PostgreSQL NumericData struct). What is intended here?
Hal
The blizzard hitting the Chicago area makes today ideal for hacking -
as long as the power stays on! A thousand pardons if this is a known
problem - I'm just getting started with the current CVS set.I grabbed postgresql.snapshot.tar.gz for 8 am, Jan 2 and am trying to
build it on my FreeBSD-2.2.7 system in order to test some things for
the web site. This seems to be the only source kit available from
hub's anonymous FTP archive, BTW.Here's what happens:
...
gmake[2]: Entering directory `/pgsql-src/pgsql/src/backend/utils'
for i in adt cache error fmgr hash init misc mmgr sort time; do gmake -C $i SUBSYS.o; done
gmake[3]: Entering directory `/pgsql-src/pgsql/src/backend/utils/adt'
gcc -I../../../include -I../../../backend -O2 -m486 -pipe -Wall -Wmissing-prototypes -I../.. -c numeric.c -o numeric.o
numeric.c: In function `numeric_float8':
numeric.c:1729: incompatible types in assignment
numeric.c: In function `numeric_float4':
numeric.c:1783: incompatible types in assignment
gmake[3]: *** [numeric.o] Error 1
gmake[3]: Leaving directory `/pgsql-src/pgsql/src/backend/utils/adt'
...
gmake[2]: *** No rule to make target `adt/SUBSYS.o', needed by `SUBSYS.o'. Stop.
gmake[2]: Leaving directory `/pgsql-src/pgsql/src/backend/utils'
gmake[1]: *** [utils.dir] Error 2
gmake[1]: Leaving directory `/pgsql-src/pgsql/src/backend'
gmake: *** [all] Error 2I think the compiler is right in claiming incompatible types. In rev
1.3 of backend/utils/adt/numeric.c, line 1783 says*result = num;
but "result" is a float32 (=*float), while "num" is Numeric (pointer
to a custom PostgreSQL NumericData struct). What is intended here?
OK, I have applied a patch to the cvs tree. My old code was clearly
wrong, now that I study it.
I am now generating NAN by:
double x;
return (x-x)/(x-x);
This seems to be the way my libm math library does it. The gcc2 -O4
compile does not seem to optimize it away, so looks like it will work.
My guess is that the compiler can not optimize floating-point
computations.
Still waiting for Jan to give me his comments on my fixes, but it is
holiday time.
--
Bruce Momjian | http://www.op.net/~candle
maillist@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
I am now generating NAN by:
double x=1;
^^
return (x-x)/(x-x);
Forgot the =1.
--
Bruce Momjian | http://www.op.net/~candle
maillist@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Bruce Momjian <maillist@candle.pha.pa.us> writes:
I am now generating NAN by:
double x;
return (x-x)/(x-x);
This seems to be the way my libm math library does it. The gcc2 -O4
compile does not seem to optimize it away, so looks like it will work.
My guess is that the compiler can not optimize floating-point
computations.
Thanks for the follow-up. Suggestion:
At the top of numeric.c or in include/utils/numeric.h, put
#ifndef NAN
#define pgNAN (0.0/0.0)
#endif
Then in numeric.c, if NAN isn't defined,
return pgNAN;
--
Hal
Import Notes
Reply to msg id not found: BruceMomjiansmessageofSat2Jan1999214156-0500EST
Thanks for the follow-up. Suggestion:
At the top of numeric.c or in include/utils/numeric.h, put
#ifndef NAN
#define pgNAN (0.0/0.0)
#endifThen in numeric.c, if NAN isn't defined,
Done. Used:
#ifndef NAN
#define NAN (0.0/0.0)
#endif
at the top of numeric.c, and removed my other #ifdef's.
--
Bruce Momjian | http://www.op.net/~candle
maillist@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Thanks for the follow-up. Suggestion:
At the top of numeric.c or in include/utils/numeric.h, put
#ifndef NAN
#define pgNAN (0.0/0.0)
#endifThen in numeric.c, if NAN isn't defined,
Done. Used:
#ifndef NAN
#define NAN (0.0/0.0)
#endifat the top of numeric.c, and removed my other #ifdef's.
I hope this is portable and none of our supported platforms
throws in a SIGFPE for it (cross fingers).
OTOH it might be good to have configure checks if NAN is
defined somewhere and include that header. Only if it isn't
defined we should fallback to the above.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#======================================== jwieck@debis.com (Jan Wieck) #
Thanks for the follow-up. Suggestion:
At the top of numeric.c or in include/utils/numeric.h, put
#ifndef NAN
#define pgNAN (0.0/0.0)
#endifThen in numeric.c, if NAN isn't defined,
Done. Used:
#ifndef NAN
#define NAN (0.0/0.0)
#endifat the top of numeric.c, and removed my other #ifdef's.
I hope this is portable and none of our supported platforms
throws in a SIGFPE for it (cross fingers).
OTOH it might be good to have configure checks if NAN is
defined somewhere and include that header. Only if it isn't
defined we should fallback to the above.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#======================================== jwieck@debis.com (Jan Wieck) #