Hi Peter,
While fighting with a compiler bug here, I came across the following code,
that loops here (on AIX 4.3.2) due to a compiler bug,
presumably with the z < MAX_RANDOM_VALUE (it even warns at compile time):

Advertising

static double
random_fract(void)
{
long z;
/* random() can produce endpoint values, try again if so */
do
{
z = random();
} while (!(z > 0 && z < MAX_RANDOM_VALUE));
return (double) z / (double) MAX_RANDOM_VALUE;
}
Since you where the last to commit on analyze.c I send you this mail,
since my mails currently don't pass some filter on postgresql.org
I have attached a patch as a workaround for this silly compiler bug.
Please consider to apply, Thanks
Andreas