1. 22 Mar, 2011 4 commits
    • Tom Lane's avatar
      Throw error for indeterminate collation of an ORDER/GROUP/DISTINCT target. · 37d6d07d
      Tom Lane authored
      This restores a parse error that was thrown (though only in the ORDER BY
      case) by the original collation patch.  I had removed it in my recent
      revisions because it was thrown at a place where collations now haven't
      been computed yet; but I thought of another way to handle it.
      
      Throwing the error at parse time, rather than leaving it to be done at
      runtime, is good because a syntax error pointer is helpful for localizing
      the problem.  We can reasonably assume that the comparison function for a
      collatable datatype will complain if it doesn't have a collation to use.
      Now the planner might choose to implement GROUP or DISTINCT via hashing,
      in which case no runtime error would actually occur, but it seems better
      to throw error consistently rather than let the error depend on what the
      planner chooses to do.  Another possible objection is that the user might
      specify a nondefault sort operator that doesn't care about collation
      ... but that's surely an uncommon usage, and it wouldn't hurt him to throw
      in a COLLATE clause anyway.  This change also makes the ORDER BY/GROUP
      BY/DISTINCT case more consistent with the UNION/INTERSECT/EXCEPT case,
      which was already coded to throw this error even though the same objections
      could be raised there.
      37d6d07d
    • 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 1 commit