1. 22 Mar, 2011 3 commits
    • Tom Lane's avatar
      Avoid potential deadlock in InitCatCachePhase2(). · 1192ba8b
      Tom Lane authored
      Opening a catcache's index could require reading from that cache's own
      catalog, which of course would acquire AccessShareLock on the catalog.
      So the original coding here risks locking index before heap, which could
      deadlock against another backend trying to get exclusive locks in the
      normal order.  Because InitCatCachePhase2 is only called when a backend
      has to start up without a relcache init file, the deadlock was seldom seen
      in the field.  (And by the same token, there's no need to worry about any
      performance disadvantage; so not much point in trying to distinguish
      exactly which catalogs have the risk.)
      
      Bug report, diagnosis, and patch by Nikhil Sontakke.  Additional commentary
      by me.  Back-patch to all supported branches.
      1192ba8b
    • Simon Riggs's avatar
    • Tom Lane's avatar
      Reimplement planner's handling of MIN/MAX aggregate optimization (again). · 8df08c84
      Tom Lane authored
      Instead of playing cute games with pathkeys, just build a direct
      representation of the intended sub-select, and feed it through
      query_planner to get a Path for the index access.  This is a bit slower
      than 9.1's previous method, since we'll duplicate most of the overhead of
      query_planner; but since the whole optimization only applies to rather
      simple single-table queries, that probably won't be much of a problem in
      practice.  The advantage is that we get to do the right thing when there's
      a partial index that needs the implicit IS NOT NULL clause to be usable.
      Also, although this makes planagg.c be a bit more closely tied to the
      ordering of operations in grouping_planner, we can get rid of some coupling
      to lower-level parts of the planner.  Per complaint from Marti Raudsepp.
      8df08c84
  2. 21 Mar, 2011 2 commits
  3. 20 Mar, 2011 11 commits
  4. 19 Mar, 2011 8 commits
  5. 18 Mar, 2011 5 commits
  6. 17 Mar, 2011 9 commits
    • Robert Haas's avatar
      Minor fixes for high availability documentation. · f94c6f9c
      Robert Haas authored
      Erik Rijkers and me
      f94c6f9c
    • Robert Haas's avatar
      76dbb461
    • Robert Haas's avatar
      Remove bogus comment. · 02b1f84e
      Robert Haas authored
      02b1f84e
    • Alvaro Herrera's avatar
      Fix PL/Python memory leak involving array slices · 1c249fcf
      Alvaro Herrera authored
      Report and patch from Daniel Popowich, bug #5842
      (with some debugging help from Alex Hunsaker)
      1c249fcf
    • Peter Eisentraut's avatar
      Raise maximum value of several timeout parameters · 8c0a5eb7
      Peter Eisentraut authored
      The maximum value of deadlock_timeout, max_standby_archive_delay,
      max_standby_streaming_delay, log_min_duration_statement, and
      log_autovacuum_min_duration was INT_MAX/1000 milliseconds, which is
      about 35min, which is too short for some practical uses.  Raise the
      maximum value to INT_MAX; the code that uses the parameters already
      supports that just fine.
      8c0a5eb7
    • Robert Haas's avatar
      Add pause_at_recovery_target to recovery.conf.sample; improve docs. · 84abea76
      Robert Haas authored
      Fujii Masao, but with the proposed behavior change reverted, and the
      rest adjusted accordingly.
      84abea76
    • Robert Haas's avatar
      Fix various possible problems with synchronous replication. · 9a56dc33
      Robert Haas authored
      1. Don't ignore query cancel interrupts.  Instead, if the user asks to
      cancel the query after we've already committed it, but before it's on
      the standby, just emit a warning and let the COMMIT finish.
      
      2. Don't ignore die interrupts (pg_terminate_backend or fast shutdown).
      Instead, emit a warning message and close the connection without
      acknowledging the commit.  Other backends will still see the effect of
      the commit, but there's no getting around that; it's too late to abort
      at this point, and ignoring die interrupts altogether doesn't seem like
      a good idea.
      
      3. If synchronous_standby_names becomes empty, wake up all backends
      waiting for synchronous replication to complete.  Without this, someone
      attempting to shut synchronous replication off could easily wedge the
      entire system instead.
      
      4. Avoid depending on the assumption that if a walsender updates
      MyProc->syncRepState, we'll see the change even if we read it without
      holding the lock.  The window for this appears to be quite narrow (and
      probably doesn't exist at all on machines with strong memory ordering)
      but protecting against it is practically free, so do that.
      
      5. Remove useless state SYNC_REP_MUST_DISCONNECT, which isn't needed and
      doesn't actually do anything.
      
      There's still some further work needed here to make the behavior of fast
      shutdown plausible, but that looks complex, so I'm leaving it for a
      separate commit.  Review by Fujii Masao.
      9a56dc33
    • Bruce Momjian's avatar
    • Andrew Dunstan's avatar
      Use correct PATH separator for Cygwin in pg_regress.c. · 5b079cb2
      Andrew Dunstan authored
      This has been broken for years, and I'm not sure why it has not been
      noticed before, but now a very modern Cygwin breaks on it, and the fix
      is clearly correct. Backpatching to all live branches.
      5b079cb2
  7. 16 Mar, 2011 2 commits