1. 02 Jul, 2013 4 commits
    • Heikki Linnakangas's avatar
      Silence compiler warning in assertion-enabled builds. · d2e71ff7
      Heikki Linnakangas authored
      With -Wtype-limits, gcc correctly points out that size_t can never be < 0.
      Backpatch to 9.3 and 9.2. It's been like this forever, but in <= 9.1 you got
      a lot other warnings with -Wtype-limits anyway (at least with my version of
      gcc).
      
      Andres Freund
      d2e71ff7
    • Bruce Momjian's avatar
      pg_upgrade: revert changing '' to "" · cce5d851
      Bruce Momjian authored
      On the command line, GUC option strings are handled by the guc parser,
      not by the shell parser, so '' is the proper way to represent a
      zero-length string.  This reverts commit
      3132a9b7.
      cce5d851
    • Robert Haas's avatar
      Use an MVCC snapshot, rather than SnapshotNow, for catalog scans. · 568d4138
      Robert Haas authored
      SnapshotNow scans have the undesirable property that, in the face of
      concurrent updates, the scan can fail to see either the old or the new
      versions of the row.  In many cases, we work around this by requiring
      DDL operations to hold AccessExclusiveLock on the object being
      modified; in some cases, the existing locking is inadequate and random
      failures occur as a result.  This commit doesn't change anything
      related to locking, but will hopefully pave the way to allowing lock
      strength reductions in the future.
      
      The major issue has held us back from making this change in the past
      is that taking an MVCC snapshot is significantly more expensive than
      using a static special snapshot such as SnapshotNow.  However, testing
      of various worst-case scenarios reveals that this problem is not
      severe except under fairly extreme workloads.  To mitigate those
      problems, we avoid retaking the MVCC snapshot for each new scan;
      instead, we take a new snapshot only when invalidation messages have
      been processed.  The catcache machinery already requires that
      invalidation messages be sent before releasing the related heavyweight
      lock; else other backends might rely on locally-cached data rather
      than scanning the catalog at all.  Thus, making snapshot reuse
      dependent on the same guarantees shouldn't break anything that wasn't
      already subtly broken.
      
      Patch by me.  Review by Michael Paquier and Andres Freund.
      568d4138
    • Peter Eisentraut's avatar
      Fix regression test make dependencies · 384f9330
      Peter Eisentraut authored
      The dependencies on the spi and dummy_seclabel contrib modules were
      incomplete, because they did not pick up automatically generated
      dependencies on header files.  This will manifest itself especially when
      switching major versions, where the contrib modules would not be
      recompiled to contain the new version number, leading to regression test
      failures.
      
      To fix this, use the submake approach already in use elsewhere, so that
      the contrib modules are built using their full rules.
      384f9330
  2. 01 Jul, 2013 9 commits
    • Bruce Momjian's avatar
      pg_dump docs: use escaped double-quotes, for Windows · 605b4c5a
      Bruce Momjian authored
      On Unix, you can embed double-quotes in single-quotes, and via versa.
      However, on Windows, you can only escape double-quotes in double-quotes,
      so use that in the pg_dump -t/table example.
      Backpatch to 9.3.
      Report from Mike Toews
      605b4c5a
    • Robert Haas's avatar
      Add a convenience routine makeFuncCall to reduce duplication. · 0d22987a
      Robert Haas authored
      David Fetter and Andrew Gierth, reviewed by Jeevan Chalke
      0d22987a
    • Bruce Momjian's avatar
      pg_upgrade: use "" rather than '', for Windows · 3132a9b7
      Bruce Momjian authored
      If we ever support unix sockets on Windows, we should use "" rather than
      '' for zero-length strings on the command-line, so use that.
      3132a9b7
    • Bruce Momjian's avatar
      Add timezone offset output option to to_char() · 7408c5d2
      Bruce Momjian authored
      Add ability for to_char() to output the timezone's UTC offset (OF).  We
      already have the ability to return the timezone abbeviation (TZ/tz).
      Per request from Andrew Dunstan
      7408c5d2
    • Andrew Dunstan's avatar
      Improve support for building PGXS modules with VPATH. · 6697aa2b
      Andrew Dunstan authored
      A VPATH build will be performed when the module's make file path is not
      the current directory or when USE_VPATH is set.
      
      This will assist packagers and others who prefer to build without
      polluting the source directories.
      
      There is still a bit of work to do here, notably documentation, but it's
      probably a good idea to commit what we have so far and let people test
      it out on their modules.
      
      Cédric Villemain, with an addition from me.
      6697aa2b
    • Bruce Momjian's avatar
      Update LSB URL in pg_ctl · 6d432152
      Bruce Momjian authored
      Update Linux Standard Base Core Specification 3.1 URL mention in pg_ctl
      comments.
      6d432152
    • Bruce Momjian's avatar
      Remove undocumented -h (help) option · 06b80437
      Bruce Momjian authored
      The -h option was not supported by many tools, and not documented, so
      remove them for consistency from pg_upgrade, pg_test_fsync, and
      pg_test_timing.
      06b80437
    • Heikki Linnakangas's avatar
      Optimize pglz compressor for small inputs. · 031cc55b
      Heikki Linnakangas authored
      The pglz compressor has a significant startup cost, because it has to
      initialize to zeros the history-tracking hash table. On a 64-bit system, the
      hash table was 64kB in size. While clearing memory is pretty fast, for very
      short inputs the relative cost of that was quite large.
      
      This patch alleviates that in two ways. First, instead of storing pointers
      in the hash table, store 16-bit indexes into the hist_entries array. That
      slashes the size of the hash table to 1/2 or 1/4 of the original, depending
      on the pointer width. Secondly, adjust the size of the hash table based on
      input size. For very small inputs, you don't need a large hash table to
      avoid collisions.
      
      Review by Amit Kapila.
      031cc55b
    • Heikki Linnakangas's avatar
      Retry short writes when flushing WAL. · 79ce29c7
      Heikki Linnakangas authored
      We don't normally bother retrying when the number of bytes written by
      write() is short of what was requested. It is generally assumed that a
      write() to disk doesn't return short, unless you run out of disk space.
      While writing the WAL, however, it seems prudent to try a bit harder,
      because a failure leads to PANIC. The write() is also much larger than most
      write()s in the backend (up to wal_buffers), so there's more room for
      surprises.
      
      Also retry on EINTR. All signals used in the backend are flagged SA_RESTART
      nowadays, so it shouldn't happen, but better to be defensive.
      79ce29c7
  3. 30 Jun, 2013 2 commits
  4. 29 Jun, 2013 1 commit
  5. 28 Jun, 2013 11 commits
    • Simon Riggs's avatar
      Change errcode for lock_timeout to match NOWAIT · d51b2710
      Simon Riggs authored
      Set errcode to ERRCODE_LOCK_NOT_AVAILABLE
      
      Zoltán Bsöszörményi
      d51b2710
    • Simon Riggs's avatar
      ALTER TABLE ... ALTER CONSTRAINT for FKs · f177cbfe
      Simon Riggs authored
      Allow constraint attributes to be altered,
      so the default setting of NOT DEFERRABLE
      can be altered to DEFERRABLE and back.
      
      Review by Abhijit Menon-Sen
      f177cbfe
    • Simon Riggs's avatar
      2f74e4ec
    • Bruce Momjian's avatar
      pg_upgrade: pass username to analyze script · f8513610
      Bruce Momjian authored
      If -U (user) is specified, pass the username into the created analyze
      script.
      Per request from Ray Stell
      f8513610
    • Bruce Momjian's avatar
      pg_upgrade: remove -h option · e029275c
      Bruce Momjian authored
      -h (help) is not needed;  pg_upgrade already supports --help and -?,
      which is consistent with other tools.
      e029275c
    • Bruce Momjian's avatar
      pg_upgrade: trim down --help and doc option descriptions · fb771f90
      Bruce Momjian authored
      Previous code had old/new prefixes on option values, e.g.
      --old-datadir=OLDDATADIR.  Remove them, for simplicity;  now:
      --old-datadir=DATADIR.  Also update docs to do the same.
      fb771f90
    • Alvaro Herrera's avatar
      Send SIGKILL to children if they don't die quickly in immediate shutdown · 82233ce7
      Alvaro Herrera authored
      On immediate shutdown, or during a restart-after-crash sequence,
      postmaster used to send SIGQUIT (and then abandon ship if shutdown); but
      this is not a good strategy if backends don't die because of that
      signal.  (This might happen, for example, if a backend gets tangled
      trying to malloc() due to gettext(), as in an example illustrated by
      MauMau.)  This causes problems when later trying to restart the server,
      because some processes are still attached to the shared memory segment.
      
      Instead of just abandoning such backends to their fates, we now have
      postmaster hang around for a little while longer, send a SIGKILL after
      some reasonable waiting period, and then exit.  This makes immediate
      shutdown more reliable.
      
      There is disagreement on whether it's best for postmaster to exit after
      sending SIGKILL, or to stick around until all children have reported
      death.  If this controversy is resolved differently than what this patch
      implements, it's an easy change to make.
      
      Bug reported by MauMau in message 20DAEA8949EC4E2289C6E8E58560DEC0@maumau
      
      MauMau and Álvaro Herrera
      82233ce7
    • Bruce Momjian's avatar
      pg_upgrade: change -u to -U, for consistency · 457d6cf0
      Bruce Momjian authored
      Change -u (user) option to -U, for consistency with other tools like
      pg_dump and psql.  Also expand --user to --username, again for
      consistency.
      BACKWARD INCOMPATIBILITY
      457d6cf0
    • Robert Haas's avatar
      Make the OVER keyword unreserved. · 5893ffa7
      Robert Haas authored
      This results in a slightly less specific error message when OVER
      is used in a context where we don't accept window functions, but
      per discussion, it's worth it to get the benefit of not needing
      to reserve this keyword any more.  This same refactoring will
      also let us avoid reserving some other keywords that we expect
      to add in upcoming patches (specifically, IGNORE, RESPECT, and
      FILTER).
      
      Troels Nielsen, with minor changes by me
      5893ffa7
    • Robert Haas's avatar
      Define Trap and TrapMacro even in non-cassert builds. · 5ee73525
      Robert Haas authored
      In some cases, the use of these macros may be preferable to Assert()
      or AssertMacro(), since this way the caller can set the trap message.
      
      Andres Freund and Robert Haas
      5ee73525
    • Heikki Linnakangas's avatar
      Track spinlock delay in microsecond granularity. · 9e0bc7c1
      Heikki Linnakangas authored
      On many platforms the OS will round the sleep time to millisecond
      resolution, but there is no reason for us to pre-emptively round the
      argument to pg_usleep.
      
      When the delay was measured in milliseconds and started from 1 ms, it
      sometimes took many attempts until the logic that increases the delay by
      multiplying with a random value between 1 and 2 actually managed to bump it
      from 1 ms to 2 ms. That lead to a sequence of 1 ms waits until the delay
      started to increase. This wasn't really a problem but it looked odd if you
      observed the waits. There is no measurable difference in performance, but
      it's more readable this way.
      
      Jeff Janes
      9e0bc7c1
  6. 27 Jun, 2013 10 commits
    • Alvaro Herrera's avatar
      Update pg_resetxlog's documentation on multixacts · 9db4ad44
      Alvaro Herrera authored
      I added some more functionality to it in 0ac5ad51 but neglected to
      add it to the docs.
      
      Per Peter Eisentraut in message
      1367112171.32604.4.camel@vanquo.pezone.net
      9db4ad44
    • Alvaro Herrera's avatar
      Document relminmxid and datminmxid · 863fad1b
      Alvaro Herrera authored
      I introduced these new fields in 0ac5ad51 but neglected to add them
      to the system catalogs section of the docs.
      
      Per Thom Brown in message
      CAA-aLv7UiO=Whiq3MVbsEqSyQRthuX8Tb_RLyBuQt0KQBp=6EQ@mail.gmail.com
      863fad1b
    • Noah Misch's avatar
      Permit super-MaxAllocSize allocations with MemoryContextAllocHuge(). · 263865a4
      Noah Misch authored
      The MaxAllocSize guard is convenient for most callers, because it
      reduces the need for careful attention to overflow, data type selection,
      and the SET_VARSIZE() limit.  A handful of callers are happy to navigate
      those hazards in exchange for the ability to allocate a larger chunk.
      Introduce MemoryContextAllocHuge() and repalloc_huge().  Use this in
      tuplesort.c and tuplestore.c, enabling internal sorts of up to INT_MAX
      tuples, a factor-of-48 increase.  In particular, B-tree index builds can
      now benefit from much-larger maintenance_work_mem settings.
      
      Reviewed by Stephen Frost, Simon Riggs and Jeff Janes.
      263865a4
    • Tom Lane's avatar
      Mark index-constraint comments with correct dependency in pg_dump. · 9ef86cd9
      Tom Lane authored
      When there's a comment on an index that was created with UNIQUE or PRIMARY
      KEY constraint syntax, we need to label the comment as depending on the
      constraint not the index, since only the constraint object actually appears
      in the dump.  This incorrect dependency can lead to parallel pg_restore
      trying to restore the comment before the index has been created, per bug
      #8257 from Lloyd Albin.
      
      This patch fixes pg_dump to produce the right dependency in dumps made
      in the future.  Usually we also try to hack pg_restore to work around
      bogus dependencies, so that existing (wrong) dumps can still be restored in
      parallel mode; but that doesn't seem practical here since there's no easy
      way to relate the constraint dump entry to the comment after the fact.
      
      Andres Freund
      9ef86cd9
    • Tom Lane's avatar
      Expect EWOULDBLOCK from a non-blocking connect() call only on Windows. · a099482c
      Tom Lane authored
      On Unix-ish platforms, EWOULDBLOCK may be the same as EAGAIN, which is
      *not* a success return, at least not on Linux.  We need to treat it as a
      failure to avoid giving a misleading error message.  Per the Single Unix
      Spec, only EINPROGRESS and EINTR returns indicate that the connection
      attempt is in progress.
      
      On Windows, on the other hand, EWOULDBLOCK (WSAEWOULDBLOCK) is the expected
      case.  We must accept EINPROGRESS as well because Cygwin will return that,
      and it doesn't seem worth distinguishing Cygwin from native Windows here.
      It's not very clear whether EINTR can occur on Windows, but let's leave
      that part of the logic alone in the absence of concrete trouble reports.
      
      Also, remove the test for errno == 0, effectively reverting commit
      da9501bd, which AFAICS was just a thinko;
      or at best it might have been a workaround for a platform-specific bug,
      which we can hope is gone now thirteen years later.  In any case, since
      libpq makes no effort to reset errno to zero before calling connect(),
      it seems unlikely that that test has ever reliably done anything useful.
      
      Andres Freund and Tom Lane
      a099482c
    • Michael Meskes's avatar
      Fixed incorrect description of EXEC SQL VAR command. · a2769a4e
      Michael Meskes authored
      Thanks to MauMau <maumau307@gmail.com> for finding and fixing this.
      a2769a4e
    • Robert Haas's avatar
      pgbench: Fix inadvertent inconsistency in help message. · 682d977f
      Robert Haas authored
      Per report from Fujii Masao.
      682d977f
    • Robert Haas's avatar
      pgbench: Add long options for all existing short options. · 79cddb18
      Robert Haas authored
      Fabien Coelho, reviewed by Fabrízio de Royes Mello, with some further
      changes by me
      79cddb18
    • Tom Lane's avatar
      Tweak wording in sequence-function docs to avoid PDF build failures. · a03ae56e
      Tom Lane authored
      Adjust the wording in the first para of "Sequence Manipulation Functions"
      so that neither of the link phrases in it break across line boundaries,
      in either A4- or US-page-size PDF output.  This fixes a reported build
      failure for the 9.3beta2 A4 PDF docs, and future-proofs this particular
      para against causing similar problems in future.  (Perhaps somebody will
      fix this issue in the SGML/TeX documentation tool chain someday, but I'm
      not holding my breath.)
      
      Back-patch to all supported branches, since the same problem could rise up
      to bite us in future updates if anyone changes anything earlier than this
      in func.sgml.
      a03ae56e
    • Noah Misch's avatar
      Cooperate with the Valgrind instrumentation framework. · 19085116
      Noah Misch authored
      Valgrind "client requests" in aset.c and mcxt.c teach Valgrind and its
      Memcheck tool about the PostgreSQL allocator.  This makes Valgrind
      roughly as sensitive to memory errors involving palloc chunks as it is
      to memory errors involving malloc chunks.  Further client requests in
      PageAddItem() and printtup() verify that all bits being added to a
      buffer page or furnished to an output function are predictably-defined.
      Those tests catch failures of C-language functions to fully initialize
      the bits of a Datum, which in turn stymie optimizations that rely on
      _equalConst().  Define the USE_VALGRIND symbol in pg_config_manual.h to
      enable these additions.  An included "suppression file" silences nominal
      errors we don't plan to fix.
      
      Reviewed in earlier versions by Peter Geoghegan and Korry Douglas.
      19085116
  7. 26 Jun, 2013 3 commits