1. 15 Jul, 2013 1 commit
    • Stephen Frost's avatar
      Check version before allocating PQExpBuffer · 3355443f
      Stephen Frost authored
      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
  2. 14 Jul, 2013 7 commits
    • Noah Misch's avatar
      Document the OVER keyword as being unreserved. · 01337d46
      Noah Misch authored
      It became so in commit 5893ffa7.
      
      David Fetter, extracted from a larger patch.
      01337d46
    • Stephen Frost's avatar
      Fix resource leak in initdb -X option · 5461d36b
      Stephen Frost authored
      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
    • Stephen Frost's avatar
      Be sure to close() file descriptor on error case · cec62efd
      Stephen Frost authored
      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
    • Stephen Frost's avatar
      Ensure 64bit arithmetic when calculating tapeSpace · 273dcd16
      Stephen Frost authored
      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
    • Peter Eisentraut's avatar
      pg_isready: Message improvement · 1f75a5f9
      Peter Eisentraut authored
      1f75a5f9
    • Stephen Frost's avatar
      pg_receivexlog - Exit on failure to parse · d368a301
      Stephen Frost authored
      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
    • Stephen Frost's avatar
      During parallel pg_dump, free commands from master · 234e4cf6
      Stephen Frost authored
      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
  3. 13 Jul, 2013 1 commit
    • Peter Eisentraut's avatar
      Add session_preload_libraries configuration parameter · 070518dd
      Peter Eisentraut authored
      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: default avatarDimitri Fontaine <dimitri@2ndQuadrant.fr>
      070518dd
  4. 12 Jul, 2013 3 commits
  5. 11 Jul, 2013 2 commits
  6. 10 Jul, 2013 2 commits
  7. 09 Jul, 2013 3 commits
  8. 08 Jul, 2013 5 commits
    • Alvaro Herrera's avatar
      Fix mention of htup.h in pageinspect docs · 12fbe2b3
      Alvaro Herrera authored
      It's htup_details.h now.
      
      Jeff Janes
      12fbe2b3
    • Heikki Linnakangas's avatar
      Fix Windows build. · f489470f
      Heikki Linnakangas authored
      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
    • Heikki Linnakangas's avatar
      Fix pg_test_fsync, broken by xloginsert scaling patch. · b5ed2199
      Heikki Linnakangas authored
      I didn't realize that ALIGNOF_XLOG_BUFFER was used in pg_test_fsync.
      b5ed2199
    • Heikki Linnakangas's avatar
      Improve scalability of WAL insertions. · 9a20a9b2
      Heikki Linnakangas authored
      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
    • Tom Lane's avatar
      Fix planning of parameterized appendrel paths with expensive join quals. · 5372275b
      Tom Lane authored
      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
  9. 07 Jul, 2013 6 commits
  10. 06 Jul, 2013 4 commits
    • Jeff Davis's avatar
      Handle posix_fallocate() errors. · 5b571bb8
      Jeff Davis authored
      On some platforms, posix_fallocate() is available but may still return
      EINVAL if the underlying filesystem does not support it.  So, in case
      of an error, fall through to the alternate implementation that just
      writes zeros.
      
      Per buildfarm failure and analysis by Tom Lane.
      5b571bb8
    • Michael Meskes's avatar
      43c3aab1
    • Tom Lane's avatar
      Rename a function to avoid naming conflict in parallel regression tests. · 0cd78780
      Tom Lane authored
      Commit 31a89185 added some tests in
      plpgsql.sql that used a function rather unthinkingly named "foo()".
      However, rangefuncs.sql has some much older tests that create a function
      of that name, and since these test scripts run in parallel, there is a
      chance of failures if the timing is just right.  Use another name to
      avoid that.  Per buildfarm (failure seen today on "hamerkop", but
      probably it's happened before and not been noticed).
      0cd78780
    • Peter Eisentraut's avatar
      PL/Python: Convert numeric to Decimal · 7919398b
      Peter Eisentraut authored
      The old implementation converted PostgreSQL numeric to Python float,
      which was always considered a shortcoming.  Now numeric is converted to
      the Python Decimal object.  Either the external cdecimal module or the
      standard library decimal module are supported.
      
      From: Szymon Guz <mabewlun@gmail.com>
      From: Ronan Dunklau <rdunklau@gmail.com>
      Reviewed-by: default avatarSteve Singer <steve@ssinger.info>
      7919398b
  11. 05 Jul, 2013 6 commits