diff --git a/configure b/configure
index 6a8db7ce2c8..bbbe81170ac 100755
--- a/configure
+++ b/configure
@@ -1473,7 +1473,7 @@ Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-integer-datetimes
- disable 64-bit integer date/time support
+ obsolete option, no longer supported
--enable-nls[=LANGUAGES]
enable Native Language Support
--disable-rpath do not embed shared library search path in
@@ -2984,10 +2984,10 @@ fi
#
-# 64-bit integer date/time storage: enabled by default.
+# 64-bit integer date/time storage is now the only option, but to avoid
+# unnecessary breakage of build scripts, continue to accept an explicit
+# "--enable-integer-datetimes" switch.
#
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build with 64-bit integer date/time support" >&5
-$as_echo_n "checking whether to build with 64-bit integer date/time support... " >&6; }
# Check whether --enable-integer-datetimes was given.
@@ -2995,12 +2995,10 @@ if test "${enable_integer_datetimes+set}" = set; then :
enableval=$enable_integer_datetimes;
case $enableval in
yes)
-
-$as_echo "#define USE_INTEGER_DATETIMES 1" >>confdefs.h
-
+ :
;;
no)
- :
+ as_fn_error $? "--disable-integer-datetimes is no longer supported" "$LINENO" 5
;;
*)
as_fn_error $? "no argument expected for --enable-integer-datetimes option" "$LINENO" 5
@@ -3010,13 +3008,9 @@ $as_echo "#define USE_INTEGER_DATETIMES 1" >>confdefs.h
else
enable_integer_datetimes=yes
-$as_echo "#define USE_INTEGER_DATETIMES 1" >>confdefs.h
-
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_integer_datetimes" >&5
-$as_echo "$enable_integer_datetimes" >&6; }
#
diff --git a/configure.in b/configure.in
index 01b618c931d..dab8ab3b328 100644
--- a/configure.in
+++ b/configure.in
@@ -122,13 +122,13 @@ PGAC_ARG_REQ(with, libs, [DIRS], [alternative spelling of --with-libraries]
#
-# 64-bit integer date/time storage: enabled by default.
+# 64-bit integer date/time storage is now the only option, but to avoid
+# unnecessary breakage of build scripts, continue to accept an explicit
+# "--enable-integer-datetimes" switch.
#
-AC_MSG_CHECKING([whether to build with 64-bit integer date/time support])
-PGAC_ARG_BOOL(enable, integer-datetimes, yes, [disable 64-bit integer date/time support],
- [AC_DEFINE([USE_INTEGER_DATETIMES], 1,
- [Define to 1 if you want 64-bit integer timestamp and interval support. (--enable-integer-datetimes)])])
-AC_MSG_RESULT([$enable_integer_datetimes])
+PGAC_ARG_BOOL(enable, integer-datetimes, yes, [obsolete option, no longer supported],
+ [],
+ [AC_MSG_ERROR([--disable-integer-datetimes is no longer supported])])
#
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 95afc2c483d..1b390a257ae 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -7695,11 +7695,9 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
- Reports whether PostgreSQL> was built with
- support for 64-bit-integer dates and times. This can be
- disabled by configuring with --disable-integer-datetimes>
- when building PostgreSQL>. The default value is
- on.
+ Reports whether PostgreSQL> was built with support for
+ 64-bit-integer dates and times. As of PostgreSQL> 10,
+ this is always on.
diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml
index 387ba53ef09..35610307d9a 100644
--- a/doc/src/sgml/datatype.sgml
+++ b/doc/src/sgml/datatype.sgml
@@ -1580,7 +1580,7 @@ SELECT E'\\xDEADBEEF';
both date and time (no time zone)4713 BC294276 AD
- 1 microsecond / 14 digits
+ 1 microsecondtimestamp [ (p) ] with time zone
@@ -1588,7 +1588,7 @@ SELECT E'\\xDEADBEEF';
both date and time, with time zone4713 BC294276 AD
- 1 microsecond / 14 digits
+ 1 microseconddate
@@ -1604,15 +1604,15 @@ SELECT E'\\xDEADBEEF';
time of day (no date)00:00:0024:00:00
- 1 microsecond / 14 digits
+ 1 microsecondtime [ (p) ] with time zone12 bytes
- times of day only, with time zone
+ time of day (no date), with time zone00:00:00+145924:00:00-1459
- 1 microsecond / 14 digits
+ 1 microsecondinterval [ fields ] [ (p) ]
@@ -1620,7 +1620,7 @@ SELECT E'\\xDEADBEEF';
time interval-178000000 years178000000 years
- 1 microsecond / 14 digits
+ 1 microsecond
@@ -1643,41 +1643,7 @@ SELECT E'\\xDEADBEEF';
p which specifies the number of
fractional digits retained in the seconds field. By default, there
is no explicit bound on precision. The allowed range of
- p is from 0 to 6 for the
- timestamp and interval types.
-
-
-
-
- When timestamp> values are stored as eight-byte integers
- (currently the default), microsecond precision is available over
- the full range of values. In this case, the internal representation
- is the number of microseconds before or after midnight 2000-01-01.
- When timestamp> values are stored as double precision
- floating-point numbers (a deprecated compile-time option), the
- internal representation is the number of seconds before or after
- midnight 2000-01-01. With this representation, the effective limit
- of precision might be less than 6; in practice,
- microsecond precision is achieved for dates within a few
- years of 2000-01-01, but the precision degrades for dates further
- away. Note that using floating-point datetimes allows a larger
- range of timestamp values to be represented than
- shown above: from 4713 BC up to 5874897 AD.
-
-
-
- The same compile-time option also determines whether
- time and interval values are stored as
- floating-point numbers or eight-byte integers. In the
- floating-point case, large interval values degrade in
- precision as the size of the interval increases.
-
-
-
-
- For the time types, the allowed range of
- p is from 0 to 6 when eight-byte integer
- storage is used, or from 0 to 10 when floating-point storage is used.
+ p is from 0 to 6.
@@ -1760,9 +1726,10 @@ MINUTE TO SECOND
specification giving the number of
fractional digits in the seconds field. Precision can be
specified for time, timestamp, and
- interval types. The allowed values are mentioned
- above. If no precision is specified in a constant specification,
- it defaults to the precision of the literal value.
+ interval types, and can range from 0 to 6.
+ If no precision is specified in a constant specification,
+ it defaults to the precision of the literal value (but not
+ more than 6 digits).
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index be0931326bc..568995c9f2f 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -955,28 +955,6 @@ su - postgres
-
-
-
-
- Disable support for 64-bit integer storage for timestamps and
- intervals, and store datetime values as floating-point
- numbers instead. Floating-point datetime storage was the
- default in PostgreSQL releases
- prior to 8.4, but it is now deprecated, because it does not
- support microsecond precision for the full range of
- timestamp values. However, integer-based
- datetime storage requires a 64-bit integer type. Therefore,
- this option can be used when no such type is available, or
- for compatibility with applications written for prior
- versions of PostgreSQL. See
-
- ]]>
- for more information.
-
-
-
-
diff --git a/src/include/c.h b/src/include/c.h
index 91e5baa9692..947bd980672 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -340,10 +340,11 @@ typedef unsigned PG_INT128_TYPE uint128;
#define PG_INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF)
#define PG_UINT64_MAX UINT64CONST(0xFFFFFFFFFFFFFFFF)
-/* Select timestamp representation (float8 or int64) */
-#ifdef USE_INTEGER_DATETIMES
+/*
+ * We now always use int64 timestamps, but keep this symbol defined for the
+ * benefit of external code that might test it.
+ */
#define HAVE_INT64_TIMESTAMP
-#endif
/*
* Size
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index b9dfdd41c1a..8dd73f1d915 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -831,10 +831,6 @@
(--enable-float8-byval) */
#undef USE_FLOAT8_BYVAL
-/* Define to 1 if you want 64-bit integer timestamp and interval support.
- (--enable-integer-datetimes) */
-#undef USE_INTEGER_DATETIMES
-
/* Define to 1 to build with LDAP support. (--with-ldap) */
#undef USE_LDAP
diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32
index 199668c1876..fd1af59839d 100644
--- a/src/include/pg_config.h.win32
+++ b/src/include/pg_config.h.win32
@@ -625,10 +625,6 @@
/* Define to use /dev/urandom for random number generation */
/* #undef USE_DEV_URANDOM */
-/* Define to 1 if you want 64-bit integer timestamp and interval support.
- (--enable-integer-datetimes) */
-/* #undef USE_INTEGER_DATETIMES */
-
/* Define to 1 to build with LDAP support. (--with-ldap) */
/* #undef USE_LDAP */
diff --git a/src/interfaces/ecpg/include/ecpg_config.h.in b/src/interfaces/ecpg/include/ecpg_config.h.in
index bf99a5e7930..736fb08dba3 100644
--- a/src/interfaces/ecpg/include/ecpg_config.h.in
+++ b/src/interfaces/ecpg/include/ecpg_config.h.in
@@ -10,10 +10,6 @@
/* Define to 1 if `long long int' works and is 64 bits. */
#undef HAVE_LONG_LONG_INT_64
-/* Define to 1 if you want 64-bit integer timestamp and interval support.
- (--enable-integer-datetimes) */
-#undef USE_INTEGER_DATETIMES
-
/* Define to 1 to build client libraries as thread-safe code.
* (--enable-thread-safety) */
#undef ENABLE_THREAD_SAFETY
diff --git a/src/interfaces/ecpg/include/pgtypes_interval.h b/src/interfaces/ecpg/include/pgtypes_interval.h
index deac6a2e01a..5118ec784d1 100644
--- a/src/interfaces/ecpg/include/pgtypes_interval.h
+++ b/src/interfaces/ecpg/include/pgtypes_interval.h
@@ -20,9 +20,7 @@ typedef long long int int64;
#error must have a working 64-bit integer datatype
#endif
-#ifdef USE_INTEGER_DATETIMES
#define HAVE_INT64_TIMESTAMP
-#endif
#endif /* C_H */
typedef struct
diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c
index 4277c2615da..b6e77562b24 100644
--- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c
+++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c
@@ -145,10 +145,8 @@ main(void)
sprintf(t, "%s %s", dates[i], times[j]);
ts1 = PGTYPEStimestamp_from_asc(t, NULL);
text = PGTYPEStimestamp_to_asc(ts1);
- /* skip outputs sensitive to USE_INTEGER_DATETIMES */
- if (i != 19 || (j != 3 && j != 4))
- printf("TS[%d,%d]: %s\n",
- i, j, errno ? "-" : text);
+ printf("TS[%d,%d]: %s\n",
+ i, j, errno ? "-" : text);
free(text);
free(t);
}
diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout
index 941bffbd815..0fbcce67b68 100644
--- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout
+++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout
@@ -103,6 +103,8 @@ Date[19]: 0099-01-08 BC (N - F)
TS[19,0]: 0099-01-08 00:04:00 BC
TS[19,1]: 0099-01-08 01:59:00 BC
TS[19,2]: 0099-01-08 13:24:40 BC
+TS[19,3]: 0099-01-08 13:24:40.495 BC
+TS[19,4]: 0099-01-08 13:24:40.123456 BC
Date[20]: - (N - T)
Date[21]: - (N - T)
interval[0]: @ 1 min
diff --git a/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc b/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc
index 0bd1fec109d..d519305e188 100644
--- a/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc
+++ b/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc
@@ -110,10 +110,8 @@ main(void)
sprintf(t, "%s %s", dates[i], times[j]);
ts1 = PGTYPEStimestamp_from_asc(t, NULL);
text = PGTYPEStimestamp_to_asc(ts1);
- /* skip outputs sensitive to USE_INTEGER_DATETIMES */
- if (i != 19 || (j != 3 && j != 4))
- printf("TS[%d,%d]: %s\n",
- i, j, errno ? "-" : text);
+ printf("TS[%d,%d]: %s\n",
+ i, j, errno ? "-" : text);
free(text);
free(t);
}
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index fbf4da3d68f..ff9064f923d 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -28,9 +28,6 @@ sub _new
$self->DeterminePlatform();
my $bits = $self->{platform} eq 'Win32' ? 32 : 64;
- # integer_datetimes is now the default
- $options->{integer_datetimes} = 1
- unless exists $options->{integer_datetimes};
$options->{float4byval} = 1
unless exists $options->{float4byval};
$options->{float8byval} = ($bits == 64)
@@ -169,8 +166,6 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
print O "#ifndef IGNORE_CONFIGURED_SETTINGS\n";
print O "#define USE_ASSERT_CHECKING 1\n"
if ($self->{options}->{asserts});
- print O "#define USE_INTEGER_DATETIMES 1\n"
- if ($self->{options}->{integer_datetimes});
print O "#define USE_LDAP 1\n" if ($self->{options}->{ldap});
print O "#define HAVE_LIBZ 1\n" if ($self->{options}->{zlib});
print O "#define USE_OPENSSL 1\n" if ($self->{options}->{openssl});
@@ -427,8 +422,6 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
#define HAVE_LONG_LONG_INT_64
#define ENABLE_THREAD_SAFETY 1
EOF
- print O "#define USE_INTEGER_DATETIMES 1\n"
- if ($self->{options}->{integer_datetimes});
print O "#endif\n";
close(O);
}
@@ -661,8 +654,6 @@ sub GetFakeConfigure
my $cfg = '--enable-thread-safety';
$cfg .= ' --enable-cassert' if ($self->{options}->{asserts});
- $cfg .= ' --enable-integer-datetimes'
- if ($self->{options}->{integer_datetimes});
$cfg .= ' --enable-nls' if ($self->{options}->{nls});
$cfg .= ' --enable-tap-tests' if ($self->{options}->{tap_tests});
$cfg .= ' --with-ldap' if ($self->{options}->{ldap});
diff --git a/src/tools/msvc/config_default.pl b/src/tools/msvc/config_default.pl
index f046687bd06..97f1af8b49e 100644
--- a/src/tools/msvc/config_default.pl
+++ b/src/tools/msvc/config_default.pl
@@ -4,7 +4,6 @@ use warnings;
our $config = {
asserts => 0, # --enable-cassert
- # integer_datetimes=>1, # --enable-integer-datetimes - on is now default
# float4byval=>1, # --disable-float4-byval, on by default
# float8byval=> $platformbits == 64, # --disable-float8-byval,