Fix assorted breakage in to_char()'s OF format option.
authorTom Lane
Thu, 17 Mar 2016 19:50:33 +0000 (15:50 -0400)
committerTom Lane
Thu, 17 Mar 2016 19:50:33 +0000 (15:50 -0400)
commit17a250b189a94a470e37ce14d0ebf72390c86d4d
treedc66dc06211aeb8ae6d9685b5068c9cdea6a00c3
parent23cb32660c841d21a376642e40d8cfbea6c5f010
Fix assorted breakage in to_char()'s OF format option.

In HEAD, fix incorrect field width for hours part of OF when tm_gmtoff is
negative.  This was introduced by commit 2d87eedc1d4468d3 as a result of
falsely applying a pattern that's correct when + signs are omitted, which
is not the case for OF.

In 9.4, fix missing abs() call that allowed a sign to be attached to the
minutes part of OF.  This was fixed in 9.5 by 9b43d73b3f9bef27, but for
inscrutable reasons not back-patched.

In all three versions, ensure that the sign of tm_gmtoff is correctly
reported even when the GMT offset is less than 1 hour.

Add regression tests, which evidently we desperately need here.

Thomas Munro and Tom Lane, per report from David Fetter
src/backend/utils/adt/formatting.c
src/test/regress/expected/timestamptz.out
src/test/regress/sql/timestamptz.sql