| 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: | Whole Thread | Raw Message | 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 |
| 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 |
| 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 |
| 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 |