1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-30 11:03:19 +03:00

Attached is a patch with some fixes that (I think that) should go into

6.4.1. Here is the list:

- The type int8 now works. In fact, the bug(s) were in
src/backend/port/snprintf.c, so int8 is probably broken in every platform
that hasn't a native snprintf/vsnprintf. The type itself worked as
expected, only the output was wrong. Anyway, this patch should be checked
in other platforms.

- The regression tests for int2 and int4, which were broken due to
differences in the error messages, are fixed.

- The regression test for float8, which was broken in the reference
platform, is also fixed. I don't know if the new file (float8-OSF1.out)
will work on other platforms, but it might be worth to try it.

- Two new template files are provided (alpha_cc, which includes
optimization, and alpha_gcc), and src/templates/.similar is updated
accordingly. src/templates/alpha should be removed from the distribution.
*IMPORTANT NOTE*: I don't know if you can use gcc to compile postgres;
I've written the alpha_gcc file because alpha_cc has some flags that are
specific to DEC C.

- There is a (very basic) Digital Unix specific FAQ in
doc/FAQ_DigitalUnix.

--
-------------------------------------------------------------------
Pedro José Lobo Perea                   Tel:    +34 91 336 78 19
This commit is contained in:
Bruce Momjian
1998-12-18 07:08:03 +00:00
parent 9d6f0606c5
commit 03f1648872
6 changed files with 355 additions and 3 deletions

View File

@ -72,7 +72,7 @@ typedef long long long_long;
* causing nast effects.
**************************************************************/
/*static char _id[] = "$Id: snprintf.c,v 1.13 1998/12/18 07:03:06 momjian Exp $";*/
/*static char _id[] = "$Id: snprintf.c,v 1.14 1998/12/18 07:08:00 momjian Exp $";*/
static char *end;
static int SnprfOverflow;
@ -349,7 +349,7 @@ int base,
zpad;
{
int signvalue = 0;
#ifdef HAVE_LONG_INT_64
#ifdef HAVE_LONG_LONG_INT_64
unsigned long_long uvalue;
#else
unsigned long uvalue;

View File

@ -1,4 +1,4 @@
alpha-dec-osf=alpha
alpha-dec-osf=alpha_cc
alpha-unknown-linux-gnu=linux_alpha
hppa1.1-hp-hpux=hpux_cc
hppa1.1-stratus-sysv4=svr4

15
src/template/alpha_cc Normal file
View File

@ -0,0 +1,15 @@
AROPT:crs
# NOFIXADE disallows unaligned access.
# on Ultrix and OSF/1 it invokes an explicit syscall.
# on HP-UX it turns off certain compiler options.
# This is defined here because a bunch of clients include tmp/c.h,
# which is where the work is done on HP-UX. It only affects the
# backend on Ultrix and OSF/1.
CFLAGS:-DNOFIXADE -std -O4 -Olimit 2000
SHARED_LIB:
ALL:
SRCH_INC:
SRCH_LIB:
DLSUFFIX:.so
YFLAGS:-d
YACC:

View File

@ -0,0 +1,234 @@
QUERY: CREATE TABLE FLOAT8_TBL(f1 float8);
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30');
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
QUERY: SELECT '' AS five, FLOAT8_TBL.*;
five|f1
----+--------------------
|0
|1004.3
|-34.84
|1.2345678901234e+200
|1.2345678901234e-200
(5 rows)
QUERY: SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
four|f1
----+--------------------
|0
|-34.84
|1.2345678901234e+200
|1.2345678901234e-200
(4 rows)
QUERY: SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
one| f1
---+------
|1004.3
(1 row)
QUERY: SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1;
three| f1
-----+--------------------
| 0
| -34.84
|1.2345678901234e-200
(3 rows)
QUERY: SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3';
three| f1
-----+--------------------
| 0
| -34.84
|1.2345678901234e-200
(3 rows)
QUERY: SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
four| f1
----+--------------------
| 0
| 1004.3
| -34.84
|1.2345678901234e-200
(4 rows)
QUERY: SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3';
four| f1
----+--------------------
| 0
| 1004.3
| -34.84
|1.2345678901234e-200
(4 rows)
QUERY: SELECT '' AS three, f.f1, f.f1 * '-10' AS x
FROM FLOAT8_TBL f
WHERE f.f1 > '0.0';
three|f1 |x
-----+--------------------+---------------------
|1004.3 |-10043
|1.2345678901234e+200|-1.2345678901234e+201
|1.2345678901234e-200|-1.2345678901234e-199
(3 rows)
QUERY: SELECT '' AS three, f.f1, f.f1 + '-10' AS x
FROM FLOAT8_TBL f
WHERE f.f1 > '0.0';
three|f1 |x
-----+--------------------+--------------------
|1004.3 |994.3
|1.2345678901234e+200|1.2345678901234e+200
|1.2345678901234e-200|-10
(3 rows)
QUERY: SELECT '' AS three, f.f1, f.f1 / '-10' AS x
FROM FLOAT8_TBL f
WHERE f.f1 > '0.0';
three|f1 |x
-----+--------------------+---------------------
|1004.3 |-100.43
|1.2345678901234e+200|-1.2345678901234e+199
|1.2345678901234e-200|-1.2345678901234e-201
(3 rows)
QUERY: SELECT '' AS three, f.f1, f.f1 - '-10' AS x
FROM FLOAT8_TBL f
WHERE f.f1 > '0.0';
three|f1 |x
-----+--------------------+--------------------
|1004.3 |1014.3
|1.2345678901234e+200|1.2345678901234e+200
|1.2345678901234e-200|10
(3 rows)
QUERY: SELECT '' AS one, f.f1 ^ '2.0' AS square_f1
FROM FLOAT8_TBL f where f.f1 = '1004.3';
one| square_f1
---+----------
|1008618.49
(1 row)
QUERY: SELECT '' AS five, f.f1, @f.f1 AS abs_f1
FROM FLOAT8_TBL f;
five|f1 |abs_f1
----+--------------------+--------------------
|0 |0
|1004.3 |1004.3
|-34.84 |34.84
|1.2345678901234e+200|1.2345678901234e+200
|1.2345678901234e-200|1.2345678901234e-200
(5 rows)
QUERY: SELECT '' AS five, f.f1, %f.f1 AS trunc_f1
FROM FLOAT8_TBL f;
five|f1 |trunc_f1
----+--------------------+--------------------
|0 |0
|1004.3 |1004
|-34.84 |-34
|1.2345678901234e+200|1.2345678901234e+200
|1.2345678901234e-200|0
(5 rows)
QUERY: SELECT '' AS five, f.f1, f.f1 % AS round_f1
FROM FLOAT8_TBL f;
five|f1 |round_f1
----+--------------------+--------------------
|0 |0
|1004.3 |1004
|-34.84 |-35
|1.2345678901234e+200|1.2345678901234e+200
|1.2345678901234e-200|0
(5 rows)
QUERY: SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1
FROM FLOAT8_TBL f
WHERE f.f1 > '0.0';
three|f1 |sqrt_f1
-----+--------------------+---------------------
|1004.3 |31.6906926399535
|1.2345678901234e+200|1.11111110611109e+100
|1.2345678901234e-200|1.11111110611109e-100
(3 rows)
QUERY: SELECT '' AS three, f.f1, : ( ; f.f1) AS exp_ln_f1
FROM FLOAT8_TBL f
WHERE f.f1 > '0.0';
three|f1 |exp_ln_f1
-----+--------------------+---------------------
|1004.3 |1004.3
|1.2345678901234e+200|1.23456789012338e+200
|1.2345678901234e-200|1.23456789012339e-200
(3 rows)
QUERY: SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
five|f1 |cbrt_f1
----+--------------------+--------------------
|0 |0
|1004.3 |10.014312837827
|-34.84 |-3.26607421344208
|1.2345678901234e+200|4.97933859234765e+66
|1.2345678901234e-200|2.3112042409018e-67
(5 rows)
QUERY: SELECT '' AS five, FLOAT8_TBL.*;
five|f1
----+--------------------
|0
|1004.3
|-34.84
|1.2345678901234e+200
|1.2345678901234e-200
(5 rows)
QUERY: UPDATE FLOAT8_TBL
SET f1 = FLOAT8_TBL.f1 * '-1'
WHERE FLOAT8_TBL.f1 > '0.0';
QUERY: SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f;
ERROR: floating point exception! The last floating point operation either exceeded legal ranges or was a divide by zero
QUERY: SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f;
ERROR: pow() result is out of range
QUERY: SELECT '' AS bad, (; (f.f1)) from FLOAT8_TBL f where f.f1 = '0.0' ;
ERROR: can't take log of zero
QUERY: SELECT '' AS bad, (; (f.f1)) from FLOAT8_TBL f where f.f1 < '0.0' ;
ERROR: can't take log of a negative number
QUERY: SELECT '' AS bad, : (f.f1) from FLOAT8_TBL f;
ERROR: exp() result is out of range
QUERY: SELECT '' AS bad, f.f1 / '0.0' from FLOAT8_TBL f;
ERROR: float8div: divide by zero error
QUERY: SELECT '' AS five, FLOAT8_TBL.*;
five|f1
----+---------------------
|0
|-34.84
|-1004.3
|-1.2345678901234e+200
|-1.2345678901234e-200
(5 rows)
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
ERROR: Bad float8 input format '10e400'
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
ERROR: Bad float8 input format '-10e400'
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
ERROR: Bad float8 input format '10e-400'
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
ERROR: Bad float8 input format '-10e-400'
QUERY: DELETE FROM FLOAT8_TBL;
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('-1004.30');
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e+200');
QUERY: INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200');
QUERY: SELECT '' AS five, FLOAT8_TBL.*;
five|f1
----+---------------------
|0
|-34.84
|-1004.3
|-1.2345678901234e+200
|-1.2345678901234e-200
(5 rows)