1. 08 Dec, 2012 2 commits
    • Tom Lane's avatar
      Support automatically-updatable views. · a99c42f2
      Tom Lane authored
      This patch makes "simple" views automatically updatable, without the need
      to create either INSTEAD OF triggers or INSTEAD rules.  "Simple" views
      are those classified as updatable according to SQL-92 rules.  The rewriter
      transforms INSERT/UPDATE/DELETE commands on such views directly into an
      equivalent command on the underlying table, which will generally have
      noticeably better performance than is possible with either triggers or
      user-written rules.  A view that has INSTEAD OF triggers or INSTEAD rules
      continues to operate the same as before.
      
      For the moment, security_barrier views are not considered simple.
      Also, we do not support WITH CHECK OPTION.  These features may be
      added in future.
      
      Dean Rasheed, reviewed by Amit Kapila
      a99c42f2
    • Peter Eisentraut's avatar
      Update iso.org page link · d12d9f59
      Peter Eisentraut authored
      The old one is responding with 404.
      d12d9f59
  2. 07 Dec, 2012 5 commits
    • Bruce Momjian's avatar
      Improve pg_upgrade's status display · 6dd95845
      Bruce Momjian authored
      Pg_upgrade displays file names during copy and database names during
      dump/restore.  Andrew Dunstan identified three bugs:
      
      *  long file names were being truncated to 60 _leading_ characters, which
         often do not change for long file names
      
      *  file names were truncated to 60 characters in log files
      
      *  carriage returns were being output to log files
      
      This commit fixes these --- it prints 60 _trailing_ characters to the
      status display, and full path names without carriage returns to log
      files.  It also suppresses status output to the log file unless verbose
      mode is used.
      6dd95845
    • Simon Riggs's avatar
      Correct xmax test for COPY FREEZE · ef754fb5
      Simon Riggs authored
      ef754fb5
    • Simon Riggs's avatar
      Optimize COPY FREEZE with CREATE TABLE also. · 1f023f92
      Simon Riggs authored
      Jeff Davis, additional test by me
      1f023f92
    • Simon Riggs's avatar
      Clarify that COPY FREEZE is not a hard rule. · 1eb6cee4
      Simon Riggs authored
      Remove message when FREEZE not honoured,
      clarify reasons in comments and docs.
      1eb6cee4
    • Tom Lane's avatar
      Improve pl/pgsql to support composite-type expressions in RETURN. · 31a89185
      Tom Lane authored
      For some reason lost in the mists of prehistory, RETURN was only coded to
      allow a simple reference to a composite variable when the function's return
      type is composite.  Allow an expression instead, while preserving the
      efficiency of the original code path in the case where the expression is
      indeed just a composite variable's name.  Likewise for RETURN NEXT.
      
      As is true in various other places, the supplied expression must yield
      exactly the number and data types of the required columns.  There was some
      discussion of relaxing that for pl/pgsql, but no consensus yet, so this
      patch doesn't address that.
      
      Asif Rehman, reviewed by Pavel Stehule
      31a89185
  3. 06 Dec, 2012 3 commits
    • Alvaro Herrera's avatar
      Background worker processes · da07a1e8
      Alvaro Herrera authored
      Background workers are postmaster subprocesses that run arbitrary
      user-specified code.  They can request shared memory access as well as
      backend database connections; or they can just use plain libpq frontend
      database connections.
      
      Modules listed in shared_preload_libraries can register background
      workers in their _PG_init() function; this is early enough that it's not
      necessary to provide an extra GUC option, because the necessary extra
      resources can be allocated early on.  Modules can install more than one
      bgworker, if necessary.
      
      Care is taken that these extra processes do not interfere with other
      postmaster tasks: only one such process is started on each ServerLoop
      iteration.  This means a large number of them could be waiting to be
      started up and postmaster is still able to quickly service external
      connection requests.  Also, shutdown sequence should not be impacted by
      a worker process that's reasonably well behaved (i.e. promptly responds
      to termination signals.)
      
      The current implementation lets worker processes specify their start
      time, i.e. at what point in the server startup process they are to be
      started: right after postmaster start (in which case they mustn't ask
      for shared memory access), when consistent state has been reached
      (useful during recovery in a HOT standby server), or when recovery has
      terminated (i.e. when normal backends are allowed).
      
      In case of a bgworker crash, actions to take depend on registration
      data: if shared memory was requested, then all other connections are
      taken down (as well as other bgworkers), just like it were a regular
      backend crashing.  The bgworker itself is restarted, too, within a
      configurable timeframe (which can be configured to be never).
      
      More features to add to this framework can be imagined without much
      effort, and have been discussed, but this seems good enough as a useful
      unit already.
      
      An elementary sample module is supplied.
      
      Author: Álvaro Herrera
      
      This patch is loosely based on prior patches submitted by KaiGai Kohei,
      and unsubmitted code by Simon Riggs.
      
      Reviewed by: KaiGai Kohei, Markus Wanner, Andres Freund,
      Heikki Linnakangas, Simon Riggs, Amit Kapila
      da07a1e8
    • 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
  4. 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
  5. 04 Dec, 2012 18 commits
  6. 03 Dec, 2012 8 commits