Skip site navigation (1) Skip section navigation (2)

Re: [HACKERS] Strange interval arithmetic

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Michael Fuhr <mike(at)fuhr(dot)org>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Christopher Kings-Lynne <chriskl(at)familyhealth(dot)com(dot)au>, PostgreSQL-patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: [HACKERS] Strange interval arithmetic
Date: 2005-12-01 20:37:22
Message-ID: 200512012037.jB1KbMo23338@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-patches
I started working on this problem on Tuesday, but was in New York City
yesterday so I was not able to comment on this patch before.  I think
the one applied is great.  (I added C comments on the use of "errno =
0".

Here is the patch I was working on.  It does us a separate libpq
strtol() function, but I question whether it is worth it, or if it is
meaningful when used by FRONTEND applications.  Anyway, I am just
throwing it out if it gives others ideas.

---------------------------------------------------------------------------

Michael Fuhr wrote:
> On Wed, Nov 30, 2005 at 02:01:46PM -0500, Tom Lane wrote:
> > Michael Fuhr <mike(at)fuhr(dot)org> writes:
> > > Any preferences on an approach?  The simplest and easiest to verify
> > > would be to raise an error for just this particular case; a TODO
> > > item might be to change how the string is parsed to allow values
> > > larger than LONG_MAX.
> > 
> > I think the latter would be a feature enhancement and therefore not
> > good material to back-patch.  Just erroring out seems appropriate
> > for now.
> 
> Agreed.  I'm thinking about rewriting strtol() calls in datetime.c
> to look like this:
> 
>   errno = 0;
>   val = strtol(field[i], &cp, 10);
>   if (errno == ERANGE)
>       return DTERR_FIELD_OVERFLOW;
> 
> Does that look okay?  Or would you rather raise an error with ereport()?
> 
> > > I see several calls to strtol() that aren't checked for overflow but
> > > that might not be relevant to this problem, so I'm thinking this patch
> > > ought not touch them.  Maybe that's another TODO item.
> > 
> > If it's possible for them to be given overflowing input, they probably
> > ought to be checked.
> 
> I'm looking at all the strtol() calls in datetime.c right now; I
> haven't looked anywhere else yet.  Should I bother checking values
> that will be range checked later anyway?  Time zone displacements,
> for example?
> 
> -- 
> Michael Fuhr
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
>        subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
>        message can get through to the mailing list cleanly
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

In response to

Responses

pgsql-hackers by date

Next:From: Tom LaneDate: 2005-12-01 20:43:05
Subject: Re: Strange interval arithmetic
Previous:From: Martijn van OosterhoutDate: 2005-12-01 20:37:09
Subject: Re: 8.1, OID's and plpgsql

pgsql-patches by date

Next:From: Tom LaneDate: 2005-12-01 20:43:05
Subject: Re: Strange interval arithmetic
Previous:From: Greg StarkDate: 2005-12-01 20:31:41
Subject: Re: Strange interval arithmetic

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group