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
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers pgsql-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 Content-Type Size
/rtmp/diff text/x-diff 3.2 KB

In response to

Browse pgsql-bugs by date

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

Browse pgsql-hackers by date

  From Date Subject
Next Message caij 2007-07-18 04:07:16 postgresql compile problem
Previous Message Alvaro Herrera 2007-07-18 01:26:32 Re: AutoVacuum Behaviour Question

Browse pgsql-patches by date

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