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

Re: [BUGS] BUG #3431: age() gets the days wrong

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Pelle Johansson <pelle(at)morth(dot)org>, PostgreSQL-patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: [BUGS] BUG #3431: age() gets the days wrong
Date: 2007-07-18 03:14:43
Message-ID: 200707180314.l6I3EhB14396@momjian.us (view raw or flat)
Thread:
Lists: pgsql-bugspgsql-hackerspgsql-patches
I have applied the attached patch that documents the age() behavior,
plus fixes the mismatch sign for seconds by using part of Tom's earlier
patch.  

I agree we want to keep the symmetry we have.  We can call this item
closed.

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

Tom Lane wrote:
> Pelle Johansson <pelle(at)morth(dot)org> writes:
> > If you were to use the result for subtracting from the first value,  
> > instead of adding to the second, the conditions are reversed. It's  
> > not really as obvious as I first thought whether there's 2 months and  
> > 29 days or 2 months and 30 days between 2006-11-02 and 2007-02-01...  
> 
> Hmm, that's a really good point; perhaps the original author was
> thinking of it in those terms, in which case using the first month of
> the interval is indeed sane.  (Almost: I believe that the loop can
> iterate more than once, and then you need to look to the second month
> etc.  The code's not doing that, so there's still a corner-case bug,
> plus the fsec issue.)
> 
> Other than that corner case, it seems the behavior we currently have is
> 	if x > y, age() produces a positive interval such that
> 		x - age(x, y) = y
> 	if x < y, age() produces a negative interval such that
> 		y + age(x, y) = x
> 
> Are we satisfied with just documenting that, or do we want to change it,
> and if so to what?
> 
> As the code currently stands, we have the symmetry property
> 	age(x,y) = - age(y,x)
> for all x,y.  I don't think we can preserve that if we try to simplify
> the relationship to interval addition/subtraction.
> 
> Comments?
> 
> 			regards, tom lane
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 7: You can help support the PostgreSQL project by donating at
> 
>                 http://www.postgresql.org/about/donate

-- 
  Bruce Momjian  <bruce(at)momjian(dot)us>          http://momjian.us
  EnterpriseDB                               http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Attachment: /rtmp/diff
Description: text/x-diff (3.2 KB)

In response to

pgsql-hackers by date

Next:From: caijDate: 2007-07-18 04:07:16
Subject: postgresql compile problem
Previous:From: Alvaro HerreraDate: 2007-07-18 01:26:32
Subject: Re: AutoVacuum Behaviour Question

pgsql-bugs by date

Next:From: Eugene GershnikDate: 2007-07-18 03:19:20
Subject: BUG #3462: pg_ctl error output cannot be redirected
Previous:From: Bruce MomjianDate: 2007-07-18 00:41:12
Subject: Re: BUG #3431: age() gets the days wrong

pgsql-patches by date

Next:From: Bruce MomjianDate: 2007-07-18 03:20:39
Subject: Re: execl() sentinel
Previous:From: Bruce MomjianDate: 2007-07-18 00:41:12
Subject: Re: BUG #3431: age() gets the days wrong

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