1. 14 Feb, 2012 9 commits
  2. 13 Feb, 2012 4 commits
  3. 11 Feb, 2012 1 commit
    • Tom Lane's avatar
      Fix I/O-conversion-related memory leaks in plpgsql. · 58a9596e
      Tom Lane authored
      Datatype I/O functions are allowed to leak memory in CurrentMemoryContext,
      since they are generally called in short-lived contexts.  However, plpgsql
      calls such functions for purposes of type conversion, and was calling them
      in its procedure context.  Therefore, any leaked memory would not be
      recovered until the end of the plpgsql function.  If such a conversion
      was done within a loop, quite a bit of memory could get consumed.  Fix by
      calling such functions in the transient "eval_econtext", and adjust other
      logic to match.  Back-patch to all supported versions.
      
      Andres Freund, Jan Urbański, Tom Lane
      58a9596e
  4. 10 Feb, 2012 4 commits
    • Tom Lane's avatar
      Fix oversight in pg_dump's handling of extension configuration tables. · 59de132f
      Tom Lane authored
      If an extension has not been selected to be dumped (perhaps because of
      a --schema or --table switch), the contents of its configuration tables
      surely should not get dumped either.  Per gripe from
      Hubert Depesz Lubaczewski.
      59de132f
    • Tom Lane's avatar
      Fix brain fade in previous pg_dump patch. · 97dc3c8a
      Tom Lane authored
      In pre-7.3 databases, pg_attribute.attislocal doesn't exist.  The easiest
      way to make sure the new inheritance logic behaves sanely is to assume it's
      TRUE, not FALSE.  This will result in printing child columns even when
      they're not really needed.  We could work harder at trying to reconstruct a
      value for attislocal, but there is little evidence that anyone still cares
      about dumping from such old versions, so just do the minimum necessary to
      have a valid dump.
      
      I had this correct in the original draft of the patch, but for some
      unaccountable reason decided it wasn't necessary to change the value.
      Testing against an old server shows otherwise...
      97dc3c8a
    • Tom Lane's avatar
      Fix pg_dump for better handling of inherited columns. · 00bc96bd
      Tom Lane authored
      Revise pg_dump's handling of inherited columns, which was last looked at
      seriously in 2001, to eliminate several misbehaviors associated with
      inherited default expressions and NOT NULL flags.  In particular make sure
      that a column is printed in a child table's CREATE TABLE command if and
      only if it has attislocal = true; the former behavior would sometimes cause
      a column to become marked attislocal when it was not so marked in the
      source database.  Also, stop relying on textual comparison of default
      expressions to decide if they're inherited; instead, don't use
      default-expression inheritance at all, but just install the default
      explicitly at each level of the hierarchy.  This fixes the
      search-path-related misbehavior recently exhibited by Chester Young, and
      also removes some dubious assumptions about the order in which ALTER TABLE
      SET DEFAULT commands would be executed.
      
      Back-patch to all supported branches.
      00bc96bd
    • Tom Lane's avatar
      Add ORDER BY to a query to prevent occasional regression test failures. · d06e2d20
      Tom Lane authored
      Per buildfarm, we sometimes get row-ordering variations in the output.
      This also makes this query look more like numerous other ones in the same
      test file.
      d06e2d20
  5. 09 Feb, 2012 6 commits
  6. 08 Feb, 2012 9 commits
    • Tom Lane's avatar
      Throw error sooner for unlogged GiST indexes. · 331bf671
      Tom Lane authored
      Throwing an error only after we've built the main index fork is pretty
      unfriendly when the table already contains data.  Per gripe from Jay
      Levitt.
      331bf671
    • Tom Lane's avatar
      Fix up dumping conditions for extension configuration tables. · d77354ea
      Tom Lane authored
      Various filters that were meant to prevent dumping of table data were not
      being applied to extension config tables, notably --exclude-table-data and
      --no-unlogged-table-data.  We also would bogusly try to dump data from
      views, sequences, or foreign tables, should an extension try to claim they
      were config tables.  Fix all that, and refactor/redocument to try to make
      this a bit less fragile.  This reverts the implementation, though not the
      feature, of commit 7b070e89, which had
      broken config-table dumping altogether :-(.
      
      It is still the case that the code will dump config-table data even if
      --schema is specified.  That behavior was intentional, as per the comments
      in getExtensionMembership, so I think it requires some more discussion
      before we change it.
      d77354ea
    • Tom Lane's avatar
      Check misplaced window functions before checking aggregate/group by sanity. · cb7c84fa
      Tom Lane authored
      If somebody puts a window function in WHERE, we should complain about that
      in so many words.  The previous coding tended to complain about the window
      function's arguments instead, which is likely to be misleading to users who
      are unclear on the semantics of window functions; as seen for example in
      bug #6440 from Matyas Novak.
      
      Just another example of how "add new code at the end" is frequently a bad
      heuristic.
      cb7c84fa
    • Tom Lane's avatar
      Support min/max index optimizations on boolean columns. · cbba55d6
      Tom Lane authored
      Since bool_and() is equivalent to min(), and bool_or() to max(), we might
      as well let them be index-optimized in the same way.  The practical value
      of this is debatable at best, but it seems nearly cost-free to enable it.
      Code-wise, we need only adjust the entries in pg_aggregate.  There is a
      measurable planning speed penalty for a query involving one of these
      aggregates, but it is only a few percent in simple cases, so that seems
      acceptable.
      
      Marti Raudsepp, reviewed by Abhijit Menon-Sen
      cbba55d6
    • Tom Lane's avatar
      Mark some more I/O-conversion-invoking functions as stable not volatile. · 3db6524f
      Tom Lane authored
      When written, textanycat, anytextcat, quote_literal, and quote_nullable
      were marked volatile, because they could invoke arbitrary type-specific
      output functions as part of casting their anyelement arguments to text.
      Since then, we have defined a project policy that I/O functions must not
      be volatile, as per commit aab353a6.
      So these functions can safely be downgraded to stable.  Most of the time
      this makes no difference since they'll get inlined anyway, but as noted
      by Andrew Dunstan, there are cases where the volatile marking prevents
      optimizations that the planner does before function inlining.  (I think
      I might have overlooked these functions in the earlier commit on the
      grounds that inlining would make it moot, but not so --- tgl)
      
      This change results in a change in the expected output of the json
      regression tests, because the planner can now flatten a sub-select
      that it failed to before.  The old output is preferable, but getting
      that back will require some as-yet-unfinished work on RowExpr handling.
      
      Marti Raudsepp
      3db6524f
    • Robert Haas's avatar
      Add transform functions for various temporal typmod coercisions. · c1389798
      Robert Haas authored
      This enables ALTER TABLE to skip table and index rebuilds in some cases.
      
      Noah Misch, with trivial changes by me.
      c1389798
    • Heikki Linnakangas's avatar
      Rename LWLockWaitUntilFree to LWLockAcquireOrWait. · 1a01560c
      Heikki Linnakangas authored
      LWLockAcquireOrWait makes it more clear that the lock is acquired if it's
      free.
      1a01560c
    • Robert Haas's avatar
      Fix typos pointed out by Noah Misch. · af7dd696
      Robert Haas authored
      af7dd696
    • Bruce Momjian's avatar
      Add opensp as a requirement for building the docs on Debian --- tested · a870c7fd
      Bruce Momjian authored
      on Debian Squeeze.
      a870c7fd
  7. 07 Feb, 2012 7 commits
    • Peter Eisentraut's avatar
      pg_dump: Add some const qualifiers · e09509bd
      Peter Eisentraut authored
      e09509bd
    • Peter Eisentraut's avatar
      pg_regress: Use target-specific variable instead of overriding make rule · d66b31c9
      Peter Eisentraut authored
      Use a target-specific variable to add to CPPFLAGS instead of writing a
      custom .c -> .o rule.  This will ensure that dependency tracking is
      used when enabled.
      d66b31c9
    • Heikki Linnakangas's avatar
      Fix typo in comment. · 5ece8eca
      Heikki Linnakangas authored
      5ece8eca
    • Robert Haas's avatar
      Support fls(). · 4f658dc8
      Robert Haas authored
      The immediate impetus for this is that Noah Misch's patch to elide
      unnecessary table and index rebuilds when changing typmod for temporal
      types uses it; and this is extracted from that patch, with some
      further commentary by me.  But it seems logically separate from the
      remainder of the patch, so I'm committing it separately; this is not
      the first time someone has wanted fls() in the backend and probably
      won't be the last.
      
      If we end up using this in more performance-critical spots it may be
      worthwhile to add some architecture-specific optimizations to our
      src/port version of fls() - e.g. any x86 platform can implement this
      using the assembly instruction BSRL.  But performance won't matter
      a bit for assessing typmod changes, so I'm not worried about that
      right now.
      4f658dc8
    • Robert Haas's avatar
      Add a transform function for varbit typmod coercisions. · f7d7dade
      Robert Haas authored
      This enables ALTER TABLE to skip table and index rebuilds when the
      new type is unconstraint varbit, or when the allowable number of bits
      is not decreasing.
      
      Noah Misch, with review and a fix for an OID collision by me.
      f7d7dade
    • Robert Haas's avatar
      Add a transform function for numeric typmod coercisions. · 3cc08008
      Robert Haas authored
      This enables ALTER TABLE to skip table and index rebuilds when a column
      is changed to an unconstrained numeric, or when the scale is unchanged
      and the precision does not decrease.
      
      Noah Misch, with a few stylistic changes and a fix for an OID
      collision by me.
      3cc08008
    • Robert Haas's avatar
      Add TIMING option to EXPLAIN, to allow eliminating of timing overhead. · af7914c6
      Robert Haas authored
      Sometimes it may be useful to get actual row counts out of EXPLAIN
      (ANALYZE) without paying the cost of timing every node entry/exit.
      With this patch, you can say EXPLAIN (ANALYZE, TIMING OFF) to get that.
      
      Tomas Vondra, reviewed by Eric Theise, with minor doc changes by me.
      af7914c6