1. 06 Dec, 2012 2 commits
    • Tom Lane's avatar
      Fix intermittent crash in DROP INDEX CONCURRENTLY. · e31d5248
      Tom Lane authored
      When deleteOneObject closes and reopens the pg_depend relation,
      we must see to it that the relcache pointer held by the calling function
      (typically performMultipleDeletions) is updated.  Usually the relcache
      entry is retained so that the pointer value doesn't change, which is why
      the problem had escaped notice ... but after a cache flush event there's
      no guarantee that the same memory will be reassigned.  To fix, change
      the recursive functions' APIs so that we pass around a "Relation *"
      not just "Relation".
      
      Per investigation of occasional buildfarm failures.  This is trivial
      to reproduce with -DCLOBBER_CACHE_ALWAYS, which points up the sad
      lack of any buildfarm member running that way on a regular basis.
      e31d5248
    • Alvaro Herrera's avatar
      Update comment at top of index_create · 5e15cdb2
      Alvaro Herrera authored
      I neglected to update it in commit f4c4335a.
      
      Michael Paquier
      5e15cdb2
  2. 05 Dec, 2012 4 commits
    • Tom Lane's avatar
      Ensure recovery pause feature doesn't pause unless users can connect. · af4aba2f
      Tom Lane authored
      If we're not in hot standby mode, then there's no way for users to connect
      to reset the recoveryPause flag, so we shouldn't pause.  The code was aware
      of this but the test to see if pausing was safe was seriously inadequate:
      it wasn't paying attention to reachedConsistency, and besides what it was
      testing was that we could legally enter hot standby, not that we have
      done so.  Get rid of that in favor of checking LocalHotStandbyActive,
      which because of the coding in CheckRecoveryConsistency is tantamount to
      checking that we have told the postmaster to enter hot standby.
      
      Also, move the recoveryPausesHere() call that reacts to asynchronous
      recoveryPause requests so that it's not in the middle of application of a
      WAL record.  I put it next to the recoveryStopsHere() call --- in future
      those are going to need to interact significantly, so this seems like a
      good waystation.
      
      Also, don't bother trying to read another WAL record if we've already
      decided not to continue recovery.  This was no big deal when the code was
      written originally, but now that reading a record might entail actions like
      fetching an archive file, it seems a bit silly to do it like that.
      
      Per report from Jeff Janes and subsequent discussion.  The pause feature
      needs quite a lot more work, but this gets rid of some indisputable bugs,
      and seems safe enough to back-patch.
      af4aba2f
    • Heikki Linnakangas's avatar
    • Simon Riggs's avatar
      Must not reach consistency before XLOG_BACKUP_RECORD · 6aa2e49a
      Simon Riggs authored
      When waiting for an XLOG_BACKUP_RECORD the minRecoveryPoint
      will be incorrect, so we must not declare recovery as consistent
      before we have seen the record. Major bug allowing recovery to end
      too early in some cases, allowing people to see inconsistent db.
      This patch to HEAD and 9.2, other fix required for 9.1 and 9.0
      
      Simon Riggs and Andres Freund, bug report by Jeff Janes
      6aa2e49a
    • Heikki Linnakangas's avatar
      Add pgstatginindex() function to get the size of the GIN pending list. · 357cbaae
      Heikki Linnakangas authored
      Fujii Masao, reviewed by Kyotaro Horiguchi.
      357cbaae
  3. 04 Dec, 2012 18 commits
  4. 03 Dec, 2012 9 commits
  5. 02 Dec, 2012 7 commits
    • Andrew Dunstan's avatar
      Add mode where contrib installcheck runs each module in a separately named database. · e2b3c21b
      Andrew Dunstan authored
      Normally each module is tested in aq database named contrib_regression,
      which is dropped and recreated at the beginhning of each pg_regress run.
      This mode, enabled by adding USE_MODULE_DB=1 to the make command line,
      runs most modules in a database with the module name embedded in it.
      
      This will make testing pg_upgrade on clusters with the contrib modules
      a lot easier.
      
      Still to be done: adapt to the MSVC build system.
      
      Backpatch to 9.0, which is the earliest version it is reasonably possible
      to test upgrading from.
      e2b3c21b
    • Tom Lane's avatar
      Update time zone data files to tzdata release 2012j. · fc75d4f8
      Tom Lane authored
      DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western Samoa,
      and portions of Brazil.
      fc75d4f8
    • Tom Lane's avatar
      Recommend triggers, not rules, in the CREATE VIEW reference page. · d8262b6c
      Tom Lane authored
      We've generally recommended use of INSTEAD triggers over rules since that
      feature was added; but this old text in the CREATE VIEW reference page
      didn't get the memo.  Noted by Thomas Kellerer.
      d8262b6c
    • Simon Riggs's avatar
      Reduce scope of changes for COPY FREEZE. · 5457a130
      Simon Riggs authored
      Allow support only for freezing tuples by explicit
      command. Previous coding mistakenly extended
      slightly beyond what was agreed as correct on -hackers.
      So essentially a partial revoke of earlier work,
      leaving just the COPY FREEZE command.
      5457a130
    • Tom Lane's avatar
      Don't advance checkPoint.nextXid near the end of a checkpoint sequence. · 3114cb60
      Tom Lane authored
      This reverts commit c1113069 in favor of
      actually fixing the problem: namely, that we should never have been
      modifying the checkpoint record's nextXid at this point to begin with.
      The nextXid should match the state as of the checkpoint's logical WAL
      position (ie the redo point), not the state as of its physical position.
      It's especially bogus to advance it in some wal_levels and not others.
      In any case there is no need for the checkpoint record to carry the
      same nextXid shown in the XLOG_RUNNING_XACTS record just emitted by
      LogStandbySnapshot, as any replay operation will already have adopted
      that value as current.
      
      This fixes bug #7710 from Tarvi Pillessaar, and probably also explains bug
      #6291 from Daniel Farina, in that if a checkpoint were in progress at the
      instant of XID wraparound, the epoch bump would be lost as reported.
      (And, of course, these days there's at least a 50-50 chance of a checkpoint
      being in progress at any given instant.)
      
      Diagnosed by me and independently by Andres Freund.  Back-patch to all
      branches supporting hot standby.
      3114cb60
    • Simon Riggs's avatar
      Rearrange storage of data in xl_running_xacts. · 5c117258
      Simon Riggs authored
      Previously we stored all xids mixed together.
      Now we store top-level xids first, followed
      by all subxids. Also skip logging any subxids
      if the snapshot is suboverflowed, since there
      are potentially large numbers of them and they
      are not useful in that case anyway. Has value
      in the envisaged design for decoding of WAL.
      No planned effect on Hot Standby.
      
      Andres Freund, reviewed by me
      5c117258
    • Simon Riggs's avatar
      XidEpoch++ if wraparound during checkpoint. · c1113069
      Simon Riggs authored
      If wal_level = hot_standby we update the checkpoint nextxid,
      though in the case where a wraparound occurred half-way through
      a checkpoint we would neglect updating the epoch also. Updating
      the nextxid is arguably the wrong thing to do, but changing that
      may introduce subtle bugs into hot standby startup, while updating
      the value doesn't cause any known bugs yet. Minimal fix now to
      HEAD and backbranches, wider fix later in HEAD.
      
      Bug reported in #6291 by Daniel Farina and slightly differently in
      
      Cause analysis and recommended fixes from Tom Lane and Andres Freund.
      
      Applied patch is minimal version of Andres Freund's work.
      c1113069