Обсуждение: USECS_* constants undefined with float8 timestamps?
Hi all, I just noticed that the USECS_* constants are not defined when the server is compiled without integer dates and timestamps. Explicitly, timestamp.h is #ifdef HAVE_INT64_TIMESTAMP #define USECS_PER_DAY INT64CONST(86400000000) #define USECS_PER_HOUR INT64CONST(3600000000) #define USECS_PER_MINUTE INT64CONST(60000000) #define USECS_PER_SEC INT64CONST(1000000) #endif Is there a particular reason for this? Even with float8 timestamps there are uses for these constants in extensions. -- Johann Oskarsson http://www.2ndquadrant.com/ |[] PostgreSQL Development, 24x7 Support, Training andServices --+-- | Blog: http://my.opera.com/myrkraverk/blog/
On Fri, Jul 29, 2011 at 11:18 AM, Johann 'Myrkraverk' Oskarsson <johann@2ndquadrant.com> wrote: > Hi all, > > I just noticed that the USECS_* constants are not defined when the server > is compiled without integer dates and timestamps. > > Explicitly, timestamp.h is > > #ifdef HAVE_INT64_TIMESTAMP > #define USECS_PER_DAY INT64CONST(86400000000) > #define USECS_PER_HOUR INT64CONST(3600000000) > #define USECS_PER_MINUTE INT64CONST(60000000) > #define USECS_PER_SEC INT64CONST(1000000) > #endif > > Is there a particular reason for this? Even with float8 timestamps > there are uses for these constants in extensions. I don't see any particular reason not define them unconditionally. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Robert Haas wrote: > On Fri, Jul 29, 2011 at 11:18 AM, Johann 'Myrkraverk' Oskarsson > <johann@2ndquadrant.com> wrote: > > Hi all, > > > > I just noticed that the USECS_* constants are not defined when the server > > is compiled without integer dates and timestamps. > > > > Explicitly, timestamp.h is > > > > #ifdef HAVE_INT64_TIMESTAMP > > #define USECS_PER_DAY INT64CONST(86400000000) > > #define USECS_PER_HOUR INT64CONST(3600000000) > > #define USECS_PER_MINUTE INT64CONST(60000000) > > #define USECS_PER_SEC INT64CONST(1000000) > > #endif > > > > Is there a particular reason for this? ?Even with float8 timestamps > > there are uses for these constants in extensions. > > I don't see any particular reason not define them unconditionally. Well, they are only used by integer dates, so why expand their visibility? The define does make it clear how they are used. I suppose if someone wanted to use them outside that case, we could open them up. It is true that with integer dates now the default, we might find that someone introduces compile problems by using them outside the integer dates scope. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +
Bruce Momjian <bruce@momjian.us> writes: > Robert Haas wrote: >> On Fri, Jul 29, 2011 at 11:18 AM, Johann 'Myrkraverk' Oskarsson >> <johann@2ndquadrant.com> wrote: >> > >> > I just noticed that the USECS_* constants are not defined when >> > the server is compiled without integer dates and timestamps. [snip] >> I don't see any particular reason not define them unconditionally. > > Well, they are only used by integer dates, so why expand their > visibility? The define does make it clear how they are used. I > suppose if someone wanted to use them outside that case, we could > open them up. It is true that with integer dates now the default, we > might find that someone introduces compile problems by using them > outside the integer dates scope. I found a use for them in PL/Java which detects at run-time whether the server is using floating point or integer dates. The simplest way was just to use magic numbers instead on the off chance it's compiled with a server using float dates. -- Johann Oskarsson http://www.2ndquadrant.com/ |[] PostgreSQL Development, 24x7 Support, Training andServices --+-- | Blog: http://my.opera.com/myrkraverk/blog/
Johann 'Myrkraverk' Oskarsson wrote: > Bruce Momjian <bruce@momjian.us> writes: > > > Robert Haas wrote: > >> On Fri, Jul 29, 2011 at 11:18 AM, Johann 'Myrkraverk' Oskarsson > >> <johann@2ndquadrant.com> wrote: > >> > > >> > I just noticed that the USECS_* constants are not defined when > >> > the server is compiled without integer dates and timestamps. > [snip] > >> I don't see any particular reason not define them unconditionally. > > > > Well, they are only used by integer dates, so why expand their > > visibility? The define does make it clear how they are used. I > > suppose if someone wanted to use them outside that case, we could > > open them up. It is true that with integer dates now the default, we > > might find that someone introduces compile problems by using them > > outside the integer dates scope. > > I found a use for them in PL/Java which detects at run-time whether > the server is using floating point or integer dates. The simplest way > was just to use magic numbers instead on the off chance it's compiled > with a server using float dates. OK, that is a good reason. Done for PG 9.2. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +