1. 17 7月, 2013 7 次提交
    • S
      Use correct parameter name for view_option_value · f2719f69
      Stephen Frost 提交于
      The documentation for ALTER VIEW had a minor copy-and-paste error in
      defining the parameters.  Noticed when reviewing the WITH CHECK OPTION
      patch.
      
      Backpatch to 9.2 where this was first introduced.
      f2719f69
    • N
      Fix systable_recheck_tuple() for MVCC scan snapshots. · ffcf6545
      Noah Misch 提交于
      Since this function assumed non-MVCC snapshots, it broke when commit
      568d4138 switched its one caller from
      SnapshotNow scans to MVCC-snapshot scans.
      
      Reviewed by Robert Haas, Tom Lane and Andres Freund.
      ffcf6545
    • N
      Implement the FILTER clause for aggregate function calls. · b560ec1b
      Noah Misch 提交于
      This is SQL-standard with a few extensions, namely support for
      subqueries and outer references in clause expressions.
      
      catversion bump due to change in Aggref and WindowFunc.
      
      David Fetter, reviewed by Dean Rasheed.
      b560ec1b
    • N
      Comment on why planagg.c punts "MIN(x ORDER BY y)". · 7a8e9f29
      Noah Misch 提交于
      7a8e9f29
    • T
      Add --progress option to show progress report · 4a87f308
      Tatsuo Ishii 提交于
      Patch contributed by Fabien COELHO, reviewed by KONDO Mitsumasa.
      4a87f308
    • K
      Add support for REFRESH MATERIALIZED VIEW CONCURRENTLY. · cc1965a9
      Kevin Grittner 提交于
      This allows reads to continue without any blocking while a REFRESH
      runs.  The new data appears atomically as part of transaction
      commit.
      
      Review questioned the Assert that a matview was not a system
      relation.  This will be addressed separately.
      
      Reviewed by Hitoshi Harada, Robert Haas, Andres Freund.
      Merged after review with security patch f3ab5d46.
      cc1965a9
    • R
      Allow background workers to be started dynamically. · 7f7485a0
      Robert Haas 提交于
      There is a new API, RegisterDynamicBackgroundWorker, which allows
      an ordinary user backend to register a new background writer during
      normal running.  This means that it's no longer necessary for all
      background workers to be registered during processing of
      shared_preload_libraries, although the option of registering workers
      at that time remains available.
      
      When a background worker exits and will not be restarted, the
      slot previously used by that background worker is automatically
      released and becomes available for reuse.  Slots used by background
      workers that are configured for automatic restart can't (yet) be
      released without shutting down the system.
      
      This commit adds a new source file, bgworker.c, and moves some
      of the existing control logic for background workers there.
      Previously, there was little enough logic that it made sense to
      keep everything in postmaster.c, but not any more.
      
      This commit also makes the worker_spi contrib module into an
      extension and adds a new function, worker_spi_launch, which can
      be used to demonstrate the new facility.
      7f7485a0
  2. 16 7月, 2013 5 次提交
    • P
      Fix PQconninfoParse error message handling · 233bfe06
      Peter Eisentraut 提交于
      The returned error message already includes a newline, but the callers
      were adding their own when printing it out.
      233bfe06
    • S
      Check get_tle_by_resno() result before deref · 4ed22e89
      Stephen Frost 提交于
      When creating a sort to support a group by, we need to look up the
      target entry in the target list by the resno using get_tle_by_resno().
      This particular code-path didn't check the result prior to attempting
      to dereference it, while all other callers did.  While I can't see a
      way for this usage of get_tle_by_resno() to fail (you can't ask for
      a column to be sorted on which isn't included in the group by), it's
      probably best to check that we didn't end up with a NULL somehow
      anyway than risk the segfault.
      
      I'm willing to back-patch this if others feel it's necessary, but my
      guess is new features are what might tickle this rather than anything
      existing.
      
      Missing check spotted by the Coverity scanner.
      4ed22e89
    • R
      Tab completion for \lo_import · 4403a9d7
      Robert Haas 提交于
      Josh Kupershmidt
      4403a9d7
    • R
      Assert that syscache lookups don't happen outside transactions. · 42c80c69
      Robert Haas 提交于
      Andres Freund
      42c80c69
    • R
      Regression tests for LOCK TABLE. · ac33c7e2
      Robert Haas 提交于
      Robins Tharakan, reviewed by Szymon Guz, substantially revised by me.
      ac33c7e2
  3. 15 7月, 2013 10 次提交
    • R
      vacuumlo: Use a cursor to limit client-side memory usage. · 67ccbb08
      Robert Haas 提交于
      This prevents the client from gobbling up too much memory when the
      number of large objects to be removed is very large.
      
      Andrew Dunstan, reviewed by Josh Kupershmidt
      67ccbb08
    • S
      Correct off-by-one when reading from pipe · 03010366
      Stephen Frost 提交于
      In pg_basebackup.c:reached_end_position(), we're reading from an
      internal pipe with our own background process but we're possibly
      reading more bytes than will actually fit into our buffer due to
      an off-by-one error.  As we're reading from an internal pipe
      there's no real risk here, but it's good form to not depend on
      such convenient arrangements.
      
      Bug spotted by the Coverity scanner.
      
      Back-patch to 9.2 where this showed up.
      03010366
    • S
      Check version before allocating PQExpBuffer · 3355443f
      Stephen Frost 提交于
      In pg_dump.c:getEventTriggers, check what major version we are on
      before calling createPQExpBuffer() to avoid leaking that bit of
      memory.
      
      Leak discovered by the Coverity scanner.
      
      Back-patch to 9.3 where support for dumping event triggers was
      added.
      3355443f
    • N
      Document the OVER keyword as being unreserved. · 01337d46
      Noah Misch 提交于
      It became so in commit 5893ffa7.
      
      David Fetter, extracted from a larger patch.
      01337d46
    • S
      Fix resource leak in initdb -X option · 5461d36b
      Stephen Frost 提交于
      When creating the symlink for the xlog directory, free the string
      which stores the link location.  Not really an issue but it doesn't
      hurt to be good about this- prior cleanups have fixed similar
      issues.
      
      Leak found by the Coverity scanner.
      
      Not back-patching as I don't see it being worth the code churn.
      5461d36b
    • S
      Be sure to close() file descriptor on error case · cec62efd
      Stephen Frost 提交于
      In receivelog.c:writeTimeLineHistoryFile(), we were not properly
      closing the open'd file descriptor in error cases.  While this
      wouldn't matter much if we were about to exit due to such an
      error, that's not the case with pg_receivexlog as it can be a
      long-running process and these errors are non-fatal.
      
      This resource leak was found by the Coverity scanner.
      
      Back-patch to 9.3 where this issue first appeared.
      cec62efd
    • S
      Ensure 64bit arithmetic when calculating tapeSpace · 273dcd16
      Stephen Frost 提交于
      In tuplesort.c:inittapes(), we calculate tapeSpace by first figuring
      out how many 'tapes' we can use (maxTapes) and then multiplying the
      result by the tape buffer overhead for each.  Unfortunately, when
      we are on a system with an 8-byte long, we allow work_mem to be
      larger than 2GB and that allows maxTapes to be large enough that the
      32bit arithmetic can overflow when multiplied against the buffer
      overhead.
      
      When this overflow happens, we end up adding the overflow to the
      amount of space available, causing the amount of memory allocated to
      be larger than work_mem.
      
      Note that to reach this point, you have to set work mem to at least
      24GB and be sorting a set which is at least that size.  Given that a
      user who can set work_mem to 24GB could also set it even higher, if
      they were looking to run the system out of memory, this isn't
      considered a security issue.
      
      This overflow risk was found by the Coverity scanner.
      
      Back-patch to all supported branches, as this issue has existed
      since before 8.4.
      273dcd16
    • P
      pg_isready: Message improvement · 1f75a5f9
      Peter Eisentraut 提交于
      1f75a5f9
    • S
      pg_receivexlog - Exit on failure to parse · d368a301
      Stephen Frost 提交于
      In streamutil.c:GetConnection(), upgrade failure to parse the
      connection string to an exit(1) instead of simply returning NULL.
      Most callers already immediately exited, but pg_receivexlog would
      loop on this case, continually trying to re-parse the connection
      string (which can't be changed after pg_receivexlog has started).
      
      GetConnection() was already expected to exit(1) in some cases
      (eg: failure to allocate memory or if unable to determine the
      integer_datetimes flag), so this change shouldn't surprise anyone.
      
      Began looking at this due to the Coverity scanner complaining that
      we were leaking err_msg in this case- no longer an issue since we
      just exit(1) immediately.
      d368a301
    • S
      During parallel pg_dump, free commands from master · 234e4cf6
      Stephen Frost 提交于
      The command strings read by the child processes during parallel
      pg_dump, after being read and handled, were not being free'd.
      This patch corrects this relatively minor memory leak.
      
      Leak found by the Coverity scanner.
      
      Back patch to 9.3 where parallel pg_dump was introduced.
      234e4cf6
  4. 13 7月, 2013 3 次提交
    • P
      Add session_preload_libraries configuration parameter · 070518dd
      Peter Eisentraut 提交于
      This is like shared_preload_libraries except that it takes effect at
      backend start and can be changed without a full postmaster restart.  It
      is like local_preload_libraries except that it is still only settable by
      a superuser.  This can be a better way to load modules such as
      auto_explain.
      
      Since there are now three preload parameters, regroup the documentation
      a bit.  Put all parameters into one section, explain common
      functionality only once, update the descriptions to reflect current and
      future realities.
      Reviewed-by: NDimitri Fontaine <dimitri@2ndQuadrant.fr>
      070518dd
    • N
      Switch user ID to the object owner when populating a materialized view. · f3ab5d46
      Noah Misch 提交于
      This makes superuser-issued REFRESH MATERIALIZED VIEW safe regardless of
      the object's provenance.  REINDEX is an earlier example of this pattern.
      As a downside, functions called from materialized views must tolerate
      running in a security-restricted operation.  CREATE MATERIALIZED VIEW
      need not change user ID.  Nonetheless, avoid creation of materialized
      views that will invariably fail REFRESH by making it, too, start a
      security-restricted operation.
      
      Back-patch to 9.3 so materialized views have this from the beginning.
      
      Reviewed by Kevin Grittner.
      f3ab5d46
    • N
  5. 12 7月, 2013 1 次提交
  6. 11 7月, 2013 2 次提交
  7. 10 7月, 2013 2 次提交
  8. 09 7月, 2013 4 次提交
  9. 08 7月, 2013 6 次提交
    • H
      Fix Windows build. · f489470f
      Heikki Linnakangas 提交于
      Was broken by my xloginsert scaling patch. XLogCtl global variable needs
      to be initialized in each process, as it's not inherited by fork() on
      Windows.
      f489470f
    • H
      Fix pg_test_fsync, broken by xloginsert scaling patch. · b5ed2199
      Heikki Linnakangas 提交于
      I didn't realize that ALIGNOF_XLOG_BUFFER was used in pg_test_fsync.
      b5ed2199
    • H
      Improve scalability of WAL insertions. · 9a20a9b2
      Heikki Linnakangas 提交于
      This patch replaces WALInsertLock with a number of WAL insertion slots,
      allowing multiple backends to insert WAL records to the WAL buffers
      concurrently. This is particularly useful for parallel loading large amounts
      of data on a system with many CPUs.
      
      This has one user-visible change: switching to a new WAL segment with
      pg_switch_xlog() now fills the remaining unused portion of the segment with
      zeros. This potentially adds some overhead, but it has been a very common
      practice by DBA's to clear the "tail" of the segment with an external
      pg_clearxlogtail utility anyway, to make the WAL files compress better.
      With this patch, it's no longer necessary to do that.
      
      This patch adds a new GUC, xloginsert_slots, to tune the number of WAL
      insertion slots. Performance testing suggests that the default, 8, works
      pretty well for all kinds of worklods, but I left the GUC in place to allow
      others with different hardware to test that easily. We might want to remove
      that before release.
      
      Reviewed by Andres Freund.
      9a20a9b2
    • T
      Fix planning of parameterized appendrel paths with expensive join quals. · 5372275b
      Tom Lane 提交于
      The code in set_append_rel_pathlist() for building parameterized paths
      for append relations (inheritance and UNION ALL combinations) supposed
      that the cheapest regular path for a child relation would still be cheapest
      when reparameterized.  Which might not be the case, particularly if the
      added join conditions are expensive to compute, as in a recent example from
      Jeff Janes.  Fix it to compare child path costs *after* reparameterizing.
      We can short-circuit that if the cheapest pre-existing path is already
      parameterized correctly, which seems likely to be true often enough to be
      worth checking for.
      
      Back-patch to 9.2 where parameterized paths were introduced.
      5372275b
    • P
    • P
      pg_resetxlog: Make --help consistent with man page · e714d031
      Peter Eisentraut 提交于
      Use "MXID" as placeholder for -m option, instead of just "XID".
      e714d031