Re: pgsql: Add time/date macros for code clarity: #define

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: "Marc G(dot) Fournier" <scrappy(at)postgresql(dot)org>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-committers(at)postgresql(dot)org
Subject: Re: pgsql: Add time/date macros for code clarity: #define
Date: 2005-07-21 05:11:59
Message-ID: 200507210511.j6L5BxR01138@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Marc G. Fournier wrote:
> On Thu, 21 Jul 2005, Tom Lane wrote:
>
> > Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> writes:
> >> Tom Lane wrote:
> >>>> #define DAYS_PER_YEAR 365.25
> >>>> #define MONTHS_PER_YEAR 12
> >>>> #define DAYS_PER_MONTH 30
> >>>> #define HOURS_PER_DAY 24
> >>>
> >>> Considering that only one of these four is actually an accurate
> >>> constant, I have to question the usefulness of this.
> >
> >> Yea, the problem is that these non-absolute constants are littered all
> >> through the code, so it is best to have them at least in one place. I
> >> will add a comment marking the non-accurate ones more clearly.
> >
> > Unless you comment every single use of the macros, you won't have
> > addressed my point. No one will ever read "DAYS_PER_YEAR" in the midst
> > of some code and not stop to wonder "hmm, is that 365, or 365.25, or
> > 365.2425"? And in most places where this might be used, that's not
> > an ignorable issue. I think it is actually better to write out the
> > literal number, because then you can see right away what is happening.
> >
> > In short, I don't think this is an improvement.
>
> 'k, I have to be missing something here, but other then, what, 5 months of
> the year (not even half), DAYS_PER_MONTH isn't 30 either ... this can't be
> good, especially not for a database ... that's like saying "oh, pi is
> around 3.2" (assuming .05 rounds up to 2 instead of down to 1) ... the
> conversions would only be right 5/12ths of the time ...
>
> Or am I missing something?

No, you are not. Our using 30 is pretty wacky, but when we need to
convert from months to days/time, that's the only way we can do it.

At least with the macro, we can now know every place we make that
assumption.

--
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

Browse pgsql-committers by date

  From Date Subject
Next Message Bruce Momjian 2005-07-21 05:13:51 Re: pgsql: Add time/date macros for code clarity: #define
Previous Message Tom Lane 2005-07-21 05:08:31 Re: pgsql: Add time/date macros for code clarity: #define