1. 26 Feb, 2017 1 commit
  2. 25 Feb, 2017 4 commits
    • Tom Lane's avatar
      Put back #include <windows.h> in dirmod.c. · 285ca261
      Tom Lane authored
      I removed this in commit 9e3755ec, reasoning that the win32.h
      port-specific header file included by c.h would have provided it.
      However, that's only true on native win32 builds, not Cygwin builds.
      
      It may be that some of the other <windows.h> inclusions also need
      to be put back on the same grounds; but this is the only one that
      is clearly meant to be included #ifdef __CYGWIN__, so maybe this is
      the extent of the problem.  Awaiting further buildfarm results.
      285ca261
    • Tom Lane's avatar
      Remove some configure header-file checks that we weren't really using. · 2bd7f857
      Tom Lane authored
      We had some AC_CHECK_HEADER tests that were really wastes of cycles,
      because the code proceeded to #include those headers unconditionally
      anyway, in all or a large majority of cases.  The lack of complaints
      shows that those headers are available on every platform of interest,
      so we might as well let configure run a bit faster by not probing
      those headers at all.
      
      I suspect that some of the tests I left alone are equally useless, but
      since all the existing #includes of the remaining headers are properly
      guarded, I didn't touch them.
      2bd7f857
    • Tom Lane's avatar
      Remove useless duplicate inclusions of system header files. · 9e3755ec
      Tom Lane authored
      c.h #includes a number of core libc header files, such as <stdio.h>.
      There's no point in re-including these after having read postgres.h,
      postgres_fe.h, or c.h; so remove code that did so.
      
      While at it, also fix some places that were ignoring our standard pattern
      of "include postgres[_fe].h, then system header files, then other Postgres
      header files".  While there's not any great magic in doing it that way
      rather than system headers last, it's silly to have just a few files
      deviating from the general pattern.  (But I didn't attempt to enforce this
      globally, only in files I was touching anyway.)
      
      I'd be the first to say that this is mostly compulsive neatnik-ism,
      but over time it might save enough compile cycles to be useful.
      9e3755ec
    • Bruce Momjian's avatar
      pg_upgrade docs: clarify instructions on standby extensions · 5639cedd
      Bruce Momjian authored
      Previously the pg_upgrade standby upgrade instructions said not to
      execute pgcrypto.sql, but it should have referenced the extension
      command "CREATE EXTENSION pgcrypto".  This patch makes that doc change.
      
      Reported-by: a private bug report
      
      Backpatch-through: 9.4, where standby instructions were added
      5639cedd
  3. 24 Feb, 2017 4 commits
  4. 23 Feb, 2017 6 commits
    • Tom Lane's avatar
      Consistently declare timestamp variables as TimestampTz. · c29aff95
      Tom Lane authored
      Twiddle the replication-related code so that its timestamp variables
      are declared TimestampTz, rather than the uninformative "int64" that
      was previously used for meant-to-be-always-integer timestamps.
      This resolves the int64-vs-TimestampTz declaration inconsistencies
      introduced by commit 7c030783, though in the opposite direction to
      what was originally suggested.
      
      This required including datatype/timestamp.h in a couple more places
      than before.  I decided it would be a good idea to slim down that
      header by not having it pull in <float.h> etc, as those headers are
      no longer at all relevant to its purpose.  Unsurprisingly, a small number
      of .c files turn out to have been depending on those inclusions, so add
      them back in the .c files as needed.
      
      Discussion: https://postgr.es/m/26788.1487455319@sss.pgh.pa.us
      Discussion: https://postgr.es/m/27694.1487456324@sss.pgh.pa.us
      c29aff95
    • Tom Lane's avatar
      Remove now-dead code for !HAVE_INT64_TIMESTAMP. · b9d092c9
      Tom Lane authored
      This is a basically mechanical removal of #ifdef HAVE_INT64_TIMESTAMP
      tests and the negative-case controlled code.
      
      Discussion: https://postgr.es/m/26788.1487455319@sss.pgh.pa.us
      b9d092c9
    • Tom Lane's avatar
      Remove pg_control's enableIntTimes field. · d28aafb6
      Tom Lane authored
      We don't need it any more.
      
      pg_controldata continues to report that date/time type storage is
      "64-bit integers", but that's now a hard-wired behavior not something
      it sees in the data.  This avoids breaking pg_upgrade, and perhaps other
      utilities that inspect pg_control this way.  Ditto for pg_resetwal.
      
      I chose to remove the "bigint_timestamps" output column of
      pg_control_init(), though, as that function hasn't been around long
      and probably doesn't have ossified users.
      
      Discussion: https://postgr.es/m/26788.1487455319@sss.pgh.pa.us
      d28aafb6
    • Tom Lane's avatar
      De-support floating-point timestamps. · b6aa17e0
      Tom Lane authored
      Per discussion, the time has come to do this.  The handwriting has been
      on the wall at least since 9.0 that this would happen someday, whenever
      it got to be too much of a burden to support the float-timestamp option.
      The triggering factor now is the discovery that there are multiple bugs
      in the code that attempts to implement use of integer timestamps in the
      replication protocol even when the server is built for float timestamps.
      The internal float timestamps leak into the protocol fields in places.
      While we could fix the identified bugs, there's a very high risk of
      introducing more.  Trying to build a wall that would positively prevent
      mixing integer and float timestamps is more complexity than we want to
      undertake to maintain a long-deprecated option.  The fact that these
      bugs weren't found through testing also indicates a lack of interest
      in float timestamps.
      
      This commit disables configure's --disable-integer-datetimes switch
      (it'll still accept --enable-integer-datetimes, though), removes direct
      references to USE_INTEGER_DATETIMES, and removes discussion of float
      timestamps from the user documentation.  A considerable amount of code is
      rendered dead by this, but removing that will occur as separate mop-up.
      
      Discussion: https://postgr.es/m/26788.1487455319@sss.pgh.pa.us
      b6aa17e0
    • Peter Eisentraut's avatar
      Fix logical replication with different encodings · c3368f91
      Peter Eisentraut authored
      reported by Shinoda, Noriyoshi <noriyoshi.shinoda@hpe.com>; partial
      patch by Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
      c3368f91
    • Peter Eisentraut's avatar
      Remove deprecated COMMENT ON RULE syntax · e8d016d8
      Peter Eisentraut authored
      This was only used for allowing upgrades from pre-7.3 instances, which
      was a long time ago.
      e8d016d8
  5. 22 Feb, 2017 6 commits
  6. 21 Feb, 2017 14 commits
    • Tom Lane's avatar
      Suppress unused-variable warning. · c56ac291
      Tom Lane authored
      Rearrange so we don't have an unused variable in disable-cassert case.
      
      Discussion: https://postgr.es/m/CAMkU=1x63f2QyFTeas83xJqD+Hm1PBuok1LrzYzS-OngDzYOVA@mail.gmail.com
      c56ac291
    • Tom Lane's avatar
      Fix sloppy handling of corner-case errors in fd.c. · f97de05a
      Tom Lane authored
      Several places in fd.c had badly-thought-through handling of error returns
      from lseek() and close().  The fact that those would seldom fail on valid
      FDs is probably the reason we've not noticed this up to now; but if they
      did fail, we'd get quite confused.
      
      LruDelete and LruInsert actually just Assert'd that lseek never fails,
      which is pretty awful on its face.
      
      In LruDelete, we indeed can't throw an error, because that's likely to get
      called during error abort and so throwing an error would probably just lead
      to an infinite loop.  But by the same token, throwing an error from the
      close() right after that was ill-advised, not to mention that it would've
      left the LRU state corrupted since we'd already unlinked the VFD from the
      list.  I also noticed that really, most of the time, we should know the
      current seek position and it shouldn't be necessary to do an lseek here at
      all.  As patched, if we don't have a seek position and an lseek attempt
      doesn't give us one, we'll close the file but then subsequent re-open
      attempts will fail (except in the somewhat-unlikely case that a
      FileSeek(SEEK_SET) call comes between and allows us to re-establish a known
      target seek position).  This isn't great but it won't result in any state
      corruption.
      
      Meanwhile, having an Assert instead of an honest test in LruInsert is
      really dangerous: if that lseek failed, a subsequent read or write would
      read or write from the start of the file, not where the caller expected,
      leading to data corruption.
      
      In both LruDelete and FileClose, if close() fails, just LOG that and mark
      the VFD closed anyway.  Possibly leaking an FD is preferable to getting
      into an infinite loop or corrupting the VFD list.  Besides, as far as I can
      tell from the POSIX spec, it's unspecified whether or not the file has been
      closed, so treating it as still open could be the wrong thing anyhow.
      
      I also fixed a number of other places that were being sloppy about
      behaving correctly when the seekPos is unknown.
      
      Also, I changed FileSeek to return -1 with EINVAL for the cases where it
      detects a bad offset, rather than throwing a hard elog(ERROR).  It seemed
      pretty inconsistent that some bad-offset cases would get a failure return
      while others got elog(ERROR).  It was missing an offset validity check for
      the SEEK_CUR case on a closed file, too.
      
      Back-patch to all supported branches, since all this code is fundamentally
      identical in all of them.
      
      Discussion: https://postgr.es/m/2982.1487617365@sss.pgh.pa.us
      f97de05a
    • Alvaro Herrera's avatar
      Add tests for two-phase commit · 30820982
      Alvaro Herrera authored
      There's some ongoing performance work on this area, so let's make sure
      we don't break things.
      
      Extracted from a larger patch originally by Stas Kelvich.
      
      Authors: Stas Kelvich, Nikhil Sontakke, Michael Paquier
      Discussion: https://postgr.es/m/CAMGcDxfsuLLOg=h5cTg3g77Jjk-UGnt=RW7zK57zBSoFsapiWA@mail.gmail.com
      30820982
    • Peter Eisentraut's avatar
      Fix whitespace · 74321d87
      Peter Eisentraut authored
      74321d87
    • Fujii Masao's avatar
      Fix typo in comment. · e14ec7d3
      Fujii Masao authored
      neha khatri
      e14ec7d3
    • Fujii Masao's avatar
      Fix connection leak in DROP SUBSCRIPTION command. · 898a792e
      Fujii Masao authored
      Previously the command forgot to close the connection to the publisher
      when it failed to drop the replication slot.
      898a792e
    • Fujii Masao's avatar
      Make walsender always initialize the buffers. · 1d04a59b
      Fujii Masao authored
      Walsender uses the local buffers for each outgoing and incoming message.
      Previously when creating replication slot, walsender forgot to initialize
      one of them and which can cause the segmentation fault error. To fix this
      issue, this commit changes walsender so that it always initialize them
      before it executes the requested replication command.
      
      Back-patch to 9.4 where replication slot was introduced.
      
      Problem report and initial patch by Stas Kelvich, modified by me.
      Report: https://www.postgresql.org/message-id/A1E9CB90-1FAC-4CAD-8DBA-9AA62A6E97C5@postgrespro.ru
      1d04a59b
    • Fujii Masao's avatar
      Remove confusing comment about unsupported feature. · d3653700
      Fujii Masao authored
      The initial table synchronization feature has not been supported yet,
      but there was the confusing header comment about it in logical/worker.c.
      d3653700
    • Peter Eisentraut's avatar
      doc: Update URL for plr · 7248099c
      Peter Eisentraut authored
      7248099c
    • Tom Lane's avatar
      Use less-generic table name in new regression test case. · 1c95f0b4
      Tom Lane authored
      Creating global objects named "foo" isn't an especially wise thing,
      but especially not in a test script that has already used that name
      for something else, and most especially not in a script that runs
      in parallel with other scripts that use that name :-(
      
      Per buildfarm.
      1c95f0b4
    • Peter Eisentraut's avatar
      Make more use of castNode() · 38d10376
      Peter Eisentraut authored
      38d10376
    • Tom Lane's avatar
      Reject too-old Python versions a bit sooner. · 4e5ce3c1
      Tom Lane authored
      Commit 04aad401 added this check after the search for a Python shared
      library, which seems to me to be a pretty unfriendly ordering.  The
      search might fail for what are basically version-related reasons, and
      in such a case it'd be better to say "your Python is too old" than
      "could not find shared library for Python".
      4e5ce3c1
    • Peter Eisentraut's avatar
      Drop support for Python 2.3 · 04aad401
      Peter Eisentraut authored
      There is no specific reason for this right now, but keeping support for
      old Python versions around indefinitely increases the maintenance
      burden.  The oldest supported Python version is now Python 2.4, which is
      still shipped in RHEL/CentOS 5 by default.
      
      In configure, add a check for the required Python version and give a
      friendly error message for an old version, instead of relying on an
      obscure build error later on.
      04aad401
    • Simon Riggs's avatar
      Small correction to BRIN docs · 0bf41dd1
      Simon Riggs authored
      Replace incorrect word "index" with "heap"
      
      Takayuki Tsunakawa
      0bf41dd1
  7. 20 Feb, 2017 2 commits
    • Tom Lane's avatar
      Improve error message for misuse of TZ, tz, OF formatting patterns. · 1c073505
      Tom Lane authored
      Be specific about which pattern is being complained of, and avoid saying
      "it's not supported in to_date", which is just confusing if the error is
      actually coming out of to_timestamp.  We can phrase it as "is only
      supported in to_char", instead.  Also, use the term "formatting field" not
      "format pattern", because other error messages in the same file prefer that
      terminology.  (This isn't terribly consistent with the documentation, so
      maybe we should change all these error messages?)
      1c073505
    • Tom Lane's avatar
      Fix documentation of to_char/to_timestamp TZ, tz, OF formatting patterns. · 10257fc5
      Tom Lane authored
      These are only supported in to_char, not in the other direction, but the
      documentation failed to mention that.  Also, describe TZ/tz as printing the
      time zone "abbreviation", not "name", because what they print is elsewhere
      referred to that way.  Per bug #14558.
      10257fc5
  8. 19 Feb, 2017 3 commits