1. 02 May, 2011 1 commit
    • Tom Lane's avatar
      Improve aset.c's space management in contexts with small maxBlockSize. · 6755558b
      Tom Lane authored
      The previous coding would allow requests up to half of maxBlockSize to be
      treated as "chunks", but when that actually did happen, we'd waste nearly
      half of the space in the malloc block containing the chunk, if no smaller
      requests came along to fill it.  Avoid this scenario by limiting the
      maximum size of a chunk to 1/8th maxBlockSize, so that we can waste no more
      than 1/8th of the allocated space.  This will not change the behavior at
      all for the default context size parameters (with large maxBlockSize),
      but it will change the behavior when using ALLOCSET_SMALL_MAXSIZE.
      
      In particular, there's no longer a need for spell.c to be overly concerned
      about the request size parameters it uses, so remove a rather unhelpful
      comment about that.
      
      Merlin Moncure, per an idea of Tom Lane's
      6755558b
  2. 01 May, 2011 3 commits
    • Peter Eisentraut's avatar
      Catch errors in for loop in makefile · 5c436a79
      Peter Eisentraut authored
      Add "|| exit" so that the rule aborts when a command fails.
      5c436a79
    • Peter Eisentraut's avatar
      Rewrite installation makefile rules without for loops · b106195b
      Peter Eisentraut authored
      install-sh can install multiple files at once, so for loops are not
      necessary.  This was already changed for the rest of the code some
      time ago, but pgxs.mk was apparently forgotten, and the obsolete
      coding style has now been copied to the PLs as well.
      
      This also fixes the problem that the for loops in question did not
      catch errors.
      b106195b
    • Tom Lane's avatar
      Make CLUSTER lock the old table's toast table before copying data. · 83b75849
      Tom Lane authored
      We must lock out autovacuuming of the old toast table before computing the
      OldestXmin horizon we will use.  Otherwise, autovacuum could start on the
      toast table later, compute a later OldestXmin horizon, and remove as DEAD
      toast tuples that we still need (because we think their parent tuples are
      only RECENTLY_DEAD).  Per further thought about bug #5998.
      83b75849
  3. 30 Apr, 2011 1 commit
  4. 29 Apr, 2011 2 commits
    • Tom Lane's avatar
      Remove special case for xmin == xmax in HeapTupleSatisfiesVacuum(). · 44e4bbf7
      Tom Lane authored
      VACUUM was willing to remove a committed-dead tuple immediately if it was
      deleted by the same transaction that inserted it.  The idea is that such a
      tuple could never have been visible to any other transaction, so we don't
      need to keep it around to satisfy MVCC snapshots.  However, there was
      already an exception for tuples that are part of an update chain, and this
      exception created a problem: we might remove TOAST tuples (which are never
      part of an update chain) while their parent tuple stayed around (if it was
      part of an update chain).  This didn't pose a problem for most things,
      since the parent tuple is indeed dead: no snapshot will ever consider it
      visible.  But MVCC-safe CLUSTER had a problem, since it will try to copy
      RECENTLY_DEAD tuples to the new table.  It then has to copy their TOAST
      data too, and would fail if VACUUM had already removed the toast tuples.
      
      Easiest fix is to get rid of the special case for xmin == xmax.  This may
      delay reclaiming dead space for a little bit in some cases, but it's by far
      the most reliable way to fix the issue.
      
      Per bug #5998 from Mark Reid.  Back-patch to 8.3, which is the oldest
      version with MVCC-safe CLUSTER.
      44e4bbf7
    • Tom Lane's avatar
      Rewrite pg_size_pretty() to avoid compiler bug. · fd2e2d09
      Tom Lane authored
      Convert it to use successive shifts right instead of increasing a divisor.
      This is probably a tad more efficient than the original coding, and it's
      nicer-looking than the previous patch because we don't need a special case
      to avoid overflow in the last branch.  But the real reason to do it is to
      avoid a Solaris compiler bug, as per results from buildfarm member moa.
      fd2e2d09
  5. 28 Apr, 2011 4 commits
  6. 27 Apr, 2011 13 commits
  7. 26 Apr, 2011 6 commits
    • Tom Lane's avatar
      Rephrase some not-supported error messages in pg_hba.conf processing. · 71e70835
      Tom Lane authored
      In a couple of places we said "not supported on this platform" for cases
      that aren't really platform-specific, but could depend on configuration
      options such as --with-openssl.  Use "not supported by this build" instead,
      as that doesn't convey the impression that you can't fix it without moving
      to another OS; that's also more consistent with the wording used for an
      identical error case in guc.c.
      
      No back-patch, as the clarity gain is small enough to not be worth
      burdening translators with back-branch changes.
      71e70835
    • Tom Lane's avatar
      Complain if pg_hba.conf contains "hostssl" but SSL is disabled. · c464a065
      Tom Lane authored
      Most commenters agreed that this is more friendly than silently failing
      to match the line during actual connection attempts.  Also, this will
      prevent corner cases that might arise when trying to handle such a line
      when the SSL code isn't turned on.  An example is that specifying
      clientcert=1 in such a line would formerly result in a completely
      misleading complaint that root.crt wasn't present, as seen in a recent
      report from Marc-Andre Laverdiere.  While we could have instead fixed
      that specific behavior, it seems likely that we'd have a continuing stream
      of such bizarre behaviors if we keep on allowing hostssl lines when SSL is
      disabled.
      
      Back-patch to 8.4, where clientcert was introduced.  Earlier versions don't
      have this specific issue, and the code is enough different to make this
      patch not applicable without more work than it seems worth.
      c464a065
    • Bruce Momjian's avatar
    • Bruce Momjian's avatar
      Now that pg_upgrade uses -w in pg_ctl, remove loop that retried testing · 6c4d2bd9
      Bruce Momjian authored
      the connection;  also restructure the libpq connection code.
      
      This patch also removes the unused variable postmasterPID and fixes a
      libpq structure leak that was in the testing loop.
      6c4d2bd9
    • Bruce Momjian's avatar
      In pg_upgrade, avoid one start/stop of the postmaster; use the -w · 44091442
      Bruce Momjian authored
      (wait) flag for pg_ctl start/stop;  remove the unused "quiet" flag in
      the functions for starting/stopping the postmaster.
      44091442
    • Tom Lane's avatar
      Remove incorrect HINT for use of ALTER FOREIGN TABLE on the wrong relkind. · 6dab96ab
      Tom Lane authored
      Per discussion, removing the hint seems better than correcting it because
      the adjacent analogous cases in RenameRelation don't have any hints, and
      nobody seems to have missed 'em.
      
      Shigeru Hanada
      6dab96ab
  8. 25 Apr, 2011 10 commits
    • Robert Haas's avatar
      Refactor broken CREATE TABLE IF NOT EXISTS support. · 68ef051f
      Robert Haas authored
      Per bug #5988, reported by Marko Tiikkaja, and further analyzed by Tom
      Lane, the previous coding was broken in several respects: even if the
      target table already existed, a subsequent CREATE TABLE IF NOT EXISTS
      might try to add additional constraints or sequences-for-serial
      specified in the new CREATE TABLE statement.
      
      In passing, this also fixes a minor information leak: it's no longer
      possible to figure out whether a schema to which you don't have CREATE
      access contains a sequence named like "x_y_seq" by attempting to create a
      table in that schema called "x" with a serial column called "y".
      
      Some more refactoring of this code in the future might be warranted,
      but that will need to wait for a later major release.
      68ef051f
    • Robert Haas's avatar
      Remove partial and undocumented GRANT .. FOREIGN TABLE support. · be90032e
      Robert Haas authored
      Instead, foreign tables are treated just like views: permissions can
      be granted using GRANT privilege ON [TABLE] foreign_table_name TO role,
      and revoked similarly.  GRANT/REVOKE .. FOREIGN TABLE is no longer
      supported, just as we don't support GRANT/REVOKE .. VIEW.  The set of
      accepted permissions for foreign tables is now identical to the set for
      regular tables, and views.
      
      Per report from Thom Brown, and subsequent discussion.
      be90032e
    • Tom Lane's avatar
      Fix pg_size_pretty() to avoid overflow for inputs close to INT64_MAX. · af0f2009
      Tom Lane authored
      The expression that tried to round the value to the nearest TB could
      overflow, leading to bogus output as reported in bug #5993 from Nicola
      Cossu.  This isn't likely to ever happen in the intended usage of the
      function (if it could, we'd be needing to use a wider datatype instead);
      but it's not hard to give the expected output, so let's do so.
      af0f2009
    • Peter Eisentraut's avatar
      Support "make check" in contrib · f8ebe3bc
      Peter Eisentraut authored
      Added a new option --extra-install to pg_regress to arrange installing
      the respective contrib directory into the temporary installation.
      This is currently not yet supported for Windows MSVC builds.
      
      Updated the .gitignore files for contrib modules to ignore the
      leftovers of a temp-install check run.
      
      Changed the exit status of "make check" in a pgxs build (which still
      does nothing) to 0 from 1.
      
      Added "make check" in contrib to top-level "make check-world".
      f8ebe3bc
    • Andrew Dunstan's avatar
      Use terse mode to avoid variable order dependency output in foreign data regression check. · 625744ac
      Andrew Dunstan authored
      Per Tom Lane's suggestion about my gripe about occasional errors noticed on the buildfarm.
      625744ac
    • Andrew Dunstan's avatar
      Assorted minor changes to silence Windows compiler warnings. · 860be17e
      Andrew Dunstan authored
      Mostly to do with macro redefinitions or object signedness.
      860be17e
    • Andrew Dunstan's avatar
      Prevent perl header overriding our *snprintf macros, and give it a usable PERL_UNUSED_DECL value. · 77622887
      Andrew Dunstan authored
      This quiets compiler warnings about redefined macros and unused Perl__unused variables. The
      redefinition of snprintf and vsnprintf is something we want to avoid anyway, if we've
      gone to the bother of setting up the macros to point to our implementation.
      77622887
    • Andrew Dunstan's avatar
      Give getopt() a prototype and modern style arg specs. · 7e0f8f83
      Andrew Dunstan authored
      Welcome to the 1990s.
      7e0f8f83
    • Bruce Momjian's avatar
      Add postmaster/postgres undocumented -b option for binary upgrades. · 76dd09bb
      Bruce Momjian authored
      This option turns off autovacuum, prevents non-super-user connections,
      and enables oid setting hooks in the backend.  The code continues to use
      the old autoavacuum disable settings for servers with earlier catalog
      versions.
      
      This includes a catalog version bump to identify servers that support
      the -b option.
      76dd09bb
    • Robert Haas's avatar
      02e6a115