1. 13 Apr, 2015 7 commits
    • Alvaro Herrera's avatar
      Remove duplicated word in README · b5213e14
      Alvaro Herrera authored
      b5213e14
    • Peter Eisentraut's avatar
      81134af3
    • Heikki Linnakangas's avatar
      Fix pg_rewind regression tests in VPATH builds · b22a36a6
      Heikki Linnakangas authored
      Should call just "pg_rewind", instead of "./pg_rewind". The tests are called
      so that PATH contains the temporariy installation bin dir.
      
      Per report from Alvaro Herrera
      b22a36a6
    • Heikki Linnakangas's avatar
      Refactor and fix TAP tests of pg_rewind · 53ba1077
      Heikki Linnakangas authored
      * Don't pass arguments to prove, since that's not supported on perl 5.8
      which is the minimum version supported by the TAP tests. Refactor the
      test files themselves to run the tests twice, in both local and remote mode.
      
      * Use eq rather than == for string comparison. This thinko caused the remote
      versions of the tests to never run.
      
      * Add "use strict" and "use warnings", and fix warnings that that produced.
      
      * Increase the delay after standby promotion, to make the tests more robust.
      
      * In remote mode, the connection string to the promoted standby was
      incorrect, leading to connection errors.
      
      Patch by Michael Paquier, to address Peter Eisentraut's report.
      53ba1077
    • Heikki Linnakangas's avatar
      Don't archive bogus recycled or preallocated files after timeline switch. · b2a5545b
      Heikki Linnakangas authored
      After a timeline switch, we would leave behind recycled WAL segments that
      are in the future, but on the old timeline. After promotion, and after they
      become old enough to be recycled again, we would notice that they don't have
      a .ready or .done file, create a .ready file for them, and archive them.
      That's bogus, because the files contain garbage, recycled from an older
      timeline (or prealloced as zeros). We shouldn't archive such files.
      
      This could happen when we're following a timeline switch during replay, or
      when we switch to new timeline at end-of-recovery.
      
      To fix, whenever we switch to a new timeline, scan the data directory for
      WAL segments on the old timeline, but with a higher segment number, and
      remove them. Those don't belong to our timeline history, and are most
      likely bogus recycled or preallocated files. They could also be valid files
      that we streamed from the primary ahead of time, but in any case, they're
      not needed to recover to the new timeline.
      b2a5545b
    • Fujii Masao's avatar
      Silence gettext warning about '\r' escape sequence in translatable string. · 1f94bec7
      Fujii Masao authored
      gettext was unhappy about the commit b216ad7b because it revealed
      the problem that internationalized messages may contain '\r' escape
      sequence in pg_rewind. This commit moves '\r' to a separate printf() call.
      
      Michael Paquier, bug reported by Peter Eisentraut
      1f94bec7
    • Peter Eisentraut's avatar
      emacs: Set indent-tabs-mode in perl-mode · 442663f1
      Peter Eisentraut authored
      This matches existing practice, but makes the setup complete and
      consistent with the C code setup.
      442663f1
  2. 12 Apr, 2015 4 commits
  3. 10 Apr, 2015 2 commits
    • Alvaro Herrera's avatar
      Optimize locking a tuple already locked by another subxact · 27846f02
      Alvaro Herrera authored
      Locking and updating the same tuple repeatedly led to some strange
      multixacts being created which had several subtransactions of the same
      parent transaction holding locks of the same strength.  However,
      once a subxact of the current transaction holds a lock of a given
      strength, it's not necessary to acquire the same lock again.  This made
      some coding patterns much slower than required.
      
      The fix is twofold.  First we change HeapTupleSatisfiesUpdate to return
      HeapTupleBeingUpdated for the case where the current transaction is
      already a single-xid locker for the given tuple; it used to return
      HeapTupleMayBeUpdated for that case.  The new logic is simpler, and the
      change to pgrowlocks is a testament to that: previously we needed to
      check for the single-xid locker separately in a very ugly way.  That
      test is simpler now.
      
      As fallout from the HTSU change, some of its callers need to be amended
      so that tuple-locked-by-own-transaction is taken into account in the
      BeingUpdated case rather than the MayBeUpdated case.  For many of them
      there is no difference; but heap_delete() and heap_update now check
      explicitely and do not grab tuple lock in that case.
      
      The HTSU change also means that routine MultiXactHasRunningRemoteMembers
      introduced in commit 11ac4c73 is no longer necessary and can be
      removed; the case that used to require it is now handled naturally as
      result of the changes to heap_delete and heap_update.
      
      The second part of the fix to the performance issue is to adjust
      heap_lock_tuple to avoid the slowness:
      
      1. Previously we checked for the case that our own transaction already
      held a strong enough lock and returned MayBeUpdated, but only in the
      multixact case.  Now we do it for the plain Xid case as well, which
      saves having to LockTuple.
      
      2. If the current transaction is the only locker of the tuple (but with
      a lock not as strong as what we need; otherwise it would have been
      caught in the check mentioned above), we can skip sleeping on the
      multixact, and instead go straight to create an updated multixact with
      the additional lock strength.
      
      3. Most importantly, make sure that both the single-xid-locker case and
      the multixact-locker case optimization are applied always.  We do this
      by checking both in a single place, rather than them appearing in two
      separate portions of the routine -- something that is made possible by
      the HeapTupleSatisfiesUpdate API change.  Previously we would only check
      for the single-xid case when HTSU returned MayBeUpdated, and only
      checked for the multixact case when HTSU returned BeingUpdated.  This
      was at odds with what HTSU actually returned in one case: if our own
      transaction was locker in a multixact, it returned MayBeUpdated, so the
      optimization never applied.  This is what led to the large multixacts in
      the first place.
      
      Per bug report #8470 by Oskari Saarenmaa.
      27846f02
    • Peter Eisentraut's avatar
      libpq: Don't overwrite existing OpenSSL thread callbacks · 8a0d34e4
      Peter Eisentraut authored
      If someone else already set the callbacks, don't overwrite them with
      ours.  When unsetting the callbacks, only unset them if they point to
      ours.
      
      Author: Jan Urbański <wulczer@wulczer.org>
      8a0d34e4
  4. 09 Apr, 2015 7 commits
  5. 08 Apr, 2015 8 commits
  6. 07 Apr, 2015 5 commits
    • Tom Lane's avatar
      Fix assorted inconsistent function declarations. · 393de3a0
      Tom Lane authored
      While gcc doesn't complain if you declare a function "static" and then
      define it not-static, other compilers do; and in any case the code is
      highly misleading this way.  Add the missing "static" keywords to a
      couple of recent patches.  Per buildfarm member pademelon.
      393de3a0
    • Heikki Linnakangas's avatar
      Fix reporting of missing or invalid command line arguments in pg_rewind. · ee075fcb
      Heikki Linnakangas authored
      pg_fatal never returns, so a multi-line message cannot be printed by
      calling it twice.
      
      Michael Paquier and Fujii Masao
      ee075fcb
    • Alvaro Herrera's avatar
      Remove variable shadowing · 4e17e32f
      Alvaro Herrera authored
      Commit a2e35b53 should have removed the variable declaration in the
      inner block, but didn't.  As a result, the returned address might end up
      not being what was intended.
      4e17e32f
    • Heikki Linnakangas's avatar
      Fix process startup in pg_rewind. · 8a06c36a
      Heikki Linnakangas authored
      Don't allow pg_rewind to run as root on Unix platforms, as any new or
      replaced files in the data directory would become owned by root. On Windows,
      it can run under a user that has Administrator rights, but a restricted
      token needs to be used. This is the same we do e.g. in pg_resetxlog.
      
      Also, add missing set_pglocale_pgservice() call, to fix localization.
      
      Michael Paquier and Fujii Masao
      8a06c36a
    • Simon Riggs's avatar
      Fix spelling of author's name · 1cdf4d0b
      Simon Riggs authored
      1cdf4d0b
  7. 06 Apr, 2015 3 commits
    • Alvaro Herrera's avatar
      pg_event_trigger_dropped_objects: add is_temp column · e9a077ca
      Alvaro Herrera authored
      It now also reports temporary objects dropped that are local to the
      backend.  Previously we weren't reporting any temp objects because it
      was deemed unnecessary; but as it turns out, it is necessary if we want
      to keep close track of DDL command execution inside one session.  Temp
      objects are reported as living in schema pg_temp, which works because
      such a schema-qualification always refers to the temp objects of the
      current session.
      e9a077ca
    • Alvaro Herrera's avatar
      Fix object identities for pg_conversion objects · 70dc2db7
      Alvaro Herrera authored
      This was already fixed in 0d906798, but I failed to update the
      array-formatted case.  This is not backpatched, since this only affects
      the code path introduced by commit a6762014.
      70dc2db7
    • Fujii Masao's avatar
      Fix typo in libpq.sgml. · 5f6a9d05
      Fujii Masao authored
      Back-patch to all supported versions.
      
      Michael Paquier
      5f6a9d05
  8. 05 Apr, 2015 4 commits
    • Tom Lane's avatar
      Suppress clang's unhelpful gripes about -pthread switch being unused. · 73b416b2
      Tom Lane authored
      Considering the number of cases in which "unused" command line arguments
      are silently ignored by compilers, it's fairly astonishing that anybody
      thought this warning was useful; it's certainly nothing but an annoyance
      when building Postgres.  One such case is that neither gcc nor clang
      complain about unrecognized -Wno-foo switches, making it more difficult
      to figure out whether the switch does anything than one could wish.
      
      Back-patch to 9.3, which is as far back as the patch applies conveniently
      (we'd have to back-patch PGAC_PROG_CC_VAR_OPT to go further, and it doesn't
      seem worth that).
      73b416b2
    • Simon Riggs's avatar
      Remove extraneous > · e8fde1f6
      Simon Riggs authored
      e8fde1f6
    • Simon Riggs's avatar
      Add new test files for lock level patch · 35ecc244
      Simon Riggs authored
      35ecc244
    • Andrew Dunstan's avatar
      Enable float8-byval as the default for 64 bit MSVC builds · cf376a4a
      Andrew Dunstan authored
      This is a long-standing inconsistency that was probably just missed when
      we got 64 bit MSVC builds. This brings the platform into line with all
      other systems.
      cf376a4a