Thread: Regression failure with PostgreSQL 8beta1 and Intel Itanium 2 C compiler
Regression failure with PostgreSQL 8beta1 and Intel Itanium 2 C compiler
From
"Robert E. Bruccoleri"
Date:
Dear All,I built PG 8.0 beta1 on an Itanium 2 platform using the Intel compilers version 8, and got one real difference in the regression tests that affected int2, int4, union, and numerology. Here's the key difference: horta postgres 177 > diff -c int4.out ../expected/ *** int4.out Tue Aug 10 18:41:48 2004 --- ../expected/int4.out Wed Mar 10 21:11:13 2004 *************** *** 22,27 **** --- 22,28 ---- INSERT INTO INT4_TBL(f1) VALUES (' asdf '); ERROR: invalid input syntax for integer: " asdf " INSERTINTO INT4_TBL(f1) VALUES ('- 1234'); + ERROR: invalid input syntax for integer: "- 1234" INSERT INTO INT4_TBL(f1) VALUES ('123 5'); ERROR: invalid inputsyntax for integer: "123 5" INSERT INTO INT4_TBL(f1) VALUES (''); PG 8.0 beta1 is accepting "- 1234" as a valid integer. Further investigation reveals that this is a peculiarity of the Intel compilers. The following program, #include <stdio.h> #include <stdlib.h> main() { char st[] = "- 1234"; int l; char *endp; l = strtol(st, &endp, 10); printf("l = %d st = %lx endp = %lx\n", l, st, endp); } using the Intel compiler provided libraries prints l = -1234 st = 60000fffffffb720 endp = 60000fffffffb726 whereas gcc and glibc yields l = 0 st = 60000fffffffb710 endp = 60000fffffffb710 Boo hiss... +-----------------------------+------------------------------------+ | Robert E. Bruccoleri, Ph.D. | email: bruc@acm.org | | President, Congenair LLC | URL: http://www.congen.com/~bruc | | P.O. Box 314 | Phone: 609 818 7251 | | Pennington, NJ 08534 | | +-----------------------------+------------------------------------+
Robert, Are you planning to use Intel's C compiler in production? We tried that some time ago and corrupted our database cluster almost instantly (for some reason we have not investigated any further). I highly recommend to do some stress testing to see if everything works nicely. I'd be pleased to get some feedback. Regard, Hans Robert E. Bruccoleri wrote: > Dear All, > I built PG 8.0 beta1 on an Itanium 2 platform using the Intel compilers > version 8, and got one real difference in the regression tests that affected > int2, int4, union, and numerology. Here's the key difference: > > horta postgres 177 > diff -c int4.out ../expected/ > *** int4.out Tue Aug 10 18:41:48 2004 > --- ../expected/int4.out Wed Mar 10 21:11:13 2004 > *************** > *** 22,27 **** > --- 22,28 ---- > INSERT INTO INT4_TBL(f1) VALUES (' asdf '); > ERROR: invalid input syntax for integer: " asdf " > INSERT INTO INT4_TBL(f1) VALUES ('- 1234'); > + ERROR: invalid input syntax for integer: "- 1234" > INSERT INTO INT4_TBL(f1) VALUES ('123 5'); > ERROR: invalid input syntax for integer: "123 5" > INSERT INTO INT4_TBL(f1) VALUES (''); > > PG 8.0 beta1 is accepting "- 1234" as a valid integer. Further investigation > reveals that this is a peculiarity of the Intel compilers. The following > program, > > #include <stdio.h> > #include <stdlib.h> > > main() { > char st[] = "- 1234"; > int l; > char *endp; > > l = strtol(st, &endp, 10); > printf("l = %d st = %lx endp = %lx\n", l, st, endp); > } > > using the Intel compiler provided libraries prints > > l = -1234 st = 60000fffffffb720 endp = 60000fffffffb726 > > whereas gcc and glibc yields > > l = 0 st = 60000fffffffb710 endp = 60000fffffffb710 > > Boo hiss... > > +-----------------------------+------------------------------------+ > | Robert E. Bruccoleri, Ph.D. | email: bruc@acm.org | > | President, Congenair LLC | URL: http://www.congen.com/~bruc | > | P.O. Box 314 | Phone: 609 818 7251 | > | Pennington, NJ 08534 | | > +-----------------------------+------------------------------------+ > > ---------------------------(end of broadcast)--------------------------- > TIP 8: explain analyze is your friend -- Cybertec Geschwinde u Schoenig Schoengrabern 134, A-2020 Hollabrunn, Austria Tel: +43/720/10 1234567 or +43/660/816 40 77 www.cybertec.at, www.postgresql.at, kernel.cybertec.at
Dear Hans, > > Robert, > > Are you planning to use Intel's C compiler in production? > We tried that some time ago and corrupted our database cluster almost > instantly (for some reason we have not investigated any further). > I highly recommend to do some stress testing to see if everything works > nicely. > I'd be pleased to get some feedback. We're using the Intel C compiler for all our code on the Altix. We have encountered a few bugs with optimization, but on the whole, it works pretty well, and it generates code that runs about 30% faster than gcc (depending on the application of course). With regard to PostgreSQL, we are not having massive problems with data corruption. We have had problems with 7.4.3, and I'm currently testing 8.0.0beta1. I don't believe the problem with 7.4.3 is a compiler issue -- it only happens when we have multiple backends running at the same time. Other people like Hubert Froehlich (http://archives.postgresql.org/pgsql-general/2004-07/msg00670.php) have run into the same problem using a completely different environment. I'll report on 8.0.0beta1 when our testing is complete. --Bob +-----------------------------+------------------------------------+ | Robert E. Bruccoleri, Ph.D. | email: bruc@acm.org | | President, Congenair LLC | URL: http://www.congen.com/~bruc | | P.O. Box 314 | Phone: 609 818 7251 | | Pennington, NJ 08534 | | +-----------------------------+------------------------------------+