Re: Replication vs. float timestamps is a disaster
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: Petr Jelinek <petr.jelinek@2ndquadrant.com>,
Robert Haas <robertmhaas@gmail.com>,
"pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2017-02-20T14:07:33Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes: > On 2017-02-20 11:58:12 +0100, Petr Jelinek wrote: >> That being said, I did wonder myself if we should just deprecate float >> timestamps as well. > I think we need a proper deprecation period for that, given that the > conversion away will be painful for pg_upgrade using people with big > clusters. So I think we should fix this regardless... :( The question to be asked is whether there is still anybody out there using float timestamps. I'm starting to get dubious about it myself. Certainly, no packager that I'm aware of has shipped a float-timestamp build since we switched the default in 8.4. Maybe there is somebody who's faithfully built a float-timestamp custom build every year so they can pg_upgrade in place from their 8.3 installation, but there have got to be darn few such people. As for "proper deprecation period", the documentation has called the option deprecated since 8.4: -disable-integer-datetimes 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. I think the strongest reason why we didn't move to kill it sooner was that we were not then assuming that every platform had 64-bit ints; but we've required that since 9.0. regards, tom lane
Commits
-
Consistently declare timestamp variables as TimestampTz.
- c29aff959dc6 10.0 landed
-
Remove now-dead code for !HAVE_INT64_TIMESTAMP.
- b9d092c962ea 10.0 landed
-
Remove pg_control's enableIntTimes field.
- d28aafb6dda3 10.0 landed
-
De-support floating-point timestamps.
- b6aa17e0ae36 10.0 landed
-
Make integer_datetimes the default for MSVC even if not mentioned in config.pl.
- fcf053d7829f 8.4.0 cited
-
Enable 64-bit integer datetimes by default, per previous discussion.
- 2169e42bef9d 8.4.0 cited