Re: BUG #6760: make check fails on strings SQL T581 regex test - Mailing list pgsql-bugs

From Jez Wain
Subject Re: BUG #6760: make check fails on strings SQL T581 regex test
Date
Msg-id 4E77610B-C50D-4AD9-854C-7C67CC297962@bull.net
Whole thread Raw
In response to Re: BUG #6760: make check fails on strings SQL T581 regex test  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
This problem has been resolved; following a couple of suggestions from Tom =
Lane, it became apparent that the cause was due to the xlc compiler.  This =
mail summarizes the steps and findings, in the hope that it might be useful=
 to someone else.

My server environment is AIXv7.1 running on POWER7, with xlcV11.1.0.0.  I u=
sed the following configure command:

LDFLAGS=3D"-L/usr/local/lib" LIBS=3D"-lmass" CC=3Dxlc_r CFLAGS=3D"-qtune=3D=
auto -qarch=3Dauto -qcache=3Dauto -O2 -I/u
sr/local/include" ./configure --with-openssl --disable-nls

After editing src/include/pg_config.h to comment out the HAVE_WCSTOMBS_L (w=
hich configure incorrectly detects on AIX) I ran make check.  This produced=
 the regex error described in the initial report.

I edited the src/Makefile.global to remove all optimization and ran "make c=
lean check", to find that I no longer had the regex error.

As this behaviour pointed to a compiler issue, I  updated the compiler to x=
lcV12.1.0.0 and reran the "make clean check" and the result was no regex er=
ror even with the O2 optimization.

As you may have noticed, I stipulated the use of IBM high-performance maths=
 library, lmass, in the configure command.  Unfortunately, the configure sc=
ript places the -lm in front of -lmass in Makefile.global, which as most of=
 the APIs in lmass are duplicates of those in lm, the lmass routines never =
get called.  Swapping the order of lm and lmass, such that the LIBS line re=
ads:

LIBS =3D -lssl -lcrypto -lz -lreadline -lcurses -lld -lmass -lm

Has not only made the maths faster, but has also removed the float8 roundin=
g error, so the end of the make check now prints:

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D shutting down postmaster        =
       =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 All 126 tests passed.=20
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


  Jez Wain

On 25 Jul 2012, at 19:10, Tom Lane wrote:

> jez.wain@bull.net writes:
>> ***************
>> *** 347,354 ****
>>   three |          f1          |       exp_ln_f1=20=20=20=20=20=20=20
>>  -------+----------------------+-----------------------
>>         |               1004.3 |                1004.3
>> !        | 1.2345678901234e+200 | 1.23456789012338e+200
>> !        | 1.2345678901234e-200 | 1.23456789012339e-200
>>  (3 rows)
>=20
>>  -- cube root
>> --- 347,354 ----
>>   three |          f1          |       exp_ln_f1=20=20=20=20=20=20=20
>>  -------+----------------------+-----------------------
>>         |               1004.3 |                1004.3
>> !        | 1.2345678901234e+200 | 1.23456789012337e+200
>> !        | 1.2345678901234e-200 |  1.2345678901234e-200
>>  (3 rows)
>=20
> This doesn't seem terribly surprising as a platform-specific difference.
>=20
>>  -- T581 regular expression substring (with SQL99's bizarre regexp synta=
x)
>>  SELECT SUBSTRING('abcdefg' FROM 'a#"(b_d)#"%' FOR '#') AS "bcd";
>> ! ERROR:  invalid regular expression: parentheses () not balanced
>> ! CONTEXT:  SQL function "substring" statement 1
>=20
> This however isn't too good.  It suggests a platform-specific issue in
> the regex library, but hard to say what.  Can you dig a little deeper,
> maybe get a stack trace back from the call to errfinish()?  Does
> compiling with -O0 change the behavior?
>=20
>             regards, tom lane

pgsql-bugs by date:

Previous
From: Craig Ringer
Date:
Subject: Re: BUG #6768: Failure in OBDC
Next
From: boris@folgmann.de
Date:
Subject: BUG #6774: FOR IN SELECT LOOP ignores ORDER BY