Thread: Re: [HACKERS] PostgreSQL 6.5.2

Re: [HACKERS] PostgreSQL 6.5.2

From
Keith Parks
Date:
wieck@debis.com
>[pgsql@hot] ~/devel/src/test/regress > ./checkresults
>======   int2   ======
>10c10
>< ERROR:  pg_atoi: error reading "100000": Numerical result out of range
>---
>> ERROR:  pg_atoi: error reading "100000": Math result not representable
>======   int4   ======
>10c10
>< ERROR:  pg_atoi: error reading "1000000000000": Numerical result out of range
>---
>> ERROR:  pg_atoi: error reading "1000000000000": Math result not representable
>[pgsql@hot] ~/devel/src/test/regress >
>
>
>
>    Such a regression result while we're in the middle of feature
>    development.
>
>    I'm really impressed - if we only can keep it on this  level!
>

I'm sure we could get rid of even those errors if we were to
incorporate some test like the following and then mangle the
expected results accordingly.

Trouble is I'm not sure how portable the code is:-

SPARCLinux compiles and gives "Math result not representable"
Solaris7   compiles and gives "Result too large"

Comments?

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{       char *s = "10000000000000000000000000000000000000000000000000";       long            l = 0;       char
*badp= (char *) NULL;
 
       errno = 0;
       l = strtol(s, &badp, 10);       if (errno) {               printf("%s\n",strerror(errno));
exit(0);      } else {               printf("Error - No Error.");               exit(1);       }
 
}  



Re: [HACKERS] PostgreSQL 6.5.2

From
Bruce Momjian
Date:
> wieck@debis.com
> >[pgsql@hot] ~/devel/src/test/regress > ./checkresults
> >======   int2   ======
> >10c10
> >< ERROR:  pg_atoi: error reading "100000": Numerical result out of range
> >---
> >> ERROR:  pg_atoi: error reading "100000": Math result not representable
> >======   int4   ======
> >10c10
> >< ERROR:  pg_atoi: error reading "1000000000000": Numerical result out of range
> >---
> >> ERROR:  pg_atoi: error reading "1000000000000": Math result not representable
> >[pgsql@hot] ~/devel/src/test/regress >

I am inclined to strip off error messages after the second : and the do
the compare so:
ERROR:  pg_atoi: error reading "1000000000000": Math result not representa..


becomes:
ERROR:  pg_atoi: error reading "1000000000000":

They we just have to make sure all calls to perror have a colon before
them.


--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: [HACKERS] PostgreSQL 6.5.2

From
Tom Lane
Date:
Keith Parks <emkxp01@mtcc.demon.co.uk> writes:
> I'm sure we could get rid of even those errors if we were to
> incorporate some test like the following and then mangle the
> expected results accordingly.

I don't see much value in getting rid of the discrepancies in strerror()
messages unless you have some proposal for getting rid of platform-
specific float roundoff differences.  On my machine, the diffs in the
float8 and geometry regress tests are *much* larger and much harder to
validate by eyeball than the piddling little diffs in int2 and int4.
(I suppose I should submit platform-specific expected files for HPUX,
but have never gotten round to it...)

However, if people like this approach, why not just print out
"strerror(ERANGE)" instead of fooling with strtol?
        regards, tom lane


Re: [HACKERS] PostgreSQL 6.5.2

From
Tom Lane
Date:
Bruce Momjian <maillist@candle.pha.pa.us> writes:
> They we just have to make sure all calls to perror have a colon before
> them.

IIRC, perror is defined to supply the colon for you.  But this approach
won't really work unless you want to guarantee that colons never appear
for any other reason in the regress outputs... horology, for one, is
going to have a problem with that...

It does seem that the majority of the platform-specific expected files
we have are for this one issue in int2/int4, so maybe Keith's idea of
substituting the correct error message as a localization string is not a
bad one.  We already have all the mechanism for that.
        regards, tom lane