Re: planner fails on HEAD - Mailing list pgsql-hackers

From Tom Lane
Subject Re: planner fails on HEAD
Date
Msg-id 19320.1323039341@sss.pgh.pa.us
Whole thread Raw
In response to Re: planner fails on HEAD  (Pavel Stehule <pavel.stehule@gmail.com>)
Responses Re: planner fails on HEAD  (Merlin Moncure <mmoncure@gmail.com>)
Re: planner fails on HEAD  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-hackers
Pavel Stehule <pavel.stehule@gmail.com> writes:
> it looks like gcc bug - gcc 4.5.1 20100924 (Red Hat 4.5.1) It was
> configured just with --enable-debug and --enable-cassert

Is this x86?  I can't reproduce it on x86_64.

It's fairly easy to get a set of values such that innerstartsel *should*
equal innerendsel; but if one value has been rounded to memory precision
and the other hasn't, the assert could certainly fail.

Some digging around yields the information that the gcc hackers do not
consider this a bug, or at least adamantly refuse to do anything about it:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=323
Comment 47 is particularly relevant to our situation:
To summarize, this defect effectively states that:assert( (x/y) == (x/y) )may cause an assertion if compiled with
optimization.

Also, http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45691#c4
indicates that an explicit cast to double should help.  Would
you check if the problem goes away if the Asserts are changed to
Assert((double) outerstartsel <= (double) outerendsel);Assert((double) innerstartsel <= (double) innerendsel);
        regards, tom lane


pgsql-hackers by date:

Previous
From: Pavel Stehule
Date:
Subject: Re: planner fails on HEAD
Next
From: Tom Lane
Date:
Subject: Re: why local_preload_libraries does require a separate directory ?